rdf, rdfa , rdfs
DESCRIPTION
Jakub Klímek, Martin Nečaský. RDF, RDFa , RDFS. RDF. entity reálného světa (konkrétní i abstraktní) nějaká osoba, stát, webová stránka, ... reprezentovány na webu pomocí zdrojů každý zdroj je jednoznačně identifikován svým URI - PowerPoint PPT PresentationTRANSCRIPT
RDF, RDFa, RDFSJakub Klímek, Martin Nečaský
Jakub Klímek, Martin Nečaský: RDFa 2
RDF entity reálného světa (konkrétní i
abstraktní) nějaká osoba, stát, webová stránka, ...
reprezentovány na webu pomocí zdrojů každý zdroj je jednoznačně identifikován
svým URI zdroje http://www.necasky.net/#me a mailto:[email protected] reprezentující osobu Martin Nečaský
zdroj http://dbpedia.org/resource/Czech_Republic reprezentující stát Česká republika
Jakub Klímek, Martin Nečaský: RDFa 3
RDF
entity mají různé vlastnosti a jsou ve vztahu k jiným entitám Martin Nečaský je vysoký 178 cm Martin Nečaský zná Alana Eckharta Česká republika má hlavní město Prahu
stejně jako entity, i vlastnosti a vztahy jsou reprezentovány pomocí zdrojů zdroj http://www.example.com/personal/#height
reprezentující vlastnost je vysoký zdroj foaf:knows reprezentující vlastnost zná
Jakub Klímek, Martin Nečaský: RDFa 4
RDF
takové vlastnosti entit a vztahy mezi nimi lze formálně popisovat jako trojice
Subjekt Predikát Objekt subjekt (subject) je zdroj jehož vlastnost je
popisována predikát (predicate) je zdroj reprezentující
popisovanou vlastnost objekt (object) je hodnotou vlastnosti
subjektu (zdroj nebo hodnota)
Jakub Klímek, Martin Nečaský: RDFa 5
Příklad
nec:me ex:height “178 cm“nec:me foaf:knows eck:meeck:me foaf:knows nec:me
pro každý zdroj reprezentující vlastnost může být explicitně specifikováno, že reprezentuje vlastnost (opět pomocí trojice), např.:
foaf:knows rdf:type rdf:Property
Jakub Klímek, Martin Nečaský: RDFa 6
Co vidí stroj vs. co vidí uživatel
Jakub Klímek, Martin Nečaský: RDFa 7
RDFa – RDF in attributes RDF – Resource Description Framework
Trojice. Jednoduchá tvrzení o datech. Subjekt, Predikát, Objekt http://www.example.org/index.html má autora jehož
hodnota je John Smith▪ subjekt je URL http://www.example.org/index.html▪ predikát je " má autora"▪ objekt je "John Smith"
Před RDFa: XHTML pro lidi, RDF pro stroje RDFa: Speciální XHTML atributy
Umožňují využít existující XHTML data jak pro lidi tak pro stroje
bez opakování obsahu
Jakub Klímek, Martin Nečaský: RDFa 8
XHTML+RDFa 1.0 document<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd"><html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1" xml:lang="en" lang="en"> <head> <title>Virtual Library</title> </head>
<body> <p> Moved to <a href="http://example.org/">example.org</a>. </p> </body></html>
Jakub Klímek, Martin Nečaský: RDFa 9
PříkladAll content on this site is licensed under <a href="http://creativecommons.org/licenses/by/3.0/"> a Creative Commons License </a>All content on this site is licensed under <a rel="license" href="http://creativecommons.org/licenses/by/3.0/"> a Creative Commons License </a>
Jakub Klímek, Martin Nečaský: RDFa 10
Příklad: slovníky<div> <h2>The trouble with Bob</h2> <h3>Alice</h3> ... </div>
<div prefix="dc: http://purl.org/dc/elements/1.1/"> <h2 property="dc:title">The trouble with Bob</h2> <h3 property="dc:creator">Alice</h3> ...</div>
Proč prefix dc?• Kdybychom použili jen property=„title“ a property=„creator“
pro stroj to jsou stále jen nějaké nové texty • Ve slovníku Dublin Core jsou koncepty title a creator definované spolu s jejich sémantikou• dc:title je zkratka za http://purl.org/dc/elements/1.1/title a o tom „všichni“ ví co znamená
Jakub Klímek, Martin Nečaský: RDFa 11
Příklad: slovníky<div> <h2>The trouble with Bob</h2> <h3>Alice</h3> ... </div>
<div prefix="dc: http://purl.org/dc/elements/1.1/"> <h2 property="dc:title">The trouble with Bob</h2> <h3 property="dc:creator">Alice</h3> ...</div>
Jakub Klímek, Martin Nečaský: RDFa 12
Příklad: více položek na stránce<div prefix="dc: http://purl.org/dc/elements/1.1/">
<div about="/alice/posts/trouble_with_bob"><h2 property="dc:title">The trouble with Bob</h2> <h3 property="dc:creator">Alice</h3>...
</div><div about="/alice/posts/jos_barbecue">
<h2 property="dc:title">Jo's Barbecue</h2><h3 property="dc:creator">Eve</h3>...
</div>...
</div>
Jakub Klímek, Martin Nečaský: RDFa 13
Příklad: nejbližší about<div about="/alice/posts/trouble_with_bob">
<h2 property="dc:title">The trouble with Bob</h2>
The trouble with Bob is that he takes much better photos than I do:
<div about="http://example.com/bob/photos/sunset.jpg"><img src="http://example.com/bob/photos/sunset.jpg" /><span property="dc:title">Beautiful Sunset</span>by <span property="dc:creator">Bob</span>.
</div></div>
Jakub Klímek, Martin Nečaský: RDFa 14
Příklad: FOAF, typeof<div typeof="foaf:Person" prefix="foaf: http://xmlns.com/foaf/0.1/"> <p property="foaf:name"> Alice Birpemswick </p> <p> Email: <a rel="foaf:mbox" href="mailto:[email protected]"> [email protected] </a> </p> <p> Phone: <a rel="foaf:phone" href="tel:+1-617-555-7332"> +1 617.555.7332 </a> </p></div>
Žádné about, tzn. žádné URL => _:blanknode1
Jakub Klímek, Martin Nečaský: RDFa 15
Příklad: FOAF<div prefix="foaf: http://xmlns.com/foaf/0.1/" about="#me" rel="foaf:knows"> <ul> <li typeof="foaf:Person"> <a property="foaf:name" rel="foaf:homepage" href="http://example.com/bob"> Bob </a> </li> <li typeof="foaf:Person"> <a property="foaf:name" rel="foaf:homepage" href="http://example.com/eve"> Eve </a> </li> </ul></div>
Jakub Klímek, Martin Nečaský: RDFa 16
URI vs. CURIE vs. SafeCURIE
URI – Uniform Resource Identifier<div about="http://dbpedia.org/resource/Albert_Einstein">
CURIE – Compact URI Expression<div prefix="db: http://dbpedia.org/"> <div about="db:resource/Albert_Einstein"> ... </div></div>
SafeCURIE<div prefix="db: http://dbpedia.org/"> <div about="[db:resource/Albert_Einstein]"> ... </div></div>
17
XHTML a RDFa atributy - přehled
XHTML Typ obsahu Význam
@rel Seznam CURIE
Predikáty (např. "foaf:name"), objekt je v @href nebo @src
@rev Seznam CURIE
Obrácené predikáty, objekt je v @href nebo @src
@content Řetězec Strojově čitelná podoba obsahu(např. "2001-08-09T:21:00:00Z")
@href URI URI objektu (např. odkaz)@src URI URI embedded objektu (např. obrázek)RDFa Typ obsahu Význam@about URI/
SafeCURIESubjekt (např. "http://example.org/Alice/#me")
@property
Seznam CURIE
Predikáty, objektem je obsah elementu (text)
@resource
URI/SafeCURIE
Objekt (který nemá být "klikací“)
@datatype
CURIE Datový typ literálu (třeba pokud text (objekt) je jméno)
@typeof Seznam CURIE
RDF typy subjektu
@prefix Seznam Zavedení prefixů. Formát: NCName+‘:‘+‘ ‘+xs:anyURI (RDFa 1.1)@vocab URI Defaultní prefix pokud není žádný použit (RDFa 1.1)
Jakub Klímek, Martin Nečaský: RDFa 18
RDFa – chaining (řetězení)
<div about="http://dbpedia.org/resource/Albert_Einstein"> <span property="foaf:name">Albert Einstein</span> <span property="dbp:dateOfBirth" datatype="xsd:date">1879-03-14</span> <div rel="dbp:birthPlace" resource="http://dbpedia.org/resource/Germany"> <span property="dbp:conventionalLongName">Federal Republic of Germany</span> </div></div> Zde se objekt v resource stal subjektem pro
vnořená tvrzení<div about="http://dbpedia.org/resource/Albert_Einstein"> <span rel="dbp:citizenship" resource="http://dbpedia.org/resource/Germany"/> <span rel="dbp:citizenship" resource="http://dbpedia.org/resource/United_States"/></div>
<div about="http://dbpedia.org/resource/Albert_Einstein" rel="dbp:citizenship"> <span about="http://dbpedia.org/resource/Germany"/> <span about="http://dbpedia.org/resource/United_States"/></div>
<div about="http://dbpedia.org/resource/Albert_Einstein"> <div rel="dbp:citizenship"> <span about="http://dbpedia.org/resource/Germany"/> <span about="http://dbpedia.org/resource/United_States"/> </div></div>
Jakub Klímek, Martin Nečaský: RDFa 19
RDFa 1.1, XHTML+RDFa 1.1 31.3.2011: Second Last Call Working Draft XHTML+RDFa 1.1 je popsáno nejen DTD, ale i XML Schema Zavádí atributy @prefix a @vocab
XHTML+RDFa 1.0 prefixy zavádí pomocí XML namespaců:<div xmlns:db="http://dbpedia.org/"> <div about="db:resource/Albert_Einstein"> ... </div></div>
XHTML+RDFa 1.1 prefixy zavádí pomocí atributu prefix: A zavádění pomocí xmlns je deprecated
▪ Ale některé nástroje toto ještě neumí, lze zatím psát obojí najednou
<div prefix="db: http://dbpedia.org/"> <div about="db:resource/Albert_Einstein"> ... </div></div>
Jakub Klímek, Martin Nečaský: RDFa 20
Využití mikroformátů v RDFaMicroformat:<div class="haudio"> <span class="title">Start Wearing Purple</span> by <span class="contributor">Gogol Bordello</span></div>
RDFa:<div vocab="http://microformats.org/vocab#" typeof="haudio"> <span property="title">Start Wearing Purple</span> by <span property="contributor">Gogol Bordello</span> </div>
Jakub Klímek, Martin Nečaský: RDFa 21
Typické RDF vocabularies - slovníky Dublin Core
Např. vlastnosti dokumentů (title, language, creator, date, …) http://www.dublincore.org/
FOAF Friend-of-a-Friend (knows, homepage, …) http://www.foaf-project.org/
Org vocabulary An organization ontology Pro skupiny a organizace (memberOf, hasMember, Site, VCard, …) http://www.epimorphics.com/public/vocabulary/org.html
Bio vocabulary BIO: A vocabulary for biographical information Coronation, Death, Dismissal, Divorce, Father, Witness, Retirement, …
SKOS Simple Knowledge Organization System http://www.w3.org/2004/02/skos/
DOAP Description of a (Software) Project http://trac.usefulinc.com/doap
SIOC Semantically-Interlinked Online Communities http://sioc-project.org/
Jakub Klímek, Martin Nečaský: RDFa 22
Typické RDF vocabularies - slovníky biblio: http://example.org/biblio/0.1 dcterms: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ sioc: http://rdfs.org/sioc/ns# rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema# owl: http://www.w3.org/2002/07/owl# taxo: http://purl.org/rss/1.0/modules/taxonomy/ xhv: http://www.w3.org/1999/xhtml/vocab# xsd: http://www.w3.org/2001/XMLSchema# cc: http://creativecommons.org/ns# dbp: http://dbpedia.org/property/ dbr: http://dbpedia.org/resource/ dc: http://purl.org/dc/elements/1.1/ ex: http://example.org/ (Your own vocabulary)
Jakub Klímek, Martin Nečaský: RDFa 23
FOAF Core Agent Person name title img depiction (depicts) familyName givenName knows based_near age made (maker) primaryTopic (primaryTopicOf) Project Organization Group member Document Image
Jakub Klímek, Martin Nečaský: RDFa 24
Org vocabulary
Jakub Klímek, Martin Nečaský: RDFa 25
SIOC
Jakub Klímek, Martin Nečaský: RDFa 26
RDFa tools RDF Detective – doplněk pro Google Chrome
Propojení na sindice.com a sig.ma Neumí XHTML+RDFa 1.1 prefix▪ je třeba přidat xmlns
The semantic web index http://sindice.com
Semantic information mashup http://sig.ma
W3C RDFa Distiller: http://www.w3.org/2007/08/pyRdfa/
RDFa Checker http://check.rdfa.info/
Jakub Klímek, Martin Nečaský: RDFa 27
Podpora RDFa v Drupal 7
XHTML+RDFa 1.0 Automaticky generuje např.:
dcterm:title xhv:icon rdf:type=„foaf:Document“ content:encoded
Dá se udělat typ obsahu, který se bude vyplňovat jako formulář a výsledná stránka pak bude RDFa anotovaná
Jakub Klímek, Martin Nečaský: RDFa 28
RDFa info Leden 2011 – zprávy dle Yahoo!
Nejrychleji rostoucí formát pro popis dat na Webu Používáno na více jak 430 000 000 stránkách▪ tj. 3,6% webových stránek.
Poslední rok narostl počet RDFa stránek o 510%
Jakub Klímek, Martin Nečaský: RDFa 29
RDFS – RDF Schema
sada pevně definovaných zdrojů s pevně definovanou sémantikourdfs:Class, rdfs:Resource, rdfs:range, rdfs:domain, …
rezervovaný namespace rdfs umožňuje popis tzv. metadat (data o
datech)
Jakub Klímek, Martin Nečaský: RDFa 30
RDFS – RDF Schema
RDF Schema definuje následující třídy (nejsou všechny): rdfs:Resource (třída všech zdrojů) rdfs:Class (třída všech tříd) rdf:Property (z rdf třída všech
vlastností) a následující vlastnosti (nejsou všechny):
rdfs:subClassOf (je podtřídou) rdfs:range (obor hodnot vlastnosti) rdfs:domain (definiční obor vlastnosti)
Jakub Klímek, Martin Nečaský: RDFa 31
RDFS – zdroje
každý zdroj patří do (je instancí) nějaké třídy
pokud není o zdroji známo nic bližšího, potom je vždy alespoň instancí předdefinované RDF Schema třídy rdfs:Resource třída všech zdrojů
Jakub Klímek, Martin Nečaský: RDFa 32
RDFS – třídy každá třída je instancí předdefinované RDF
Schema třídy rdfs:Class třída všech tříd, je instancí sama sebe
pomocí vlastnosti rdf:type můžeme pro daný zdroj explicitně určit do které třídy patří (říkáme, že zdroj je instancí této třídynec:me rdf:type foaf:Person
tato trojice také implicitně říká, že foaf:Person je třída, čili explicitně vyjádřeno:
foaf:Person rdf:type rdfs:Class
Jakub Klímek, Martin Nečaský: RDFa 33
RDFS – podtřídy
vlastnost rdfs:subClassOf říká, že množina podtřídy je podmnožinou množiny nadtřídy
z hierarchie tříd tedy plyne, že pokudnec:me rdf:type foaf:Person potom takénec:me rdf:type foaf:Agent
Jakub Klímek, Martin Nečaský: RDFa 34
RDFS – vlastnosti
každá vlastnost je instancí předdefinované RDF třídy rdf:Property „třída všech vlastností“
vlastnosti jsou charakterizovány pomocí následujících RDF Schema vlastností: rdfs:range rdfs:domain
Jakub Klímek, Martin Nečaský: RDFa 35
RDFS – vlastnosti – obor hodnot pomocí rdfs:range určíme, jakého typu
jsou hodnoty popisované vlastnosti objekt z trojice obsahující vlastnost v
predikátu je daného typufoaf:knows rdfs:rangefoaf:Personfoaf:firstName rdfs:rangerdfs:Literalfoaf:weblog rdfs:rangefoaf:Document
z trojicenec:me foaf:weblog nec:weblog
plyne, ženec:weblog rdf:type foaf:Document
Jakub Klímek, Martin Nečaský: RDFa 36
RDFS – vlastnosti – definiční obor pomocí rdfs:domain určíme typy zdrojů,
které mají hodnotu vlastnosti subjekt z trojice obsahující vlastnost v
predikátu je daného typufoaf:knows rdfs:domain foaf:Personfoaf:firstName rdfs:domain foaf:Personfoaf:weblog rdfs:domain foaf:Agent
z trojicenec:me foaf:weblog nec:weblog
plyne, ženec:me rdf:type foaf:Agent
Jakub Klímek, Martin Nečaský: RDFa 37
RDFS – podvlastnosti
kromě hierarchií tříd umožňuje RDF Schema také vytvářet hierarchie vlastností pomocí rdfs:subPropertyOf
býti podvlastností je tedy opět v RDF Schema pouze vlastnost zdroje, který podvlastnost reprezentuje, např.
nec:goesForBeer rdfs:subPropertyOffoaf:knows
Jakub Klímek, Martin Nečaský: RDFa 38
RDFS – podvlastnosti – příklad opět to definuje podmnožiny z hierarchie vlastností tedy plyne, že
pokudnec:me nec:goesForBeer eck:me potom takénec:me foaf:knows eck:me
Jakub Klímek, Martin Nečaský: RDFa 39
HTML vs. XHTML
HTML není rozšiřitelné XHTML ano
Standard: XHTML+RDFa 1.0 Blízká budoucnost: XHTML+RDFa 1.1
31.3.2011: Second Last Call Working Draft
RDFa v HTML by mělo fungovat taky
Jakub Klímek, Martin Nečaský: RDFa 40
RDFS a klasické modely (1/6)
první pohled: vlastně to samé jako UML nebo E-R popisujeme třídy, jejich atributy a vztahy
mezi třídami druhý pohled:
podstatné a zásadní rozdíly
Jakub Klímek, Martin Nečaský: RDFa 41
RDFS a klasické modely (2/6)
uvažujme následující metadata:foaf:Person rdfs:subClassOf foaf:Agentfoaf:knows rdfs:domain foaf:Personfoaf:knows rdfs:range foaf:Personfoaf:firstNamerdfs:domain foaf:Personfoaf:firstNamerdfs:range rdfs:Literal
Jakub Klímek, Martin Nečaský: RDFa 42
RDFS a klasické modely (3/6)
v UML bychom metadata reprezentovali takto:
Jakub Klímek, Martin Nečaský: RDFa 43
RDFS a klasické modely (4/6) a následující datanec:me rdf:type foaf:Agentnec:me foaf:firstName „Martin“nec:me foaf:knows eck:menec:me foaf:knows ex:johnex:john rdf:type univ:Student
Jakub Klímek, Martin Nečaský: RDFa 44
RDFS a klasické modely (5/6)
klasický pohled UML či E-R by narazil: třída univ:Student není definována zdroj eck:me nemá přiřazen typ zdroj nec:me typu foaf:Agent nemůže mít vlastnosti foaf:knows,
foaf:firstName netypovaný zdroj eck:me a zdroj ex:john typu univ:Student nemohou být
hodnotami vlastnosti foaf:knows data tedy neodpovídají schématu
foaf:Person rdfs:subClassOf foaf:Agentfoaf:knows rdfs:domain foaf:Personfoaf:knows rdfs:range foaf:Personfoaf:firstName rdfs:domain
foaf:Personfoaf:firstName rdfs:range
rdfs:Literal nec:me rdf:type foaf:Agentnec:me foaf:firstName „Martin“nec:me foaf:knows eck:menec:me foaf:knows ex:johnex:john rdf:type univ:Student
Jakub Klímek, Martin Nečaský: RDFa 45
RDFS a klasické modely (6/6)
RDF Schema nechápe metadata jako striktní omezení struktury
metadata jsou pouze přídavnou informací, které používáme k dedukci dalších tvrzení (trojic) to co nám v klasických modelech vadí, zde
naopak využijeme k odvození chybějících informací
univ:Student rdf:type rdfs:Classnec:me rdf:type foaf:Personeck:me rdf:type foaf:Personex:john rdf:type foaf:Person
Jakub Klímek, Martin Nečaský: RDFa 46
RDF & RDFS – výhody
výhody RDF & RDF Schema: zdroj je chápán jako samostatná entita,
kterou až dodatečně popisujeme pomocí trojic
popis můžeme kdykoliv rozšířit o vlastnosti, se kterými původní autor zdaleka nepočítal
i když nemáme kompletní popis zdroje, můžeme spoustu věcí odvodit (viz. předchozí příklad)
Jakub Klímek, Martin Nečaský: RDFa 47
RDF & RDFS – nevýhody (1/2) nevýhody RDF & RDF Schema:
při použití musíme být opatrní, jinak může dojít ke zmatkům a dokonce i logickým sporům
pro daný zdroj může být na dvou místech zároveň zadána různá hodnota stejné vlastnosti RDF 1:
nec:me nec:height „178 cm“ RDF 2:
nec:me nec:height „185 c
Jakub Klímek, Martin Nečaský: RDFa 48
RDF & RDFS – nevýhody (2/2) v důsledku nesprávného použití vlastností může
dojít k logickým chybám, které však pomocí prostředků RDF Schema neodhalíme RDF 1:
foaf:knows rdfs:domain foaf:Personfoaf:knows rdfs:range foaf:Person
RDF 2:ex:java rdfs:type ex:ProgLangex:cpp rdfs:type ex:ProgLang
RDF 3:nec:me foaf:knowsex:javanec:me foaf:knowsex:cpp
výsledek použití:ex:javardf:type foaf:Person
Jakub Klímek, Martin Nečaský: RDFa 49
OWL – Web Ontology Language Aktuálně OWL2
Sémantické rozšíření RDF a RDFS Pokročilejší konstrukty, logika▪ Průnik, sjednocení, doplněk, datové a objektové
vlastnosti▪ Instance▪ Vše je owl:Thing, vše má jako podtřídu owl:Nothing
Open world assumption▪ the closed world assumption implies that everything
we don’t know is false, while the open world assumption states that everything we don’t know is undefined
Jakub Klímek, Martin Nečaský: RDFa 50
RDF/XML syntaxe<!--Part of the FOAF RDF Schema--><rdfs:Class rdf:ID="Person"> <rdfs:subClassOf rdf:resource="#Agent"/></rdfs:Class>
<rdf:Property rdf:ID="knows"> <rdfs:domain rdf:resource="#Person"/> <rdfs:range rdf:resource="#Person"/></rdf:Property>
-------------------------------------------
<!--Part of a FOAF document--><foaf:Person rdf:ID="me"> <foaf:knows rdf:resource="&eck;me"/></foaf:Person>
Jakub Klímek, Martin Nečaský: RDFa 51
Resources
http://rdfa.info/ http://www.w3.org/TR/xhtml-rdfa-pri
mer/
http://www.w3.org/TR/rdfa-syntax/ http://www.w3.org/TR/rdfa-core/ http://www.w3.org/TR/xhtml-rdfa/ http://rdfa.info/wiki/RDFa_Wiki http://xmlns.com/foaf/spec/