Re: reifiesDomain-14 (Re: proposal: a reifier should reify only one "thing")

>   _:a :occurrenceOf << :m | :liz :marriedTo :richard >>; :from 1964; :to
1975 .

>   _:b :occurrenceOf << :m | :liz :marriedTo :richard >>; :from 1986 .

No, because your model is subtly wrong here. The marriage is made up of the
intervals(s) when two people were legally considered a married couple. The
proper formulation would read:

<< :m1 | :liz :marriedTo :richard>> :hasInterval  _:a , _:b .
_:a :from 1964; to 1975, a Class:Interval .
_:b from 1986; a Class:Interval .

If you wanted to treat this syntactically so that it is similar to LPGs,
what you need to do is extend the blank node notation (again, my contention
is that this is not an RDF problem but a Turtle one), using the same
notation we use for reification, namely:

:<<:m1|:liz :marriedTo :richard>> :hasInterval [:a | :from 1964, :to 1975],
[:b | :from 1986] .

This  creates a new named set of triples, and returns the node with the
given name

:m1 :hasInterval :a , :b.
:a :from 1964 .
:a :to 1975 .
:b :from 1986 .

This actually solves the reification problem as well, because you should
generally not be reifying a statement with an object literal, but rather
indicating that the object's state itself has changed.

That is to say,

<<:m1 :hasInterval :a>>

makes sense because you are saying that the object itself has changed, but

<<:m1 :hasStartDate "2021">>

does not make sense, because there is no guarantee that :m1 may have the
same :startDate (a person gets married, then discovers that their spouse is
already married, as one rather pointed example).

On the other hand, if you use the notation:

:<<:m1|:liz :marriedTo :richard>> :hasInterval [:a | :from 1964, :to 1975],
[:b | :from 1986, :to 1986] ,:[ :c | :from 1986 ] .

This allows you to say:

<<:m1 :hasInterval :b>> :nullifiedDueTo :bigamy.

while keeping :c intact.

Now, this is a VERY unlikely scenario here, but for time series data, this
is a very common problem. When you make a change, you're changing an aspect
of the object, not simply modifying a string or number. The simplest
example is one where a property has two potential values :on or :off.  If
you work with non-destructive graphs (and you should be), then it's not
enough to say:

:light :hasState :on .
or
:light :hasState :off

You have to say when this light was on or off, and this implies a stateful
object:

:light :hasStates [ :hasState :on; :at "10:22:15"],[ :hasState :off; :at
"10:28:15"],[ :hasState :on; :at "10:36:15"] .

In this case, each of these are separate blank node entries, but if you
wanted to reify them at some later point, you can't explicitly declare that
reification. On the other hand, if you did declare a named synonym for a
blank node expression, then you could say:

:light :hasStates [:t1 | :hasState :on; :at "10:22:15"],[ :t2 | :hasState
:off; :at "10:28:15"],[:t3 | :hasState :on; :at "10:36:15"] .

You can then make the reification:

<<:light :hasStates :t1>> :reason "I went to get a late night snack in the
kitchen, so turned the light on.".




*Kurt Cagle*
Editor in Chief
The Cagle Report
kurt.cagle@gmail.com
443-837-8725 <http://voice.google.com/calls?a=nc,%2B14438378725>


On Wed, Apr 24, 2024 at 2:09 PM Sasaki, Felix <felix.sasaki@sap.com> wrote:

> I have a question on
>
> „
>
> The issue is not that it bothers LPG viewers, but whether this can be
> rendered in RDF-Star. If you take this assumption naively (a direct
> translation) this becomes:
>
>
>
> << :m | :liz :marriedTo :richard >> :from 1964; :to 1975 .
>
> << :m | :liz :marriedTo :richard >> :from 1986 .
>
> “
>
>
>
> Could a non naive translation make use of different triple occurrences
>
> https://w3c.github.io/rdf-star/cg-spec/2021-12-17.html#occurrences
>
> ?
>
> E.g.
>
>
>
>  _:a :occurrenceOf << :m | :liz :marriedTo :richard >>; :from 1964; :to
> 1975 .
>
>  _:b :occurrenceOf << :m | :liz :marriedTo :richard >>; :from 1986 .
>
>
>
>
>
>    - Felix
>
>

Received on Thursday, 25 April 2024 00:52:45 UTC