Re: Examples of edge annotations in Property Graphs

Well, it's LPG, so what do you expect? It's not as if the task was to map to a formalism as or even more powerful than RDF. Of course edges have to be mapped to proper ontologies and vertices to IRIs or values. But if you take it as a slightly formalized form of plain english it's perfectly understandable, and mappable to RDF - except of course the edge annotation isdue. 

The important, and clearly visible, aspect IMO is that there is no constraint on edge-annotating terms: they come from all topics, all subject areas. That's what the semantics has to be aware of: no more hiding behind "just for provenance purposes". 

Thomas 


Am 24. Januar 2023 02:54:27 MEZ schrieb "Peter F. Patel-Schneider" <pfpschneider@gmail.com>:
>Not only does this matter, it is vital. The only formal definition of labelled property graphs requires that the values associated with edges not be objects.  Using them for provenance ends up with the "strings instead of things" modelling error.  Saying that "Sherman Klump" is a role doesn't help at all.  Similarly for using integers as dates.
>
>Examples of edge annotations that are not clear on what the names and values in the annotations are not examples of interpretable data at all, just some characters strung together.
>
>peter
>
>
>On 1/23/23 20:07, Thomas Lörtsch wrote:
>> 
>>> On 24. Jan 2023, at 01:39, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote:
>>> 
>>> For some of these examples it is unclear what is going on.  For example, is Sherman Klump a string or an object?
>> Does it matter if Sherman Klump is a string or an object? The point is not the value, but the property: the annotation type is "role" (as in "actor plays role in movie", as the text above the example explains, like https://schema.org/PerformanceRole). This is not a provenance annotation but a middle of the road property. That’s what’s going on.
>> 
>>> Similarly for 135025560000;
>> Same here: the value type doesn’t matter - the annotation type "start_date" says enough.
>> 
>>> Jan10, 2011; and friends.
>> Same again.
>> 
>>> Without this information it is unclear what edge annotations are being used.
>> I’m afraid I don’t understand your problem.
>> 
>> IMO one fact is pretty clear: provenance is merely one use case among many in LPG statement annotations. LPG statement annotation is a way to structure information in one primary and some secondary aspects. What happens to be secondary is application specific, there is no strict rule.
>> 
>> Best,
>> Thomas
>> 
>> 
>> 
>>> peter
>>> 
>>> 
>>> 
>>> On 1/23/23 19:19, Thomas Lörtsch wrote:
>>>> Hi,
>>>> 
>>>> I collected some use cases for edge annotations by googling for "property graph example", checking some popular books on graph databases and consulting RDF-star implementors' documentations. It wasn’t a very systematic effort but I swear I didn’t pick favorites.
>>>> I did put a little effort in formatting, so with a monospaced font it should be fairly readable. When the example has 2 columns and 3 rows then the left column are subject, predicate and object of a statement and the right column are the attributes - you’ll get the idea.
>>>> 
>>>> Best,
>>>> Thomas
>>>> 
>>>> 
>>>> 
>>>> 
>>>> EXAMPLES:
>>>> 
>>>> 
>>>> Dave Bechberger, Josh Perryman - Graph Databases in Action, Manning Publications, 2020
>>>> Figure 2.18 Adding a role property to the acted_in edge creates a mutiple uniqueness edge to express the fact that Eddie Murphy acted in multiple roles in the movie Nutty Professor.
>>>> 
>>>>      person          Eddie Murphy
>>>>      acted_in        role: Sherman Klump, Buddy Love
>>>>      movie           Nutty Professor
>>>> 
>>>> 
>>>> 
>>>> Ian Robinson, Jim Webber, Emil Eifrim - Graph Databases New opportunities for Connected Data, O’Reilly, 2015
>>>> Figure 5-16. Timestamp properties on relationships
>>>> 
>>>>      id:1            Location: Parcel Center
>>>>      CONNECTED_TO    cost: 3, start_date: 13502556000000, end_date: 13508604000000
>>>>      id:1, name:…    Location: Delivery Base
>>>> 
>>>> 
>>>> 
>>>> Neo4j Developer, Why Graph Databases?
>>>> https://neo4j.com/developer/graph-database/
>>>> 
>>>>      Person          name: Dan, born: May 29 1970, twitter: "@dan"
>>>>      drives          since: Jan 10, 2011
>>>>      Car             brand: "Volvo", model: "V70"
>>>> 
>>>> 
>>>> 
>>>> Neo4j Blog, RDF Triple Stores vs. Labeled Property Graphs: What’s the Difference?
>>>> https://neo4j.com/blog/rdf-triple-store-vs-labeled-property-graph-difference/
>>>> 
>>>>      2042819         name: NYC
>>>>      CONNECTION      distanceKm: 4100, costUSD: 300
>>>>      2042820         name: SFO
>>>> 
>>>> 
>>>> 
>>>> Oracle, Graph Developer's Guide for Property Graph, 1.1.1 What Are Property Graphs?
>>>> https://docs.oracle.com/en/database/oracle/property-graph/22.2/spgdg/what-are-property-graphs.html
>>>> 
>>>>      1               name: Alice, age: 31
>>>>      knows           type: friends
>>>>      2               name: Bob, age: 27
>>>> 
>>>> 
>>>> 
>>>> Oxford Semantics, What is a labeled property graph?
>>>> https://www.oxfordsemantic.tech/fundamentals/what-is-a-labeled-property-graph
>>>> 
>>>>      ID: "12345", Label: "Person"
>>>>                      name: "Alice", dateOfBirth: "1975-10-22", height: 1.70
>>>>      ID "24680", Label: "Married"
>>>>                      date: "2004-09-19"
>>>>      ID: "67890", Label: "Person"
>>>>                      name: "Bob", dateOfBirth: "1976-01-07", height: 1.75
>>>> 
>>>> 
>>>> 
>>>> TerminusDB Community Blog post, Graph Fundamentals — Part 2: Labelled Property Graphs
>>>> https://medium.com/terminusdb/graph-fundamentals-part-2-labelled-property-graphs-ba9a8edb5dfe
>>>>           NODE            name: "Andy", title: "Developer"
>>>>      EDGE            rid:"MANAGES", from: 2011-12-12
>>>>      NODE            name: "Bob", title: "Manager"
>>>> 
>>>> 
>>>> 
>>>> OpenCredo, Blog post, Making Sense of Data with RDF* vs. LPG
>>>> https://opencredo.com/blogs/making-sense-of-data-with-rdf-vs-lpg/
>>>> 
>>>>      Elon Musk
>>>>      FOUNDED         startDate: "2002-03-14", source: "https://en.wikipedia.org/wiki/SpaceX"
>>>>      SpaceX
>>>> 
>>>> 
>>>> 
>>>> Cambridge Semantics, AnzoGraphDB 2.5, Creating and Querying Labeled Property Graphs (RDF*)
>>>> https://docs.cambridgesemantics.com/anzograph/v2.5/userdoc/lpgs.htm?Highlight=Labeled%20Property%20Graphs%20RDF*
>>>> 
>>>>      @prefix tickit: <http://anzograph.com/tickit/> .
>>>> 
>>>>      tickit:person3
>>>>          rdf:type tickit:person ;
>>>>          tickit:card "4984932249480735"^^xsd:long ;
>>>>          tickit:birthday "1963-07-02"^^xsd:date ;
>>>>          […] .
>>>>      << tickit:person3 tickit:like "sports" >> tickit:weight 8 .
>>>>      << tickit:person3 tickit:like "rock" >> tickit:weight 9 .
>>>>      […]
>>>>      << tickit:person3 tickit:friend tickit:person8563 >> tickit:startDate "1990-01-04"^^xsd:date .
>>>>      << tickit:person3 tickit:friend tickit:person38436 >> tickit:startDate "2000-04-27"^^xsd:date .
>>>>      << tickit:person3 tickit:friend tickit:person11979 >> tickit:startDate "2004-11-09"^^xsd:date .
>>>>      << tickit:person3 tickit:friend tickit:person11979 >> tickit:endDate "2012-07-17"^^xsd:date .
>>>>      tickit:person3 tickit:friend tickit:person8639,
>>>>          […]
>>>>          tickit:person11979,
>>>>          […]
>>>>          tickit:person38436
>>>>          […] .
>>>> 
>>>>      [In this example something went wrong with asserting quoted triples:
>>>>      person11979 should not be listed as friend anymore and
>>>>      it’s unclear why person8563 isn’t listed.
>>>>      Maybe a mishap, or mabye the friendship ended but we don’t know the date.]
>>>> 
>>>> 
>>>> 
>>>> Renzo Angles, 2018, The Property Graph Database Model
>>>> http://ceur-ws.org/Vol-2100/paper26.pdf
>>>> 
>>>>      Entry           title, numpages, keyword
>>>>      hasAuthor       order
>>>>      Author          fname, lname
>>>> 
>>>>      InProceedings   (inherits from Entry)
>>>>      booktitle       pages
>>>>      Proceedings     title, year, month
>>>> 
>>>>      Article         (inherits from Entry)
>>>>      publishedIn     pages
>>>>      Journal         title, year, vol, num
>>>> 
>>>> 
>>>> 
>>>> Stardog, Query Stardog/Edge Properties (beta)
>>>> https://docs.stardog.com/query-stardog/edge-properties
>>>> 
>>>>      << :Pete a :Engineer >> :since  2010 .
>>>>      << :Pete :worksAt :Stardog >> :source :HR .
>>>> 
>>>>      :Pete  a { :since 2010 ; until 2018} :Engineer ;
>>>>             :worksAt { :source :HR } :Stardog
>>>> 
>>>> 
>>>> 
>>>> Stardog, Blog, Property Graphs meet Stardog
>>>> https://www.stardog.com/blog/property-graphs-meet-stardog/
>>>> 
>>>>      << :Alice :worksFor :ACME >> :role :CEO ;
>>>>                                   :since 2010 ;
>>>>                                   :probability 0.8 ;
>>>>                                   :source <http://example.com/news> .
>>>> 
>>>>      :Alice :worksFor {:role :CEO ;
>>>>                        :since 2010 ;
>>>>                        :probability 0.8 ;
>>>>                        :source <http://example.com/news>} :ACME ;
>>>>             :birthDate {:probability 0.2} "1972-01-01"^^xsd:date ;
>>>>             :nationality {:source <http://example.org/Alice>} :USA .
>>>> 
>>>> 
>>>> 
>>>> GraphDB 9.2 Documentation, RDF* and SPARQL*
>>>> https://graphdb.ontotext.com/documentation/9.2/free/devhub/rdf-sparql-star.html#id1
>>>> (the current 10.1 docs use the same examples, just with explicit namespaces)
>>>> 
>>>>      :man :hasSpouse :woman .
>>>>      <<:man :hasSpouse :woman>> :startDate "2020-02-11"^^xsd:date .
>>>> 
>>>>      <<:man :hasSpouse :woman>> ex:certainty 0.9 .
>>>> 
>>>>      Object relation qualifiers:
>>>>      <<:man :hasSpouse :woman>> :startDate "2020-02-11"^^xsd:date
>>>> 
>>>>      Data value qualifiers:
>>>>      <<:painting :height 32.1>>
>>>>          :unit :cm;
>>>>          :measurementTechnique :laserScanning;
>>>>          :measuredOn "2020-02-11"^^xsd:date.
>>>> 
>>>>      Statement sources/references:
>>>>      <<:man :hasSpouse :woman>>
>>>>          :source :TheNationalEnquirer;
>>>>          :webpage <http://nationalenquirer.com/news/2020-02-12>;
>>>>          :retrieved "2020-02-13"^^xsd:dateTime.
>>>> 
>>>> 
>>>> 
>>>> Apache Jena, Documentation Support of RDF-star
>>>> https://jena.apache.org/documentation/rdf-star/
>>>> 
>>>>      SELECT ?name { <<:john foaf:name ?name >> dct:source <http://example/directory> }
>>>> 
>>>>      B.t.w., the page also says:
>>>>          "Translating back to RDF-star relies on the consistency constraint
>>>>          that there is only one reification for each unique quoted triple term."
>>>>      That's another way to illustrate how misguided the type-based approach of RDF-star is.
>>>>      
>>>> TopQuadrant, RDF-Star – Why, how and when should you use it?
>>>> https://www.topquadrant.com/resources/rdf-star-why-how-and-when-should-you-use-it
>>>> 
>>>>      example:Irene rdfs:label “Irene” ;
>>>>          rdf:type example:Person ;
>>>>          example:worksFor example:TopQuadrant .
>>>>      <urn:triple:%3Chttp%3A%2F%2Fexample.org%2Freification%23Irene%3E:%3Chttp%3A%2F%2Fexample.org%2Freification%23worksFor%3E:%3Chttp%3A%2F%2Fexample.org%2Freification%23TopQuadrant%3E>
>>>>          example:startDate “2001-12-01″^^xsd:date .
>>>> 
>>>> 
>>>> 
>>>> rdf4j, Doumentation, RDF-Star and SPARQL-Star
>>>> https://rdf4j.org/documentation/programming/rdfstar/
>>>> 
>>>>      <<ex:bob foaf:age 23>> ex:certainty 0.9 .
>>>> 
>>>> 

Received on Tuesday, 24 January 2023 09:52:54 UTC