A question regarding the semantics of multi-triple term reifications and querying

Since reifiers can refer to multiple triple terms, do queries for annotations on a triple need to filter out eventual multi-triple term annotations? Take for example the following graph.:

   :r rdf:reifies <<( :s :p :o )>> ,
                  <<( :x :y :z )>> ;
       :b :c .

Querying for all annotations on <<( :s :p :o )>> might naively query for all annotations on reifiers that rdf:reify <<( :s :p :o )>>, e.g.:


   select ?pred ?obj where {
     _:x rdf:reifies <<( :s :p :o )>> ;
         ?pred ?obj
   }

However, in the above example that would return the annotation ':r :a :b', but ':r' doesn’t just reify <<( :s :p :o )>>, it reifies <<( :s :p :o )>> AND <<( :x :y :z )>>. I at least consider that a difference (but I’m not quite sure if the specs do too).

OTOH, filtering out multi-triple term reifiers like ':r' from a result set is pretty tedious, especially if it would have to be done on a regular basis.

Best,
Thomas

Received on Thursday, 11 September 2025 15:16:55 UTC