An                              Introduction                                        to                               Linke...
Data modeling                 without contextMonday, May 16, 2011
Modeling without ContextMonday, May 16, 2011
Modeling without Context                   • Model the Real WorldMonday, May 16, 2011
Modeling without Context                   • Model the Real World                   • Look for objects of interestMonday, ...
Modeling without Context                   • Model the Real World                   • Look for objects of interest        ...
Modeling without Context                   • Model the Real World                   • Look for objects of interest        ...
Modeling without Context                   • Model the Real World                   • Look for objects of interest        ...
Modeling without ContextMonday, May 16, 2011
Modeling without Context                   • Look for duplication (normalise)Monday, May 16, 2011
Modeling without Context                   • Look for duplication (normalise)                   • Think about time and eve...
Modeling without Context                   • Look for duplication (normalise)                   • Think about time and eve...
Modeling without Context                   • Look for duplication (normalise)                   • Think about time and eve...
Objects of Interest                       Apollo 11 Command and   crew                                                    ...
Objects of Interest                       Apollo 11 Command and   crew                                                    ...
Objects of Interest                                                            20 January 1930                            ...
Objects of Interest                                                            20 January 1930                            ...
Apollo 11 Command and                              launchsite                                                             ...
URIs:                       Naming Things                        on the WebMonday, May 16, 2011
Naming Things on the Web                   • Use http:// URIs                        There are other URIs, but http URIs c...
Distinguishing Resources               http://example.com/1969-059A            ← Thing               http://example.com/19...
Use URIs                       http://.../topics/physics                       URIs provide names for resources           ...
Use Your Own Domain                        http://yours.com/spacecraft/1959-059A                        I own the domain, ...
Use Neutral URIs                       http://.../spacecraft/1959-059A                       The URI contains meaningful, ...
Use http:// URIs                       http://.../spacecraft/1969-059A                       everyone know what to do with...
Use Natural Keys                       http://.../spacecraft/1969-059A                       Anyone working with the origi...
Use Containers (sparingly)                          http://.../spacecraft/1969-059A                          Containers he...
Use Dates (sparingly)                        http://.../statistics/2010/agencies                        Dates provide a wa...
Distinguishing Resources               http://example.com/1969-059A.html#self   ← Thing               http://example.com/1...
Fragment Identifiers #                   • Useful, with caution                   • Fragment identifiers are not sent to the...
Turtle:                       Terse RDF Triple                          LanguageMonday, May 16, 2011
Turtle                   • Terse Triple Language (TTL)                       http://www.w3.org/2007/02/turtle/primer/     ...
http://...   a       http://...                       /1969-059A           /Spacecraft           <http://.../1969-059A> a ...
Monday, May 16, 2011
http://...              /1969-059A                             <http://example.com/spacecraft/1969-059A>Monday, May 16, 2011
http://...              /1969-059A                                            <http://example.com/spacecraft/1969-059A>   ...
http://...              /1969-059A                     name                             Apollo 11 Command and Service Modu...
http://...              /1969-059A                     name                             Apollo 11 Command and Service Modu...
http://...              /1969-059A                     name                             Apollo 11 Command and Service Modu...
http://...              /1969-059A                     name                             Apollo 11 Command and Service Modu...
Example Turtle    @prefix space: <http://example.com/space-schema/> .    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> ...
http://...              /1969-059A                     name                             Apollo 11 Command and Service Modu...
http://...                                  launchsite                 http://...              /1969-059A                 ...
http://...                                  launchsite                 http://...              /1969-059A                 ...
http://...                                  launchsite                 http://...              /1969-059A                 ...
Example Turtle    @prefix space: <http://example.com/space-schema/> .    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> ...
RDF/XMLMonday, May 16, 2011
Example Turtle    @prefix space: <http://example.com/space-schema/> .    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> ...
http://...   a           http://...                       /1969-059A               /Spacecraft      <?xml version="1.0" en...
http://...                                  launchsite      http://...              /1969-059A                            ...
Example RDF/XML    <?xml version="1.0"?>    <rdf:RDF      xmlns:space="http://example.com/space-schema/"      xmlns:xsd="h...
Example RDF/XML    <?xml version="1.0"?>    <rdf:RDF      xmlns:space="http://example.com/space-schema/"      xmlns:xsd="h...
Example RDF/XML    <?xml version="1.0"?>    <rdf:RDF      xmlns:space="http://example.com/space-schema/"      xmlns:xsd="h...
Example RDF/XML    <?xml version="1.0"?>    <rdf:RDF      xmlns:space="http://example.com/space-schema/"      xmlns:xsd="h...
Example RDF/XML    <?xml version="1.0"?>    <rdf:RDF      xmlns:space="http://example.com/space-schema/"      xmlns:xsd="h...
Other RDF FormatsMonday, May 16, 2011
Writing RDF                   • Turtle                       Easily human readable, to become a W3C Recommendation        ...
Example Turtle    @prefix space: <http://example.com/space-schema/> .    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> ...
Example N-Triples    <http://example.com/spacecraft/1969-059A> <http://    www.w3.org/1999/02/22-rdf-syntax-ns#type> <http...
Example N-Triples    <http://example.com/spacecraft/1969-059A> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://e...
Example RDF/JSON    {        "http://example.com/spacecraft/1969-059A" : {           "http://example.com/space-schema/laun...
RDF SchemaMonday, May 16, 2011
Who has written a                   schema before?Monday, May 16, 2011
Step 1.                       Forget what you                       think you know                        about schemaMond...
Differences                   • In a relational database:                    • the schema is external to the data         ...
The Open World                   • RDF Schema follow the Open World                       assumption                   • T...
If RDF Schema                        arent for                    validation, then                   what are they for?Mon...
RDF Validation                   • The Web of Data is about modeling for                       re-use                   • ...
RDF Schema                   • RDF Schema are descriptive                   • They add additional information to the      ...
Important                   • Properties are first class citizens                       theyre not hung off classes        ...
launchsite                http://...                                                  http://...              /1969-059A  ...
launchsite                http://...                                                  http://...              /1969-059A  ...
Schema Re-use                   • RDF & RDFS                       rdfs:label — labels for UI use                   • Dubl...
Schema Re-use               Property               Schema               name (on Spacecraft)               launched       ...
FOAFMonday, May 16, 2011
Schema Re-use               Property               Schema               name (on Spacecraft)   foaf:name               lau...
RDF Schema       @prefix         owl:    <http://www.w3.org/2002/07/owl#> .       @prefix         rdf:    <http://www.w3.o...
launchsite                http://...                                                  http://...              /1969-059A  ...
launchsite                http://...                                                  http://...              /1969-059A  ...
RDF Schema     @prefix           owl:    <http://www.w3.org/2002/07/owl#> .     @prefix           rdf:    <http://www.w3.o...
Typing with Ranges and Domains                   • Properties can add class information to                       the subje...
A Launch Site is                       any place where                        something was                          launc...
RDF Schema     @prefix           owl:    <http://www.w3.org/2002/07/owl#> .     @prefix           rdf:    <http://www.w3.o...
http://...                  launchsite      http://...              /1969-059A                                 /cape+cana....
http://...                    launchsite      http://...              /1969-059A                                   /cape+c...
http://...                    launchsite        http://...              /1969-059A                                     /ca...
http://...                    launchsite        http://...              /1969-059A                                     /ca...
Property and Class Hierarchies                   • Properties and classes can be more                        specialised v...
LODEMonday, May 16, 2011
RDF Schema      @prefix          lode:   <http://linkedevents.org/ontology/> .      @prefix          owl:    <http://www.w...
http://...                    launchsite        http://...              /1969-059A                                     /ca...
http://...                    launchsite            http://...              /1969-059A                                    ...
atPlace                http://...                    launchsite            http://...              /1969-059A             ...
Naming Convention                   • Properties are generally in camel-case                       name; launchDate; launc...
Thanks to               • Rob Styles, Talis Group Ltd for his CC-BY                 licensed “Two Day Introduction to the ...
This work is Copyright © 2010 David Hyland-Wood                       Based partially on CC-BY licensed content Copyright ...
Upcoming SlideShare
Loading in...5
×

Intro to Linked Data: Data Modeling

1,934

Published on

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,934
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
381
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Intro to Linked Data: Data Modeling

  1. 1. An Introduction to Linked Data Part 2 of 5 David Hyland-Wood Data Modeling University of Mary WashingtonMonday, May 16, 2011
  2. 2. Data modeling without contextMonday, May 16, 2011
  3. 3. Modeling without ContextMonday, May 16, 2011
  4. 4. Modeling without Context • Model the Real WorldMonday, May 16, 2011
  5. 5. Modeling without Context • Model the Real World • Look for objects of interestMonday, May 16, 2011
  6. 6. Modeling without Context • Model the Real World • Look for objects of interest • Put aside the immediate needs of any applicationMonday, May 16, 2011
  7. 7. Modeling without Context • Model the Real World • Look for objects of interest • Put aside the immediate needs of any application • Investigate how others are already modeling similar or related dataMonday, May 16, 2011
  8. 8. Modeling without Context • Model the Real World • Look for objects of interest • Put aside the immediate needs of any application • Investigate how others are already modeling similar or related data • These techniques allow for re-use and mergingMonday, May 16, 2011
  9. 9. Modeling without ContextMonday, May 16, 2011
  10. 10. Modeling without Context • Look for duplication (normalise)Monday, May 16, 2011
  11. 11. Modeling without Context • Look for duplication (normalise) • Think about time and events, as well as thingsMonday, May 16, 2011
  12. 12. Modeling without Context • Look for duplication (normalise) • Think about time and events, as well as things • Consider how the data will change over timeMonday, May 16, 2011
  13. 13. Modeling without Context • Look for duplication (normalise) • Think about time and events, as well as things • Consider how the data will change over time • Separate real-world (non-information resources) and online (information resources)Monday, May 16, 2011
  14. 14. Objects of Interest Apollo 11 Command and crew Buzz Aldrin Service ModuleMonday, May 16, 2011
  15. 15. Objects of Interest Apollo 11 Command and crew Buzz Buzz Aldrin Aldrin Service ModuleMonday, May 16, 2011
  16. 16. Objects of Interest 20 January 1930 Person born a Apollo 11 Command and crew Buzz Buzz Aldrin Aldrin Service ModuleMonday, May 16, 2011
  17. 17. Objects of Interest 20 January 1930 Person born a Apollo 11 Command and crew Buzz Aldrin Service Module name Buzz AldrinMonday, May 16, 2011
  18. 18. Apollo 11 Command and launchsite Cape Canaveral Service Module name name Apollo 11 Command and Service Module Cape Canaveral, United States launched 16 July 1969 mass 28801.0 a SpacecraftMonday, May 16, 2011
  19. 19. URIs: Naming Things on the WebMonday, May 16, 2011
  20. 20. Naming Things on the Web • Use http:// URIs There are other URIs, but http URIs can be used to get more information quickly and easily • Use clean, stable URIs Abstract away implementation details Ensure they are reliable • There are two types of resource, both require URIs Information Resources — Web pages, images, CSS files etc. Non-Information Resources — People, places, events, concepts etc.Monday, May 16, 2011
  21. 21. Distinguishing Resources http://example.com/1969-059A ← Thing http://example.com/1969-059A.rdf ← RDF data http://example.com/1969-059A.html ← HTML page http://example.com/1969-059A ← Thing http://example.com/1969-059A/rdf ← RDF data http://example.com/1969-059A/html ← HTML page http://example.com/resource/1969-059A ← Thing http://example.com/data/1969-059A ← RDF data http://example.com/page/1969-059A ← HTML pageMonday, May 16, 2011
  22. 22. Use URIs http://.../topics/physics URIs provide names for resources You can say things about resources "Physics" Literal values are displayable labels You cant say more things about "Physics"Monday, May 16, 2011
  23. 23. Use Your Own Domain http://yours.com/spacecraft/1959-059A I own the domain, so I can control the meaning of the URI I can also commit to its permanence and provide data at this address http://theirs.com/spacecraft/1959-059A I dont own this domain, so I cant put any data there The domain owner may choose to use this URI to mean something different to meMonday, May 16, 2011
  24. 24. Use Neutral URIs http://.../spacecraft/1959-059A The URI contains meaningful, natural or system-neutral keys. I can route these URIs to any implementation, meaning they can live forever Bonus: Im not advertising my technology choices http://.../index.aspx?id=3 Nobody wants to know that youre using ASP.Net, really How will you keep URIs the same when you change or upgrade your technology?Monday, May 16, 2011
  25. 25. Use http:// URIs http://.../spacecraft/1969-059A everyone know what to do with http:// URIs http:// URIs provide a quick, easy and scalable lookup mechanism info:space/1969-059A http://info-uri.info info URIs require specialised knowledge info URIs provide no lookup mechanismMonday, May 16, 2011
  26. 26. Use Natural Keys http://.../spacecraft/1969-059A Anyone working with the original data can guess your URIs You can visually debug, and remember, your own URIs http://.../809c6e Nobody can guess thisMonday, May 16, 2011
  27. 27. Use Containers (sparingly) http://.../spacecraft/1969-059A Containers help keep natural keys separate Containers provide a natural place to put lists http://.../1969-059A What URI do I put a list of all the spacecraft at now?Monday, May 16, 2011
  28. 28. Use Dates (sparingly) http://.../statistics/2010/agencies Dates provide a way to show data from a period in time Most useful for things like statistics, samples or readings http://.../statistics/agencies Where am I going to put next years statistics?Monday, May 16, 2011
  29. 29. Distinguishing Resources http://example.com/1969-059A.html#self ← Thing http://example.com/1969-059A.html ← HTML pageMonday, May 16, 2011
  30. 30. Fragment Identifiers # • Useful, with caution • Fragment identifiers are not sent to the server • Limits server-side decision making • Limits granularity of the response • Sometimes used with schema when terms link to human-readable documentation on the Web.Monday, May 16, 2011
  31. 31. Turtle: Terse RDF Triple LanguageMonday, May 16, 2011
  32. 32. Turtle • Terse Triple Language (TTL) http://www.w3.org/2007/02/turtle/primer/ • A human-readable notation for RDF • Provides useful syntax for quickly hand-writing RDF • Forms the basis of patterns in SPARQLMonday, May 16, 2011
  33. 33. http://... a http://... /1969-059A /Spacecraft <http://.../1969-059A> a <http://.../Spacecraft> .Monday, May 16, 2011
  34. 34. Monday, May 16, 2011
  35. 35. http://... /1969-059A <http://example.com/spacecraft/1969-059A>Monday, May 16, 2011
  36. 36. http://... /1969-059A <http://example.com/spacecraft/1969-059A> a space:Spacecraft ; a http://... /SpacecraftMonday, May 16, 2011
  37. 37. http://... /1969-059A name Apollo 11 Command and Service Module <http://example.com/spacecraft/1969-059A> a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; a http://... /SpacecraftMonday, May 16, 2011
  38. 38. http://... /1969-059A name Apollo 11 Command and Service Module launched 16 July 1969 <http://example.com/spacecraft/1969-059A> a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; a http://... /SpacecraftMonday, May 16, 2011
  39. 39. http://... /1969-059A name Apollo 11 Command and Service Module launched 16 July 1969 <http://example.com/spacecraft/1969-059A> mass 28801.0 a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 . a http://... /SpacecraftMonday, May 16, 2011
  40. 40. http://... /1969-059A name Apollo 11 Command and Service Module launched @prefix space: <http://example.com/space-schema/> . 16 July 1969 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> mass 28801.0 a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 . a http://... /SpacecraftMonday, May 16, 2011
  41. 41. Example Turtle @prefix space: <http://example.com/space-schema/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 .Monday, May 16, 2011
  42. 42. http://... /1969-059A name Apollo 11 Command and Service Module launched @prefix space: <http://example.com/space-schema/> . 16 July 1969 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> mass 28801.0 a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 . a http://... /SpacecraftMonday, May 16, 2011
  43. 43. http://... launchsite http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched @prefix space: <http://example.com/space-schema/> . 16 July 1969 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> mass 28801.0 a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 . a http://... /SpacecraftMonday, May 16, 2011
  44. 44. http://... launchsite http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched @prefix space: <http://example.com/space-schema/> . 16 July 1969 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> mass 28801.0 a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 . ; a http://... space:launchsite <http://.../cape+cana...> . /SpacecraftMonday, May 16, 2011
  45. 45. http://... launchsite http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched @prefix space: <http://example.com/space-schema/> . 16 July 1969 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> mass 28801.0 a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 . ; a http://... space:launchsite <http://.../cape+cana...> . /Spacecraft <http://.../cape+cana...> space:name "Cape Canaveral, United States"@en-us .Monday, May 16, 2011
  46. 46. Example Turtle @prefix space: <http://example.com/space-schema/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 ; space:launchsite <http://.../cape+cana...> . <http://.../cape+cana...> space:name "Cape Canaveral, United States"@en-us .Monday, May 16, 2011
  47. 47. RDF/XMLMonday, May 16, 2011
  48. 48. Example Turtle @prefix space: <http://example.com/space-schema/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 ; space:launchsite <http://.../cape+cana...> . <http://.../cape+cana...> space:name "Cape Canaveral, United States"@en-us .Monday, May 16, 2011
  49. 49. http://... a http://... /1969-059A /Spacecraft <?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://.../1969-059A"> <rdf:type rdf:resource="http://.../Spacecraft"/> </rdf:Description> </rdf:RDF>Monday, May 16, 2011
  50. 50. http://... launchsite http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched 16 July 1969 mass 28801.0 a http://... /SpacecraftMonday, May 16, 2011
  51. 51. Example RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:space="http://example.com/space-schema/" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://example.com/spacecraft/1969-059A"> <rdf:type rdf:resource="http://example.com/space-schema/Spacecraft"> <space:name> Apollo 11 Command and Service Module </space:name> <space:launched rdf:datatype="http://www.w3.org/2001/XMLSchema#date"> 1969-07-16 </space:launched> <space:mass rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"> 28801 </space:mass> <space:launchsite rdf:resource="http://.../cape+cana..." /> </rdf:Description> <rdf:Description rdf:about="http://.../cape+cana..."> <space:name xml:lang="en-us"> Cape Canaveral, United States </space:name> </rdf:Description> </rdf:RDF>Monday, May 16, 2011
  52. 52. Example RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:space="http://example.com/space-schema/" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://example.com/spacecraft/1969-059A"> subject . <rdf:type property . rdf:resource="http://example.com/space-schema/Spacecraft"> value . <space:name> property . Apollo 11 Command and Service Module value . </space:name> <space:launched rdf:datatype="http://www.w3.org/2001/XMLSchema#date"> property . 1969-07-16 value . </space:launched> <space:mass rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"> property . 28801 value . </space:mass> <space:launchsite property . rdf:resource="http://.../cape+cana..." /> value . </rdf:Description> <rdf:Description rdf:about="http://.../cape+cana..."> subject . <space:name xml:lang="en-us"> property . Cape Canaveral, United States value . </space:name> </rdf:Description> </rdf:RDF>Monday, May 16, 2011
  53. 53. Example RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:space="http://example.com/space-schema/" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://example.com/spacecraft/1969-059A"> <rdf:type rdf:resource="http://example.com/space-schema/Spacecraft"> <space:name> Apollo 11 Command and Service Module </space:name> <space:launched rdf:datatype="http://www.w3.org/2001/XMLSchema#date"> 1969-07-16 </space:launched> <space:mass rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"> 28801 </space:mass> <space:launchsite rdf:resource="http://.../cape+cana..." /> </rdf:Description> <rdf:Description rdf:about="http://.../cape+cana..."> <space:name xml:lang="en-us"> Cape Canaveral, United States </space:name> </rdf:Description> </rdf:RDF>Monday, May 16, 2011
  54. 54. Example RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:space="http://example.com/space-schema/" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <space:Spacecraft rdf:about="http://example.com/spacecraft/1969-059A"> <rdf:type rdf:resource="http://example.com/space-schema/Spacecraft"> <space:name> Apollo 11 Command and Service Module </space:name> <space:launched rdf:datatype="http://www.w3.org/2001/XMLSchema#date"> 1969-07-16 </space:launched> <space:mass rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"> 28801 </space:mass> <space:launchsite rdf:resource="http://.../cape+cana..." /> </space:Spacecraft> <rdf:Description rdf:about="http://.../cape+cana..."> <space:name xml:lang="en-us"> Cape Canaveral, United States </space:name> </rdf:Description> </rdf:RDF>Monday, May 16, 2011
  55. 55. Example RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:space="http://example.com/space-schema/" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <space:Spacecraft rdf:about="http://example.com/spacecraft/1969-059A"> <space:name> Apollo 11 Command and Service Module </space:name> <space:launched rdf:datatype="http://www.w3.org/2001/XMLSchema#date"> 1969-07-16 </space:launched> <space:mass rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"> 28801 </space:mass> <space:launchsite> <rdf:Description rdf:about="http://.../cape+cana..."> <space:name xml:lang="en-us"> Cape Canaveral, United States </space:name> </rdf:Description> </space:launchsite> </space:Spacecraft> </rdf:RDF>Monday, May 16, 2011
  56. 56. Other RDF FormatsMonday, May 16, 2011
  57. 57. Writing RDF • Turtle Easily human readable, to become a W3C Recommendation (standard) • RDF/XML Machine to Machine Transfer, W3C Recommendation (standard) • N-Triples One statement per line, subset of Turtle, grep compatible • RDF/JSON Useful for AJAX Applications and anything with else JSON support • RDFa Writing RDF within HTML pagesMonday, May 16, 2011
  58. 58. Example Turtle @prefix space: <http://example.com/space-schema/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://example.com/spacecraft/1969-059A> a space:Spacecraft ; space:name "Apollo 11 Command and Service Module" ; space:launched "1969-07-16"^^xsd:date ; space:mass 28801.0 ; space:launchsite <http://.../cape+cana...> . <http://.../cape+cana...> space:name "Cape Canaveral, United States"@en-us .Monday, May 16, 2011
  59. 59. Example N-Triples <http://example.com/spacecraft/1969-059A> <http:// www.w3.org/1999/02/22-rdf-syntax-ns#type> <http:// example.com/space-schema/Spacecraft> . <http://example.com/spacecraft/1969-059A> <http:// example.com/space-schema/name> "Apollo 11 Command and Service Module" . <http://example.com/spacecraft/1969-059A> <http:// example.com/space-schema/launched> "1969-07-16"^^<http://www.w3.org/2001/XMLSchema#date> . <http://example.com/spacecraft/1969-059A> <http:// example.com/space-schema/mass> "28801"^^<http:// www.w3.org/2001/XMLSchema#integer> . <http://example.com/spacecraft/1969-059A> <http:// example.com/space-schema/launchsite> <http://.../cape +cana...> . <http://.../cape+cana...> <http://example.com/space- schema/name> "Cape Canaveral, United States"@en-us .Monday, May 16, 2011
  60. 60. Example N-Triples <http://example.com/spacecraft/1969-059A> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/space-schema/Spacecraft> . <http://example.com/spacecraft/1969-059A> <http://example.com/space-schema/name> "Apollo 11 Command and Service Module" . <http://example.com/spacecraft/1969-059A> <http://example.com/space-schema/launched> "1969-07-16"^^<http://www.w3.org/2001/XMLSchema#date> . <http://example.com/spacecraft/1969-059A> <http://example.com/space-schema/mass> "28801"^^<http://www.w3.org/2001/XMLSchema#integer> . <http://example.com/spacecraft/1969-059A> <http://example.com/space-schema/launchsite> <http://.../cape+cana...> . <http://.../cape+cana...> <http://example.com/space-schema/name> "Cape Canaveral, United States"@en-us .Monday, May 16, 2011
  61. 61. Example RDF/JSON { "http://example.com/spacecraft/1969-059A" : { "http://example.com/space-schema/launched" : [ { "value" : "1969-07-16", "datatype" : "http://www.w3.org/2001/XMLSchema#date", "type" : "literal" } ], "http://example.com/space-schema/launchsite" : [ { "value" : "http://.../cape+cana...", "type" : "uri" } ], "http://example.com/space-schema/mass" : [ { "value" : "28801", "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal" } ], "http://example.com/space-schema/name" : [ { "value" : "Apollo 11 Command and Service Module", "type" : "literal" } ], "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ { "value" : "http://example.com/space-schema/Spacecraft", "type" : "uri" } ] }, "http://.../cape+cana..." : { "http://example.com/space-schema/name" : [ { "value" : "Cape Canaveral, United States", "lang" : "en-us", "type" : "literal" } ] } }Monday, May 16, 2011
  62. 62. RDF SchemaMonday, May 16, 2011
  63. 63. Who has written a schema before?Monday, May 16, 2011
  64. 64. Step 1. Forget what you think you know about schemaMonday, May 16, 2011
  65. 65. Differences • In a relational database: • the schema is external to the data • the schema comes first • you must know the schema to query • In RDF: • the schema is in the data • you may query at any timeMonday, May 16, 2011
  66. 66. The Open World • RDF Schema follow the Open World assumption • This model assumes that you may not have all of the information — that more things may be said elsewhere • This means that missing isnt necessarily broken • RDF Schema are not used for validationMonday, May 16, 2011
  67. 67. If RDF Schema arent for validation, then what are they for?Monday, May 16, 2011
  68. 68. RDF Validation • The Web of Data is about modeling for re-use • Reusability is provided by modeling outside of any one applications context • Validation is specific to an applications contextMonday, May 16, 2011
  69. 69. RDF Schema • RDF Schema are descriptive • They add additional information to the graph, through inference • They add labels to properties and classes that make dynamic interfaces possible • They provide human-readable descriptions to support schema re-use • RDF Schema are written as RDFMonday, May 16, 2011
  70. 70. Important • Properties are first class citizens theyre not hung off classes • Classes are not OO classes they do not have any behavior (methods) or properties...Monday, May 16, 2011
  71. 71. launchsite http://... http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched 16 July 1969 mass 28801.0 a http://... /SpacecraftMonday, May 16, 2011
  72. 72. launchsite http://... http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched 16 July 1969 mass 28801.0 a http://... /SpacecraftMonday, May 16, 2011
  73. 73. Schema Re-use • RDF & RDFS rdfs:label — labels for UI use • Dublin Core Bibliographic Metadata — title, creator • FOAF Friend of a Friend — people, organisations, creations, topics • SIOC Online communities — users, accounts, forums, blogs, microblogs • Geo Geographical locations — latitude, longitude • SKOS Existing taxonomies, thesauri and classification schemesMonday, May 16, 2011
  74. 74. Schema Re-use Property Schema name (on Spacecraft) launched mass launchsite name (on Launchsite)Monday, May 16, 2011
  75. 75. FOAFMonday, May 16, 2011
  76. 76. Schema Re-use Property Schema name (on Spacecraft) foaf:name launched space:launched mass space:mass launchsite space:launchsite name (on Launchsite) foaf:nameMonday, May 16, 2011
  77. 77. RDF Schema @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix space: <http://example.com/space-schema/> . space:launchsite a rdf:Property ; rdfs:label "Launch Site"@en ; rdfs:description "The site from which something was launched, examples would be the launch site of a spacecraft, rocket or ship"@en ; rdfs:isDefinedBy space: . space:mass a rdf:Property ; rdfs:label "Mass"@en ; rdfs:description "The mass of an object, measured in Kg" ; rdfs:isDefinedBy space: .Monday, May 16, 2011
  78. 78. launchsite http://... http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched 16 July 1969 mass 28801.0 a http://... /SpacecraftMonday, May 16, 2011
  79. 79. launchsite http://... http://... /1969-059A /cape+cana... name name Apollo 11 Command and Service Module Cape Canaveral, United States launched 16 July 1969 mass 28801.0 a http://... /SpacecraftMonday, May 16, 2011
  80. 80. RDF Schema @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix space: <http://example.com/space-schema/> . space:launchsite a rdf:Property ; rdfs:label "Launch Site"@en ; rdfs:description "The site from which something was launched, examples would be the launch site of a spacecraft, rocket or ship"@en ; rdfs:isDefinedBy space: . space:mass a rdf:Property ; rdfs:label "Mass"@en ; rdfs:description "The mass of an object, measured in Kg" ; rdfs:isDefinedBy space: . space:Spacecraft a rdfs:Class ; rdfs:label "Spacecraft"@en ; rdfs:description "A Spacecraft is any man-made object intentionally launched into space" ; rdfs:isDefinedBy space: .Monday, May 16, 2011
  81. 81. Typing with Ranges and Domains • Properties can add class information to the subject and value either side of them • A domain adds type information to the subject • A range adds type information to the value • Domains and ranges add type information from the schema to the instance dataMonday, May 16, 2011
  82. 82. A Launch Site is any place where something was launchedMonday, May 16, 2011
  83. 83. RDF Schema @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix space: <http://example.com/space-schema/> . space:launchsite a rdf:Property ; rdfs:label "Launch Site"@en ; rdfs:description "The site from which something was launched, examples would be the launch site of a spacecraft, rocket or ship"@en ; rdfs:range space:Launchsite ; rdfs:isDefinedBy space: . space:mass a rdf:Property ; rdfs:label "Mass"@en ; rdfs:description "The mass of an object, measured in Kg" ; rdfs:isDefinedBy space: . space:Spacecraft a rdfs:Class ; rdfs:label "Spacecraft"@en ; rdfs:description "A Spacecraft is any man-made object intentionally launched into space" ; rdfs:isDefinedBy space: .Monday, May 16, 2011
  84. 84. http://... launchsite http://... /1969-059A /cape+cana... name Cape Canaveral, United States a http://... /SpacecraftMonday, May 16, 2011
  85. 85. http://... launchsite http://... /1969-059A /cape+cana... Each property name is a Cape Canaveral, United States resource http://... /launchsite a http://... /SpacecraftMonday, May 16, 2011
  86. 86. http://... launchsite http://... /1969-059A /cape+cana... Each property name is a Cape Canaveral, United States resource http://... http://... /launchsite /Launchsite range a http://... /SpacecraftMonday, May 16, 2011
  87. 87. http://... launchsite http://... /1969-059A /cape+cana... Each property name is a Cape Canaveral, United States resource http://... a http://... /launchsite /Launchsite range a http://... /SpacecraftMonday, May 16, 2011
  88. 88. Property and Class Hierarchies • Properties and classes can be more specialised versions of others • This is done through rdfs:subPropertyOf and rdfs:subClassOfMonday, May 16, 2011
  89. 89. LODEMonday, May 16, 2011
  90. 90. RDF Schema @prefix lode: <http://linkedevents.org/ontology/> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix space: <http://example.com/space-schema/> . space:launchsite a rdf:Property ; rdfs:label "Launch Site"@en ; rdfs:description "The site from which something was launched, examples would be the launch site of a spacecraft, rocket or ship"@en ; rdfs:range space:Launchsite ; rdfs:subPropertyOf lode:atPlace ; rdfs:isDefinedBy space: . space:mass a rdf:Property ; rdfs:label "Mass"@en ; rdfs:description "The mass of an object, measured in Kg" ; rdfs:isDefinedBy space: . space:Spacecraft a rdfs:Class ; rdfs:label "Spacecraft"@en ; rdfs:description "A Spacecraft is any man-made object intentionally launched into space" ; rdfs:isDefinedBy space: .Monday, May 16, 2011
  91. 91. http://... launchsite http://... /1969-059A /cape+cana... name Cape Canaveral, United States http://... a http://... /launchsite /Launchsite range a http://... /SpacecraftMonday, May 16, 2011
  92. 92. http://... launchsite http://... /1969-059A /cape+cana... name Cape Canaveral, United States http://... a http://... /launchsite /Launchsite range a http://... subPropertyOf http://... /Spacecraft /atPlaceMonday, May 16, 2011
  93. 93. atPlace http://... launchsite http://... /1969-059A /cape+cana... Each property name is a Cape Canaveral, United States resource http://... a http://... /launchsite /Launchsite range a http://... subPropertyOf http://... /Spacecraft /atPlaceMonday, May 16, 2011
  94. 94. Naming Convention • Properties are generally in camel-case name; launchDate; launchVehicle; crewMember • RDF Class names are usually in title case Person; Spacecraft; Discipline • Properties use the simplest name they can launch; time; destination • Inverse properties often use of name & nameOf; crewMember & crewMemberOfMonday, May 16, 2011
  95. 95. Thanks to • Rob Styles, Talis Group Ltd for his CC-BY licensed “Two Day Introduction to the Web of Data” slides and spacecraft example data.Monday, May 16, 2011
  96. 96. This work is Copyright © 2010 David Hyland-Wood Based partially on CC-BY licensed content Copyright © 2010 Talis Systems Limited by Rob Styles. It is licensed under the Creative Commons Attribution 3.0 Unported License. Full details at: http://creativecommons.org/licenses/by/3.0/ You are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). • For any reuse or distribution, you must make clear to others the license terms of this work. • Any of the above conditions can be waived if you get permission from the copyright holder. • Nothing in this license impairs or restricts the authors moral rights. • Some Content in the work may be licensed under different terms, this is noted separately.Monday, May 16, 2011
  1. A particular slide catching your eye?

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

×