Describing Web Resources in RDF: Grigoris Antoniou Frank Van Harmelen
Describing Web Resources in RDF: Grigoris Antoniou Frank Van Harmelen
Grigoris Antoniou
Frank van Harmelen
A triple
A piece of a graph
A piece of XML code
Thus an RDF document can be viewed as:
A set of triples
A graph (semantic net)
An XML document
(http://www.cit.gu.edu.au/~db,
http://www.mydomain.org/site-owner,
#David Billington)
The triple (x,P,y) can be considered as a
logical formula P(x,y)
– Binary predicate P relates object x to object y
– RDF offers only binary predicates (properties)
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:mydomain="http://www.mydomain.org/my-rdf-ns">
<rdf:Description
rdf:about="http://www.cit.gu.edu.au/~db">
<mydomain:site-owner
rdf:resource=“#David Billington“/>
</rdf:Description>
</rdf:RDF>
(#David Billington,
http://www.mydomain.org/age,
“27”^http://www.w3.org/2001/XMLSchema
#integer)
20 Chapter 3 A Semantic Web Primer
Data Types (2)
We introduce:
– a new auxiliary resource chessGame
– the binary predicates ref, player1, and player2
We can represent referee(X,Y,Z) as:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:uni="http://www.mydomain.org/uni-ns">
<rdf:Description rdf:about="949318">
<uni:name>David Billington</uni:name>
<uni:title>Associate Professor</uni:title>
<uni:age rdf:datatype="&xsd:integer">27<uni:age>
</rdf:Description>
<rdf:Description rdf:about="CIT1111">
<uni:courseName>Discrete Maths</uni:courseName>
<uni:isTaughtBy>David Billington</uni:isTaughtBy>
</rdf:Description>
<rdf:Description rdf:about="CIT2112">
<uni:courseName>Programming III</uni:courseName>
<uni:isTaughtBy>Michael Maher</uni:isTaughtBy>
</rdf:Description>
</rdf:RDF>
<rdf:Description rdf:about="949318">
<uni:name>David Billington</uni:name>
<uni:title>Associate Professor</uni:title>
<uni:age rdf:datatype="&xsd:integer">27<uni:age>
</rdf:Description>
<rdf:Description rdf:about="CIT1111">
<uni:courseName>Discrete
Mathematics</uni:courseName>
<uni:isTaughtBy rdf:resource="949318"/>
</rdf:Description>
<rdf:Description rdf:about="949318">
<uni:name>David Billington</uni:name>
<uni:title>Associate Professor</uni:title>
</rdf:Description>
36 Chapter 3 A Semantic Web Primer
Referencing Externally Defined
Resources
<rdf:Description rdf:about="CIT1111">
<uni:courseName>Discrete
Maths</uni:courseName>
<uni:isTaughtBy>
<rdf:Description rdf:ID="949318">
<uni:name>David Billington</uni:name>
<uni:title>Associate Professor</uni:title>
</rdf:Description>
</uni:isTaughtBy>
</rdf:Description>
<rdf:Description rdf:ID="CIT1111">
<rdf:type rdf:resource="http://www.mydomain.org/uni-
ns#course"/>
<uni:courseName>Discrete Maths</uni:courseName>
<uni:isTaughtBy rdf:resource="#949318"/>
</rdf:Description>
<rdf:Description rdf:ID="949318">
<rdf:type rdf:resource="http://www.mydomain.org/uni-
ns#lecturer"/>
<uni:name>David Billington</uni:name>
<uni:title>Associate Professor</uni:title>
</rdf:Description>
Simplification rules:
1. Childless property elements within description elements may
be replaced by XML attributes
2. For description elements with a typing element we can use
the name specified in the rdf:type element instead of
rdf:Description
These rules create syntactic variations of the same
RDF statement
– They are equivalent according to the RDF data model,
although they have different XML syntax
<rdf:Description rdf:ID="CIT1111">
<rdf:type rdf:resource="http://www.mydomain.org/uni-
ns#course"/>
<uni:courseName>Discrete Maths</uni:courseName>
<uni:isTaughtBy rdf:resource="#949318"/>
</rdf:Description>
<rdf:Description rdf:ID="CIT1111"
uni:courseName="Discrete Maths">
<rdf:type rdf:resource="http://www.mydomain.org/uni-
ns#course"/>
<uni:isTaughtBy rdf:resource="#949318"/>
</rdf:Description>
<uni:course rdf:ID="CIT1111"
uni:courseName="Discrete Maths">
<uni:isTaughtBy rdf:resource="#949318"/>
</uni:course>
<uni:course rdf:ID="CIT1111"
uni:courseName="Discrete Mathematics">
<uni:lecturer>
<rdf:Alt>
<rdf:li rdf:resource="#949352"/>
<rdf:li rdf:resource="#949318"/>
</rdf:Alt>
</uni:lecturer>
</uni:course>
<uni:lecturer rdf:ID="949318"
uni:name="David Billington">
<uni:coursesTaught>
<rdf:Bag rdf:ID="DBcourses">
<rdf:_1 rdf:resource="#CIT1111"/>
<rdf:_2 rdf:resource="#CIT3112"/>
</rdf:Bag>
</uni:coursesTaught>
</uni:lecturer>
Shorthand syntax:
– "Collection" value for the rdf:parseType
attribute:
<rdf:Description rdf:about="#CIT2112">
<uni:isTaughtBy rdf:parseType="Collection">
<rdf:Description rdf:about="#949111"/>
<rdf:Description rdf:about="#949352"/>
<rdf:Description rdf:about="#949318"/>
</uni:isTaughtBy>
</rdf:Description>
51 Chapter 3 A Semantic Web Primer
Reification
<rdf:Description rdf:about="#949352">
<uni:name>Grigoris Antoniou</uni:name>
</rdf:Description>
reifies as
<rdf:Statement rdf:ID="StatementAbout949352">
<rdf:subject rdf:resource="#949352"/>
<rdf:predicate rdf:resource="http://www.mydomain.org/
uni-ns#name"/>
<rdf:object>Grigoris Antoniou</rdf:object>
</rdf:Statement>
1. Introduction
2. Detailed Description of XML
3. Structuring
a) DTDs
b) XML Schema
4. Namespaces
5. Accessing, querying XML documents: XPath
6. Transformations: XSLT
67 Chapter 3 A Semantic Web Primer
RDF Schema in RDF
<rdfs:Class rdf:about="#lecturer">
<rdfs:subClassOf rdf:resource="#staffMember"/>
</rdfs:Class>
<rdf:Property rdf:ID="phone">
<rdfs:domain rdf:resource="#staffMember"/>
<rdfs:range rdf:resource="http://www.w3.org/
2000/01/rdf-schema#Literal"/>
</rdf:Property>
72 Chapter 3 A Semantic Web Primer
Relationships Between Core Classes
and Properties
<rdfs:Class rdf:ID="lecturer">
<rdfs:comment>
The class of lecturers. All lecturers are
academic staff members.
</rdfs:comment>
<rdfs:subClassOf
rdf:resource="#academicStaffMember"/>
</rdfs:Class>
<rdfs:Class rdf:ID="course">
<rdfs:comment>The class of courses</rdfs:comment>
</rdfs:Class>
<rdf:Property rdf:ID="isTaughtBy">
<rdfs:comment>
Inherits its domain ("course") and range ("lecturer")
from its superproperty "involves"
</rdfs:comment>
<rdfs:subPropertyOf rdf:resource="#involves"/>
</rdf:Property>
<rdfs:Class rdf:ID="Statement"
rdfs:comment="The class of triples consisting of a
predicate, a subject and an object (that is, a
reified statement)"/>
<rdfs:Class rdf:ID="Property"
rdfs:comment="The class of properties"/>
<rdfs:Class rdf:ID="Bag"
rdfs:comment="The class of unordered collections"/>
<rdf:Property rdf:ID="predicate"
rdfs:comment="Identifies the property of a
statementin reified form"/>
<rdfs:domain rdf:resource="#Statement"/>
<rdfs:range rdf:resource="#Property"/>
</rdf:Property>
<rdfs:Class rdf:ID="Resource"
rdfs:comment="The most general class"/>
<rdfs:Class rdf:ID="Class"
rdfs:comment="The concept of classes.
All classes are resources"/>
<rdfs:subClassOf rdf:resource="#Resource"/>
</rdfs:Class>
<rdf:Property rdf:ID="subPropertyOf">
<rdfs:domain rdf:resource="http://www.w3.org/
1999/02/22-rdf-syntax-ns#Property"/>
<rdfs:range rdf:resource="http://www.w3.org/
1999/02/22-rdf-syntax-ns#Property"/>
</rdf:Property>
<rdf:Property rdf:ID="subClassOf">
<rdfs:domain rdf:resource="#Class"/>
<rdfs:range rdf:resource="#Class"/>
</rdf:Property>
84 Chapter 3 A Semantic Web Primer
Namespace versus Semantics
Consider rdfs:subClassOf
– The namespace specifies only that it applies to
classes and has a class as a value
– The meaning of being a subclass not expressed
The meaning cannot be expressed in RDF
– If it could RDF Schema would be unnecessary
External definition of semantics required
– Respected by RDF/RDFS processing software
Function symbols:
– nil (empty list)
– cons(x,l) (adds an element to the front of the list)
– first(l) (returns the first element)
– rest(l) (returns the rest of the list)
Predicate symbols:
– item(x,l) (tests if an element occurs in the list)
– list(l) (tests whether l is a list)
Lists are used to represent containers in RDF
PropVal(P,R,V)
– A predicate with 3 arguments, which is used to represent an
RDF statement with resource R, property P and value V
– An RDF statement (triple) (P,R,V) is represented as
PropVal(P,R,V).
Type(R,T)
– Short for PropVal(type,R,T)
– Specifies that the resource R has the type T
Type(?r,?t) PropVal(type,?r,?t)
type is a property
PropVal(type,type,Property)
type can be applied to resources (domain) and has
a class as its value (range)
Type(?r,?c) (Type(?r,Resource)
Type(?c,Class))
Type(?p, FuncProp)
(Type(?p, Property)
?r ?v1 ?v2
(PropVal(?p,?r,?v1)
PropVal(?p,?r,?v2) ?v1 = ?v2))
subClassOf is a property:
Type(subClassOf,Property)
If a class C is a subclass of a class C', then all
instances of C are also instances of C':
PropVal(subClassOf,?c,?c')
(Type(?c,Class) Type(?c',Class)
?x (Type(?x,?c) Type(?x,?c')))
<uni:lecturer rdf:about=“949352”>
<uni:name>Grigoris Antoniou</uni:name>
</uni:lecturer>
<uni:professor rdf:about=“94318”>
<uni:name>David Billington</uni:name>
<uni:email>[email protected]</uni:email>
</uni:professor>
?name ?email
Grigoris Antoniou
David Billington [email protected]
RDF is domain-independent
- RDF Schema provides a mechanism for describing specific
domains
RDF Schema is a primitive ontology language
– It offers certain modelling primitives with fixed meaning
Key concepts of RDF Schema are class, subclass
relations, property, subproperty relations, and
domain and range restrictions
There exist query languages for RDF and RDFS,
including SPARQL