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

Thanks, Kurt.  I am just not sure if

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

Vs.

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

”

Are so different. In both cases you have

  1.  A quoted triple
  2.  Two blank nodes connected to the quoted triple. In your case the predicate used for realizing this connection is called :hasInterval, in my case it is called :occurenceOf
  3.  Further triples about the two blank nodes, with the predicate “from” and “to”.

The only difference in 2) “Blank nodes connected to the quoted triple.” Is: in your approach the quoted triple in the subject position, and in my approach, it is in the object position.

Best,

Felix

Von: Kurt Cagle <kurt.cagle@gmail.com>
Datum: Donnerstag, 25. April 2024 um 02:52
An: Sasaki, Felix <felix.sasaki@sap.com>
Cc: ddooss@wp.pl <ddooss@wp.pl>, Pierre-Antoine Champin <pierre-antoine@w3.org>, Lassila, Ora <ora@amazon.com>, RDF-star WG <public-rdf-star-wg@w3.org>
Betreff: 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<mailto:kurt.cagle@gmail.com>
443-837-8725


On Wed, Apr 24, 2024 at 2:09 PM Sasaki, Felix <felix.sasaki@sap.com<mailto: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 08:18:12 UTC