- 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