- From: Sasaki, Felix <felix.sasaki@sap.com>
- Date: Fri, 19 Apr 2024 20:11:38 +0000
- To: Kurt Cagle <kurt.cagle@gmail.com>, "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>
- Message-ID: <AS8PR02MB6966F20B8DC29E819AFF19A7850D2@AS8PR02MB6966.eurprd02.prod.outlook.com>
“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 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<mailto:kurt.cagle@gmail.com> 443-837-8725 On Fri, Apr 19, 2024 at 12:30 PM ddooss@wp.pl<mailto:ddooss@wp.pl> <ddooss@wp.pl<mailto:ddooss@wp.pl>> wrote: Kurt Cagle <kurt.cagle@gmail.com<mailto: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 20:11:44 UTC