- From: William Van Woensel <william.vanwoensel@gmail.com>
- Date: Tue, 3 Sep 2024 07:37:15 -0400
- To: Gregory Williams <greg@evilfunhouse.com>
- Cc: RDF-star WG <public-rdf-star-wg@w3.org>
- Message-Id: <1042668E-76BF-474D-ADB6-2675BEDAFCF9@gmail.com>
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. W > On Sep 2, 2024, at 3:38 PM, Gregory Williams <greg@evilfunhouse.com> wrote: > > > >> On Sep 2, 2024, at 11:24 AM, William Van Woensel <william.vanwoensel@gmail.com> wrote: >> >> Hi Greg, >> >> I will just reply here, if you don't mind. I think you raise a good point with SPIN. (Before, I got hyperfocused on mixing old and new style reification, which was perhaps a red herring to me.) >> >> But, I think these examples do not correspond with the intended use of triple terms and reification properties, which is, at least as I understood it, as follows: >> >> - Associate a reifier/identifier with a triple term, using a reification property. >> - Then, use the reifier to describe the triple term (albeit as subject or object) in any subsequent triple. >> >> E.g., in your example: >> >>> [ sp:subject spin:_this ; >>> sp:predicate ex:p ; >>> sp:object <<( <s> <p> <o> )>> >>> ] >> >> Under this intended use, would become: >> >> _:r rdf:reifies <<( <s> <p> <o> )>> . >> >> [ sp:subject spin:_this ; >> sp:predicate ex:p ; >> sp:object _:r >> ] > > This isn’t the same thing. Your version would be a SPIN representation of: > > ?this ex:p << <s> <p> <o> >> . > > Instead of: > > ?this ex:p <<( <s> <p> <o> )>> . > > These are different patterns being encoded. I think I understand your point, but wonder if your understanding of the “intended use” would preclude using SPIN to model arbitrary query patterns like this? > > >> And in the prior example: >> >>>> _:b a rdf:Statement . >>>> _:b rdf:subject <x> . >>>> _:b rdf:predicate <y> . >>>> _:b rdf:object <<( <a> <b> <c> )>> . >> >> This becomes: >> >> _:r rdf:reifies <<( <a> <b> <c> )>> . >> _:b a rdf:Statement . >> _:b rdf:subject <x> . >> _:b rdf:predicate <y> . >> _:b rdf:object _:r . >> >> (I think this may address your final example as well?) > > I see your point, but this is NOT the same thing. Your rewrite is a reification of: > > <x> <y> << <a> <b> <c> ~ _:r >> > > It is NOT the intended reification of: > > <x> <y> <<( <a> <b> <c> )>> > > If we’re moving to a model where many different reification properties can be used with triple terms, triples using those properties encode meaning beyond just associating a reifier with a triple term, and so I think it’s important to be able to talk about those statements directly. 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. > >> In your original examples, the flagging of rdf:object or sp:object as a reificationProperty still points out the problem: the "object" property is used to associate an identifier/reifier with a triple term, which is not the intention of these properties. (E.g., the outer blank node of the SPIN description should not be used to identify <<( <s> <p> <o> )>>.) >> >> But, I think your point is that it should not be a problem. I'm unsure whether the rewritten examples mesh with your goal of breaking down triples? > > I think I’d probably make a much stronger point: precluding the SPIN usage (and other examples like it) would *be a problem*. > > thanks, > .greg >
Received on Tuesday, 3 September 2024 11:37:31 UTC