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

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 12:24:15 UTC