2. Outline
Why Do We Want to Integrate Data?
Schema Mapping
Translating RDF Data with SPARQL 1.1
Mapping Patterns
3. Motivation
Web of Data is heterogeneous
Many different and overlapping ways to
represent information
Distribution of the most widely used vocabularies
4. Data is represented...
Using terms from a wide range of vocabularies
Using diverging structures
With values of different (data type) formats
Fine grained vs. coarse grained
Using different measuring units
7. Value Level Differences
“2012-04-15” vs. “2012-04-15”^^xsd:date
“John Doe” vs. “John Doe”@en
20 in Celcius vs. 68 in Fahrenheit
“Doe, John” vs. “John Doe”
8. Outline
Motivation
Schema Mapping
Translating RDF Data with SPARQL 1.1
Mapping Patterns
9. Schema Mapping
For data translation:
A mapping specifies how data under a source
representation is translated to a target
representation, that is, the representation that you
or your application expects.
10. Ways to Express Executable
Mappings for RDF Data
Ontology constructs
OWL, RDFS (rdfs:subClassOf, rdfs:subPropertyOf)
Rules
SWRL
RIF
Query Languages
SPARQL 1.1
11. Outline
Motivation
Schema Mapping
Translating RDF Data with SPARQL 1.1
Mapping Patterns
12. Data Translation with SPARQL 1.1
Nearly W3C Recommendation status
Many scalable SPARQL engine
implementations out there
Data translation with SPARQL CONSTRUCT
Huge improvements to version 1.0 regarding
data translation
13. How to Use SPARQL Construct
Mappings Ideally
SELECT ?longTrack ?runtime
FROM {
Construct {
?subj target:relevantProperty ?obj
} WHERE {
?subj sour:relProperty ?obj
}
} WHERE {
?subj target:relevantProperty ?obj .
…
}
14. How to Use SPARQL Construct
Mappings in Practice
SELECT ?longTrack ?runtime
FROM {
Construct {
?subj target:relevantProperty ?obj
} WHERE {
?subj sour:relProperty ?obj
}
} WHERE {
?subj target:relevantProperty ?obj .
…
}
15. Possibilities
Execute all SPARQL Construct queries on the
source data set(s) to generate local versions of
the target data set(s)
Optionally merge multiple target data sets into
one
Reference these files in FROM clause
Possibility we won't cover: Write the results
directly into a RDF store and query the store.
16. 1. Transform Data Sets with ARQ
query –query=constructQuery.qry –data=sourceDataset.nt > targetDataset.ttl
# Execute more queries
…
17. 2. Use Target Data Set Files in Query
SELECT ?longTrack ?runtime
FROM <targetDataset.ttl>
FROM …
WHERE {
?subj target:relevantProperty ?obj .
…
}
18. Outline
Motivation
Schema Mapping
Translating RDF Data with SPARQL 1.1
Mapping Patterns
19. Pattern based approach
Presentation of common mapping patterns
Ordered from common to not so common
Learn how to tackle these mapping patterns
with SPARQL 1.1
25. Rename Class based on Property
Existence
Rename class based on the existence of a
property relation.
dbpedia:William_Shakespeare a dbpedia-owl:Person ;
dbpedia-owl:deathDate "1616-04-23"^^xsd:date .
dbpedia:William_Shakespeare
a fb:people.deceased_person .
26. Rename Class based on Property
SPARQL Mapping:
CONSTRUCT {
?s a freebase:people.deceased_person
} WHERE {
?s a dbpedia-owl:Person ;
dbpedia-owl:deathDate ?dd .
}
27. Rename Class based on Value
Instances of the source class become instances of the
target class if they have a specific property value.
gw-p:Kurt_Joachim_Lauk_euParliament_1840_P a gw:Person ;
gw:profession "politician"^^xsd:string .
gw-p:Kurt_Joachim_Lauk_euParliament_1840_P ;
a fb:government.politician .
28. Rename Class based on Value
SPARQL Mapping:
CONSTRUCT {
?s a fb:government.politician
} WHERE {
?s a gw:Person ;
gw:profession "politician"^^xsd:string .
}
29. Reverse Property
The target property represents the reverse
relationship regarding the source property.
dbpedia:Queens_of_the_Stone_Age dbpedia-owl:currentMember
dbpedia:Joey_Castillo .
dbpedia:Joey_Castillo mo:member_of
dbpedia:Queens_of_the_Stone_Age .
31. Resourcesify
Represent an attribute by a newly created
resource that then carries the attribute value.
dbpedia:The_Usual_Suspects
dbpedia-owl:runtime 6360.0 .
dbpedia:The_Usual_Suspects po:version _:new .
_:new po:duration 6360.0 .
33. Deresourcesify
Inverse pattern to the Resourcesify pattern.
dbpedia:John_F._Kennedy_International_Airport
dbpedia-owl:city dbpedia:New_York_City .
dbpedia:New_York_City rdfs:label "New York City" .
dbpedia:John_F._Kennedy_International_Airport
lgdp:owner "New York City" .
37. Transform Value 1:1
Transform the (lexical) value of a property.
dbpedia:The_Shining_(film)
dbpedia-owl:runtime 8520 .
dbpedia:The_Shining_(film)
movie:runtime 142 .
38. Transform Value 1:1
SPARQL Mapping:
CONSTRUCT {
?s movie:runtime ?runtimeInMinutes .
} WHERE {
?s dbpedia-owl:runtime ?runtime .
BIND(?runtime / 60 As ?runtimeInMinutes)
}
BIND( Expression As ?newVariable )
39. Transform Literal to URI
Transform a literal value into a URI.
dbpedia:Von_Willebrand_disease
dbpedia-owl:omim 193400 .
Also 1:1 transformation pattern!
dbpedia:Von_Willebrand_disease
diseasome:omim <http://bio2rdf.org/omim:193400> .
40. Transform Literal to URI
SPARQL Mapping:
CONSTRUCT {
?s diseasome:omim ?omimuri .
} WHERE {
?s dbpedia-owl:omim ?omim .
BIND(IRI(concat(“http://bio2rdf.org/omim:”, str(?omim)))
As ?omimuri)
}
41. Construct Literals
SPARQL 1.1 offers several functions to
construct literals:
STR – returns the lexical form → plain literal
STRDT – construct data type literal
STRLANG – construct literal with language tag
42. Cast to another Datatype
fb:en.clint_eastwood
fb:people.person.date_of_birth
“1930-05-31T00:00:00”^^xsd:dateTime .
fb:en.clint_eastwood
dbpedia-owl:birthDate
“1930-05-31”^^xsd:date .
43. Cast to another Datatype
SPARQL Mapping:
CONSTRUCT {
?s dbpedia-owl:birthDate ?date
} WHERE {
?s fb:people.person.date_of_birth ?dateTime .
BIND(xsd:date(?dateTime) As ?date)
}
44. Transform Value N:1
Transform multiple values from different
properties to a single value.
dbpedia:William_Shakespeare
foaf:givenName "William" ;
foaf:surname "Shakespeare" .
dbpedia:William_Shakespeare
foaf:name "Shakespeare, William" .
45. Transform Value N:1
SPARQL Mapping:
CONSTRUCT {
?s foaf:name ?name
} WHERE {
?s foaf:givenName ?givenName ;
foaf:surname ?surname .
BIND(CONCAT(?surname, “, ”, ?givenName) As ?name)
}
50. Data Cleaning
Integrating data cleaning into a mapping.
fb:en.jimi_hendrix fb:people.person.date_of_birth "1942-11-27" .
fb:en.josh_wink fb:people.person.date_of_birth "1970" .
fb:en.jimi_hendrix dbpedia-owl:birthDate "1942-11-27"^^xsd:date
51. Data Cleaning
SPARQL Mapping:
Construct {
?s dbpedia-owl:birthDate ?birthDate
} Where {
?s fb:people.person.date_of_birth ?bd .
FILTER regex(?bd, “[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]”)
BIND ((xsd:date(?bd)) As ?birthDate)
}