Here are the steps to answer this SPARQL query against the given RDF base: 1. The query asks for all ?name values where there is a triple with predicate "name" and another triple with the same subject and predicate "email". 2. In the base, _:b is the only resource that has both a "name" and "email" triple. 3. _:b has the name "Thomas". Therefore, the only result of the query is ?name = "Thomas". So the result of the SPARQL query is: ?name "Thomas"
RDFstands for Resource: pages,dogs, ideas... everything that can have a URI Description: attributes, features, and relations of the resources Framework: model, languages and syntaxes for these descriptions
12.
RDFis a triplemodel i.e. every piece of knowledge is broken down into ( subject , predicate , object )
writing rules forRDF triples • the subject is always a resource (never a literal) • properties are binary relations and their types are identified by IRIs • the value is a resource or a literal
34.
blank nodes (bnodes) http://bu.ch/l23.html author "MyLife" title "John" surname "Doe" firstname handy anonymous nodes (existential quantification) there exist a resource such that… { r ; …} <rdf:Description rdf:about="http://bu.ch/123.html "> <author> <rdf:Description> <surname>Doe</surname> <firstname>John</firstname> </rdf:Description> </author> <title>My Life</title> </rdf:Description> <http://bu.ch/123.html> author [surname "Doe" ; firstname "John" . ] ; title "My Life" .
35.
XML schema datatypes& literals standard literals are xsd:string type literals with datatypes from XML Schema <rdf:Description rdf:about="#Fabien"> <teaching rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"> true</teaching> <birth rdf:datatype="http://www.w3.org/2001/XMLSchema#date"> 1975-07-31</birth> </rdf:Description/> #Fabien teaching "true"^^xsd:boolean ; birth "1975-07-31"^^xsd:date . #Fabien "true"^^xsd:boolean "1975-07-31"^^xsd:date teaching birth
langue <Book> <title xml:lang=‘fr’>Seigneur desanneaux</title> <title xml:lang=‘en’>Lord of the rings</title> </Book> <Book> title "Seigneur des anneaux"@fr ; title "Lord of the rings"@en . literals with languages and without are disjoint “Fabien” “Fabien”@en “Fabien”@fr
38.
typing resources using URIsto identify the types <urn://~fgandon> rdf:type <http://www.inria.fr/schema#Person> a resource can have several types <urn://~fgandon> rdf:type <http://www.inria.fr/schema#Person> <urn://~fgandon> rdf:type <http://www.inria.fr/schema#Researcher> <urn://~fgandon> rdf:type <http://www.mit.edu/schema#Lecturer> <rdf:Description rdf:about="urn://~fgandon"> <rdf:type rdf:resource="http://www.inria.fr/schema#Person" /> <name>Fabien</name> </rdf:Description> <in:Person rdf:about="urn://~fgandon"> <name>Fabien</name> </in:Person> <urn://~fgandon> a in:Person ; name "Fabien" .
alternativese.g. title ofa book in different languages <rdf:Description rdf:about="#book"> <title> <rdf:Alt> <rdf:li xml:lang="fr">l’homme qui prenait sa femme pour un chapeau</rdf:li> <rdf:li xml:lang="en">the man who mistook his wife for a hat</rdf:li> </rdf:Alt> </title> </rdf:Description> <#book> title [ a rdf:Alt ; rdf:li "l’homme…"@fr ; rdf:li "the man…"@en . ] .
May 2007 April2008 September 2008 March 2009 September 2010 Linking Open Data Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/ September 2011 0 100 200 300 400 10/10/2006 28/04/2007 14/11/2007 01/06/2008 18/12/2008 06/07/2009 22/01/2010 10/08/2010 26/02/2011 14/09/2011 01/04/2012
linked data principlesUse RDF as data format Use HTTP URIs as names for things so that people can look up those names When someone looks up a URI, provide useful information (RDF, HTML, etc.) using content negotiation Include links to other URIs so that related things can be discovered HTTP URI GET HTML,RDF,… GET 303
64.
DNShe who controlsthe name controls the access ex. bit.ly & Libya .fr * .inria isicil
graph mapping /projection classical three clauses: – Select: clause to select the values to be returned – Where: triple/graph pattern to match – Filter: constraints expressed using test functions (XPath 2.0 or external)
72.
SPARQL triples • triplesand question marks for variables: ?x rdf:type ex:Person • graph patterns to match: SELECT ?subject ?proprerty ?value WHERE {?subject ?proprerty ?value} • a pattern is, by default, a conjunction of triples SELECT ?x WHERE { ?x rdf:type ex:Person . ?x ex:name ?name . }
73.
question: • Query: SELECT ?nameWHERE { ?x name ?name . ?x email ?email . } • Base: _:a name "Fabien" _:b name "Thomas" _:c name "Lincoln" _:d name "Aline" _:b email <mailto:thom@chaka.sn> _:a email <mailto:Fabien.Gandon@inria.fr> _:d email <mailto:avalandre@pachinko.jp> _:a email <mailto:bafien@fabien.info> • Results ? x2
74.
prefixes to use namespaces: PREFIXmit: <http://www.mit.edu#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?student WHERE { ?student mit:registeredAt ?x . ?x foaf:homepage <http://www.mit.edu> . } Base namespace : BASE <…>
result formats • abinding i.e. list of all the selected values (SELECT) for each answer found; (stable XML format ; e.g. for XSLT transformations) • RDF sub-graphs for each answer found (RDF/XML format ; e.g. for application integration) • JSON (eg. ajax web applications) • CSV/TSV (eg. export)
77.
example of binding resultsfor previous query in XML <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="student"/> </head> <results ordered="false" distinct="false"> <result> <binding name="student"> <uri>http//www.mit.edu/data.rdf#ndieng</uri></binding> </result> <result> <binding name="student"> <uri>http//www.mit.edu/data.rdf#jdoe</uri></binding> </result> </sparql>
78.
simplified syntax triples witha common subject: SELECT ?name ?fname WHERE { ?x a Person; name ?name ; firstname ?fname ; author ?y . } list of values ?x firstname "Fabien", "Lucien" . blank node [firstname "Fabien"] or [] firstname "Fabien" SELECT ?name ?fname WHERE { ?x rdf:type Person . ?x name ?name . ?x firstname ?fname . ?x author ?y . }
union alternative graph patterns PREFIXmit: <http://www.mit.edu#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?student ?name WHERE { ?student mit:registeredAt ?x . { { ?x foaf:homepage <http://www.mit.edu> . } UNION { ?x foaf:homepage <www.stanford.edu/> . } } }
82.
sort, filter andlimit answers PREFIX mit: <http://www.mit.edu#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?student ?name WHERE { ?student mit:registeredAt ?x . ?x foaf:homepage <http://www.mit.edu> . ?student foaf:name ?name . ? student foaf:age ?age . FILTER (?age > 22) } ORDER BY ?name LIMIT 20 OFFSET 20 students older than 22 years sorted by name results from number #21 to #40
83.
operators • Inside theFILTER: – Comparators: <, >, =, <=, >=, != – Tests on variables : isURI(?x), isBlank(?x), isLiteral(?x), bound(?x) – Regular expression regex(?x, "A.*") – Attributes and values: lang(), datatype(), str() – Casting: xsd:integer(?x) – External functions and extensions – Boolean combinations: &&, || • In the where WHERE: @fr , ^^xsd:integer • In the SELECT: distinct
84.
other functions (v1.1) isNumeric(Val) test it is a numeric value coalesce(val,…, val) first valid value IRI(Str)/URI(Str) to build an iri/uri from a string BNODE(ID) to build a blank node RAND() random value between 0 and 1 ABS(Val) absolute value CEIL(Val), FLOOR(Val), ROUND(Val) NOW() today’s date DAY(Date), HOURS(Date), MINUTES(Date), MONTH(Date), SECONDS(Date), TIMEZONE(Date), TZ(Date), YEAR(Date) to access different parts of a date MD5(Val), SHA1(Val), SHA256(Val), SHA384(Val), SHA512(Val) hash functions
85.
string / literalfunctions (v1.1) STRDT(value, type) build a typed literal STRLANG(value, lang) build a literal with a language CONCAT(lit1,…,litn) concatenate a list of literal CONTAINS(lit1,lit2), STRSTARTS(lit1,lit2), STRENDS(lit1,lit2) to test string inclusion SUBSTR(lit, start [,length]) extract a sub string ENCODE_FOR_URI (Str) encodes a string as URI UCASE (Str), LCASE (Str) uppercase and lowercase STRLEN (Str) length of the string
86.
aggregates group by +count, sum, min, max, avg, group_concat, or sample ex. average scores, grouped by the subject, but only where the mean is greater than 10 SELECT (AVG(?score) AS ?average) WHERE { ?student score ?score . } GROUP BY ?student HAVING(AVG(?score) > 10)
test a valueis in / not in a list prefix foaf: <http://xmlns.com/foaf/0.1/> select * where { ?x foaf:name ?n . filter (?n in ("fabien", "olivier", "catherine") ) }
Test on DBpedia •Connect to: http://dbpedia.org/snorql/ or http://fr.dbpedia.org/sparql or … http://wiki.dbpedia.org/Internationalization/Chapters • Query: SELECT * WHERE { ?x rdfs:label "Paris"@fr . ?x ?p ?v . } LIMIT 10
RDFS to defineclasses of resources and organize their hierarchy Document Report
128.
RDFS to definerelations between resources, their signature and organize their hierarchy creator author Document Person
129.
FO R GF GRmapping modulo an ontology car vehicle car(x)vehicle(x) GF GRvehicle car O
130.
an old schemaof RDFS W3C http://www.w3.org/TR/2000/CR-rdf-schema-20000327/
131.
example of RDFSschema <rdf:RDF xml:base ="http://inria.fr/2005/humans.rdfs" xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns ="http://www.w3.org/2000/01/rdf-schema#> <Class rdf:ID="Man"> <subClassOf rdf:resource="#Person"/> <subClassOf rdf:resource="#Male"/> <label xml:lang="en">man</label> <comment xml:lang="en">an adult male person</comment> </Class> <Man> a Class ; subClassOf <Person>, <Male> .
132.
example of RDFSproperties <rdf:RDF xml:base ="http://inria.fr/2005/humans.rdfs" xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns ="http://www.w3.org/2000/01/rdf-schema#> <rdf:Property rdf:ID="hasMother"> <subPropertyOf rdf:resource="#hasParent"/> <range rdf:resource="#Female"/> <domain rdf:resource="#Human"/> <label xml:lang="en">has for mother</label> <comment xml:lang="en">to have for parent a female. </comment> </rdf:Property> <hasMother> a rdf:Property ; subPropertyOf <hasParent> ; range <Female> ; domain <Human> .
133.
example of RDFusing this schema <rdf:RDF xmlns:rdf ="http://www.w3.org/1999/02/22-rdf- syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://inria.fr/2005/humans.rdfs#" xml:base=" http://inria.fr/2005/humans.rdfs-instances" > <rdf:Description rdf:ID="Lucas"> <rdf:type rdf:resource="http://inria.fr/2005/humans.rdfs#Man"/> <hasMother rdf:resource="#Laura"/> </rdf:Description> <Man rdf:ID="Lucas"> <hasMother rdf:resource="#Laura"/> </Man> <Luca> a Man; hasMother <Laura> .
134.
rdfs:label a resource mayhave one or more labels in one or more natural language <rdf:Property rdf:ID='name'> <rdfs:domain rdf:resource='Person'/> <rdfs:range rdf:resource='&rdfs;Literal'/> <rdfs:label xml:lang='fr'>nom</rdfs:label> <rdfs:label xml:lang='fr'>nom de famille</rdfs:label> <rdfs:label xml:lang='en'>name</rdfs:label> </rdf:Property> <name> a rdf:Property ; range rdfs:Literal ; domain <Person> ; label "nom"@fr, "nom de famille"@fr, "name"@en .
135.
rdfs:comment & rdfs:seeAlso commentsprovide definitions and explanations in natural language <rdfs:Class rdf:about=‘#Woman’> <rdfs:subClassOf rdf:resource="#Person"/> <rdfs:comment xml:lang=‘fr’>une personne adulte du sexe féminin</rdfs:comment> <rdfs:comment xml:lang=‘en’>a female adult person </rdfs:comment> </rdfs:Class> see also… <rdfs:Class rdf:about=‘#Man’> <rdfs:seeAlso rdf:resource=‘#Woman’/> </rdfs:Class> <Woman> a rdfs:Class ; rdfs:subClassOf <Person> ; rdfs:comment "adult femal person"@en ; rdfs:comment "une adulte de sexe féminin"@fr . <Man> a rdfs:Class ; rdfs:seeAlso <Woman> .
enumerated class define aclass by providing all its members <owl:Class rdf:id="EyeColor"> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:ID="Blue"/> <owl:Thing rdf:ID="Green"/> <owl:Thing rdf:ID="Brown"/> <owl:Thing rdf:ID="Black"/> </owl:oneOf> </owl:Class> {a,b,c,d,e}
140.
classes defined byunion of other classes <owl:Class> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Person"/> <owl:Class rdf:about="#Group"/> </owl:unionOf> </owl:Class>
141.
classes defined byintersection of other classes <owl:Class rdf:ID="Man"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Male"/> <owl:Class rdf:about="#Person"/> </owl:intersectionOf> </owl:Class>
142.
complement and disjunction complementclass <owl:Class rdf:ID="Male"> <owl:complementOf rdf:resource="#Female"/> </owl:Class> declare a disjunction <owl:Class rdf:ID="Square"> <owl:disjointWith rdf:resource="#Round"/> </owl:Class>
restriction to anexact value <owl:Class rdf:ID="Bike"> <subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#nbWheels" /> <owl:hasValue>2</owl:hasValue> </owl:Restriction> </subClassOf> </owl:Class> !
146.
restriction on cardinality howmany times a property is used for a same subject but with different values • Constraints: minimum, maximum, exact number • Exemple <owl:Class rdf:ID="Person"> <subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#name" /> <owl:maxCardinality>1</owl:maxCardinality> </owl:Restriction> </subClassOf> </owl:Class> 1..1
147.
types of properties •ObjectProperty are relations between resources only e.g. hasParent(#thomas,#stephan) • DatatypeProperty have a literal value possibly typed ex:hasAge(#thomas,16^^xsd:int) • AnnotationProperty are ignored in inferences and used for documentation and extensions
equivalencies and alignment •equivalent classes : owl:equivalentClass • equivalent properties: owl:equivalentProperty • identical or different resources: owl:sameAs, owl:differentFrom
150.
document the schemas descriptionof the ontology owl:Ontology, owl:imports, owl:versionInfo, owl:priorVersion, owl:backwardCompatibleWith, owl:incompatibleWith versions of classes and properties owl:DeprecatedClass, owl:DeprecatedProperty
151.
OWL profiles EL: largenumbers of properties and/or classes and polynomial time. QL: large volumes of instance data, and conjunctive query answering using conventional relational database in LOGSPACE RL: scalable reasoning without sacrificing too much expressive power using rule-based reasoning in polynomial time
e.g. infer newrelations rule: if a member of a team is interested in a topic then the team as a whole is interested in that topic ?person interestedBy ?topic ?person member ?team ?team interestedBy ?topic interestedByPerson ?person Topic ?topic member Team ?team interestedBy
RIF Core monotonic Hornclause on frames conclusion :- hyp1 and hyp2 and hyp3 … • IRI as constants • frames as triplets • lists • existential quantification in condition • class membership and equality in condition
165.
RIF BLD (BasicLogic Dialect) still monotonic : no changes. • conjunction in conclusion • fonctions, predicates and named arguments f(?x) Maganer(?e) :- Exists ?g (manage(?e ?g)) • disjunction in condition • equality in conclusion • sub-classes
166.
RIF PRD (ProductionRules Dialect) full production rules in forward chaining • add, delete, modify, run • instantiate frames (new) • negation as failure (ineg) • no longer monotonic Forall ?customer ?purchasesYTD (If And( ?customer#ex:Customer ?customer[ex:purchasesYTD->?purchasesYTD] External(pred:numeric-greater-than(?purchasesYTD 5000)) ) Then Do( Modify(?customer[ex:status->"Gold"]) ) ) (from PRD Rec. Doc.)
167.
RIF, RIF, RIF,… •DTB (Datatypes and Built-Ins) : data types with their predicates and functions • FLD: how to specify new dialects extending BLD • SWC : syntax and semantics to combine RIF, RDF graphs, RDFS and OWL (RL)
inria:CorporateSemanticWeb skos:scopeNote "only withinKM community"; skos:definition "a semantic web on an intranet"; skos:example "Nokia's internal use of RDF gateway"; skos:historyNote "semantic intranet until 2006"; skos:editorialNote "keep wikipedia def. uptodate"; skos:changeNote "acronym added by fabien".
direct mapping • cellsof a line triples with a shared subject • names of columns names of properties • each value of a cell one object • links between tables name fname age doe john 34 did sandy 45 #s1 :name "doe" #s1 :fname "john" #s1 :age "34" #s2 :name "did" #s2 :fname "sandy" #s2 :age "45" #s3 …
177.
example of mapping ISBNAuthor Title Year 0006511409X id_xyz The Glass Palace 2000 ID Name Homepage id_xyz Ghosh, Amitav http://www.amitavghosh.com http://…isbn/000651409X Ghosh, Amitav http://www.amitavghosh.com The Glass Palace 2000 a:name a:homepage a:author
RDFa 1.1: exampleon schema.org <div vocab="http://schema.org/" typeof="Product"> <img rel="image" src="dell-30in-lcd.jpg" /> <span property="name">Dell UltraSharp 30" LCD Monitor</span> <div rel="hasAggregateRating" > <div typeof="http://schema.org/AggregateRating"> <span property="ratingValue">87</span> out of <span property="bestRating">100</span> based on <span property="ratingCount">24</span> user ratings </div> </div> <div rel="offers" > <div typeof="http://schema.org/AggregateOffer"> <span property="lowPrice">$1250</span> to <span property="highPrice">$1495</span> from <span property="offerCount">8</span> sellers </div> </div> (…) PS: RDFa Lite = vocab + typeof + property + about + prefix.
183.
GRDDL opens formats byallowing us to declare RDF extraction algorithms inside XML documents <head profile="http://www.w3.org/2003/g/data-view"> <title>The man who mistook his wife for a hat</title> <link rel="transformation" href="http://www.w3.org/2000/06/ dc-extract/dc-extract.xsl" /> <meta name="DC.Subject" content="clinical tales" /> …
annotating multimédia elements •semantic description of multimedia resources [Media Annotation] • pointing to internal elements of multimedia resources [Media Fragment]
208.
multimedia fragment • partof the URL after the # http://www.example.com/example.ogv#track=audio&t=10,20 • dimensions: – temporal: t=10,20 / t=npt:,0:02:01.5 / t=clock:2009-07-26T11:19:01Z – spatial: xywh=pixel:160,120,320,240 / xywh=percent:25,25,50,50 – track: track=1 / track=video&track=subtitle / track=Wide – named: id=chapter-1 • fragment are not sent with the URL but encoded in the HTTP request
209.
ontologies for multimediadescriptions ontology for Media Resources 1.0 <video.ogv> a ma:MediaResource ; ma:hasTrack <video.ogv#track=audio>, <video.ogv#track=subtitle>; ma:hasSubtitling <video.ogv#track=subtitle> ; ma:hasSigning <video.ogv#xywh=percent:70,70,90,90> . <video.ogv#track=audio> a ma:AudioTrack ; ma:hasLanguage [ rdfs:label "en-GB" ] ; ma:hasFragment <video.ogv#track=audio&t=10,20> . <video.ogv#track=audio&t=10,20> a ma:MediaFragment ; ma:hasLanguage [ rdfs:label "fr" ] . <video.ogv#track=subtitle> a ma:DataTrack ; ma:hasLanguage [ rdfs:label "es" ] . <video.ogv#xywh=percent:70,70,90,90> a ma:MediaFragment ; ma:hasLanguage [ rdfs:label "bfi" ] .
some pointers• W3Cstandards http://www.w3.org/standards/semanticweb/ • SW Tools http://www.w3.org/2001/sw/wiki/Tools • Linked Data Book http://linkeddatabook.com/editions/1.0/ • W3DevCampus http://www.w3devcampus.com/ • EUCLID material http://www.euclid-project.eu/
66 FOAF primitives3 475 908 348 references (2) x 52 millions “a small tree ruling a big graph”(1) (1) Franck Van Harmelen, ISWC 2011 (2) Libby Miller, 2009
data data bases data models opendata linked data closed data enterprise data linked enterprise data linked open data data schemas semantic web of data data structures linked data schemas web of data big data big data streams data streams linked data streams web of sensors, things, … VELOCITY big linked data VOLUME VARIETY VVeb data linked healthcare data VICINITY VISIBILITY personal data data mining data type
he who controlsmetadata, controls the web and through the world-wide web many things in our world. fabien, gandon, @fabien_gandon, http://fabien.info WWW 2014