510 likes | 631 Views
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
E N D
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 • zdroje http://www.necasky.net/#me a mailto:martinnec@gmail.com 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
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á republikamá hlavní městoPrahu • 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
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
Příklad nec:meex:height“178 cm“nec:mefoaf:knowseck:meeck:mefoaf:knowsnec:me • pro každý zdroj reprezentující vlastnost může být explicitně specifikováno, že reprezentuje vlastnost (opět pomocí trojice), např.: foaf:knowsrdf:typerdf:Property Jakub Klímek, Martin Nečaský: RDFa
Co vidí stroj vs. co vidí uživatel Jakub Klímek, Martin Nečaský: RDFa
RDFa – RDF in attributes • RDF – ResourceDescription Framework • Trojice. Jednoduchá tvrzení o datech. • Subjekt, Predikát, Objekt • http://www.example.org/index.htmlmáautorajehož hodnota jeJohn Smith • subjektje URL http://www.example.org/index.html • predikátje " má autora" • objektje "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
XHTML+RDFa 1.0 document <?xmlversion="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"> <htmlxmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa1.1" xml:lang="en" lang="en"> <head> <title>VirtualLibrary</title> </head> <body> <p> Movedto <a href="http://example.org/">example.org</a>. </p> </body> </html> Jakub Klímek, Martin Nečaský: RDFa
Příklad All 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
Příklad: slovníky <div> <h2>Thetroublewith 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
Příklad: slovníky <div> <h2>Thetroublewith 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
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
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"> <imgsrc="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
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:alice@example.com"> alice@example.com </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
Příklad: FOAF <div prefix="foaf: http://xmlns.com/foaf/0.1/"about="#me"rel="foaf:knows"> <ul> <litypeof="foaf:Person"> <a property="foaf:name" rel="foaf:homepage" href="http://example.com/bob"> Bob </a> </li> <litypeof="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
URI vs. CURIE vs. SafeCURIE • URI – UniformResourceIdentifier <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> Jakub Klímek, Martin Nečaský: RDFa
RDFa – chaining (řetězení) <div about="http://dbpedia.org/resource/Albert_Einstein"> <spanproperty="foaf:name">Albert Einstein</span> <spanproperty="dbp:dateOfBirth" datatype="xsd:date">1879-03-14</span> <div rel="dbp:birthPlace" resource="http://dbpedia.org/resource/Germany"> <spanproperty="dbp:conventionalLongName">Federal Republic ofGermany</span> </div> </div> Zde se objekt v resourcestal subjektem pro vnořená tvrzení <div about="http://dbpedia.org/resource/Albert_Einstein"> <spanrel="dbp:citizenship" resource="http://dbpedia.org/resource/Germany"/> <spanrel="dbp:citizenship" resource="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> <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> Jakub Klímek, Martin Nečaský: RDFa
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+RDFa1.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
Využití mikroformátů v RDFa Microformat: <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
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/ • Orgvocabulary • Anorganization ontology • Pro skupiny a organizace (memberOf, hasMember, Site, VCard, …) • http://www.epimorphics.com/public/vocabulary/org.html • Bio vocabulary • BIO: A vocabularyforbiographicalinformation • Coronation, Death, Dismissal, Divorce, Father, Witness, Retirement, … • SKOS • SimpleKnowledgeOrganizationSystem • http://www.w3.org/2004/02/skos/ • DOAP • Descriptionof a (Software) Project • http://trac.usefulinc.com/doap • SIOC • Semantically-Interlinked Online Communities • http://sioc-project.org/ Jakub Klímek, Martin Nečaský: RDFa
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
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
Orgvocabulary Jakub Klímek, Martin Nečaský: RDFa
SIOC Jakub Klímek, Martin Nečaský: RDFa
RDFatools • 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 • Thesemantic web index • http://sindice.com • Semanticinformationmashup • http://sig.ma • W3C RDFaDistiller: • http://www.w3.org/2007/08/pyRdfa/ • RDFa Checker • http://check.rdfa.info/ Jakub Klímek, Martin Nečaský: RDFa
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
RDFainfo • 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
RDFS – RDF Schema • sada pevně definovaných zdrojů s pevně definovanou sémantikou rdfs:Class, rdfs:Resource, rdfs:range, rdfs:domain, … • rezervovaný namespacerdfs • umožňuje popis tzv. metadat (data o datech) Jakub Klímek, Martin Nečaský: RDFa
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
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
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:typemůžeme pro daný zdroj explicitně určit do které třídy patří (říkáme, že zdroj je instancí této třídynec:merdf:typefoaf:Person • tato trojice také implicitně říká, že foaf:Personje třída, čili explicitně vyjádřeno: foaf:Personrdf:typerdfs:Class Jakub Klímek, Martin Nečaský: RDFa
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 pokud nec:merdf:typefoaf:Person • potom také nec:merdf:typefoaf:Agent Jakub Klímek, Martin Nečaský: RDFa
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
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 typu foaf:knowsrdfs:rangefoaf:Person foaf:firstNamerdfs:rangerdfs:Literal foaf:weblogrdfs:rangefoaf:Document • z trojice nec:mefoaf:weblognec:weblog • plyne, že nec:weblogrdf:typefoaf:Document Jakub Klímek, Martin Nečaský: RDFa
RDFS – vlastnosti – definiční obor • pomocí rdfs:domainurčíme typy zdrojů, které mají hodnotu vlastnosti • subjekt z trojice obsahující vlastnost v predikátu je daného typu foaf:knowsrdfs:domainfoaf:Person foaf:firstNamerdfs:domainfoaf:Person foaf:weblogrdfs:domainfoaf:Agent • z trojice nec:mefoaf:weblognec:weblog • plyne, že nec:merdf:typefoaf:Agent Jakub Klímek, Martin Nečaský: RDFa
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:goesForBeerrdfs:subPropertyOffoaf:knows Jakub Klímek, Martin Nečaský: RDFa
RDFS – podvlastnosti – příklad • opět to definuje podmnožiny • z hierarchie vlastností tedy plyne, že pokud nec:menec:goesForBeereck:me • potom také nec:mefoaf:knowseck:me Jakub Klímek, Martin Nečaský: RDFa
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
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
RDFS a klasické modely (2/6) • uvažujme následující metadata: foaf:Personrdfs:subClassOffoaf:Agent foaf:knowsrdfs:domainfoaf:Person foaf:knowsrdfs:rangefoaf:Person foaf:firstNamerdfs:domainfoaf:Person foaf:firstNamerdfs:rangerdfs:Literal Jakub Klímek, Martin Nečaský: RDFa
RDFS a klasické modely (3/6) • v UML bychom metadata reprezentovali takto: Jakub Klímek, Martin Nečaský: RDFa
RDFS a klasické modely (4/6) • a následující data nec:merdf:typefoaf:Agent nec:mefoaf:firstName„Martin“ nec:mefoaf:knowseck:me nec:mefoaf:knowsex:john ex:johnrdf:typeuniv:Student Jakub Klímek, Martin Nečaský: RDFa
RDFS a klasické modely (5/6) • klasický pohled UML či E-R by narazil: • třída univ:Studentnení definována • zdroj eck:menemá přiřazen typ • zdroj nec:metypu foaf:Agentnemůže mít vlastnosti foaf:knows, foaf:firstName • netypovaný zdroj eck:mea zdroj ex:john typu univ:Studentnemohou být hodnotami vlastnosti foaf:knows • data tedy neodpovídají schématu foaf:Personrdfs:subClassOffoaf:Agent foaf:knowsrdfs:domainfoaf:Person foaf:knowsrdfs:rangefoaf:Person foaf:firstNamerdfs:domainfoaf:Person foaf:firstNamerdfs:rangerdfs:Literal nec:merdf:typefoaf:Agent nec:mefoaf:firstName „Martin“ nec:mefoaf:knowseck:me nec:mefoaf:knowsex:john ex:johnrdf:typeuniv:Student Jakub Klímek, Martin Nečaský: RDFa
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:Studentrdf:typerdfs:Class nec:merdf:typefoaf:Person eck:merdf:typefoaf:Person ex:johnrdf:typefoaf:Person Jakub Klímek, Martin Nečaský: RDFa
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
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:menec:height „178 cm“ • RDF 2: nec:menec:height „185 c Jakub Klímek, Martin Nečaský: RDFa
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:knowsrdfs:domainfoaf:Person foaf:knowsrdfs:rangefoaf:Person • RDF 2: ex:javardfs:typeex:ProgLang ex:cpprdfs:typeex:ProgLang • RDF 3: nec:mefoaf:knowsex:java nec:mefoaf:knowsex:cpp • výsledek použití: ex:javardf:typefoaf:Person Jakub Klímek, Martin Nečaský: RDFa
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 worldassumption • 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
RDF/XML syntaxe <!--Part ofthe FOAF RDF Schema--> <rdfs:Classrdf:ID="Person"> <rdfs:subClassOfrdf:resource="#Agent"/> </rdfs:Class> <rdf:Propertyrdf:ID="knows"> <rdfs:domainrdf:resource="#Person"/> <rdfs:rangerdf:resource="#Person"/> </rdf:Property> ------------------------------------------- <!--Part of a FOAF document--> <foaf:Personrdf:ID="me"> <foaf:knowsrdf:resource="&eck;me"/> </foaf:Person> Jakub Klímek, Martin Nečaský: RDFa