Examples of edge annotations in Property Graphs

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 00:20:19 UTC