Semantic Web Languages
and Standards (Primer)
Aidan Hogan — DERI Galway
Session 1; Day 1; 10:30
2

24.05.2012
WHAT IS THE SEMANTIC WEB?

3

24.05.2012
The Semantic Web is Tim (et al.)’s Vision ?

4

24.05.2012
The Semantic Web is intelligent machines
helping us make sense of the Web ?

5

24.05.2012
The Semantic Web is naming everything ?

6

24.05.2012
The Semantic Web is linking Web data ?

Image by Cyganiak & Jentzsch ; http://lod-cloud.net
7

24.05.2012
The Semantic Web is breaking down the
data silos / walls ?

Image from http://www.digitaltimes.ie
8

24.05.2012
The Semantic Web is Web 3.0 ?

Image by Radar Networks; Nova Spivak; http://memebox.com/futureblogger/show/824
9

24.05.20...
The Semantic Web is a stack of
technologies for interoperability?

Images by Hendler, Brickley Novack; http://www.bnode.or...
The Semantic Web is a bunch of standards
for interoperability?

11

24.05.2012
The Semantic Web is something very very
bad and it must die (apparently) ?

12

24.05.2012
The Semantic Web is a buzzword ?

…
13

24.05.2012
The Semantic Web is…

…

…cf. “What is the Web?”
14

24.05.2012
…WHAT IS THE SEMANTIC
WEB FOR?
15

24.05.2012
Web = Flood of information

= 5.9 TB of data
(Jan. 2010 Dump)

16

24.05.2012
Web = Flood of information

= 235 TB of data indexed
= 40 Wikipedias
(incl. Web archive)

17

24.05.2012
Web = Flood of information

= 12 TB/day added
= 2 Wikipedias / day
(as of Mar. 2010)

18

24.05.2012
Web = Flood of information

= 20 PB/day processed
= 3,389 Wikipedias/day
(Jan. 2010)

19

24.05.2012
Web = Flood of information

= 160 TB/s transferred
= 27 Wikipedias/second
(2008; Cisco)

20

24.05.2012
From signals …

21

24.05.2012
To binary …

…10010110…

22

24.05.2012
To characters (ASCII/Unicode) …

…Hello World…

23

24.05.2012
To document markup (HTML) …
<title>
Hello World
</title>

She’ll know what
to do with
<title>

24

24.05.2012

Ah yes, I
d...
To data markup …

<time=“10:36”/>

She’ll know what
<time> means

25

24.05.2012

This is what my
user asked for.
Thanks!
To arbitrary information exchange ???
<aidan presents=
“session1” />

This is the data
I have.

26

24.05.2012

What’s an
...
Arbitrary data/information exchange …
We need …
Common data model for encoding data (triples)
Common ways of serialising d...
Syntax to semantics / terms to entities

<aidan presents=“session1”/>

28

24.05.2012
…WHEN DID THE SEMANTIC
WEB BEGIN?
29

24.05.2012
Started with the Web?

1990
30

