The Web of Data for E-Commerce in Brief
A Hands-on Introduction to the GoodRelations Ontology, RDFa, and Yahoo! SearchMonkey
October 25, 2009
Westfields Conference Center near Washington, DC, USA
Martin Hepp Universität der Bundeswehr München, Munich, Germany
Richard Cyganiak Digital Enterprise Research Institute (DERI), Ireland
08:30-10:30 Overview and Motivation: Why the Web of Data is Now 30’
Quick Review of Prerequisites 15’ The GoodRelations Ontology: E-Commerce on the Web of Data 75’
10:30-10:45 Coffee Break
10:45-12:30 RDFa: Bridging the Web of Documents with the Web of Data 45’
Expressing GoodRelations in RDFa: A Running Example 30’ GoodRelations – Advanced Topics 30’
12:30-13:30 Lunch Break
13:30-16:00 Hands-on Exercise: Annotating a Web Shop 60’
Querying the Web of Data for Offerings – SPARQL 15’ Querying the Web of Data – Exercises 15’
16:00-16:30 Coffee Break
16:30-18:00 Publishing Semantic Web Data: Make Your RDF Available 30’
Yahoo SearchMonkey and Yahoo BOSS 45’ Discussion, Conclusion, Feedback Round 15’
2
Logistics
SPARQL
Query Language
Endpoint Specification
25.10.2009 3
SPARQL: Query Language Specification
25.10.2009 4
http://www.w3.org/TR/rdf-sparql-query/
SPARQL Query Structure
# comments
PREFIX gr:<http://purl.org/goodrelations/v1#>
SELECT ?var1 ?var2 WHERE {?var1 rdf:type gr:Offering. ?var1 gr:validThrough ?var2. FILTER (?date < "2009-05-25T00:00:00Z"^^xsd:dateTime)}
25.10.2009 5
SPARQL: Matching Literals
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
SELECT ?v WHERE { ?v ?p "abc"^^xsd:datatype }
25.10.2009 6
SPARQL: Matching Strings
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE { ?x dc:title ?title
FILTER regex(?title, "^SPARQL")
}
^= Starts with
25.10.2009 7
SPARQL Query
# find expired offerings:
PREFIX gr:<http://purl.org/goodrelations/v1#>
SELECT ?o, ?date WHERE {?o rdf:type gr:Offering. ?o gr:validThrough ?date. FILTER (?date < "2009-05-25T00:00:00Z"^^xsd:dateTime)}
25.10.2009 8
SPARQL Query
# find label for UPC/EAN "0001067792600“
PREFIX gr:<http://purl.org/goodrelations/v1#>
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
SELECT ?uri, ?label WHERE {?uri rdf:type gr:ProductOrServiceModel. ?uri gr:hasEAN_UCC-13 "0001067792600"^^xsd:string. ?uri rdfs:label ?label}
25.10.2009 9
Quizzes
• Why is it important to use the OPTIONAL
clause for patterns that cannot be
assumed to be found?
• What is a Semantic Sitemap?
25.10.2009 10
Publishing Data on the Semantic Web
25.10.2009 11
Publishing RDF Data on the Web
• Publishing RDF/XML files
• RDFa - Embedding RDF in XHTML
• dataRSS
25.10.2009 12
Step 1: Publish File
Save the RDF/XML file under the filename
• semanticweb.rdf
in the root directory of your Web server so
that it becomes available as
• http://example.org/semanticweb.rdf
25.10.2009 13
Point to RDF/XML from HTML/XHTML
• Add a link element pointing to this file to
the header of your main Web page (or
other pages, too):
25.10.2009 14
<html lang="en"> <head> <title></title> <link rel="meta" type="application/rdf+xml" title="RDF/XML data for ***your company name***" href="http://www.example.org/semanticweb.rdf" /> </head> ...
Notify Semantic Web Search Engines
To do so, simply paste the URI
• http://example.org/semanticweb.rdf
into the respective fields of the following
submission pages:
• http://pingthesemanticweb.com/
• http://sindice.com/main/submit
• http://swoogle.umbc.edu/index.php?
option=com_swoogle_service&service=submit
25.10.2009 15
Server Configuration
• Rewrite
– http://example.org/semanticweb to
– http://example.org/semanticweb.rdf
• Correct media type rdf+xml
– The content type (media type) of the file
returned must be set correctly to "rdf+xml".
25.10.2009 16
Content Negotiation
25.10.2009 17
Web Page
HTML/XHTML
Meta-Data
RDF/XML
Web
Server
http GET
Returns
Web Page
HTML/XHTML
Meta-Data
RDF/XML
?
Server Configuration
On Appache servers, simply edit
the .htaccess file: #Rewrite rule to serve RDF/XML content from the
vocabulary URI
RewriteRule ^semanticweb$ semanticweb.rdf
#Directive to ensure *.rdf files served as appropriate content type
#if not present in main apache config
AddType application/rdf+xml .rdf
25.10.2009 18
Publishing RDF/XML Data on MS IIS Platforms
• Ionics Isapi Rewrite Filter for IIS 5.0 and IIS 6.0
– http://iirf.codeplex.com/
• Microsoft URL Rewrite Module for IIS 7.0
– http://support.microsoft.com/kb/324064
(Thanks to Christophe Debruyne and Robert
Meersman for the hint!)
• ModRewrite
– http://www.micronovae.com/ModRewrite/
ModRewrite.html (Thanks to Sergio Fernández for the link!)
25.10.2009 19
Semantic Sitemaps
• Efficient means of telling a Semantic Web
search engine which RDF files are
available
25.10.2009 20
http://sw.deri.org/2007/07/sitemapextension/
Additional Information
• Cool URIs for the Semantic Web, W3C
Interest Group Note 03 December 2008
http://www.w3.org/TR/cooluris/
25.10.2009 21
RDFa: Bridging the Web of
Documents with the Web of Data
Martin Hepp
25.10.2009 22
Learning Goal
• Understand the data quality problems that
can result from the „naive“ Semantic Web
• Understand the RDFa syntax for
embedding RDF data into XHTML
documents
• Be able to express GoodRelations data in
RDFa
25.10.2009 23
Data Redundancy and Data Quality Problems
25.10.2009 24
Addresses
Copy of
Addresses
Copy of
Addresses
Addresses Addresses
Time
Data Redundancy in the Semantic Web
25.10.2009 25
Web Page
HTML/XHTML
Meta-Data
RDF/XML
Web Page
HTML/XHTML
Meta-Data
RDF/XML
Time
Embedding RDF in XHTML
• Being able to represent meaning and rendering
information in a single document
25.10.2009 26
Web
Server
http GET
Returns
XHTML +
RDFa
XHTML +
RDFa
XHTML +
=
Resource Description Framework
in attributes
25.10.2009 27
What is RDFa?
• From the Web of Documents' point-of-
view: a set of new (X)HTML attributes to
express metadata within (X)HTML
• From the Web of Data point-of-view: a
serialization format for RDF (such as RDF/
XML, etc.), where the RDF triples are
"embedded" into (X)HTML
25.10.2009 28
Yahoo SearchMonkey
Currently considers RDF data only if
• submitted via the (proprietary) dataRSS
feed format or if
• embedded inside XHTML pages via
RDFa.
25.10.2009 29
http://www.ebusiness-unibw.org/tools/rdf2datarss/
RDF in Attributes
<h1 property="dc:title">GoodRelations
RDFa minimal example</h1>
25.10.2009 30
Subject – Predicate – Object
• @about (URIorSafeCURIE) … for setting
the subject of a statement
• @typeof (CURIEs) … for setting the
type(s) of a resource (syntactic sugar)
• @href/@resource (URIorSafeCURIE) …
for setting the object of a statement
25.10.2009 31
Subject – Predicate – Object
• @property (CURIEs) … for relating a
resource to a literal value, that is, for
datatype properties
• @rel/@rev (reserved word | CURIE)+ …
for relating a resource to another resource,
that is, for object properties
25.10.2009 32
Subject – Predicate – Object
• @content (CDATA) … for setting a literal
object value
• @datatype (CURIE) … for the datatype of
a literal object value - if not specified, then
the default value is xsd:string
25.10.2009 33
DOCTYPE
34
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"><html xmlns="http://www.w3.org/1999/xhtml"<head profile="http://www.w3.org/1999/xhtml/vocab">
<title>GoodRelations RDFa minimal example</title></head>(…)
25.10.2009
Example - Markup
• http://www.w3.org/TR/xhtml-rdfa-primer/
alice-example.html
• Install Operator on FF
• Debug page
25.10.2009 35
RDFa: Simplistic Usage Reusing existing text and values at their original position
25.10.2009 36
RDFa: Snippet Style Embedding additional meta-data in the same document,
but detached from the human-readable content
25.10.2009 37
RDF2RDFa Tool: Snippets
25.10.2009 38
http://www.ebusiness-unibw.org/tools/rdf2rdfa/
25.10.2009 39
Quizzes
• Why is RDFa important to simplify the
creation of Semantic Web content?
• How does RDFa contribute to a better
quality of Semantic Web data?
• What is the main principle of RDFa?
• Name the key elements and give a simple
example of using RDFa.
Hands-on Exercises: Creating,
Publishing, and Querying
Martin Hepp
25.10.2009 40
Step-by-Step (1) • Data Sources
– Form-based data entry
– RDBMS
– XML, e.g. BMEcat
– CSV
– Google CSV, RSS 1.0,
RSS 2.0
• Amount of Detail and
Data Model
– What shall be included?
– How shall the type of
products be represented?
41
• Data Delivery Options
– RDFa: Embedding meta-
data in XHTML
– RDF/XML: Extra file
– dataRSS: Yahoo feed
format
Step-by-Step (2)
• Update Mechanism & Data Management
– PHP on demand
– Script-based data dump
• Publishing the Data
– Server configuration
– Notifying Semantic Web crawlers, Yahoo, …
– Semantic Sitemaps
• Applications
42
GoodRelations Annotator
43
http://www.ebusiness-unibw.org/tools/goodrelations-annotator/
osCommerce Extension
44
http://code.google.com/p/goodrelations-for-oscommerce/
Joomla/VirtueMart Extension
45
http://code.google.com/p/goodrelations-for-joomla/
Google Product Feed Converter
25.10.2009 46
http://tr.im/sLcX
BMEcat2GoodRelations
• Converts complete catalogs from the popular
BMEcat XML Schema into GoodRelations
25.10.2009 47
http://www.ebusiness-unibw.org/tools/bmecat2goodrelations/
GoodRelations in MediaWiki
25.10.2009 48
http://www.ebusiness-unibw.org/wiki/RDFaInMediaWiki
GoodRelations in Oxid eSales
• Popular shop
software
• Free recipe for adding
GoodRelations,
developed by Daniel
Bingel
25.10.2009 49
http://www.ebusiness-unibw.org/wiki/GoodRelations4Oxid
GoodRelations Validator
50
http://www.ebusiness-unibw.org/tools/goodrelations-validator/
GoodRelations CookBook
25.10.2009 51
http://www.ebusiness-unibw.org/wiki/GoodRelations#Recipes_and_Examples
Task 1
• Use the GoodRelations Annotator to
create a description for your business or a
business that you know.
25.10.2009 52
Task 2
• Using Turtle & GoodRelations, describe the
following business.
– Miller Tax Consulting Inc., having two stores, selling
office supplies and tax consultancy
• Convert the Turtle to RDF/XML and validate it.
• Convert the RDF/XML to RDFa using
RDF2RDFa and paste it into a page of your
choice.
25.10.2009 53
Task 3
• Query the SPARQL endpoint at
http://loc.openlinksw.com/sparql
for the product properties and values for the
product with the EAN/UPC code
8714574993836.
25.10.2009 54
Thank you.
25.10.2009 55