+ Internet Technologies The Resource Description Framework (RDF and RDFa)
Download
Report
Transcript + Internet Technologies The Resource Description Framework (RDF and RDFa)
+
Internet Technologies
The Resource Description
Framework (RDF and RDFa)
95-733 Internet Technologies
+
RDF and RDFa
Notes from two articles on course schedule:
“What is RDF” by Tim Bray and Joshua
Tauberer and the “RDFa Primer” from W3C
95-733 Internet Technologies
+
A Knowledge Graph
95-733 Internet Technologies
+
Triples
Start Node
Edge Label
End Node
vincent_donofrio
starred_in
law_&_order_ci
law_&_order_ci
is_a
tv_show
the_thirteenth_floor similar_plot_as the_matrix
95-733 Internet Technologies
+
Notation 3 (N3) or Turtle Format
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntaxns#> .
@prefix ex: <http://www.example.org/> .
ex:vincent_donofrio ex:starred_in ex:law_and_order_ci .
ex:law_and_order_ci rdf:type ex:tv_show .
ex:the_thirteenth_floor ex:similar_plot_as ex:the_matrix .
95-733 Internet Technologies
+
RDF/XML
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ex="http://www.example.org/">
<rdf:Description rdf:about="http://www.example.org/vincent_donofrio">
<ex:starred_in>
<ex:tv_show rdf:about="http://www.example.org/law_and_order_ci" />
</ex:starred_in>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/the_thirteenth_floor">
<ex:similar_plot_as rdf:resource="http://www.example.org/the_matrix" />
</rdf:Description>
</rdf:RDF>
95-733 Internet Technologies
+
Another RDF/XML
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:geo="http://www. w3.org/2003/01/geo/wgs84_pos#"
xmlns:edu="http://www.example.org/">
<rdf:Description rdf:about="http://www.princeton.edu">
<geo:lat>40.35</geo:lat>
<geo:long>-74.66</geo:long>
<edu:hasDept rdf:resource="http://www.cs.princeton.edu"
dc:title="Department of Computer Science"/>
</rdf:Description>
</rdf:RDF>
95-733 Internet Technologies
+
As A Table
Subject
Predicate Object
----------------------------- -----------
--------
<http://www.princeton.edu> edu:hasDept
<http://www.cs.princeton.edu>
<http://www.princeton.edu>
geo:lat
<http://www.princeton.edu>
geo:long
<http://www.cs.princeton.edu> dc:title
Science"
95-733 Internet Technologies
"40.35"
"-74.66"
"Department of Computer
+
Notation 3
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix geo: <http://www. w3.org/2003/01/geo/wgs84_pos#> .
@prefix edu: <http://www.example.org/> .
<http://www.princeton.edu> geo:lat "40.35" ; geo:long "-74.66" .
<http://www.cs.princeton.edu> dc:title "Department of Computer Science" .
<http://www.princeton.edu> edu:hasDept <http://www.cs.princeton.edu> .
95-733 Internet Technologies
+
From the RDFa W3C Primer
“When web data meant for humans is augmented with hints
meant for computer programs, these programs become
significantly more helpful.”
95-733 Internet Technologies
+
XHTML Without and With RDFa
All content on this site is licensed under
<a href="http://creativecommons.org/licenses/by/3.0/">
a Creative Commons License
</a>
All content on this site is licensed under
The rel, in a
link, describes
the relationship
between the
current page
and the linked
page.
<a rel="license" href="http://creativecommons.org/licenses/by/3.0/">
a Creative Commons License
</a>.
95-733 Internet Technologies
+
A Link with a Flavor
95-733 Internet Technologies
+
Labeling Title and Author
<div>
<h2>The trouble with Bob</h2>
<h3>Alice</h3>
...
</div>
RDFa introduces the
property attribute.
What kind of title? A
title of a person or a
title to land or a title of
a work?
<div xmlns:dc="http://purl.org/dc/elements/1.1/">
<h2 property="dc:title">The trouble with Bob</h2>
<h3 property="dc:creator">Alice</h3>
...
</div>
95-733
Internet Technologies
+ In RDFa, all property names are, in
fact, URLs.
95-733 Internet Technologies
+
Multiple Items Per Page
RDFa provides
@about, an
attribute for
<div about="/alice/posts/trouble_with_bob">
<h2 property="dc:title">The trouble with Bob</h2> specifying the
<h3 property="dc:creator">Alice</h3>
exact URL to
...
which the
</div>
contained
RDFa markup
<div about="/alice/posts/jos_barbecue">
<h2 property="dc:title">Jo's Barbecue</h2>
applies
<div xmlns:dc="http://purl.org/dc/elements/1.1/">
<h3 property="dc:creator">Eve</h3>
...
</div>
</div>
95-733 Internet Technologies
+
As a Diagram
95-733 Internet Technologies
+
Alice Gives Bob Credit
<div about="/alice/posts/trouble_with_bob">
<h2 property="dc:title">The trouble with Bob</h2>
The trouble with Bob is that he takes much better photos than I do:
<div about="http://example.com/bob/photos/sunset.jpg">
<img src="http://example.com/bob/photos/sunset.jpg" />
<span property="dc:title">Beautiful Sunset</span>
by <span property="dc:creator">Bob</span>.
</div>
The
</div>
inner about
overrides the
outer about.
95-733 Internet Technologies
+
As A Graph
95-733 Internet Technologies
+
Blog Contact Info
<div>
<p>
Alice Birpemswick
</p>
<p>
Email: <a href="mailto:[email protected]">[email protected]</a>
</p>
<p>
Phone: <a href="tel:+1-617-555-7332">+1 617.555.7332</a>
</p>
</div>
This is mainly useful
for viewing.
95-733 Internet Technologies
+
Blog w/FOAF Contact Info
<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:[email protected]">
The Dublin core
has no vocabulary for
describing friendships.
But foaf does.
The typeof is an
[email protected]</a>
RDFa attribute that is
</p>
specifically meant to
<p>
declare a new data
Phone: <a rel="foaf:phone"
item with a certain
href="tel:+1-617-555-7332">+1 617.555.7332</a>
</p>
type.
</div>
95-733 Internet Technologies
+
As A Graph
Alice didn't specify @about like she did when
adding blog entry metadata. What is she associating these
properties with, then? In fact, the @typeof on the enclosing
div implicitly sets the subject of the properties marked up
within that div. The name, email address, and phone number
are associated with a new node of type foaf:Person. This
95-733 Internet Technologies
node has no URL to identify it, so it is called a blank node.
+
Social Networks
<div>
<ul>
<li>
<a href="http://example.com/bob/">Bob</a>
</li>
<li>
<a href="http://example.com/eve/">Eve</a>
</li>
<li>
<a href="http://example.com/manu/">Manu</a>
</li>
These people are all
</ul>
</div>
friends of Alice and she
Includes them in her
normal HTML blog.
95-733 Internet Technologies
+
Adding RDFa
First,describe
these as
Persons.
<div xmlns:foaf="http://xmlns.com/foaf/0.1/">
<ul>
<li typeof="foaf:Person">
<a href="http://example.com/bob/">Bob</a>
</li>
<li typeof="foaf:Person">
<a href="http://example.com/eve/">Eve</a>
</li>
<li typeof="foaf:Person">
<a href="http://example.com/manu/">Manu</a>
</li>
</ul>
</div>
95-733 Internet Technologies
+
Add Homepages
Use rel for the link
relationships.
<div xmlns:foaf="http://xmlns.com/foaf/0.1/">
<ul>
<li typeof="foaf:Person">
<a rel="foaf:homepage" href="http://example.com/bob/">Bob</a>
</li>
<li typeof="foaf:Person">
<a rel="foaf:homepage" href="http://example.com/eve/">Eve</a>
</li>
<li typeof="foaf:Person">
<a rel="foaf:homepage" href="http://example.com/manu/">Manu</a>
</li>
</ul>
</div>
95-733 Internet Technologies
+
Describe Text as Names
<div xmlns:foaf="http://xmlns.com/foaf/0.1/">
<ul>
<li typeof="foaf:Person">
<a property="foaf:name"
rel="foaf:homepage" href="http://example.com/bob/">Bob</a>
</li>
<li typeof="foaf:Person">
<a property="foaf:name"
rel="foaf:homepage" href="http://example.com/eve/">Eve</a>
</li>
<li typeof="foaf:Person">
<a property="foaf:name"
rel="foaf:homepage" href="http://example.com/manu/">Manu</a>
</li>
</ul>
95-733
Internet Technologies
</div>
+
Claim in Primer
“Alice is ecstatic that, with so little additional markup, she's
able to fully express both a pleasant human-readable page
and a machine-readable dataset.”
95-733 Internet Technologies
+
Using foaf:knows
<div xmlns:foaf="http://xmlns.com/foaf/0.1/" about="#me" rel="foaf:knows">
<ul>
<li typeof="foaf:Person">
<a property="foaf:name" rel="foaf:homepage" href="http://example.com/bob">Bob</a>
</li>
<li typeof="foaf:Person">
<a property="foaf:name" rel="foaf:homepage" href="http://example.com/eve">Eve</a>
</li>
<li typeof="foaf:Person">
<a property="foaf:name" rel="foaf:homepage" href="http://example.com/manu">Manu</a>
</li>
</ul>
</div>
Alice knows these people with these
names and homepages.
95-733 Internet Technologies
+
95-733 Internet Technologies
+
Building Custom Vocabularies
1. Selecting a URL where the vocabulary will reside, e.g. http://example.com/photos/vocab#.
2. Distributing an RDF document, at that URL, which defines the classes and properties
that make up the vocabulary. For example, Alice may want to define classes Photo and
Camera, as well as the property takenWith that relates a photo to the camera with which it
was taken.
3. Using the vocabulary in XHTML+RDFa with the usual prefix declaration mechanism, e.g.
xmlns:photo="http://example.com/photos/vocab#", and typeof="photo:Camera".
95-733 Internet Technologies
+
Microformats Compete with RDFa
hCard Business card data
XFN
Friends and contacts
hCalendar Events
hReview Review movies, books, etc..
“When web data meant for humans is augmented with
hints meant for computer programs, these programs
become significantly more helpful.”
But, perhaps we will use microformats rather than RDFa.
95-733 Internet Technologies
+
Microformats Compete with RDFa
As an exercise, visit
http://microformats.org and build an hCard and
an hCalendar.
Use hCard creator and hCalendar creator.
95-733 Internet Technologies
+
RDF On Its Own
• RDFa is RDF in XHTML.
• The Resource Description Framework (RDF) is a W3C recommendation for
an XML encoding of metadata.
• A standard for encoding metadata is important for finding and
describing resources. A “resource” is anything with a URI. This would
include people, books, devices and so on.
• Card catalogs, for example, have been used for years to record metadata
about the collection of materials in libraries. Is Google the card catalogue
for the web? Are we done?
95-733 Internet Technologies
+
RDF Is All About Making
Statements
•
An RDF Document contains Statements.
•
A statement can be thought of as an ordered triple composed of three
items: (resource, property-type, property-value)
•
A Resource is anything that can be identified.
•
A Predicate is a property name that has a URI. The Predicate may or may not
actually be resolvable.
•
A Value is another Resource or a literal
•
Statements may be represented in RDF XML, abbreviated RDF XML, NTriples or graphs.
95-733 Internet Technologies
+
RDF Triples
It is required that each resource have a URI.
http://www.andrew.cmu.edu
http://www.andrew.cmu.edu/~mm6/my.xml#root().child(1)
mailto:[email protected]
urn:isbn:0764532367
(resource, property-type, property-value)
A property is a specific characteristic, attribute
or relationship of a resource. Each property has a specific meaning
that can be identified by the property’s name and the associated
schema. The schema must actually be pointed to by the property’s namespace.
Using RDF Schema we can describe the property names, values and value
ranges that are permitted for the property.
95-733 Internet Technologies
+
A Simple Description
<RDF>
<Description about = "Some URI">
<creator>property value
</creator>
<title>property value
</title>
</Description>
</RDF>
95-733 Internet Technologies
+
Resource Valued Property
<RDF>
<Description about = "Some URI">
<creator rdf:resource =
"www.andrew.cmu.edu/~mm6"/>
</Description>
<Description about = "www.andrew.cmu.edu/~mm6">
<FN>Mike McCarthy</FN>
</Description>
</RDF>
95-733 Internet Technologies
+
Making Many Statements
<RDF>
<Description about = "Some URI">
<creator>property value</creator>
<title>property value</title>
</Description>
<Description about = "Some URI">
<creator>property value</creator>
<title>property value</title>
</Description>
:
:
</RDF>
95-733 Internet Technologies
+
Blank Nodes
<RDF>
<Description about = "Some URI">
<creator>
<Description>
<FN>Joe Smith</FN>
<EMAIL>[email protected]</EMAIL>
</Description>
</creator>
</Description>
</RDF>
95-733 Internet Technologies
+
XML Valued Property
<RDF>
<Description about = "Some URI">
<generates rdf:parseType="Literal">
<html><body></body></html>
</generates>
</Description>
</RDF>
95-733 Internet Technologies
+
A Type Property
<RDF>
<Description about = ”SomeURL">
<rdf:type rdf:resource=
"http://www.schemas.org/www/WebPage"/>
</Description>
</RDF>
95-733 Internet Technologies
+
An Abbreviated Type Property
<RDF>
<TypeName about = "Some URI">
<creator>property value
</creator>
<title>property value</title>
</TypeName>
</RDF>
95-733 Internet Technologies
+
RDF Notations
English
•
RDF XML
•
Abbreviated RDF XML
•
N-Triples
•
Graph
95-733 Internet Technologies
+
Another RDF Application
Composite Capabilities/Preference
Profiles
• The CC/PP working group was formed in August
1999.
• Its mission was to develop an RDF-based
framework for the management of device profile
information.
• Now under W3C’s Ubiquitous Web Applications
Working Group (UWAWG)
95-733 Internet Technologies
+
An RDF Application
CC/PP
A composite capability/preference profile is a collection
of information which describes the capabilities,
hardware, system software and applications used by
someone accessing the web. Information might
include:
• Preferred language (Spanish, French, etc.)
• Sound (on/off)
• Images (on/off)
• Class of device (phone, PC, printer, etc.)
• Screen size
• Available bandwidth
• Version of HTML supported, and so on.
95-733 Internet Technologies
Composite Capability/Preference Profiles (CC/PP)
DEVICE PROFILE
CC/PP
RDF
CC/PP provides the equivalent
of database fields and associated
model for formalizing the
device profiles
RDF is language which provides
a standard way for using XML to
represent metadata in the form of
properties and relationships of
items on the Web.
XML
The device profile and user preferences might be stored in a
CC/PP repository. CC/PP is in turn an RDF application.
95-733 Internet Technologies
Composite Capability/Preference Profiles
(CC/PP)
• The location of the device profile is sent with a request for
a Web page.
• The CC/PP data is accessed and on the basis of the
profile, a Web server can choose the right content. This
might be a certain XHTML file or perhaps a suitable
document would be generated on the fly.
• A document on the server may refer to its own document
profile-describing the required capabilities of its client.
• The server might match and send or generate and send.
95-733 Internet Technologies
Each variant of the document has a
document profile describing the browser
support it needs to display it
DEVICE PROFILES
DOCUMENT PROFILES
NEGOTIATE CORRECT
CONTENT FOR DEVICES
If none of the document variants are suitable,
existing document may be transformed by style
sheet or tool for the purpose, or new document
generated
DEVICES RECEIVE RIGHT MARK-UP
95-733 Internet Technologies
+
Processing RDF in Java
XSLT?
DOM?
SAX?
StAX?
Open source Jena from HP Research provides another
approach
95-733 Internet Technologies
+
Jena Example 1
// Modified from HP's Jena Tutorial
// ~/mm6/www/95-733/examples/Jena
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.vocabulary.*;
public class Tutorial01 extends Object {
// some definitions
static String personURI = http://somewhere/JohnSmith;
static String fullName
95-733 Internet Technologies
= "John Smith";
public static void main (String args[]) {
// create an empty model (An empty RDF graph)
Model model = ModelFactory.createDefaultModel();
// create the resource
Resource johnSmith = model.createResource(personURI);
// add the property
johnSmith.addProperty(VCARD.FN, fullName);
model.write(System.out);
}
}
95-733 Internet Technologies
D:\McCarthy\www\95-733\examples\Jena>java Tutorial01
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#" >
<rdf:Description rdf:about="http://somewhere/JohnSmith">
<vcard:FN>John Smith</vcard:FN>
</rdf:Description>
</rdf:RDF>
95-733 Internet Technologies
+
A Resource Valued Predicate
// Modified from HP's Jena Tutorial
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.vocabulary.*;
public class Tutorial03 extends Object {
public static void main (String args[]) {
String personURI
String givenName
= "http://somewhere/JohnSmith";
= "John";
String familyName = "Smith";
String fullName
= givenName + " " + familyName;
// create an empty model
Model model = ModelFactory.createDefaultModel();
95-733 Internet Technologies
// create the resource
// and add the properties cascading style
Resource johnSmith = model.createResource(personURI)
.addProperty(VCARD.FN, fullName)
.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName))
95-733 Internet Technologies
// list the statements in the graph
StmtIterator iter = model.listStatements();
// print out the predicate, subject and object of each statement
while (iter.hasNext()) {
Statement stmt = iter.nextStatement(); // get next statement
Resource subject = stmt.getSubject(); // get the subject
Property predicate = stmt.getPredicate(); // get the predicate
RDFNode object = stmt.getObject(); // get the object
System.out.print(subject.toString());
System.out.print(" " + predicate.toString() + " ");
95-733 Internet Technologies
if (object instanceof Resource) {
System.out.print(object.toString());
} else {
// object is a literal
System.out.print(" \"" + object.toString() + "\"");
}
System.out.println(" .");
} // end while
System.out.println("===================");
model.write(System.out);
}
}
95-733 Internet Technologies
D:\McCarthy\www\95-733\examples\Jena>java Tutorial03
16fa474:fd074695f6:-8000 http://www.w3.org/2001/vcard-rdf/3.0#Given "John" .
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#FN "John Smith" .
16fa474:fd074695f6:-8000 http://www.w3.org/2001/vcard-rdf/3.0#Family "Smith" .
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#N 16fa474:fd074695f6:-8000
.
===================
<rdf:RDF
Notes:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#" >
16fa… is a blank
<rdf:Description rdf:nodeID="A0">
node with family
<vcard:Given>John</vcard:Given>
and given
<vcard:Family>Smith</vcard:Family>
properties.
</rdf:Description>
<rdf:Description rdf:about="http://somewhere/JohnSmith"> The main resource has
a blank node as the value
<vcard:FN>John Smith</vcard:FN>
of the N property.
<vcard:N rdf:nodeID="A0"/>
The main resource also
</rdf:Description>
</rdf:RDF>
has a FN property with
a value.
95-733 Internet Technologies
+
Reading OWL with Jena
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.ontology.*;
import java.io.*;
import java.net.*;
public class ReadWineOntology extends Object {
public static void main (String args[]) throws Exception {
// create an empty model
OntModel model = ModelFactory.createOntologyModel();
95-733 Internet Technologies
// read the wine.xml file either way
model.read("file:D:/McCarthy/www/95-733/examples/Jena/wine.xml");
//model.read("http://www.andrew.cmu.edu/user/mm6/ontology/wine.xml");
// write it to standard out
model.write(System.out);
}
}The next step is to use Jena to make or verify deductions.
95-733 Internet Technologies
+
The Semantic Web
These notes are from an article entitled “The Semantic Web” by Tim Berners-Lee,
James Hendler and Ora Lassila appearing in Scientific American, May 2001
By augmenting web pages with data directed at computers and by adding documents
solely for computers, we will transform the web into the Semantic Web.
Intuitive software will be developed that will allow anyone to create Semantic Web
Pages.
For the semantic web to function, computers must have access to structured collections
of information and sets of inference rules that can be used to conduct automated
reasoning.
XML has no built-in mechanism to convey the meaning of the user’s new tags to other
users.
95-733 Internet Technologies
+
The Semantic Web
The challenge of the Semantic Web is to provide a language that expresses both
data and rules for reasoning about the data and that allows rules from an
existing knowledge-representation system to be exported unto the Web.
Ontologies: Collections of statements written in a language such as RDF that define
the relations between concepts and specify logical rules for reasoning about them.
Computers will “understand” the meaning of semantic data on a web page by
following links to specified ontologies.
Consider the statement “a hex-head bolt is a type of machine bolt”. We could encode this
in RDF.
When writing code against traditional XML data, the programmer must know what the
the document author uses each tag for.
Meaning is expressed by RDF, which encodes it in a set of triples.
95-733 Internet Technologies
+
The Semantic Web
An RDF document makes assertions that particular things (people, web pages,
or whatever) have properties (such as “is sister of”, “is the author of”) with
certain values (another person, another Web page).
We can remove ambiguity by associating each of the three parts with a URI. For
example:
“(filed 5 in database A) (is a field of type) (zip code)” could be replaced with
three URI’s.
An ontology is a document or file that formally defines the relations among terms.
An ontology may express a rule “If a city code is associated with a state code, and
an address uses that city code, then that address has the associated state code.”
A program can then draw conclusions.
The meaning of terms or XML codes can be defined by pointers from the page to
an ontology.
95-733 Internet Technologies
+
The Semantic Web
Many automated web based services already exist without semantics, but other programs
such as agents have no way to locate one that will perform a specific function.
Service Discovery will happen only when there is a common language to describe a
service in a way that lets other agents “understand” both the function offered
and how to take advantage of it.
Services can advertise their functions in directories analogous to the Yellow Pages.
Devices can advertise their abilities with RDF.
95-733 Internet Technologies