24.05.2012
Pre-dating Web …
Tim Berners Lee ENQUIRE (1980)
Pre-dates Web by 10 years / Closer to Semantic Web than Web
Link cards (ea...
Modern Semantic Web …

Image by Titti Cimmino; http://www.titticimmino.com/2009/12/31/the-future-internet-semantics-and-se...
…SO WHERE IS THIS
SEMANTIC WEB NOW?
Image by Titti Cimmino; http://www.titticimmino.com/2009/12/31/the-future-internet-sem...
Hidden within the Web?

34

24.05.2012
Linked Open Data cloud

…
35

24.05.2012
Open Government Data (US)

http://data.gov/
36

24.05.2012
Open Government Data (UK)

http://data.gov.uk/
37

24.05.2012
Semantics in HCLS/Biomedical Domain

38

24.05.2012
Drupal 7 Core

39

24.05.2012
GoodRelations for Products

Image from http://www.heppnetz.de/projects/goodrelations/primer/;; Hepp
40
FaceBook’s Open Graph Protocol

http://developers.facebook.com/tools/debug/
41

24.05.2012
schema.org

http://schema.org
42

24.05.2012
BBC World Cup 2010 site

43

24.05.2012
qwiki.com

http://qwiki.com/
44

24.05.2012
Metaweb / Freebase

http://freebase.com/
45

24.05.2012
Google’s Knowledge Graph

http://google.com/ncr/
46

24.05.2012
Not there yet (but getting there…)

47

24.05.2012
IT ALL BEGINS WITH RDF …

48

24.05.2012
A brief history of RDF
Meta Content Framework (MCF) by Ramanathan V. Guha

[1995]

Data-model consisting of Objects, Categ...
What is RDF (not)?

50

24.05.2012
What is RDF?

51

24.05.2012
What are triples?

aidan presents session1

52

24.05.2012
RDF Triples: statements in slots of three
SUBJECT

PREDICATE

OBJECT

aidan

attending

eswc2012

aidan

worksAt

deri

de...
Triples form a directed, labelled graph
aidan

presents

session1

attending

eswc2012

worksAt
livesIn

location

deri

C...
Why triples? Simplest fixed-arity model …
(PAIRS)

FROM

TO

deri

location

location

galway

eswc2012
location
deri
55

...
Naming in triples … avoid ambiguity

aidan … …

56

24.05.2012
Avoid ambiguities: use URIs (/IRIs)!

http://ex.org/#aidan … …

57

24.05.2012
Abbreviating URIs

Use “CURIEs” / namespaces
PREFIX ex: <http://ex.org/#>

ex:aidan = <http://ex.org/#aidan>

58

24.05.20...
RDF Triples: literals in object position
SUBJECT
URI | BNode

PREDICATE
URI

OBJECT
URI | Literal | BNode

ex:aidan

ex:ai...
Simple Literals

Simple strings:
“male”, “Hello World”, “aju901odksad”

60

24.05.2012
Language-tagged Literals

Simple strings with specified language:
“Hello World”@en
“Bonjour tout le monde.”@fr
“Whilst I d...
Datatype Literals
Typed literals with mappings from strings to values
String (lexical value) / URI (type) pair
Many from X...
RDF Literals: summary
Plain Literals

Simple Literals
“string”
Datatype Literals
“string”^^xsd:string

Lang-tag Literals
“...
RDF Triples: blank-nodes
SUBJECT
URI | BNode

PREDICATE
URI

ex:aidan

ex:presents

ex:aidan

ex:gender

ex:session1

_:so...
Blank Nodes
Often denoted with the prefix “_:”, and a label suffix
_:bnode4 • _:genid2 • _:venue

Can only be referenced i...
Blank Nodes are existential (in theory)
Denote the existence of something
ex:JohnFKennedy ex:assassin _:unknown .

Blank n...
Summary of RDF Triples
Slots of three: Subject, Predicate, Object
Used to make statements about the world
Subject: URIs or...
Triples are everywhere!

SUBJECT

PREDICATE
OBJECT

PREDICATE

…
OBJECT

OBJECT

68

24.05.2012
Triples are everywhere!
SUBJECT

PREDICATE
OBJECT

PREDICATE
OBJECT
PREDICATE

…
OBJECT

69

24.05.2012
Triples are everywhere!

SUBJECT

PREDICATE
PREDICATE

OBJECT

OBJECT
PREDICATE
OBJECT

SUBJECT
PREDICATE
PREDICATE

…
OBJ...
What is RDF?

71

24.05.2012
Features of RDF: typing / classes

ex:barry

ex:denny

ex:matthew

rdf:type

rdf:type

rdf:type

ex:Tutor

rdf:type

ex:ai...
Features of RDF: containers (aka. lists)
ex:summerSchool
_:dayOne
_:dayOne
_:dayOneB
_:dayOneB
_:dayOneC
_:dayOneC
_:dayOn...
Other features of RDF (not covered)

RDF containers
RDF reification
RDF n-ary predicates

Hint: if you’re using these feat...
Writing RDF triples down?

75

24.05.2012
RDF syntaxes / serialisation

<http://ex.org/#aidan> … …

The bit between angle
brackets is a URI

76

24.05.2012
RDF syntaxes
N-Triples
Simple syntax for line-delimited triples

Turtle
Superset of N-Triples, with lots of nice shortcuts...
N-Triples
Full URIs
in ‘<>’angle
brackets

Terms delimited
by space or tab

Triples ended by ‘.’,
delimited by new line

<...
Turtle (Terse RDF Triple Language)
<http:/ex.org/#aidan> <http:/ns.com/worksAt> <http:/ex.org/#DERI> .
<http:/ex.org/#aida...
Turtle (Blank node abbreviation)
<http:/ex.org/#aidan> <http:/ns.com/worksAt> <http:/ex.org/#DERI> .
<http:/ex.org/#aidan>...
Turtle (RDF collection / list abbreviation)
<http://ex.org/#summerSchool> <http://ex.org/#1stDaySchedule> _:dayOne .
_:day...
Turtle (my favourite abbreviation)

<http://ex.org/#aidan> <http://w3.org/…#type> <http://ex.org/#Tutor> .

@base <http://...
Notation3 (N3) … a quick note
A superset of RDF
Contains non-RDF features like rules, scoping graphs, etc.

Intersection o...
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 ...
RDF/XML (…will not go into detail)
<rdf:Description rdf:about="http://…/TR/rdf-syntax-grammar">
<ex:editor>
<rdf:Descripti...
RDFa overview
RDFa allows for embedding RDF into XHTML
Mix human readable and machine readable
No need for separate docs!
...
RDFa (…will not go into detail)
<div typeof="foaf:Person" xmlns:foaf="http://xmlns.com/foaf/0.1/">
<p property="foaf:name"...
THAT’S RDF …
… NEXT UP…
88

24.05.2012
RDFS and OWL!
RDF Schema
Web Ontology Language
W3C Recommendations, 2004
OWL 2 since 2009

Standardised schema/ontology la...
Features walkthrough…

…modelling family relationships in RDFS and OWL…

90
A Family-Relations OWL Ontology

ex:Vito

ex:Sonny

ex:Vincent
91

ex:Connie

ex:Carmela

ex:Fredo

ex:Michael

ex:Mary
RDFS
1. rdfs:subPropertyOf
2. rdfs:subClassOf
3. rdfs:domain
4. rdfs:range

92
rdfs:subPropertyOf
:husbandOf
:spouse

:wifeOf
:spouse

ex:Vito

ex:Carmela

ex:Vito :husbandOf ex:Carmela .
:husbandOf rd...
rdfs:subClassOf

rdf:type

:Woman
rdf:type

ex:Mary
:Person
ex:Mary rdf:type :Woman .
:Woman rdfs:subClassOf :Person .
⇒ e...
rdfs:domain

:motherOf

ex:Carmela

ex:Fredo

rdf:type

:Woman
95

ex:Carmela :motherOf ex:Fredo .
:motherOf rdfs:domain :...
rdfs:range

:hasSon

ex:Carmela

ex:Fredo
rdf:type

ex:Carmela :hasSon ex:Fredo .
:hasSon rdfs:range :Man .
⇒ ex:Fredo rdf...
Recap RDFS

What would be the rdfs:domain of the property :fatherOf?
What would be the rdfs:range of the property :wifeOf?...
RDFS
1.
2.
3.
4.

rdfs:subPropertyOf
rdfs:subClassOf
rdfs:domain
rdfs:range

OWL
1. Property Axioms
a.
b.
c.
d.
e.

98

ow...
owl:equivalentProperty

:parentOf
:hasChild

ex:Vito

:hasChild
:parentOf

ex:Michael

ex:Mary

ex:Vito :parentOf ex:Micha...
owl:inverseOf

:parentOf
:childOf

ex:Carmela

:childOf
:parentOf

ex:Sonny

ex:Carmela :parentOf ex:Sonny .
ex:Vincent :c...
owl:SymmetricProperty

:sibling

:sibling

ex:Connie

ex:Fredo

ex:Connie :sibling ex:Fredo .
:sibling rdf:type owl:Symmet...
owl:TransitiveProperty

:ancestorOf

ex:Carmela

:ancestorOf

ex:Michael

ex:Mary

:ancestorOf

ex:Carmela :ancestorOf ex:...
owl:propertyChainAxiom

:brotherOf

ex:Sonny

2

:fatherOf

ex:Michael

ex:Mary

uncleOf

ex:Sonny :brotherOf ex:Michael ....
Recap OWL property axioms

What would be the owl:inverseOf of the property :fatherOf?
Name an owl:SymmetricProperty to do ...
RDFS
1.
2.
3.
4.

rdfs:subPropertyOf
rdfs:subClassOf
rdfs:domain
rdfs:range

OWL
1.

Property Axioms

2. Equality
a. owl:s...
owl:sameAs
owl:sameAs

owl:sameAs
ex:Vito_old

:hasGrandson
:hasGrandson

Vito

ex:Vito_young

:granddaugtherOf
:granddaug...
owl:FunctionalProperty

:hasFather

ex:Fredo

ex:Fredo :hasFather ex:Vito_old .
ex:Fredo :hasFather ex:Vito_young .
:hasFa...
owl:InverseFunctionalProperty

:fatherOf

ex:Connie

ex:Vito_old :fatherOf ex:Connie .
ex:Vito_young :fatherOf ex:Connie ....
Recap OWL equality axioms

Name an owl:FunctionalProperty to do with family relations?
Name a similar owl:InverseFunctiona...
RDFS
1.
2.
3.
4.

rdfs:subPropertyOf
rdfs:subClassOf
rdfs:domain
rdfs:range

OWL
1.
2.

Property Axioms
Equality

3. Class...
owl:unionOf

≡
:Person

:Woman

⊔

:Man

type

type

ex:Vincent
ex:Vincent rdf:type :Man .
:Person owl:equivalentClass [ o...
owl:intersectionOf (i)

⊑
:Mother

:Woman

rdf:type

⊓

rdf:type

:Parent
rdf:type

ex:Carmela
ex:Carmela rdf:type :Mother...
owl:intersectionOf (ii)

ex:Mother

rdf:type

≡

ex:Woman

⊓

rdf:type

ex:Parent

rdf:type

ex:Carmela
ex:Carmela rdf:typ...
owl:oneOf

≡{
:DonCorleone

ex:Vito

rdf:type

,

ex:Michael

rdf:type

,

}
ex:Vincent

rdf:type

:DonCorleone owl:equiva...
owl:disjointWith

ex:DonCorleone

⊓

ex:LawAbiding

≡ ┴

owl:Nothing

rdf:type

rdf:type
ex:Vincent

ex:Michael rdf:type e...
owl:allValuesFrom

:Person

⊑∀

:hasParent .

rdf:type

:Person
rdf:type

:hasParent
ex:Mary

ex:Michael

ex:Mary rdf:type...
owl:someValuesFrom (i)

:Parent

≡∃

:hasChild .
:Person
rdf:type

rdf:type

:hasChild
ex:Carmela

ex:Michael

ex:Mary :ha...
owl:someValuesFrom (ii)

:Parent

⊑∃

:hasChild .
rdf:type

rdf:type

:hasChild
ex:Carmela

:Person

?
?

ex:Mary rdf:type...
Recap OWL class axioms
A class :Parent might be the owl:unionOf what classes?
A class :OnlySon might be the owl:intersecti...
RDFS
1.
2.
3.
4.

rdfs:subPropertyOf
rdfs:subClassOf
rdfs:domain
rdfs:range

OWL
1.
2.
3.

120

Property Axioms
Equality
C...
…some OWL features not covered:
1. owl:hasKey
2. owl:hasValue
3. owl:cardinality(s)
4. owl:different
5. owl:AssymetricProp...
But what does it all mean?

122
RDFS History

Dan Brickley & R. V. Guha
Pat Hayes

123

[2000]
[2004]
RDF(S) Semantics
Built directly on top of RDF (Semantics)
Given a mathematical model-theoretic semantics

http://ex.org/#a...
RDF(S) Semantics: existential blank nodes
Called “simple entailment”

ex:aidan

ex:coauthoredPaper

_:bnode1

ex:title
ex:...
RDFS Semantics: RDFS rules / reasoning
Body/Antecedent/Condition

Head/Consequent

IF ⇒ THEN

?c1 rdfs:subClassOf ?c2 .
?x...
OWL History
Description Logics
[1980’s to now]
DAML (Hendler, McGuinness)
[2000]
OIL (Fensel, van Harmelen, McGuinness, Pa...
OWL Semantics
Much more complex language = Much more complex semantics

Considers Axioms:
Parent ⊑
∃hasChild.Person

Consi...
OWL Profiles

P

NP-complete

OWL 2 EL
OWL 2 QL
OWL 2 RL
RDFS*
pD*

129

24.05.2012

Simple
RDF
RDFS

ExpTime

OWL Lite

N...
THAT’S RDFS/OWL …
… NEXT UP…
130

24.05.2012
How can we query RDF?
…RDB has SQL…
…XML has XPath & XQuery…

…
…RDF has ?

131
SPARQL!
SPARQL Protocol and RDF Query Language

W3C Recommendation, 2008
SPARQL 1.1 upcoming, 201?

Standardised RDF query...
The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs...
The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs...
Prefix Declarations
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <http://www.w3.o...
The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs...
Result Clause
SELECT ?name ?expertise

RESULT CLAUSE

1. SELECT
2. CONSTRUCT

(RDF)

3. ASK
4. DESCRIBE (RDF)

137
Result Clause 1. SELECT…
SELECT ?name ?expertise

RESULT CLAUSE

Return all tuples for the bindings of the variables
?name...
Result Clause 1. SELECT DISTINCT…
SELECT ?name ?expertise
DISTINCT
unique

Return all tuples for the bindings of the varia...
Result Clause 2. CONSTRUCT…
CONSTRUCT {
?person foaf:name ?name ; ex:expertise ?expertise .
}
RESULT CLAUSE

Return RDF us...
Result Clause 3. ASK…
ASK
… WHERE { … }

Is there any results?
Returns:

true or false

141

RESULT CLAUSE
Result Clause 4. DESCRIBE…
DESCRIBE ?person

RESULT CLAUSE

… WHERE { ?person … }

Returns some RDF which “describes” the ...
Result Clause 4. DESCRIBE
DESCRIBE ex:RAllen

(DIRECT)…
RESULT CLAUSE

(…can give URIs directly without need for a WHERE c...
The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs...
Dataset clause (FROM/FROM NAMED)
FROM <http://data.southampton.ac.uk/>

DATASET CLAUSE

(Briefly)
Restrict the dataset aga...
The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs...
Query clause (WHERE)
WHERE {
?person foaf:name ?name ; foaf:familyName ?surname .
?person rdf:type foaf:Person .
?person f...
Quick mention for UNION
WHERE {
…
{?person oo:availableToCommentOn ?expertiseURI . }
UNION
{?person foaf:interest ?experti...
The anatomy of a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs...
Solution Modifiers
ORDER BY ?surname

SOLUTION MODIFIERS

Order output results by surname (as you probably guessed)
…also…...
The summary of a typical SPARQL query
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w...
Trying out a typical SPARQL query
PREFIX
PREFIX
PREFIX
PREFIX

rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
rdfs: <h...
SPARQL in the wild

66% of LD datasets have a SPARQL endpoint
35% offer an RDF dump

See http://www.w3.org/wiki/SparqlEndp...
Highly recommend checking out:

“SPARQL by example”

By Cambridge Semantics
Lee Feigenbaum & Eric Prud'hommeaux
http://www...
SPARQL Extension Coming Soon!
SPARQL 1.1. W3C Working Draft (2012)
New query features:
Property-chains
?s ex:father+ ?o .
...
AND MORE BESIDES …

156

24.05.2012
SO, WHAT IS THE SEMANTIC
WEB?
157

24.05.2012
Upcoming SlideShare
Loading in...5
×

ESWC SS 2012 - Monday Tutorial 1 Aidan Hogan: Semantic Web Languages and Standards (Primer)

301

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
301
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

ESWC SS 2012 - Monday Tutorial 1 Aidan Hogan: Semantic Web Languages and Standards (Primer)

  1. 1. Semantic Web Languages and Standards (Primer) Aidan Hogan — DERI Galway Session 1; Day 1; 10:30
  2. 2. 2 24.05.2012
  3. 3. WHAT IS THE SEMANTIC WEB? 3 24.05.2012
  4. 4. The Semantic Web is Tim (et al.)’s Vision ? 4 24.05.2012
  5. 5. The Semantic Web is intelligent machines helping us make sense of the Web ? 5 24.05.2012
  6. 6. The Semantic Web is naming everything ? 6 24.05.2012
  7. 7. The Semantic Web is linking Web data ? Image by Cyganiak & Jentzsch ; http://lod-cloud.net 7 24.05.2012
  8. 8. The Semantic Web is breaking down the data silos / walls ? Image from http://www.digitaltimes.ie 8 24.05.2012
  9. 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. 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. 11. The Semantic Web is a bunch of standards for interoperability? 11 24.05.2012
  12. 12. The Semantic Web is something very very bad and it must die (apparently) ? 12 24.05.2012
  13. 13. The Semantic Web is a buzzword ? … 13 24.05.2012
  14. 14. The Semantic Web is… … …cf. “What is the Web?” 14 24.05.2012
  15. 15. …WHAT IS THE SEMANTIC WEB FOR? 15 24.05.2012
  16. 16. Web = Flood of information = 5.9 TB of data (Jan. 2010 Dump) 16 24.05.2012
  17. 17. Web = Flood of information = 235 TB of data indexed = 40 Wikipedias (incl. Web archive) 17 24.05.2012
  18. 18. Web = Flood of information = 12 TB/day added = 2 Wikipedias / day (as of Mar. 2010) 18 24.05.2012
  19. 19. Web = Flood of information = 20 PB/day processed = 3,389 Wikipedias/day (Jan. 2010) 19 24.05.2012
  20. 20. Web = Flood of information = 160 TB/s transferred = 27 Wikipedias/second (2008; Cisco) 20 24.05.2012
  21. 21. From signals … 21 24.05.2012
  22. 22. To binary … …10010110… 22 24.05.2012
  23. 23. To characters (ASCII/Unicode) … …Hello World… 23 24.05.2012
  24. 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. 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. 26. To arbitrary information exchange ??? <aidan presents= “session1” /> This is the data I have. 26 24.05.2012 What’s an “aidan”?
  27. 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. 28. Syntax to semantics / terms to entities <aidan presents=“session1”/> 28 24.05.2012
  29. 29. …WHEN DID THE SEMANTIC WEB BEGIN? 29 24.05.2012
  30. 30. Started with the Web? 1990 30 24.05.2012
  31. 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. 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. 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
  34. 34. Hidden within the Web? 34 24.05.2012
  35. 35. Linked Open Data cloud … 35 24.05.2012
  36. 36. Open Government Data (US) http://data.gov/ 36 24.05.2012
  37. 37. Open Government Data (UK) http://data.gov.uk/ 37 24.05.2012
  38. 38. Semantics in HCLS/Biomedical Domain 38 24.05.2012
  39. 39. Drupal 7 Core 39 24.05.2012
  40. 40. GoodRelations for Products Image from http://www.heppnetz.de/projects/goodrelations/primer/;; Hepp 40
  41. 41. FaceBook’s Open Graph Protocol http://developers.facebook.com/tools/debug/ 41 24.05.2012
  42. 42. schema.org http://schema.org 42 24.05.2012
  43. 43. BBC World Cup 2010 site 43 24.05.2012
  44. 44. qwiki.com http://qwiki.com/ 44 24.05.2012
  45. 45. Metaweb / Freebase http://freebase.com/ 45 24.05.2012
  46. 46. Google’s Knowledge Graph http://google.com/ncr/ 46 24.05.2012
  47. 47. Not there yet (but getting there…) 47 24.05.2012
  48. 48. IT ALL BEGINS WITH RDF … 48 24.05.2012
  49. 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]
  50. 50. What is RDF (not)? 50 24.05.2012
  51. 51. What is RDF? 51 24.05.2012
  52. 52. What are triples? aidan presents session1 52 24.05.2012
  53. 53. RDF Triples: statements in slots of three SUBJECT PREDICATE OBJECT aidan attending eswc2012 aidan worksAt deri deri location galway eswc2012 24.05.2012 session1 aidan 53 presents location crete
  54. 54. Triples form a directed, labelled graph aidan presents session1 attending eswc2012 worksAt livesIn location deri Crete location Galway 54 24.05.2012
  55. 55. Why triples? Simplest fixed-arity model … (PAIRS) FROM TO deri location location galway eswc2012 location deri 55 24.05.2012 location crete galway
  56. 56. Naming in triples … avoid ambiguity aidan … … 56 24.05.2012
  57. 57. Avoid ambiguities: use URIs (/IRIs)! http://ex.org/#aidan … … 57 24.05.2012
  58. 58. Abbreviating URIs Use “CURIEs” / namespaces PREFIX ex: <http://ex.org/#> ex:aidan = <http://ex.org/#aidan> 58 24.05.2012
  59. 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
  60. 60. Simple Literals Simple strings: “male”, “Hello World”, “aju901odksad” 60 24.05.2012
  61. 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. 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
  63. 63. RDF Literals: summary Plain Literals Simple Literals “string” Datatype Literals “string”^^xsd:string Lang-tag Literals “string”@en 63 24.05.2012
  64. 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. 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. 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. 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
  68. 68. Triples are everywhere! SUBJECT PREDICATE OBJECT PREDICATE … OBJECT OBJECT 68 24.05.2012
  69. 69. Triples are everywhere! SUBJECT PREDICATE OBJECT PREDICATE OBJECT PREDICATE … OBJECT 69 24.05.2012
  70. 70. Triples are everywhere! SUBJECT PREDICATE PREDICATE OBJECT OBJECT PREDICATE OBJECT SUBJECT PREDICATE PREDICATE … OBJECT 70 24.05.2012 … OBJECT
  71. 71. What is RDF? 71 24.05.2012
  72. 72. Features of RDF: typing / classes ex:barry ex:denny ex:matthew rdf:type rdf:type rdf:type ex:Tutor rdf:type ex:aidan 72 24.05.2012 rdf:type ex:dan rdf:type ex:elena
  73. 73. Features of RDF: containers (aka. lists) ex:summerSchool _:dayOne _:dayOne _:dayOneB _:dayOneB _:dayOneC _:dayOneC _:dayOneD _:dayOneD listNode-1 ex:1stDaySchedule rdf:first rdf:rest rdf:first rdf:rest rdf:first rdf:rest rdf:first rdf:rest rdf:rest listNode-2 rdf:first listEl-1 73 rdf:first listEl-1 24.05.2012 … _:dayOne “Enrico’s Keynote” _:dayOneB “Session 1” _:dayOneC “Session 2” _:dayOneD “Hands On 1” rdf:nil rdf:rest rdf:nil
  74. 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
  75. 75. Writing RDF triples down? 75 24.05.2012
  76. 76. RDF syntaxes / serialisation <http://ex.org/#aidan> … … The bit between angle brackets is a URI 76 24.05.2012
  77. 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. 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. 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)
  80. 80. Turtle (Blank node abbreviation) <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> . Don’t have to label blank nodes. (Labels are arbitrary anyways) @base <http://ex.org/#> . @prefix ns: <http://ns.com/> . <aidan> ns:worksAt <DERI> ; ns:author [] , [ ns:title “On Blank Nodes”@en ; ns:pages 16 ] . Can assign predicate–object information to implicit blank node 80 24.05.2012
  81. 81. Turtle (RDF collection / list abbreviation) <http://ex.org/#summerSchool> <http://ex.org/#1stDaySchedule> _:dayOne . _:dayOne <http://w3.org/…/22-rdf-syntax#first> “Enrico’s Keynote” . _:dayOne <http://w3.org/…/22-rdf-syntax#rest> _:dayOneB . _:dayOneB <http://w3.org/…/22-rdf-syntax#first> “Session 1” . _:dayOneB <http://w3.org/…/22-rdf-syntax#rest> _:dayOneC . _:dayOneC <http://w3.org/…/22-rdf-syntax#first> “Session 2” . _:dayOneC <http://w3.org/…/22-rdf-syntax#rest> _:dayOneD . _:dayOneD <http://w3.org/…/22-rdf-syntax#first> “Hands-on 1” _:dayOneD <http://w3.org/…/22-rdf-syntax#first> <http://…/22-rdf-syntax#nil> . @base <http://ex.org/#> . <summerSchool> <1stDaySchedule> ( “Enrico’s Keynote” “Session 1” “Session 2” “Hands-on 1” ) . Enclose list elements in parentheses, and you’re done! 81 24.05.2012
  82. 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. 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. 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. 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. 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. 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
  88. 88. THAT’S RDF … … NEXT UP… 88 24.05.2012
  89. 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
  90. 90. Features walkthrough… …modelling family relationships in RDFS and OWL… 90
  91. 91. A Family-Relations OWL Ontology ex:Vito ex:Sonny ex:Vincent 91 ex:Connie ex:Carmela ex:Fredo ex:Michael ex:Mary
  92. 92. RDFS 1. rdfs:subPropertyOf 2. rdfs:subClassOf 3. rdfs:domain 4. rdfs:range 92
  93. 93. rdfs:subPropertyOf :husbandOf :spouse :wifeOf :spouse ex:Vito ex:Carmela ex:Vito :husbandOf ex:Carmela . :husbandOf rdfs:subPropertyOf :spouse . ⇒ ex:Vito :spouse ex:Carmela . ex:Carmela :wifeOf ex:Vito . :wifeOf rdfs:subPropertyOf :spouse . ⇒ ex:Carmela :spouse ex:Vito . 93
  94. 94. rdfs:subClassOf rdf:type :Woman rdf:type ex:Mary :Person ex:Mary rdf:type :Woman . :Woman rdfs:subClassOf :Person . ⇒ ex:Mary rdf:type :Person . 94
  95. 95. rdfs:domain :motherOf ex:Carmela ex:Fredo rdf:type :Woman 95 ex:Carmela :motherOf ex:Fredo . :motherOf rdfs:domain :Woman . ⇒ ex:Carmela rdf:type :Woman .
  96. 96. rdfs:range :hasSon ex:Carmela ex:Fredo rdf:type ex:Carmela :hasSon ex:Fredo . :hasSon rdfs:range :Man . ⇒ ex:Fredo rdf:type :Man . 96 :Man
  97. 97. Recap RDFS What would be the rdfs:domain of the property :fatherOf? What would be the rdfs:range of the property :wifeOf? 97
  98. 98. RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. Property Axioms a. b. c. d. e. 98 owl:equivalentProperty owl:inverseOf owl:SymmetricProperty owl:TransitiveProperty owl:propertyChainAxiom
  99. 99. owl:equivalentProperty :parentOf :hasChild ex:Vito :hasChild :parentOf ex:Michael ex:Mary ex:Vito :parentOf ex:Michael . ex:Michael :hasChild ex:Mary . :parentOf owl:equivalentProperty :hasChild . ⇒ ex:Vito :hasChild ex:Vincent . ⇒ ex:Michael :parentOf ex:Mary . 99
  100. 100. owl:inverseOf :parentOf :childOf ex:Carmela :childOf :parentOf ex:Sonny ex:Carmela :parentOf ex:Sonny . ex:Vincent :childOf ex:Sonny . :parentOf owl:inverseOf :childOf . ⇒ ex:Sonny :parentOf ex:Vincent . ⇒ ex:Sonny :childOf ex:Carmela . 100 ex:Vincent
  101. 101. owl:SymmetricProperty :sibling :sibling ex:Connie ex:Fredo ex:Connie :sibling ex:Fredo . :sibling rdf:type owl:SymmetricProperty . ⇒ ex:Fredo :sibling ex:Connie . 101
  102. 102. owl:TransitiveProperty :ancestorOf ex:Carmela :ancestorOf ex:Michael ex:Mary :ancestorOf ex:Carmela :ancestorOf ex:Michael . ex:Michael :ancestorOf ex:Mary . :ancestorOf rdf:type owl:TransitiveProperty . ⇒ ex:Carmela :ancestorOf ex:Mary . 102
  103. 103. owl:propertyChainAxiom :brotherOf ex:Sonny 2 :fatherOf ex:Michael ex:Mary uncleOf ex:Sonny :brotherOf ex:Michael . ex:Michael :fatherOf ex:Mary . :uncleOf owl:propertyChainAxiom (:brotherOf :fatherOf) . ⇒ ex:Sonny :uncleOf ex:Mary . 103
  104. 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
  105. 105. RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. Property Axioms 2. Equality a. owl:sameAs b. owl:FunctionalProperty c. owl:InverseFunctionalProperty 105
  106. 106. owl:sameAs owl:sameAs owl:sameAs ex:Vito_old :hasGrandson :hasGrandson Vito ex:Vito_young :granddaugtherOf :granddaugtherOf ex:Mary ex:Vincent ex:Vito_old owl:sameAs ex:Vito_young . 106
  107. 107. owl:FunctionalProperty :hasFather ex:Fredo ex:Fredo :hasFather ex:Vito_old . ex:Fredo :hasFather ex:Vito_young . :hasFather rdf:type owl:FunctionalProperty . ⇒ ex:Vito_old owl:sameAs ex:Vito_young . 107 ex:Vito_young ex:Vito ex:Vito_old
  108. 108. owl:InverseFunctionalProperty :fatherOf ex:Connie ex:Vito_old :fatherOf ex:Connie . ex:Vito_young :fatherOf ex:Connie . :fatherOf rdf:type owl:InverseFunctionalProperty . ⇒ ex:Vito_old owl:sameAs ex:Vito_young . 108 ex:Vito_young ex:Vito ex:Vito_old
  109. 109. Recap OWL equality axioms Name an owl:FunctionalProperty to do with family relations? Name a similar owl:InverseFunctionalProperty? 109
  110. 110. RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. 2. Property Axioms Equality 3. Class Axioms a. b. c. d. e. 110 owl:unionOf owl:intersectionOf owl:oneOf owl:allValuesFrom owl:someValuesFrom
  111. 111. owl:unionOf ≡ :Person :Woman ⊔ :Man type type ex:Vincent ex:Vincent rdf:type :Man . :Person owl:equivalentClass [ owl:unionOf (:Woman :Man) ] ⇒ ex:Vincent rdf:type :Person . 111
  112. 112. owl:intersectionOf (i) ⊑ :Mother :Woman rdf:type ⊓ rdf:type :Parent rdf:type ex:Carmela ex:Carmela rdf:type :Mother . :Mother rdfs:subClassOf [ owl:intersectionOf (:Woman :Parent) ] ⇒ ex:Carmela rdf:type :Woman , :Parent . 112
  113. 113. owl:intersectionOf (ii) ex:Mother rdf:type ≡ ex:Woman ⊓ rdf:type ex:Parent rdf:type ex:Carmela ex:Carmela rdf:type :Woman , :Parent . :Mother owl:equivalentClass [ owl:intersectionOf (:Woman :Parent) ] ⇒ ex:Carmela rdf:type :Mother . 113
  114. 114. owl:oneOf ≡{ :DonCorleone ex:Vito rdf:type , ex:Michael rdf:type , } ex:Vincent rdf:type :DonCorleone owl:equivalentClass [ owl:oneOf (ex:Vito ex:Michael ex:Vincent) ] ⇒ ex:Vito rdf:type :DonCorleone . ⇒ ex:Michael rdf:type :DonCorleone . ⇒ ex:Vincent rdf:type :DonCorleone . 114
  115. 115. owl:disjointWith ex:DonCorleone ⊓ ex:LawAbiding ≡ ┴ owl:Nothing rdf:type rdf:type ex:Vincent ex:Michael rdf:type ex:DonCorleone . ex:DonCorleone owl:disjointWith ex:LawAbiding . ex:Michael rdf:type ex:LawAbiding . 115
  116. 116. owl:allValuesFrom :Person ⊑∀ :hasParent . rdf:type :Person rdf:type :hasParent ex:Mary ex:Michael ex:Mary rdf:type :Person ; hasParent ex:Michael . :Person rdfs:subClassOf [ owl:allValuesFrom :Person ; owl:onProperty :hasParent ] ⇒ ex:Michael rdf:type :Person . 116
  117. 117. owl:someValuesFrom (i) :Parent ≡∃ :hasChild . :Person rdf:type rdf:type :hasChild ex:Carmela ex:Michael ex:Mary :hasChild ex:Michael . ex:Michael rdf:type :Person . :Parent owl:equivalentClass [ owl:someValuesFrom :Person ; owl:onProperty :hasChild ] ⇒ ex:Mary rdf:type :Parent . 117
  118. 118. owl:someValuesFrom (ii) :Parent ⊑∃ :hasChild . rdf:type rdf:type :hasChild ex:Carmela :Person ? ? ex:Mary rdf:type :Parent . :Parent rdfs:subClassOf [ owl:someValuesFrom :Person ; owl:onProperty :hasChild ] ⇒ ex:Mary :hasChild _:someone . _:someone rdf:type :Person . 118
  119. 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
  120. 120. RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. 2. 3. 120 Property Axioms Equality Class Axioms
  121. 121. …some OWL features not covered: 1. owl:hasKey 2. owl:hasValue 3. owl:cardinality(s) 4. owl:different 5. owl:AssymetricProperty 6. owl:IrreflexiveProperty 7. owl:propertyDisjointWith 8. … 121
  122. 122. But what does it all mean? 122
  123. 123. RDFS History Dan Brickley & R. V. Guha Pat Hayes 123 [2000] [2004]
  124. 124. RDF(S) Semantics Built directly on top of RDF (Semantics) Given a mathematical model-theoretic semantics http://ex.org/#aidan … … 124
  125. 125. RDF(S) Semantics: existential blank nodes Called “simple entailment” ex:aidan ex:coauthoredPaper _:bnode1 ex:title ex:coauthoredPaper “On Blank Nodes”@en _:bnode2 125 24.05.2012
  126. 126. RDFS Semantics: RDFS rules / reasoning Body/Antecedent/Condition Head/Consequent IF ⇒ THEN ?c1 rdfs:subClassOf ?c2 . ?x rdf:type ?c1 . ⇒ ?x rdf:type ?c2 . ex:Tutor rdfs:subClassOf ex:Person . ex:aidan rdf:type ex:Tutor . ⇒ ex:aidan rdf:type ex:Person . … 126 24.05.2012
  127. 127. OWL History Description Logics [1980’s to now] DAML (Hendler, McGuinness) [2000] OIL (Fensel, van Harmelen, McGuinness, Patel-, Frank van Harmelen) [2001] DAML+OIL [2002] OWL (W3C Rec.) OWL 2 (W3C Rec.) 127 [2004] [2008]
  128. 128. OWL Semantics Much more complex language = Much more complex semantics Considers Axioms: Parent ⊑ ∃hasChild.Person Considers Triples: :Parent rdfs:subClassOf [ owl:someValuesFrom :Person ; owl:onProperty :hasChild ] Restricted so that triples correspond to axioms Decidable for OWL 2 DL (but super-exponential) 128 Unrestricted Undecidable 24.05.2012
  129. 129. OWL Profiles P NP-complete OWL 2 EL OWL 2 QL OWL 2 RL RDFS* pD* 129 24.05.2012 Simple RDF RDFS ExpTime OWL Lite NExpTime 2NExpTime Undecidable OWL DL OWL 2 DL OWL Full OWL 2 Full
  130. 130. THAT’S RDFS/OWL … … NEXT UP… 130 24.05.2012
  131. 131. How can we query RDF? …RDB has SQL… …XML has XPath & XQuery… … …RDF has ? 131
  132. 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. 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. 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
  135. 135. Prefix Declarations 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 foaf:Person ⇔ <http://xmlns.com/foaf/0.1/Person> Use http://prefix.cc/ … 135
  136. 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. 137. Result Clause SELECT ?name ?expertise RESULT CLAUSE 1. SELECT 2. CONSTRUCT (RDF) 3. ASK 4. DESCRIBE (RDF) 137
  138. 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. 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. 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. 141. Result Clause 3. ASK… ASK … WHERE { … } Is there any results? Returns: true or false 141 RESULT CLAUSE
  142. 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. 143. Result Clause 4. DESCRIBE DESCRIBE ex:RAllen (DIRECT)… RESULT CLAUSE (…can give URIs directly without need for a WHERE clause.) 143
  144. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  156. 156. AND MORE BESIDES … 156 24.05.2012
  157. 157. SO, WHAT IS THE SEMANTIC WEB? 157 24.05.2012
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×