Prezentace od p. Klímka na MDF zde.
RDF = Resource Description Framework
- jedná se o grafový datový formát
- základ jsou trojice, RDF je zjednodušeně množina těchto trojic:
- subject
- predicate
- object
- pořadí trojic není definované (mohou být na přeskáčku) - je to dáno tím, že je to MNOŽINA
- toto nám říká:
- stránka
index.html
byla vytvořena zaměstnancem číslo 8574
- stránka
Typy zdrojů (Resources)
- nějaký zdroj - definovaný svým URI nebo IRI
- literál - je to nějaký string, prostý text
- můžeme k němu přidat language tag (
@en
…) - musíme specifikovat jeho datový typ (default je
xsd:string
)- další typ je třeba
xsd:date
- i datové typy mají svoje IRI
- další typ je třeba
- můžeme k němu přidat language tag (
- blank node - zdroj/věc bez IRI, má speciální ID, které je použitelné jenom v rámci toho stejného dokumentu
Prefixy
- můžeme si definovat prefixy pro často používané zdroje (také pro přehlednost a čitelnost)
- např.
@prefix dcterms: <http://purl.org/dc/terms/> .
- a pak mohu používat už jenom
dcterms:creator
- a pak mohu používat už jenom
- můžeme použít jakékoliv název pro prefix, ale jsou zavedené “známé” prefixy, které se používají
- např.
Třídy
- třída sama o sobě je Resource
- používáme predicate
rdf:type
pro přiřazení nějakého zdroje do třídymy:staff/85740 rdf:type my:Person .
RDF je OWA (= Open World Assumption) - to znamená, že pokud to neví pravdivost nějakého statementu, tak to odpoví “unknown”
- narozdíl od např. SQL, které odpoví “false”
- v rámci OWA, pokud chci, aby něco neplatilo, tak to musím explicitně specifikovat
Serializace
N-Triples
- jedna z prvních serializací, umí jen celá IRI (nejdou zkrátit)
- pros
- jednoduchá, jednoduše se parsuje, jednoduše se píše
- může je streamovat
- cons
- lidsky je to špatně čitelné
- zabírá hodně místa (zvlášť nekomprimovaná)
Turtle
- zavádí prefixy, takže je zápis mnohem lépe čitelný pro lidi
- existují i prefixy, které mají prázdný název
- zavádí
;
na konec řádku- znamená to, že Subject je stejný jako na řádku výše
- zavádí
,
na konec řádku- znamená to, že další RDF trojice bude mít stejný Subject i Object
- zavádí multiline strings (pomocí
"""
) a escapované sekvence (\t, \n, \"...
) - datové typy už to umí odvodit samo (4, 135.154, 1.3e6, true)
- už nemusím za každý psát
^^xsd:double
- už nemusím za každý psát
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix my: <http://example.com/> .
@prefix staff: <http://example.com/staff/> .
my:index.html dcterms:created "2020-04-23"^^xsd:date ;
dcterms:creator staff:8574 ,
staff:8575 ;
dcterms:title "Moje stránka"@cs ,
"My page"@en .
- syntaktická zkratka
rdf:type
je zkráceno naa
<http://example.com/index.html> a foaf:Document .
- protože se to čte
index.html
is a document
N-Quads
- založeno na N-Triples, přidává podporu pro pojmenované grafy
- S P O G
- subject, predicate, object, graph
- čtvrtý graf slouží jako kontext k původní trojici
TriG
- inspirované Turtle, také přidává možnost pojmenovaných grafů
- grafy už máme vizuálně oddělené, jinak umí vše, co Turtle
@prefix ex: <http://example.org/> .
# defaultní graf
{
...
}
ex:graph1 {
ex:petr ex:hasName "Petr" .
ex:petr ex:hasAge 25 .
}
ex:graph2 {
ex:petr ex:likes "Bike riding" .
}
RDFS = RDF Schema
- můžeme definovat hierarchii tříd
- pomocí
rdfs:Class
nebordfs:subClassOf
- postupně definujeme Resources jak chceme aby byly hierarchicky pod sebou
- pomocí
rdfs:subClassOf
můžeme řešit dědičnost
- pomocí
- můžeme také definovat properties (což jsou predikáty pro popis vztahů mezi Subjektem a Objektem)
- a k nim i podvlastnosti
rdfs:subPropertyOf
- a k nim i podvlastnosti
rdfs:label
- lidský popis zdroje (Resource)rdfs:comment
- delší popis či komentář ke zdrojirdfs:seeAlso
- ukazuje na další zdroj, který může nabídnout další/rozšiřující info- každá třída a property by měla mít tyto properties, je to základ pro kvalitní RDF Vocabulary