Re: [External] : Re: use of multi-valued rdf:reifies removes ability to annotate individual triple-patterns

It is bad modelling practice to split information between two properties (or 
their inverses) in this way.

If you start out modelling sources as just publications then if you later want 
to model year as well then the path forward is not trivial.  One way is to use 
a new property for the entire new relationships, as in

:a :sourceYear :x .
:b :sourceYear :y .
:x :publication "NYT" .
:x :year 2023 .
:y :publication "NYT" .
:y :year 2022.

You can then either keep the old data (bad) or remove it (good).  All queries 
have to be updated to use the new relationship.

You may be able to take over the old relationship but you then need to modify 
existing data that needs to be split up, as in

:a :source :x .
:b :source :y .
:x :publication "NYT" .
:x :year 2023 .
:y :publication "NYT" .
:y :year 2022.

What you can't do is add a new relationship for just the year if you have 
multiple sources.  The following does not work

:a :source :x .
:b :source :x .
:x :publication "NYT" .
:a :sourceYear 2023.
:b :sourceYear 2022.
:b :source :y .
:y :publication "World News Weekly".
:b :sourceYear 2035.

But there is still nothing special about reifiers here.

peter


On 4/15/24 08:24, Souripriya Das wrote:
> Yes, it's the same idea but the rdf:reifies example is a bit more elaborate in 
> that it maintains annotations both at member-level (:month) and at group-level 
> (:source and :year). This makes a query pattern like
>      { ?x rdf:reifies <<( ?s ?p ?o )>> ; ?prop ?obj }
> return different results when rdfs:member based grouping is introduced to 
> accommodate annotations at member-level as well.
> 
> Specifically, it will NOT return the group-level annotations UNLESS the query 
> pattern is changed as follows (to account for potential presence of 
> rdfs:member based grouping in the data):
>      { ?x (rdfs:member*|rdf:reifies) <<( ?s ?p ?o )>> ; ?prop ?obj }
> 
> Of course, given that the change is quite mechanical – changing rdf:reifies to 
> (rdfs:member*|rdf:reifies) – it could be done easily (and cheaply) if and when 
> such multi-level annotation scenario actually arises.
> 
> Thanks,
> Souri.
> 
> 
> ------------------------------------------------------------------------------
> *From:* Peter F. Patel-Schneider <pfpschneider@gmail.com>
> *Sent:* Monday, April 15, 2024 6:53 AM
> *To:* Souripriya Das <souripriya.das@oracle.com>; public-rdf-star-wg@w3.org 
> <public-rdf-star-wg@w3.org>
> *Subject:* Re: [External] : Re: use of multi-valued rdf:reifies removes 
> ability to annotate individual triple-patterns
> The point is that this is something that affects all attempts to represent
> information.
> 
> peter
> 
> 
> On 4/15/24 00:15, Souripriya Das wrote:
>> [There was a copy/paste typo in my example: It should have had => :f2 
>> rdf:reifies <<( :s3 :p3 :o3 )>> .]
>> 
>> Hi Peter,
>> 
>> Yes, because your example too involves a multi-valued property, if we think of 
>> the inverse property :sourceOf.
>> 
>> So, my point is that, as shown in my examples, using rdf:reifies in a 
>> multi-valued manner may lead to the need to change the data significantly (if 
>> the need for annotation of individual triple-terms arises later). That would 
>> involve query rewriting as well. So, modeling using multi-valued rdf:reifies 
>> could a bit risky.
>> 
>> Thanks,
>> Souri.
>> 
>> ------------------------------------------------------------------------------
>> *From:* Peter F. Patel-Schneider <pfpschneider@gmail.com>
>> *Sent:* Sunday, April 14, 2024 5:17 PM
>> *To:* public-rdf-star-wg@w3.org <public-rdf-star-wg@w3.org>
>> *Subject:* [External] : Re: use of multi-valued rdf:reifies removes ability to 
>> annotate individual triple-patterns
>> This modelling issue is not specific to :reifies.
>> 
>> Consider
>> 
>> :a :source :x .
>> :b :source :x .
>> :x :publication "NYT" .
>> 
>> This says that :a and :b have the same :source, whatever that means.  If you
>> later want to add more information about :source, for example :year, then you
>> can't put different :years for this :source.   You have to either have the
>> same :year or make a change to something like:
>> 
>> :a :source :x .
>> :b :source :y .
>> :x :publication "NYT" .
>> :x :year 2023 .
>> :y :publication "NYT" .
>> :y :year 2022.
>> 
>> This says that :a and :b have the same value for the :date.
>> 
>> peter
>> 
>> 
>> On 4/14/24 14:37, Souripriya Das wrote:
>>> A shortcoming of using multi-valued rdf:reifies is that you lose the ability 
>>> to add statements about the individual triple-terms. I have tried illustrating
>>> this with the following simple examples.
>>> 
>>> Example 1: using multi-valued rdf:reifies
>>> =========
>>> :e rdf:reifies <<( :s1 :p1 :o1 )>>, <<( :s2 :p2 :o2 )>> ; :source :src1 ; 
>>> :year 2023 .
>>> :f rdf:reifies <<( :s1 :p1 :o1 )>>, <<( :s3 :p3 :o3 )>> ; :source :src2 ; 
>>> :year 2024 .
>>> 
>>> What if we want to indicate that the <<(: s1 :p1 :o1 )>> triple-term in :e has
>>> a different :month annotation than the one in :f? The following does not help 
>>> because we cannot specify that the one in :e is associated with :g and the one
>>> in :f is associated with :h.
>>> 
>>> :g rdf:reifies <<( :s1 :p1 :o1 )>> ; :month 5 .
>>> :h rdf:reifies <<( :s1 :p1 :o1 )>> ; :month  12 .
>>> 
>>> Example 2: using single-valued rdf:reifies, along with rdfs:member (or some 
>>> similar) property
>>> =========
>>> 
>>> :e1 rdf:reifies <<( :s1 :p1 :o1 )>> .
>>> :e2 rdf:reifies <<( :s2 :p2 :o2 )>> .
>>> :e rdfs:member :e1, :e2 ; :source :src1 ; :year 2023 .
>>> 
>>> :f1 rdf:reifies <<( :s1 :p1 :o1 )>> .
>>> :f2 rdf:reifies <<( :s2 :p2 :o2 )>> .
>>> :f rdfs:member :f1, :f2 ; :source :src2 ; :year 2024 .
>>> 
>>> This is a multi-level structure that, although more verbose, allows 
>>> annotations at each level. So, the following achieves the objective.
>>> 
>>> :e1 :month 5 .
>>> :f1 :month 12 .
>>> 
>>> The second approach – using single-valued rdf:reifies and rdfs:member – 
>>>   allows one to use a uniform way to create multi-level structures (e.g., a 
>>> document with levels: chapter -> section-> paragraph -> sentence).
>>> 
>>> Thanks,
>>> Souri.
>>> 
>>> 
>>> 
>>> 
>> 

Received on Monday, 15 April 2024 15:55:51 UTC