- From: <ddooss@wp.pl>
- Date: Fri, 19 Apr 2024 23:31:57 +0200
- To: Kurt Cagle <kurt.cagle@gmail.com>,Sasaki, Felix <felix.sasaki@sap.com>
- Cc: Pierre-Antoine Champin <pierre-antoine@w3.org>,Lassila, Ora <ora@amazon.com>,RDF-star WG <public-rdf-star-wg@w3.org>
- Message-ID: <15b2d75810cf42ebb69659034d731363@grupawp.pl>
Hi Kurt, I don't fully understand your position. You compare the formal RDF-star model to just one implementation which is Neo4j. These things are not comparable. Best, Dominik Dnia 19 kwietnia 2024 22:42 Kurt Cagle <kurt.cagle@gmail.com> napisał(a): For creating data CREATE (liz:Person {name: 'Liz'}), (richard:Person {name: 'Richard'}) CREATE (liz)-[:MARRIED {from: 1964, to: 1975}]->(richard) CREATE (liz)-[:MARRIED {from: 1985}]->(richard) That does not bother them, and also not for querying the data MATCH (liz:Person {name: 'Liz'})-[m:MARRIED]->(richard:Person {name: 'Richard'}) RETURN m.from AS StartYear, m.to m.to AS EndYear Yes, but m:MARRIED is still a synonym for multiple (implicit) edge identifiers. I'm not saying that it should bother anyone on the LPG side. My argument is that to model it in RDF-Star, where there IS a distinction between the edge predicate and the reifier, requires that you recognize that what is depicted as one predicate in an LPG is actually an implicit mapping to multiple predicates in RDF. (liz)-[:MARRIED {from: 1964, to: 1975}]->(richard) is equivalent to: <<:married1 | :liz :married-1 :richard>> : from 1964; :to 1975 . <<:married2 | :liz :married-2 :richard>> : from 1985. :married1 rdfs:label ":MARRIED". :married2 rdfs:label ":MARRIED". If you just use a single :married predicate, you get <<:married | :liz :married :richard>> : from 1964; :to 1975 . <<:married | :liz :married :richard>> from: 1985. which creates the potential where you would end up retrieving: :married :from 1985; :to 1975 . which is clearly impossible Kurt Cagle Editor in Chief The Cagle Report kurt.cagle@gmail.com 443-837-8725 voice.google.com On Fri, Apr 19, 2024 at 1:11 PM Sasaki, Felix < felix.sasaki@sap.com > wrote: “ The user usually doesn't see the predicate identifiers directly; they only see the label“ For creating data CREATE (liz:Person {name: 'Liz'}), (richard:Person {name: 'Richard'}) CREATE (liz)-[:MARRIED {from: 1964, to: 1975}]->(richard) CREATE (liz)-[:MARRIED {from: 1985}]->(richard) That does not bother them, and also not for querying the data MATCH (liz:Person {name: 'Liz'})-[m:MARRIED]->(richard:Person {name: 'Richard'}) RETURN m.from AS StartYear, m.to m.to AS EndYear Best, Felix Von: Kurt Cagle < kurt.cagle@gmail.com > Datum: Freitag, 19. April 2024 um 21:53 An: ddooss@wp.pl < ddooss@wp.pl > Cc: Pierre-Antoine Champin < pierre-antoine@w3.org >, Lassila, Ora < ora@amazon.com >, RDF-star WG < public-rdf-star-wg@w3.org > Betreff: Re: reifiesDomain-14 (Re: proposal: a reifier should reify only one "thing") >> This is actually an error that arises in LPGs, because they have no way of differentiating #marriage1 from #marriage3. > It's not true. Most PG definitions or implementations allow you to create two edges with the same label and different properties. I'm saying that this is a modelling error with LPGs. The edge contains the identifier in the assertion, not the nodes. In an LPG (specifically Neo4J): (Liz marries Richard) [from 1964; to 1975] and (Liz marries Richard) [from 1985] are distinct because the predicate "marries" carries the (implicit) identifier, and any query is actually an query on the text of the labels. This is equivalent to <<:liz :marries-1 :richard>> [:from 1964 ; to: 1975] . <<:liz :marries-2 :robert>> [:from 1977 ; to: 1981] . <<:liz :marries-3 :richard>> [:from 1985] . :marries-1 rdfs:label "marries" . :marries-2 rdfs:label "marries" . :marries-3 rdfs:label "marries" . The user usually doesn't see the predicate identifiers directly; they only see the label, so they don't recognize that the first and third statements actually have different predicates with the same name. That is CERTAINLY the case for Neo4J; I'm not sure about other LPGs. Kurt Cagle Editor in Chief The Cagle Report kurt.cagle@gmail.com 443-837-8725 On Fri, Apr 19, 2024 at 12:30 PM ddooss@wp.pl < ddooss@wp.pl > wrote: Kurt Cagle < kurt.cagle@gmail.com >: <<#marriage1 | :liz :marries :richard>> a :Event; :bride :liz ; :groom :richard ; :startYear 1964 ; :endYear 1975 ; . This works in the case where Liz later marries Bob: <<#marriage2 | :liz :marries :robert>> a :Event; :bride :liz ; :groom :robert ; :startYear 1977 ; :endYear 1981 ; . But gets into trouble when Liz and Richard decide to remarry: <<#marriage3 | :liz :marries :richard>> a :Event; :bride :liz ; :groom :richard ; :startYear 1985 ; . This is actually an error that arises in LPGs, because they have no way of differentiating #marriage1 from #marriage3. It's not true. Most PG definitions or implementations allow you to create two edges with the same label and different properties. Best, Dominik
Received on Friday, 19 April 2024 21:32:06 UTC