• Like
Data translation with SPARQL 1.1
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Data translation with SPARQL 1.1

  • 2,996 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,996
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
56
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. WWW 2012 TutorialSchema Mapping with SPARQL 1.1 Andreas Schultz (Freie Universität Berlin)
  • 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
  • 5. Naming Differences SELECT ?longTrack ?runtime { { ?longTrack mo:duration ?time } UNION { ?longTrack dbpedia-owl:runtime ?time } FILTER (?track > 300) }
  • 6. Structural Differences dbpedia:Three_Little_Birds dbpedia-owl:musicalArtist dbpedia:Bob_Marley_&_The_Wailers . dbpedia:Bob_Marley_&_The_Wailers foaf:made dbpedia:Three_Little_Birds .
  • 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 targetrepresentation, that is, the representation that you or your application expects.
  • 10. Ways to Express ExecutableMappings 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 ConstructMappings 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 ConstructMappings 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 wont 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
  • 20. Simple Renaming Mapping Patterns
  • 21. Rename Class / Property Substitute the class or property URI src:inst a dbpedia-owl:MusicalArtist src:inst a mo:MusicArtist
  • 22. Rename Class SPARQL Mapping:CONSTRUCT { ?s a mo:MusicArtist} WHERE { ?s a dbpedia-owl:MusicalArtist}
  • 23. Rename Property SPARQL Mapping:CONSTRUCT { ?s rdfs:label ?o} WHERE { ?s freebase:type.object.name ?o}
  • 24. Structural Mapping Patterns
  • 25. Rename Class based on PropertyExistence 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 .
  • 30. Reverse Property SPARQL Mapping: CONSTRUCT { ?s mo:member_of ?o } WHERE { ?o dbpedia-owl:currentMember ?s }
  • 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 .
  • 32. Resourcesify SPARQL Mapping: CONSTRUCT { ?s po:version _:newversion . _:newversion po:runtime ?runtime . } WHERE { ?s dbpedia-owl:runtime ?runtime . }
  • 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" .
  • 34. Deresourcesify SPARQL Mapping: CONSTRUCT { ?s lgdp:owner ?cityLabel . } WHERE { ?s dbpedia-owl:city ?city . ?city rdfs:label ?cityLabel . }
  • 35. Value Transformation based Mapping Patterns
  • 36. SPARQL 1.1 functions SPARQL 1.1 offers functions covering: RDF terms (str, lang, IRI, STRDT etc.) Strings (SUBSTR, UCASE etc.) Numerics (abs, round etc.) Dates and Times (now, year, month etc.) Hash Functions (SHA1, MD5 etc.) XPath Constructor Functions (xsd:float etc.)
  • 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 Datatypefb: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) }
  • 46. Aggregation based Mapping Pattern
  • 47. Aggregation Aggregate multiple values / occurrences into one value. fb:en.berlin_u-bahn fb:metropolitan_transit.transit_system.transit_lines fb:en.u1 ; fb:metropolitan_transit.transit_system.transit_lines fb:en.u3 . fb:en.berlin_u-bahn dbpedia-owl:numberOfLines 2 .
  • 48. Aggregation SPARQL Mapping: CONSTRUCT { ?s dbpedia-owl:numberOfLines ?nrOfLines } WHERE { { SELECT ?s (COUNT(?l) AS ?nrOfLines) { ?s fb:metropolitan_transit.transit_system.transit_lines ?l . } GROUP BY ?s } }
  • 49. Data Cleaning
  • 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) }
  • 52. Questions?