- From: Gregory Williams <greg@evilfunhouse.com>
- Date: Wed, 4 Sep 2024 12:11:16 -0700
- To: William Van Woensel <william.vanwoensel@gmail.com>
- Cc: RDF-star WG <public-rdf-star-wg@w3.org>
- Message-Id: <93762152-83C6-460E-BD2C-3A842424ADAC@evilfunhouse.com>
> On Sep 3, 2024, at 4:37 AM, William Van Woensel <william.vanwoensel@gmail.com> wrote: > > Hi Greg, > >> If we only allowed triple terms in statements with rdf:reifies as the predicate, then I think the reifier could probably be used in the way you describe (though the SPIN case might require some changes), but with arbitrary predicates, these triples *themselves* become important subjects of further annotation. > > > You make a good point: IIUC, in case of reificationProperty, there is a need to break up _reification statements_ themselves, since the property then provides extra information. And, that currently leads to unintended consequences, such as the "meta-property" rdf:object / sp:object / ... being inferred as a reificationProperty; and the statement's resource being treated as a reifier/identifier for its triple term component. > > My only solution at this point would be to further break up the triple term as well (which I believe you propose as well): > >> <statement> a my:Statement ; >> my:reifies <<( <s> <p> <o> )>> ; >> my:subject <s> ; >> my:predicate <p> ; >> my:object <o> . > > To cope with the fact that <o> may be a nested triple term, this breaking down would have to be applied recursively. > > At least personally, I wouldn't see this as a major problem, since it also allows one to more easily introspect the triple term, i.e., using its individual components. This meta-modelling aspect could be a note in the recommendation. I think you’d have to pursue something like that in the SPIN case, but I don’t think it fully resolves the problem. In the example above, if we replace <o> with another triple term, so that in part it would be: <statement> rdf:reifies <<( <s> <p> <<( <x> <y> <z> )>> )>> . Then I think you’re suggesting the recursive breaking down of the my:object property, so that instead of: <statement> my:object <<( <x> <y> <z> )>> . You would have: <statement> my:object <statement2> . <statement2> a my:Statement ; my:subject <x> ; … . But that is different from what was said. <statement> is meant to reify a triple whose object is a triple term, but now it’s actually reifying a triple whose object is another reifier. That felt like it made more sense a long time ago before we went in the direction of reifiers that could reify multiple triples. If you had a 1:1 correspondence between a reifier and reified triple, I think I could understand making a substitution like this, because you’d just follow the reifier to its reified triple. But now it just feels like an entirely different statement (reification of a Wedding, for example, instead of a single fact about the wedding like `<<( :liz :married :Richard )>>` ). thanks, .greg
Received on Wednesday, 4 September 2024 19:11:33 UTC