Re: voting against use of rdf:ReificationProperty

> On Sep 3, 2024, at 3:07 AM, Thomas Lörtsch <tl@rat.io> wrote:
> 
> Hi Greg,
> 
> 
> you can’t use triple terms in RDF 1.1, but you can reify reifications via triple terms in RDF-star, e.g.
>     
>     :r rdf:reifies <<( :s :p :o )>> ;
>        :a :b .
>     :q rdf:reifies <<( :r rdf:reifies <<( :s :p :o )>>  )>> ;
>        :c :d .
> 
> Doesn’t that solve your problem?

I honestly don’t know. I’m just trying to work through examples that seem like they struggle to fit into the proposed approach. As I show below, I don't think it’s obvious that the two approaches are at odds with each other (though the resulting interactions might prove difficult, as you point out).


> And we probably should actively discourage mixing RDF standard reification and RDF-star reification, because not only does it make the property rdf:object an instance of class rdf:ReificationProperty (which is not thaaat problematic IMHO), but in addition to that the subject of an RDF standard reification becomes also an occurrence of the triple term in object position, and that seems pretty unwelcome to me. 

I think my biggest concern is that (as the SPIN example shows) this ins’t just about standard reification – it’s about any modeling that wants to destructure a triple and talk about its components (the object in particular).

> E.g.:
> 
>     :r rdf:reifies <<( :s :p :o )>> .
>     :t a rdf:Statement ;
>        rdf:subject :r ;
>        rdf:predicate rdf:reifies ;
>        rdf:object <<( :s :p :o )>> .
> 
> :t is now both a reification of ':r rdf:reifies <<( :s :p :o )>> .' (because of RDF 1.1 standard reification) and '<<( :s :p :o )>> ' (because rdf:object also acts as an RDF-star reification property).

Yes, I see. Although it’s not clear to me whether or not :t *should* reify both. I can sort of twist myself into thinking that it should.

And I don’t think this is restricted to RDF 1.1 reification – if you ignored that entirely and tried to use our new approach to model a reifier for statements (say for a data provenance use-case where each reifier explicitly reifies one and only one “statement” – leaving aside for now that it might entail more than that), then I think you might end up with something very similar to the above, just not in the rdf: namespace. And also perhaps having a second rdf:reifies statement:

    :r rdf:reifies <<( :s :p :o )>> .
    :t a ex:Statement ;
       rdf:reifies <<( :r rdf:reifies <<( :s :p :o )>> )>>
       ex:subject :r ;
       ex:predicate rdf:reifies ;
       ex:object <<( :s :p :o )>> .

(Maybe you’d want to also use an opaque string to store the original triple for which provenance is being stored, but all of that feels beside the point that the use of both ex:object and rdf:reifies on :t seems strange and may have some unexpected consequences.)

thanks,
.greg

Received on Wednesday, 4 September 2024 18:56:43 UTC