Jarrar © 2013 1
RDFGraph Data Model
Lecture Notes on Web Data Management
Birzeit University, Palestine
2013
Dr. Mustafa Jarrar
University of Birzeit
www.jarrar.info
Jarrar © 2013 2
Watch this lecture and download the slides from
http:// http://jarrar-courses.blogspot.com/2014/01/web-data-management.html
Jarrar © 2013 3
Outline
• Relational vs. Tree vs. Graph data models
• Why XML is not enough
• RDF
• Mapping between R.DB and RDF
Keyword: Graph Data Models, Tree Data Models, Relational Data Models, RDF, Directed Labeled
Graph, XML Semantics, Mapping XML to RDF, Mapping RDB to RDF
Jarrar © 2013 4
Reading
1. RDF Primer (http://www.w3.org/TR/rdf-syntax-grammar/ )
2. Charlie Abela: Lecture notes on Artificial Intelligencehttp://staff.um.edu.mt/cabe2/supervising/csa3003/presentations/RDF%20Tutorial.ppt
Please have a look only to:
Chapter 2 Making Statements About Resources
Chapter 3 An XML Syntax for RDF: RDF/XML
Chapter 3 Defining RDF Vocabularies: RDF Schema
Jarrar © 2013 5
Relational vs Tree vs Graph Data model
Relational Data models• Data is represented in tuples, groups into relations
• Relational databases
Tree data models• Parent / child relationships
• Directed Acyclic Graphs
• XML is a tree data model
Graph Data Models• A nodes is a data element and links are relations
between these elements.
• Directed Labeled Graphs
• RDF is a graph data model
Tree are special case of graphs
Jarrar © 2013 6
What is XML
• Provides a common syntax for marking up documents.
• Easy to exchange between computers (web)
• Data model: an XML Document is an ordered labeled tree (/collection
of trees).
• W3C standard since 1997.
<bookInfo>
<title>Orientalism</title>
<author>
<persName>
<title>Prof.</title>
<foreName>Edward</foreName>
<surName>Said</surName>
<roleName>University Professor
<placeName>Columbia University
</placeName>
</roleName>
</persName>
</author>
</bookInfo>
bookinfo
title
surNametitle
author
persName
foreName
placeName
roleName
Jarrar © 2013 7
XML Example
<address>
<name>Universsity of Birzeit</name>
<street>Almarj 435</street>
<town>Birzeit</town>
</address>
Jarrar © 2013 8
Address Example: XML to XML
<address>
<name>University of Birzeit</name>
<place>
<street>Almarj 435</street>
<town>Birzeit</town>
</place>
</address>
<address>
<name>University of Birzeit</name>
<street>Almarj 435</street>
<town>Birzeit</town>
</address>
XML Markup 1:
XML Markup 2:
XML stylesheets to
transform between
XML representations
Jarrar © 2013 9
Why XML is Not Enough?
• It provides syntax, but not semantics, which is important when
exchanging/representing data over the Web.
• Not primitive. Same data can be represented in many ways, which is a
problem when exchanging/representing data over the Web.
<aaaa>
<bbbb>Universsity of Birzeit</bbbb>
<cccc>Almarj 435</cccc>
<dddd>Birzeit</dddd>
</aaaa>
<address>
<name>University of Birzeit</name>
<street>Almarj 435</street>
<town>Birzeit</town>
</address>
<address name=“University of Birzeit”>
<street>Almarj 435</street>
<town>Birzeit</town>
</address>
Jarrar © 2013 10
What is RDF?
• W3C standard since 1999
• RDF stands for Resource Description Framework.
• For describing resources on the web.
• Written in XML. It is not a language but a framework• You see it as a way of writing XML making it meaningful and more
primitive.
• You may see it independent, RDF data might never occur in XML form
Jarrar © 2013 11
Makes use of URIs
• In order to refer to and identify things on the web(i.e., web resource) RDF uses a URI (Uniform ResourceIdentifier).
• URIs are like Global Primary Key.
• Unlike URLs, URIs are not limited to identifying things thathave a network location.
• A URI reference (URIref) is a URI, together with anoptional fragment identifier at the end.
http://www.example.org/index.html#section2
Jarrar © 2013 12
RDF Important Concepts
• Data is represented in RDF as a directed labeled graph.
• An RDF graph is a set of triples, of the form <Subject, Predicate, Object>
Each Subject and each Predicate must be a URI; that is, it has to be a
unique identifier, not a literal. An Object can be either a URI or a literal.
http://www.amazon.com/Orientalism-Edward-W-Said/dp/039474067Xc
Orientalism
Edward Said
11$
:Author
Jarrar © 2013 13
Example
http://www.amazon.com/Orientalism-Edward-W-Said/dp/039474067Xc
Orientalism
Edward Said
11$
:Author
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#
xmlns:a="http://www.example.com"
xmlns:w="http://en.wikipedia.org/wiki/">
<rdf:Description rdf:about="http://www.amazon.com/Orientalism-Edward-W-Said/dp/039474067X">
<a:Title>Orientalism</a:Title>
<a:Price>11$</a:Price>
<a:Author>Edward_Said</a:Author>
</rdf:Description>
</rdf:RDF>
Jarrar © 2013 14
Example
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#
xmlns:a="http://www.example.com/"
xmlns:w="http://en.wikipedia.org/wiki/">
<rdf:Description rdf:about="http://www.amazon.com/Orientalism-Edward-W-Said/dp/039474067X">
<a:Title>Orientalism</a:Title>
<a:Price>11$</a:Price>
<a:Author>
<rdf:Description rdf:about="w:Edward_Said">
<a:BirthCity>Jerusalem</a:BirthCity>
<a:BornAt>1/11/1935</a:BornAt>
<a:DiedA>25/9/2003</a:DiedA>
</rdf:Description>
</a:Author>
</rdf:Description>
</rdf:RDF>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
http://www.amazon.com/Orientalism-Edward-W-Said/dp/039474067Xc
Orientalism
http://en.wikipedia.org/wiki/Edward_Said
11$ Edward Saïd
Jerusalem
1/11/1935
25/9/2003
a:Author
a:B
irth
Cit
y
Jarrar © 2013 15
Example
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:a="http://www.example.com#"
xmlns:w="http://en.wikipedia.org/wiki/">
<rdf:Description rdf:about="http://www.amazon.com/Orientalism-Edward-W-Said/dp/039474067X">
<a:Title>Orientalism</a:Title>
<a:Price>11$</a:Price>
<a:Author>
<rdf:Description rdf:about="w:Edward_Said">
<a:BornAt>1/11/1935</a:BornAt>
<a:DiedA>25/9/2003</a:DiedA>
<a:BirthCity>
<rdf:Description rdf:about="http://en.wikipedia.org/wiki/Jerusalem">
<a:Population>760800</a:Population>
<a:CapitalOf>Palestine</a:CapitalOf>
</rdf:Description>
</a:BirthCity>
</rdf:Description>
</a:Author>
</rdf:Description>
</rdf:RDF>
http://www.amazon.com/Orientalism-Edward-W-Said/dp/039474067Xc
Orientalism
http://en.wikipedia.org/wiki/Edward_Said
11$ Edward Saïd
http://en.wikipedia.org/wiki/Jerusalem
1/11/1935
25/9/2003
760800 Palestine
:Author
:Bir
thC
ity
Jarrar © 2013 18
Simple Example
<?xml version="1.0"?>
<RDF>
<Description about="http://www.w3schools.com/default.asp">
<author>Jan Egil Refsnes</author>
<created>November 1, 1999</created>
<modified>February 1, 2004</modified>
</Description>
</RDF>
Based on [2]
Jarrar © 2013 19
Example Explained
• In the example:
– the URI "http://www.w3schools.com/-default.asp" isused to identify a web page,
– the property "author" describes the author of the page,
– the property value is "Jan Egil Refsnes".
– The property "created" tells when the page wascreated, and the property "modified" when it was lastmodified.
Jarrar © 2013 20
Subject, Predicate & Object
• RDF terminology also use the words subject,
predicate and object.
• The resource http://www.w3schools.com/default.asp is
the subject
• The property "author" is the predicate
• The value "Jan Egil Refsnes" is the object
Jarrar © 2013 21
Example 2
<rdf:RDF>
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax ns#"
xmlns:cd="http://www.recshop.fake/cd">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>
. . . . . . . . . . . .
Based on [2]
Jarrar © 2013 22
Example 2 (cont)
<rdf:Description rdf:about="http://www.recshop.fake/cd/Hide your heart"> <cd:artist>Bonnie Tyler</cd:artist> <cd:country>UK</cd:country> <cd:company>CBS Records</cd:company> <cd:price>9.90</cd:price> <cd:year>1988</cd:year>
</rdf:Description></rdf:RDF>
Jarrar © 2013 23
Details of the Example
• The first line in the XML file is the XML declaration, telling the version of
XML.
• The rdf:RDF element indicates that the content is RDF.
• The xmlns:rdf namespace, specifies that tags with the rdf: prefix are
from the namespace defined by "http://www.w3.org/1999/02/22-rdf-syntax-ns#".
• The xmlns:cd namespace, specifies that tags with the cd: prefix are
from the namespace defined by "http://www.recshop.fake/cd".
• The rdf:Description element contains the description of a resource
identified by the rdf:about attribute.
• The cd:artist element describes a property of the resource, and so
does cd:country, etc.
Jarrar © 2013 24
Table Representation (List of Triples)
Subject Predicate Object
http://www.recshop.fake/cd/Empire
Burlesquehttp://www.recshop.fake/cdartist
"Bob
Dylan"
http://www.recshop.fake/cd/Empire
Burlesque
http://www.recshop.fake/cdcount
ry"USA”
http://www.recshop.fake/cd/Empire
Burlesque
http://www.recshop.fake/cdcomp
any"Columbia”
http://www.recshop.fake/cd/Empire
Burlesquehttp://www.recshop.fake/cdprice "10.90”
http://www.recshop.fake/cd/Empire
Burlesquehttp://www.recshop.fake/cdyear "1985”
Jarrar © 2013 25
Main RDF Properties and Attributes
Main RDF Properties
• rdf:subject The subject of the resource in an RDF Statement
• rdf:predicate The predicate of the resource in an RDF Statement
• rdf:object The object of the resource in an RDF Statement
• rdf:type The resource is an instance of a class
Main RDF Attributes
• rdf:RDF The root of an RDF document
• rdf:about Defines the resource being described
• rdf:Description Container for the description of a resource
• rdf:resource Defines a resource to identify a property
• rdf:datatype Defines the data type of an element
Jarrar © 2013 26
RDF Validator
• Check the correctness of an RDF document:
http://www.w3.org/RDF/Validator/
• Result shows the subject, predicate and object of each
element of the document and a graph of the model.
Jarrar © 2013 27
Mapping XML into RDF (Example)
<XML>
<Article ID=B1 Year=“2000”>
<Author ID=A1>
<Name>Tom</Name>
<Affiliation ID=UoM>
<Name>University of Malta</Name>
<Country ID=mt>
<Name> Malta</Name>
<Capital>Valletta</Capital>
</Country>
</Affiliation>
<Author>
</Article>
<Article ID=B2 Year=“2005”>
<Author href=“#A1”/>
<Author ID=A2>
<Name>Bob</Name>
<Affiliation ID=UoC>
<Name>University of Cyprus</Name>
<Country ID=cy>
<Name> Cyprus</Name>
<Capital>Nicosia</Capital>
</Country>
</Affiliation>
<Author>
</Article>
<Article ID=B3 Year=“2007”>
<Author ID=A3>
<email>ps@uoc</email>
<Affiliation href=“#UoC”/>
<Author>
</Article>
<Article ID=B4 Year=“2008”>
<Publisher ID=ACM/>
</Article>
</XML>
XML
B1
A2
UoM
“Bob”
County
A1
“Tom”
B2UoC
Author
cy
mtCounty
Affiliation
p3@uoc
Affiliation
B3A3
“University of Malta”
“University of Cyprus”
2000
2005
2007
“Cyprus”
“Nicosia”
“Malta”
“Valletta”
Employs
Employs
Root
B4
2008
Artic
le
ACM
RDF
Jarrar © 2013 28
Mapping Database into RDF (Example)
Person
ID Name Affiliation
A1 Tom Lara UoM
A2 Bob Hacker UoC
Article
ID Tile Year
B1 Data Web 2007
B2 Semantic Web 2005Author
Article Person
B1 A1
B1 A2
B2 A2
Country
ID Name
mt Malta
cy Cyprus
Affiliation
ID Country
UoM mt
UoC cy
RDFS P O
:B1 rdf:Type :Article:B1 :Title “Data Web”:B1 :Year 2007:B2 rdf:Type :Article:B2 :Title “Semantic Web”:B2 :Year 2005:B1 :Author :A1:B1 :Author :A2:B2 :Author :A1:A1 rdf:Type :Person:A1 :Name “Tom Lara”:A1 :Affiliation :UoM:A2 :Type :Person:A2 :Name “Bob Hacker”:A2 :Affiliation :UoC:UoM :Type :University:UoM :Country :mt:mt :Type :Country:mt :Name “Malta”:UoC :Type :University:UoC :Country :cy:cy :Type :Country:cy :Name “Cyprus”
Jarrar © 2013 29
Practice Session
Write all information in your Passport into formats:
1. in RDF/XML format,
2. as SPO table.
Jarrar © 2013 30
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:mz="http://www.example.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema-datatypes">
<rdf:Description rdf:about="http://mohammad.example.com/">
<mz:id rdf:datatype="xsd:integer">111111111</mz:id>
<mz:firstname>Mohammad</mz:firstname>
<mz:firstname xml:lang="ar"> محمد</mz:firstname>
<mz:familyname>ZeinEddin</mz:familyname>
<mz:wife rdf:resource="http://tamara.example.com/" />
</rdf:Description>
<rdf:Description rdf:about="http://tamara.example.com/">
<mz:id rdf:datatype="xsd:integer">2222222222</mz:id>
<mz:firstname>Tamara</mz:firstname>
<mz:familyname>Adam</mz:familyname>
</rdf:Description>
</rdf:RDF>
Practice Session ( Solution Example)