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.htmlbyla 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:typepro 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:typeje zkráceno naa<http://example.com/index.html> a foaf:Document .- protože se to čte
index.htmlis 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:Classnebordfs:subClassOf - postupně definujeme Resources jak chceme aby byly hierarchicky pod sebou
- pomocí
rdfs:subClassOfmůž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