Modely a formáty pro grafová data - RDF a Labeled Property Graph

ChatGPT

Vygenerováno pomocí ChatGPT na zaklade prezentaci od Klimky

RDF (Resource Description Framework)

Popis a použití:

Formáty serializace dat

RDF model lze serializovat v několika formátech, z nichž každý slouží různým účelům a použitím.

1. Turtle (Terse RDF Triple Language)

Turtle je lidsky čitelný formát serializace RDF, který je kompaktní a snadno pochopitelný, zejména pro ty, kteří se orientují v syntaxi RDF.
Pasted image 20240821134429.png
Pasted image 20240821134515.png
Pasted image 20240821134555.png
Pasted image 20240821134839.png
Pasted image 20240821134951.png
Příklad:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

<http://example.org/person/JohnDoe> 
  a foaf:Person ;
  foaf:name "John Doe" ;
  foaf:age 28 ;
  foaf:knows <http://example.org/person/JaneDoe> .

2. N-Triples

N-Triples je textový formát pro kódování RDF grafů, navržený tak, aby byl jednoduchý a snadno parsovatelný.

Příklad:

<http://example.org/person/JohnDoe> <http://xmlns.com/foaf/0.1/name> "John Doe" .
<http://example.org/person/JohnDoe> <http://xmlns.com/foaf/0.1/age> "28"^^<http://www.w3.org/2001/XMLSchema#integer> .

Pasted image 20240821134216.png

3. TriG

TriG rozšiřuje Turtle o podporu pojmenovaných grafů, což umožňuje seskupování trojic do různých grafů v rámci jednoho dokumentu.

Příklad:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

{
  <http://example.org/person/JohnDoe> 
    a foaf:Person ;
    foaf:name "John Doe" ;
    foaf:age 28 ;
    foaf:knows <http://example.org/person/JaneDoe> .
}

GRAPH <http://example.org/graph1> {
  <http://example.org/person/JaneDoe>
    a foaf:Person ;
    foaf:name "Jane Doe" ;
    foaf:age 26 .
}

4. N-Quads

N-Quads je rozšíření N-Triples, které přidává podporu pojmenovaných grafů, což umožňuje přidání názvu grafu vedle subjektu, predikátu a objektu.

Příklad:

<http://example.org/person/JohnDoe> <http://xmlns.com/foaf/0.1/name> "John Doe" <http://example.org/graph1> .
<http://example.org/person/JohnDoe> <http://xmlns.com/foaf/0.1/age> "28"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example.org/graph1> .

Srovnání s Labeled Property Graph (LPG)

Popis a použití:

RDF Schema (RDFS)

Popis a použití:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:Person a rdfs:Class ;
  rdfs:label "Osoba" .

ex:knows a rdf:Property ;
  rdfs:domain ex:Person ;
  rdfs:range ex:Person .

Pasted image 20240821140227.png

Dotazovací jazyky

1. SPARQL

1. Filtering Data
SELECT ?subject ?predicate ?object
WHERE {
    ?subject ?predicate ?object.
    FILTER (?object > 100) # Example of filtering by a numerical value
}

2. Creating New Triples

CONSTRUCT {
    ?subject <http://example.org/newPredicate> ?object .
}
WHERE {
    ?subject <http://example.org/oldPredicate> ?object .
}

3. Binding Variables to New Values

SELECT ?subject ?newValue
WHERE {
    ?subject <http://example.org/hasValue> ?value .
    BIND(?value * 2 AS ?newValue) # Example of creating a new variable with transformed data
}
4. Aggregation and Grouping
SELECT ?subject (SUM(?value) AS ?totalValue)
WHERE {
    ?subject <http://example.org/hasValue> ?value .
}
GROUP BY ?subject
5. String Manipulations
SELECT ?subject (CONCAT(?firstName, " ", ?lastName) AS ?fullName)
WHERE {
    ?subject <http://example.org/firstName> ?firstName .
    ?subject <http://example.org/lastName> ?lastName .
}
6. Optional Data Transformation
SELECT ?subject ?name ?optionalValue
WHERE {
    ?subject <http://example.org/hasName> ?name .
    OPTIONAL { ?subject <http://example.org/optionalPredicate> ?optionalValue }
}
7. Transforming with Functions
SELECT ?subject (YEAR(?date) AS ?year)
WHERE {
    ?subject <http://example.org/hasDate> ?date .
}
8. Combining Data from Multiple Sources
SELECT ?subject ?value
WHERE {
    { ?subject <http://example.org/propertyA> ?value }
    UNION
    { ?subject <http://example.org/propertyB> ?value }
}

2. Cypher

Příklad:

MATCH (p:Person)-[:KNOWS]->(friend)
RETURN p.name, friend.name