7. The Semantic Web is linking Web data ?
Image by Cyganiak & Jentzsch ; http://lod-cloud.net
7
24.05.2012
8. The Semantic Web is breaking down the
data silos / walls ?
Image from http://www.digitaltimes.ie
8
24.05.2012
9. The Semantic Web is Web 3.0 ?
Image by Radar Networks; Nova Spivak; http://memebox.com/futureblogger/show/824
9
24.05.2012
10. The Semantic Web is a stack of
technologies for interoperability?
Images by Hendler, Brickley Novack; http://www.bnode.org/blog/tag/layer%20cake
10
24.05.2012
11. The Semantic Web is a bunch of standards
for interoperability?
11
24.05.2012
12. The Semantic Web is something very very
bad and it must die (apparently) ?
12
24.05.2012
24. To document markup (HTML) …
<title>
Hello World
</title>
She’ll know what
to do with
<title>
24
24.05.2012
Ah yes, I
display this
at the top.
25. To data markup …
<time=“10:36”/>
She’ll know what
<time> means
25
24.05.2012
This is what my
user asked for.
Thanks!
26. To arbitrary information exchange ???
<aidan presents=
“session1” />
This is the data
I have.
26
24.05.2012
What’s an
“aidan”?
27. Arbitrary data/information exchange …
We need …
Common data model for encoding data (triples)
Common ways of serialising data (syntaxes)
Well-defined languages for saying what terms mean (semantics)
Common ways to query data (query languages)
Web standards!
Make data machine-readable!
<aidan presents=
“session1” />
27
24.05.2012
28. Syntax to semantics / terms to entities
<aidan presents=“session1”/>
28
24.05.2012
31. Pre-dating Web …
Tim Berners Lee ENQUIRE (1980)
Pre-dates Web by 10 years / Closer to Semantic Web than Web
Link cards (each card reflected an “entity”)
Different types of relations
Never made it out of CERN … Disk containing software “re-used”
Other works in Artificial Intelligence:
FOL / Logic Programming / Description Logics / Expert Systems
… Knowledge Representation
Frame languages / Semantic networks / Ontology
… Databases
Entity-Attribute-Value (EAV) model / Deductive databases / Conceptual +
Logical Schema
… Information Retrieval, Natural Language Processing, …
31
24.05.2012
32. Modern Semantic Web …
Image by Titti Cimmino; http://www.titticimmino.com/2009/12/31/the-future-internet-semantics-and-service-web-3-0-survey/
32
24.05.2012
33. …SO WHERE IS THIS
SEMANTIC WEB NOW?
Image by Titti Cimmino; http://www.titticimmino.com/2009/12/31/the-future-internet-semantics-and-service-web-3-0-survey/
33
24.05.2012
49. A brief history of RDF
Meta Content Framework (MCF) by Ramanathan V. Guha
[1995]
Data-model consisting of Objects, Categories, and Properties
Directed, labelled graph
type / domain / range / superType / superPropertyType
XML syntax (based on XML names)
Resource Description Framework (RDF) by W3C
[1999]
Spec. edited by Ora Lassila and Ralph R. Swick
Data-model consisting of Resources, Class, and Properties
Directed, labelled graph
Later extended to RDFS, including type / domain / range /
subClassOf / subPropertyOf
XML syntax (based on URIs)
RDF Revised by W3C
49
24.05.2012
[2004]
59. RDF Triples: literals in object position
SUBJECT
URI | BNode
PREDICATE
URI
OBJECT
URI | Literal | BNode
ex:aidan
ex:aidan
“male”
ex:title
“Semantic Web
Languages and
Standards”@en
ex:session1
24.05.2012
ex:gender
ex:session1
59
ex:presents
ex:startTime
“10:30:00+02:00”
^^xsd:time
ex:session1
61. Language-tagged Literals
Simple strings with specified language:
“Hello World”@en
“Bonjour tout le monde.”@fr
“Whilst I dreamt colourful dreams.”@en-GB
(Defined by RFC 3066, ISO 639-2)
61
24.05.2012
62. Datatype Literals
Typed literals with mappings from strings to values
String (lexical value) / URI (type) pair
Many from XML Schema (namespace often given xsd: or xs: prefix)
“true”^^xsd:boolean • “false”^^xsd:boolean
“1.0”^^xsd:decimal • “1”^^xsd:int • “1”^^xsd:byte
“2012-05-21”^^xsd:date • “2012-05-21T10:30:00Z”^^xsd:dateTime
“---15”^^xsd:gDay “--05-15”^^xsd:gMonthDay “2010”^^xsd:gYear
“Hello World”^^xsd:string
(…and more besides)
Other datatypes defined elsewhere (rdf:XMLLiteral,
Can define custom datatypes (e.g., dbt:usDollars)
“literal”^^xsd:string
owl:real)
≡ “literal”
Can’t mix datatypes and language tags (“Hello World”^^xsd:string@en)
62
24.05.2012
64. RDF Triples: blank-nodes
SUBJECT
URI | BNode
PREDICATE
URI
ex:aidan
ex:presents
ex:aidan
ex:gender
ex:session1
_:somewhere
64
24.05.2012
ex:venue
ex:location
OBJECT
URI | Literal | BNode
ex:session1
“male”
_:somewhere
ex:kalamaki
65. Blank Nodes
Often denoted with the prefix “_:”, and a label suffix
_:bnode4 • _:genid2 • _:venue
Can only be referenced in a local document!
Values of labels are inconsequential
Can consistently re-label blank nodes; makes no difference
Used:
to avoid creating a URI for something
for syntax shortcuts
if a value is unknown or not concretely identifiable
once-off resource (e.g., for time-of-access)
only allow local reference
etc.
65
24.05.2012
66. Blank Nodes are existential (in theory)
Denote the existence of something
ex:JohnFKennedy ex:assassin _:unknown .
Blank nodes can introduce redundancy (non-lean RDF)
ex:aidan
ex:coauthoredPaper
_:bnode1
ex:title
ex:coauthoredPaper
“On Blank
Nodes”@en
_:bnode2
66
24.05.2012
67. Summary of RDF Triples
Slots of three: Subject, Predicate, Object
Used to make statements about the world
Subject: URIs or Blank Nodes
Predicate: URIs only
Object: URIs, Blank Nodes, Literals (plain [w/lang] or typed)
An RDF graph is a set of triples
ex:aidan
ex:coauthoredPaper
ex:coauthoredPaper
_:bnode2
(1) ex:aidan
(2) _:bnode1
(3) ex:aidan
67
24.05.2012
ex:coauthoredPaper
ex:title
ex:coauthoredPaper
_:bnode1
ex:title
“On Blank
Nodes”@en
_:bnode1
“On Blank Nodes”@en
_:bnode2
74. Other features of RDF (not covered)
RDF containers
RDF reification
RDF n-ary predicates
Hint: if you’re using these features, you’re probably
doing it wrong
(unless you specifically know what you’re doing)
74
24.05.2012
76. RDF syntaxes / serialisation
<http://ex.org/#aidan> … …
The bit between angle
brackets is a URI
76
24.05.2012
77. RDF syntaxes
N-Triples
Simple syntax for line-delimited triples
Turtle
Superset of N-Triples, with lots of nice shortcuts
Notation3 (N3)
Superset of Turtle and RDF (goes beyond RDF!)
RDF/XML
RDF syntax based on XML
RDFa
Syntax for embedding RDF directly into XHTML documents
77
24.05.2012
78. N-Triples
Full URIs
in ‘<>’angle
brackets
Terms delimited
by space or tab
Triples ended by ‘.’,
delimited by new line
<http:/ex.org/#aidan> <http:/ns.com/worksAt> <http:/ex.org/#DERI> .
<http:/ex.org/#aidan> <http:/ns.com/author> _:bnode1 .
<http:/ex.org/#aidan> <http:/ns.com/author> _:bnode2 .
_:bnode2 <http://ns.com/title> “On Blank Nodes”@en .
_:bnode2 <http://ns.com/pages> “16”^^<http://w3.org/…#integer> .
Blank nodes
with ‘_:’
prefix
78
24.05.2012
Literals
enclosed
with quotes
Optional
datatype
with ‘^^’
Optional
lang-tag with
‘@’
79. Turtle (Terse RDF Triple Language)
<http:/ex.org/#aidan> <http:/ns.com/worksAt> <http:/ex.org/#DERI> .
<http:/ex.org/#aidan> <http:/ns.com/author> _:bnode1 .
<http:/ex.org/#aidan> <http:/ns.com/author> _:bnode2 .
_:bnode2 <http://ns.com/title> “On Blank Nodes”@en .
_:bnode2 <http://ns.com/pages> “16”^^<http://w3.org/…#integer> .
Re-usable
URI prefixes
‘;’ for
common
subject
‘,’ for common
subject & predicate
@base <http://ex.org/#> .
@prefix ns: <http://ns.com/> .
<aidan> ns:worksAt <DERI> ; ns:author _:bnode1 , _:bnode2 .
_:bnode2 ns:title “On Blank Nodes”@en ; ns:pages 16 .
Rel. URIs
resolved
against base
79
24.05.2012
Expands to “16”^^xsd:integer
(Similar shortcuts for decimals, floating
points and booleans)
82. Turtle (my favourite abbreviation)
<http://ex.org/#aidan> <http://w3.org/…#type> <http://ex.org/#Tutor> .
@base <http://ex.org/#> .
<aidan> a <Tutor> .
‘a’ instead of rdf:type
(No need to declare rdf: prefix)
82
24.05.2012
83. Notation3 (N3) … a quick note
A superset of RDF
Contains non-RDF features like rules, scoping graphs, etc.
Intersection of N3 and RDF ≈ Turtle
N-Triples
Turtle
N3
83
24.05.2012
84. RDF/XML overview
RDF syntax based on XML
RDF/XML and RDF often conflated:
RDF is a data-model based on triples
RDF/XML is a syntax to serialise triples
A very prominent syntax (dates back to 1999); used widely
Unfortunately, not a very nice syntax:
Difficult to see triple structure
Shortcuts are confusing
Relative name schemes are confusing
Not all RDF can be written as RDF/XML (due to limitations of XML names
for writing down predicates)
Not canonical: XML tools are useless
Just plain difficult to read/write/parse/learn, etc.
84
24.05.2012
85. RDF/XML (…will not go into detail)
<rdf:Description rdf:about="http://…/TR/rdf-syntax-grammar">
<ex:editor>
<rdf:Description>
<ex:homePage rdf:resource="http://purl.org/net/dajobe/“ />
<ex:fullName>Dave Beckett</ex:fullName>
</rdf:Description>
</ex:editor>
<dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
</rdf:Description>
Image from http://www.w3.org/TR/REC-rdf-syntax/;; Beckett
85
24.05.2012
86. RDFa overview
RDFa allows for embedding RDF into XHTML
Mix human readable and machine readable
No need for separate docs!
Less server costs simpler hosting
Becoming more and more prominent (rec. since 2008)
86
24.05.2012
87. RDFa (…will not go into detail)
<div typeof="foaf:Person" xmlns: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>
Image from http://www.w3.org/TR/xhtml-rdfa-primer/;; Adida & Birbeck
87
24.05.2012
89. RDFS and OWL!
RDF Schema
Web Ontology Language
W3C Recommendations, 2004
OWL 2 since 2009
Standardised schema/ontology languages
Can be serialised in RDF
OWL (partly) extends RDFS
89
104. Recap OWL property axioms
What would be the owl:inverseOf of the property :fatherOf?
Name an owl:SymmetricProperty to do with family relations?
Name an owl:TransitiveProperty to do with family relations?
Give a owl:propertyChainAxiom for hasNiece?
104
119. Recap OWL class axioms
A class :Parent might be the owl:unionOf what classes?
A class :OnlySon might be the owl:intersectionOf what
classes?
What OWL feature allows to define enumerations?
An example of owl:allValuesFrom for family relations?
An example of owl:someValuesFrom for the class :Uncle?
119
131. How can we query RDF?
…RDB has SQL…
…XML has XPath & XQuery…
…
…RDF has ?
131
132. SPARQL!
SPARQL Protocol and RDF Query Language
W3C Recommendation, 2008
SPARQL 1.1 upcoming, 201?
Standardised RDF query language (and supporting recommendations)
Looks a little like SQL
Syntax based on Turtle
132
133. The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.org/2000/01/rdf-schema#>
foaf: <http://xmlns.com/foaf/0.1/>
oo: <http://purl.org/openorg/>
PREFIX DECLARATIONS
SELECT ?name ?expertise
FROM <http://data.southampton.ac.uk/>
RESULT CLAUSE
DATASET CLAUSE
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
.
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, "^Prof")
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
}
QUERY CLAUSE
ORDER BY ?surname
SOLUTION MODIFIERS
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
133
134. The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.org/2000/01/rdf-schema#>
foaf: <http://xmlns.com/foaf/0.1/>
oo: <http://purl.org/openorg/>
PREFIX DECLARATIONS
SELECT ?name ?expertise
FROM <http://data.southampton.ac.uk/>
RESULT CLAUSE
DATASET CLAUSE
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, "^Prof")
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
}
QUERY CLAUSE
ORDER BY ?surname
SOLUTION MODIFIERS
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
134
136. The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.org/2000/01/rdf-schema#>
foaf: <http://xmlns.com/foaf/0.1/>
oo: <http://purl.org/openorg/>
PREFIX DECLARATIONS
SELECT ?name ?expertise
FROM <http://data.southampton.ac.uk/>
RESULT CLAUSE
DATASET CLAUSE
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, "^Prof")
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
}
QUERY CLAUSE
ORDER BY ?surname
SOLUTION MODIFIERS
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
136
137. Result Clause
SELECT ?name ?expertise
RESULT CLAUSE
1. SELECT
2. CONSTRUCT
(RDF)
3. ASK
4. DESCRIBE (RDF)
137
138. Result Clause 1. SELECT…
SELECT ?name ?expertise
RESULT CLAUSE
Return all tuples for the bindings of the variables
?name and ?expertise
----------------------------------------------------------| “Professor Robert Allen”
| “Control engineering”
|
| “Professor Robert Allen”
| “Biomedical engineering”
|
| “Prof Carl Leonetto Amos” |
|
| “Professor Peter Ashburn” | “Silicon technology”
|
| “Professor Robert Allen”
| “Control engineering”
|
-----------------------------------------------------------
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
138
139. Result Clause 1. SELECT DISTINCT…
SELECT ?name ?expertise
DISTINCT
unique
Return all tuples for the bindings of the variables
?name and ?expertise
----------------------------------------------------------| “Professor Robert Allen”
| “Control engineering”
|
| “Professor Robert Allen”
| “Biomedical engineering”
|
| “Prof Carl Leonetto Amos” |
|
| “Professor Peter Ashburn” | “Silicon technology”
|
| “Professor Robert Allen”
| “Control engineering”
|
-----------------------------------------------------------
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
139
140. Result Clause 2. CONSTRUCT…
CONSTRUCT {
?person foaf:name ?name ; ex:expertise ?expertise .
}
RESULT CLAUSE
Return RDF using bindings for the variables:
ex:RAllen foaf:name “Professor Robert Allen” ;
ex:expertise “Biomedical engineering” ,
“Control engineering” .
ex:PAshburn foaf:name “Peter Ashburn ” ;
ex:expertise “Silicon technology” .
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
140
141. Result Clause 3. ASK…
ASK
… WHERE { … }
Is there any results?
Returns:
true or false
141
RESULT CLAUSE
142. Result Clause 4. DESCRIBE…
DESCRIBE ?person
RESULT CLAUSE
… WHERE { ?person … }
Returns some RDF which “describes” the given resource…
No standard for what to return!
Typically returns:
all triples where the given resource appears as subject and/or object
OR
Concise Bounded Descriptions…
142
143. Result Clause 4. DESCRIBE
DESCRIBE ex:RAllen
(DIRECT)…
RESULT CLAUSE
(…can give URIs directly without need for a WHERE clause.)
143
144. The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.org/2000/01/rdf-schema#>
foaf: <http://xmlns.com/foaf/0.1/>
oo: <http://purl.org/openorg/>
PREFIX DECLARATIONS
SELECT ?name ?expertise
FROM <http://data.southampton.ac.uk/>
RESULT CLAUSE
DATASET CLAUSE
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, "^Prof")
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
}
QUERY CLAUSE
ORDER BY ?surname
SOLUTION MODIFIERS
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
144
145. Dataset clause (FROM/FROM NAMED)
FROM <http://data.southampton.ac.uk/>
DATASET CLAUSE
(Briefly)
Restrict the dataset against which you wish to query
SPARQL stores named graphs: sets of triples which are associated
with (URI) names
Can match across graphs!
Named graphs typically corrrespond with data provenance (i.e.,
documents)!
Default graph typically corresponds to the merge of all graphs
Many engines will typically dereference a graph if not available locally!
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
145
146. The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.org/2000/01/rdf-schema#>
foaf: <http://xmlns.com/foaf/0.1/>
oo: <http://purl.org/openorg/>
PREFIX DECLARATIONS
SELECT ?name ?expertise
FROM <http://data.southampton.ac.uk/>
RESULT CLAUSE
DATASET CLAUSE
WHERE {
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person foaf:name ?name ; foaf:familyName ?surname
?person rdf:type foaf:Person .
?person rdf:type foaf:Person
?person foaf:title ?title . FILTER regex(?title, "^Prof")
?person foaf:title ?title
OPTIONAL {
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?person oo:availableToCommentOn
?expertiseURI rdfs:label ?expertise
?expertiseURI rdfs:label
}
}
}
QUERY CLAUSE
}
ORDER BY ?surname
SOLUTION MODIFIERS
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
146
147. Query clause (WHERE)
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, "^Prof")
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
QUERY CLAUSE
}
“Professor Peter Ashburn”
?person
foaf:name
rdf:type
ex:PAshburn
?name
foaf:Person
✓
foaf:title
foaf:familyName
oo:availableToCommentOn
?surname
“Ashburn”
?title
“Professor”
[FILTER “^Prof”] ✓
?expertiseURI
rdfs:label
ex:Silicon
“Silicon technology”
?expertise
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
147
148. Quick mention for UNION
WHERE {
…
{?person oo:availableToCommentOn ?expertiseURI . }
UNION
{?person foaf:interest ?expertiseURI . }
…
}
QUERY CLAUSE
Represent disjunction (OR)
Useful when there’s more than one property/class that represents the
same information you’re interested in (heterogenity)
Reasoning can also help, assuming terms are mapped (more later)
148
149. The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.org/2000/01/rdf-schema#>
foaf: <http://xmlns.com/foaf/0.1/>
oo: <http://purl.org/openorg/>
PREFIX DECLARATIONS
SELECT ?name ?expertise
FROM NAMED <http://data.southampton.ac.uk/>
RESULT CLAUSE
DATASET CLAUSE
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, "^Prof")
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
}
QUERY CLAUSE
ORDER BY ?surname
SOLUTION MODIFIERS
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
149
150. Solution Modifiers
ORDER BY ?surname
SOLUTION MODIFIERS
Order output results by surname (as you probably guessed)
…also…
LIMIT
ORDER BY ?surname LIMIT 10
SOLUTION MODIFIERS
Only return 10 results
OFFSET
ORDER BY ?surname LIMIT 10 OFFSET 20
SOLUTION MODIFIERS
Return results 20‒30
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
150
151. The summary of a typical SPARQL query
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
Shortcuts for URIs
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX oo: <http://purl.org/openorg/>
PREFIX DECLARATIONS
SELECT ?name ?expertise
Which results do you want?
FROM <http://data.southampton.ac.uk/>
Where should we look?
RESULT CLAUSE
DATASET CLAUSE
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, "^Prof")
What are you looking for?
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
}
QUERY CLAUSE
ORDER BY ?surname
How should results be ordered/split?
SOLUTION MODIFIERS
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
151
152. Trying out a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.org/2000/01/rdf-schema#>
foaf: <http://xmlns.com/foaf/0.1/>
oo: <http://purl.org/openorg/>
SELECT ?name ?expertise
FROM <http://data.southampton.ac.uk/>
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person foaf:title ?title . FILTER regex(?title, “^Prof”)
OPTIONAL {
?person oo:availableToCommentOn ?expertiseURI .
?expertiseURI rdfs:label ?expertise
}
}
ORDER BY ?surname
Give me a list of names of professors in Southampton
and their expertise (if available), in order of their surname
152
153. SPARQL in the wild
66% of LD datasets have a SPARQL endpoint
35% offer an RDF dump
See http://www.w3.org/wiki/SparqlEndpoints
153
154. Highly recommend checking out:
“SPARQL by example”
By Cambridge Semantics
Lee Feigenbaum & Eric Prud'hommeaux
http://www.cambridgesemantics.com/2008/09/sparql-by-example/
154
155. SPARQL Extension Coming Soon!
SPARQL 1.1. W3C Working Draft (2012)
New query features:
Property-chains
?s ex:father+ ?o .
Arithemetic
BIND ( ?weight / (?height * ?height) AS ?bmi)
Aggregates
SELECT AVG(?age) as ?avgAge
Sub-queries, exists/not-exists, bindings, etc.
SPARQL 1.1 Federation
SPARQL 1.1 Update
SPARQL 1.1 Entailment
155
24.05.2012