- From: Olaf Hartig <olaf.hartig@liu.se>
- Date: Thu, 19 Sep 2019 11:15:14 +0000
- To: Richard Cyganiak <richard@cyganiak.de>
- CC: "public-rdf-star@w3.org" <public-rdf-star@w3.org>
Richard, On Wed, 2019-09-04 at 19:57 +0100, Richard Cyganiak wrote: > Olaf, > > My original question was: Why does RDF* allow triples as objects, > given that its main use cases of property annotation and PG > interoperability don't require it? > > Let me try to restate the answer you have given me, as I now > understand it: The starting point for RDF*/Turtle*/SPARQL* was not > any particular use case, but rather an idea about the abstract > syntax: using triples as a sort of literal to express triples about > triples. This idea yields a simple yet expressive abstract syntax > that turns out to be able to address, at least in part, a number of > interesting use cases, including property annotation and PG > interoperability. It also provides a more pleasing account of RDF > reification. Triples as objects are natural in this abstract syntax, > and maximise the overlap with RDF reification, thus making RDF* more > interesting. Yes, that sums it up quite nicely. > My reaction to this: RDF* has the problem that it *almost* addresses > a number of interesting use cases, but it addresses none of them > completely. Do you have any specific use cases in mind that RDF* is supposed to address but doesn't do so completely? > Since it tries to cater to multiple different use cases, it gets > pulled into different directions. The devil is in the details, and it > will not be possible for RDF* to be everything to everyone. > Eventually some hard decisions will need to be made. Probably yes. Thanks, Olaf > Users, implementers and researchers are likely to have different > priorities. > > Richard > > > > > > On 3 Sep 2019, at 21:03, Olaf Hartig <olaf.hartig@liu.se> wrote: > > > > Richard, > > > > On tisdag 3 september 2019 kl. 14:06:31 CEST Richard Cyganiak > > wrote: > > > > On 2 Sep 2019, at 17:37, Olaf Hartig <olaf.hartig@liu.se> > > > > wrote: > > > > > > > > The reason why I defined RDF* in the way I did (i.e., allowing > > > > triples not > > > > only in the subject position but also in the object position) > > > > was based > > > > on several thoughts. > > > > > > > > One of which was along the same lines of William's comment. > > > > Now, regarding > > > > your response to this comment, I don't think that introducing > > > > the possible > > > > asymmetry regarding the use of triples within RDF* triples can > > > > be > > > > justified by the fact that RDF has the same kind of asymmetry > > > > for > > > > literals. > > > > > > You appeal to a symmetry that is absent from RDF to justify a > > > symmetry in > > > RDF*. > > > > I don't think so. I appeal to a symmetry that gives users of the > > RDF*-specific > > features the greatest possible flexibility, which is independent of > > whether > > symmetry of other aspects of RDF is present or absent from RDF. > > > > > I appeal to parsimony. Make the minimal addition to RDF that > > > addresses the > > > use cases. If that minimal addition is asymmetric, so be it. RDF > > > is > > > asymmetric and it works. > > > > I understand, and I am not against sacrificing some of the > > aforementioned > > flexibility if doing so brings a clear benefit. A more convenient > > format for > > writing SPARQL* queries would be such a benefit. > > > > > > Another thought was that I wanted RDF* to be as close as > > > > possible to RDF > > > > reification. In RDF reification, the triples that talk about a > > > > reified > > > > triple may contain as their object the IRI or bnode used for > > > > the > > > > reification of the reified triple. For instance, the following > > > > is an RDF > > > > reification version of William's> > > > > example: > > > > :bob :believes _:b1 . > > > > > > > > _:b1 rdf:type rdf:Statement . > > > > _:b1 rdf:subject :moon . > > > > _:b1 rdf:predicate :consistsOf . > > > > _:b1 rdf:object :greenCheese . > > > > > > So you say you wanted RDF* to be close to RDF reification, and > > > since RDF > > > reification allows statements to appear in the object position, > > > RDF* allows > > > it too. > > > > Yes, as close as possible. > > > > > But RDF* falls well short of the goal to be close to RDF > > > reification. > > > > It depends on the notion of "close." Of course, they are not > > equivalent. > > However, only because they are not equivalent does not mean we > > cannot and > > should not aim to make RDF* as close as possible to RDF > > reification. > > > > > It cannot express any of the following (except by using RDF > > > reification > > > directly): > > > > > > - annotations of triples that are not in the graph > > > > You may have seen my idea of introducing two modes of using > > RDF*/SPARQL*: the > > "Property Graph mode" (PG mode, for short) and the "separate- > > assertions mode" > > (SA mode); see: > > https://lists.w3.org/Archives/Public/public-rdf-star/2019Aug/0001.html > > > > Now, the limitation you mention holds only for PG mode. When using > > RDF* in SA > > mode, it is possible to annotate a triple without implicitly > > asserting this > > triple. > > > > > - multiple instances of the same triple with different > > > annotations > > > > Agreed, that's a limitation (although I am not sure how important > > such a > > feature is in practice--but this question is irrelevant for our > > discussion > > here). > > > > > - IRIs as statement identifiers > > > > Correct, that's another difference (but I don't see a practical > > benefit of this > > feature). > > > > > I'm not saying that addressing any of these items in RDF* is > > > important or > > > even desirable, but I don't understand why triples-as-objects > > > *was* > > > important enough to include in RDF*, while these other items were > > > not > > > important enough. > > > > The fact that RDF* does not have these other features (the latter > > two, in > > particular) is an inherent consequence of the fundamental idea of > > RDF*; > > namely, the idea to use a triple itself when talking about this > > triple in > > other triples. Forbidding users to have triples as objects is an > > extra > > restriction that may or may not be added on top of this fundamental > > idea. My > > choice was not to add this restriction for the sake of greater > > flexibility and > > to be closer to RDF reification (even if equivalence cannot be > > achieved). > > > > > I can think of clear use cases for some of these items > > > that are difficult to address with RDF* as it stands, while I > > > have trouble > > > thinking of a use case that requires triples-as-objects. > > > > There may be use cases that require describing a relationship > > between two > > triples, which can be captured naturally by an RDF* triple that has > > one of the > > triples as its subject and the other as object. > > > > Considering RDF* triples that contain only one RDF* triple (either > > as subject > > or as object), I agree that there is no use case that would > > strictly require > > triples as object. However, there may be cases in which it seems > > more natural > > to the domain modeler to define the metadata predicates such that > > the > > referenced triples are in the object position; of course, this can > > be highly > > subjective. William's earlier example might be considered such a > > case. > > > > Best, > > Olaf > >
Received on Thursday, 19 September 2019 11:22:23 UTC