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

You could instead update the descriptions of these (presumed)
observation events, given the temporally more granular information we
now have about `<<( s1 :p1 :o1 )>>`:

    :e rdf:reifies <<( :s2 :p2 :o2 )>> ;
      :source :src1 ;
      :year 2023 .

    :f rdf:reifies <<( :s3 :p3 :o3 )>> ;
      :source :src2 ;
      :year 2024 .

    :g rdf:reifies <<( :s1 :p1 :o1 )>> ;
      :source :src1 ;
      :month 5 ;
      :year 2023 .

    :h rdf:reifies <<( :s1 :p1 :o1 )>> ;
      :source :src2 ;
      :month 12 ;
      :year 2024 .

That would remove the need for query-rewriting. (You could still model
the observation events as a hierarchy of course, as in your solution.
As long as it was designed like that from the beginning, no query
changes would be required.)

The most important question, I think, is whether or not it makes
sense, always or sometimes, for such observations to possibly reify
more than one triple. And to me, the answer wholly depends upon
various reifiers' intended usage and therefore meaning -- i.e. the
type of reifier (here observation events?). These need to be clearly
defined with concrete usage examples.

In this example we're talking about data provenance. We've also seen
how named graphs are occasionally used for "course-grained" data
provenance (temporal or otherwise). Such practices *may* prove more
effective if replaced with reifiers of multiple triples. In the
library world we could make use of that, to effectively mark the
respective sources of records (other records, bibliographies or other
catalogues, etc.)

There are also many concrete situations or events that reify simple
relations (such as a collaboration being a reifier of both an author
and illustrator of a work), so we have examples of different types of
reifiers. Does it make more sense to have a "partOf" relation from a
granular reifier to a "holistic" reifier? Either way, it seems that
LPGs are incapable of both, since edges cannot link to the whole
anyway?

Best regards,
Niklas



On Sun, Apr 14, 2024 at 8:37 PM Souripriya Das
<souripriya.das@oracle.com> 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:51:48 UTC