0
WWW 2012 TutorialSchema Mapping with SPARQL 1.1           Andreas Schultz        (Freie Universität Berlin)
Outline   Why Do We Want to Integrate Data?   Schema Mapping   Translating RDF Data with SPARQL 1.1   Mapping Patterns
Motivation   Web of Data is heterogeneous   Many different and overlapping ways to    represent information             ...
Data is represented...    Using terms from a wide range of vocabularies    Using diverging structures    With values of...
Naming Differences  SELECT ?longTrack ?runtime  {    {       ?longTrack mo:duration ?time      } UNION {       ?longTrack ...
Structural Differences  dbpedia:Three_Little_Birds      dbpedia-owl:musicalArtist          dbpedia:Bob_Marley_&_The_Wailer...
Value Level Differences   “2012-04-15” vs. “2012-04-15”^^xsd:date   “John Doe” vs. “John Doe”@en   20 in Celcius vs. 68...
Outline   Motivation   Schema Mapping   Translating RDF Data with SPARQL 1.1   Mapping Patterns
Schema Mapping               For data translation:  A mapping specifies how data under a source      representation is tra...
Ways to Express ExecutableMappings for RDF Data   Ontology constructs       OWL, RDFS (rdfs:subClassOf, rdfs:subProperty...
Outline   Motivation   Schema Mapping   Translating RDF Data with SPARQL 1.1   Mapping Patterns
Data Translation with SPARQL 1.1   Nearly W3C Recommendation status   Many scalable SPARQL engine    implementations out...
How to Use SPARQL ConstructMappings Ideally SELECT ?longTrack ?runtime FROM {   Construct {     ?subj target:relevantPrope...
How to Use SPARQL ConstructMappings in Practice SELECT ?longTrack ?runtime FROM {   Construct {     ?subj target:relevantP...
Possibilities   Execute all SPARQL Construct queries on the    source data set(s) to generate local versions of    the ta...
1. Transform Data Sets with ARQ query –query=constructQuery.qry –data=sourceDataset.nt > targetDataset.ttl # Execute more ...
2. Use Target Data Set Files in Query  SELECT ?longTrack ?runtime  FROM <targetDataset.ttl>  FROM …  WHERE {    ?subj targ...
Outline   Motivation   Schema Mapping   Translating RDF Data with SPARQL 1.1   Mapping Patterns
Pattern based approach   Presentation of common mapping patterns   Ordered from common to not so common   Learn how to ...
Simple Renaming Mapping Patterns
Rename Class / Property  Substitute the class or property URI src:inst   a   dbpedia-owl:MusicalArtist src:inst   a   mo:M...
Rename Class    SPARQL Mapping:CONSTRUCT {    ?s a mo:MusicArtist} WHERE {    ?s a dbpedia-owl:MusicalArtist}
Rename Property    SPARQL Mapping:CONSTRUCT {    ?s rdfs:label ?o} WHERE {    ?s freebase:type.object.name   ?o}
Structural Mapping Patterns
Rename Class based on PropertyExistence  Rename class based on the existence of a  property relation. dbpedia:William_Shak...
Rename Class based on Property     SPARQL Mapping: CONSTRUCT {     ?s   a   freebase:people.deceased_person } WHERE {     ...
Rename Class based on Value  Instances of the source class become instances of the  target class if they have a specific p...
Rename Class based on Value     SPARQL Mapping: CONSTRUCT {     ?s   a   fb:government.politician } WHERE {     ?s a gw:Pe...
Reverse Property  The target property represents the reverse  relationship regarding the source property. dbpedia:Queens_o...
Reverse Property     SPARQL Mapping: CONSTRUCT {     ?s   mo:member_of   ?o } WHERE {     ?o   dbpedia-owl:currentMember  ...
Resourcesify  Represent an attribute by a newly created  resource that then carries the attribute value. dbpedia:The_Usual...
Resourcesify     SPARQL Mapping: CONSTRUCT {     ?s             po:version    _:newversion .     _:newversion   po:runtime...
Deresourcesify  Inverse pattern to the Resourcesify pattern. dbpedia:John_F._Kennedy_International_Airport            dbpe...
Deresourcesify     SPARQL Mapping: CONSTRUCT {     ?s   lgdp:owner   ?cityLabel . } WHERE {     ?s dbpedia-owl:city ?city ...
Value Transformation based Mapping Patterns
SPARQL 1.1 functions    SPARQL 1.1 offers functions covering:   RDF terms (str, lang, IRI, STRDT etc.)   Strings     (SU...
Transform Value 1:1  Transform the (lexical) value of a property. dbpedia:The_Shining_(film)    dbpedia-owl:runtime 8520 ....
Transform Value 1:1      SPARQL Mapping:  CONSTRUCT {      ?s   movie:runtime    ?runtimeInMinutes .  } WHERE {      ?s db...
Transform Literal to URI  Transform a literal value into a URI. dbpedia:Von_Willebrand_disease    dbpedia-owl:omim 193400 ...
Transform Literal to URI     SPARQL Mapping: CONSTRUCT {     ?s   diseasome:omim   ?omimuri . } WHERE {     ?s dbpedia-owl...
Construct Literals    SPARQL 1.1 offers several functions to    construct literals:   STR – returns the lexical form → pl...
Cast to another Datatypefb:en.clint_eastwood   fb:people.person.date_of_birth       “1930-05-31T00:00:00”^^xsd:dateTime .f...
Cast to another Datatype     SPARQL Mapping: CONSTRUCT {     ?s   dbpedia-owl:birthDate   ?date } WHERE {     ?s fb:people...
Transform Value N:1  Transform multiple values from different  properties to a single value. dbpedia:William_Shakespeare  ...
Transform Value N:1     SPARQL Mapping: CONSTRUCT {     ?s   foaf:name   ?name } WHERE {     ?s   foaf:givenName  ?givenNa...
Aggregation based Mapping Pattern
Aggregation  Aggregate multiple values / occurrences into  one value. fb:en.berlin_u-bahn   fb:metropolitan_transit.transi...
Aggregation     SPARQL Mapping: CONSTRUCT {     ?s   dbpedia-owl:numberOfLines   ?nrOfLines } WHERE {     { SELECT ?s (COU...
Data Cleaning
Data Cleaning  Integrating data cleaning into a mapping. fb:en.jimi_hendrix   fb:people.person.date_of_birth "1942-11-27" ...
Data Cleaning     SPARQL Mapping: Construct {     ?s dbpedia-owl:birthDate ?birthDate } Where {     ?s fb:people.person.da...
Questions?
Upcoming SlideShare
Loading in...5
×

Data translation with SPARQL 1.1

3,403

Published on

Published in: Technology

Transcript of "Data translation with SPARQL 1.1"

  1. 1. WWW 2012 TutorialSchema Mapping with SPARQL 1.1 Andreas Schultz (Freie Universität Berlin)
  2. 2. Outline Why Do We Want to Integrate Data? Schema Mapping Translating RDF Data with SPARQL 1.1 Mapping Patterns
  3. 3. Motivation Web of Data is heterogeneous Many different and overlapping ways to represent information Distribution of the most widely used vocabularies
  4. 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. 5. Naming Differences SELECT ?longTrack ?runtime { { ?longTrack mo:duration ?time } UNION { ?longTrack dbpedia-owl:runtime ?time } FILTER (?track > 300) }
  6. 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. 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. 8. Outline Motivation Schema Mapping Translating RDF Data with SPARQL 1.1 Mapping Patterns
  9. 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. 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. 11. Outline Motivation Schema Mapping Translating RDF Data with SPARQL 1.1 Mapping Patterns
  12. 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. 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. 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. 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. 16. 1. Transform Data Sets with ARQ query –query=constructQuery.qry –data=sourceDataset.nt > targetDataset.ttl # Execute more queries …
  17. 17. 2. Use Target Data Set Files in Query SELECT ?longTrack ?runtime FROM <targetDataset.ttl> FROM … WHERE { ?subj target:relevantProperty ?obj . … }
  18. 18. Outline Motivation Schema Mapping Translating RDF Data with SPARQL 1.1 Mapping Patterns
  19. 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. 20. Simple Renaming Mapping Patterns
  21. 21. Rename Class / Property Substitute the class or property URI src:inst a dbpedia-owl:MusicalArtist src:inst a mo:MusicArtist
  22. 22. Rename Class SPARQL Mapping:CONSTRUCT { ?s a mo:MusicArtist} WHERE { ?s a dbpedia-owl:MusicalArtist}
  23. 23. Rename Property SPARQL Mapping:CONSTRUCT { ?s rdfs:label ?o} WHERE { ?s freebase:type.object.name ?o}
  24. 24. Structural Mapping Patterns
  25. 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. 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. 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. 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. 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. 30. Reverse Property SPARQL Mapping: CONSTRUCT { ?s mo:member_of ?o } WHERE { ?o dbpedia-owl:currentMember ?s }
  31. 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. 32. Resourcesify SPARQL Mapping: CONSTRUCT { ?s po:version _:newversion . _:newversion po:runtime ?runtime . } WHERE { ?s dbpedia-owl:runtime ?runtime . }
  33. 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. 34. Deresourcesify SPARQL Mapping: CONSTRUCT { ?s lgdp:owner ?cityLabel . } WHERE { ?s dbpedia-owl:city ?city . ?city rdfs:label ?cityLabel . }
  35. 35. Value Transformation based Mapping Patterns
  36. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 46. Aggregation based Mapping Pattern
  47. 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. 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. 49. Data Cleaning
  50. 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. 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. 52. Questions?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×