Re: restrict rdf:reifies to many-to-one and use rdf:memberReifier to allow multi-set of triple-terms

> On 18. Apr 2024, at 16:09, Souripriya Das <souripriya.das@oracle.com> wrote:
> 
> Following are some of the issues I see with multi-valued (i.e., many-to-many) rdf:reifies:
> 1) a single reifier cannot associate with two identical triple-terms (needed for parallel edges), and

I don’t understand the problem. In your example below the reifications have different annotations, so of course they need to have different reifiers.


> 2) creates a confusion regarding whether the annotations hanging from the single reifier applies to every triple-term individually or only to the set of triple-terms as a whole.

It’s the same situation for lists: any attribution to a list might either specifically mean each member of the list or the list itself. In most cases context will disambiguate. And where it doesn’t an annotation on the attribution could do the trick, e.g.:

    :eMany rdf:reifies <<( :John :loves :swimming )>> ,
                       <<( :John :loves :football )>> ,
                       <<( :John :loves :tennis )>> .
    :eMany :prov :undisclosed {| :semantics :forEach |}  # or :forAll

Note that in this example as probably in many othres it doesn’t really make a difference.


Best,
Thomas

> My feeling is that It is important to be able to be able to hang annotations  independently:
> 1) to individual triple-terms, and 
> 2) to a mutli-set of triple-terms as a whole. 
> 
> Given this, I'd like to propose the following:
> 1) Keep rdf:reifies single-valued (that is, allow many-to-one and disallow many-to-many).
> 2) Use a new property, rdf:memberReifier, to create a set of reifiers so that we can attach annotations for a multi-set of triple-terms (the need for which may arise because the data creator wants it that way and/or because of triple-terms derived via entailment).
> 
> Example 1:  annotations for individual triple-terms and annotations for a multi-set of triple-terms
> =========
> # individual triple-term
> :e1 rdf:reifies <<( :s1 :p1 :o1 )>> .
> 
> # two identical (individual) triple-terms (parallel edges)
> :e2a rdf:reifies <<( :s2 :p2 :o2 )>> .
> :e2b rdf:reifies <<( :s2 :p2 :o2 )>> .
> 
> # a multi-set of triple-terms and annotations for it
> :e rdf:memberReifier :e1, :e2a, :e2b 
>     ; :source :src1 
>     ; :year 2023 .
> 
> # add annotations for individual triple-terms
> :e1 :month 5 .
> :e2a :month 12 .
> :e2b :month 9 .
> 
> Example 2: handling entailment by creating a multi-set (unless already present) and copying annotations
> =========
> # asserted triple-term (with annotation) and OWL axioms
> :f1 rdf:reifies <<( :john :married :mary )>> 
>     ; :location :Rome .
> 
> :married rdf:type owl:SymmatricProperty .
> :married owl:equivalentProperty :spouseOf .
> 
> # derives and stores in a multi-set: (:f1a, :f1b, :f1c, and :f are new identifiers that have to be created)
> :f1a rdf:reifies <<( :mary :married :john )>> . # using symmetry
> :f1b rdf:reifies <<( :mary :spouseOf :john )>> . # using equivalent property
> :f1c rdf:reifies <<( :john :spouseOf :mary )>> . # using equivalent property
> 
> :f rdf:memberReifier :f1, :f1a, :f1b, :f1c 
>     ; :location :Rome . # forms the multi-set and duplicates the annotations of :f1

Received on Thursday, 18 April 2024 15:39:02 UTC