Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

A First Course in RDF and RDFS (Resource Description Framework and Resource Description Framework Schema)

12,226 views

Published on

This tutorial was given at SemTech 2008, on May 19th.

From the program: "RDF is a key W3C specification and a foundational component of the Semantic Web. This tutorial will explain the basics of RDF and how it functions as a key building block of semantic systems.

Mark Birbeck is the managing director of webBackplane. He has been creating software for many years, and his particular interests are the semantic web, and components that help to create dynamic, flexible, user interfaces. He has consulted, given training, spoken at conferences and contributed to books and articles on these and other topics. He is also heavily involved in the creation of new standards on these themes. Mark is an Invited Expert on both the XForms Working Group and the XHTML 2 Working Group, at the W3C. Over the years his work there has included devising and proposing RDFa."

Published in: Business, Education
  • It's a shame that SlideShare doesn't use the speaker notes for the transcript; instead it just puts the text from the slide in there. If anyone is interested in this topic you might want to download the presentation, and then you'll get the detailed notes.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

A First Course in RDF and RDFS (Resource Description Framework and Resource Description Framework Schema)

  1. 1. Introduction to RDF and RDFS Mark Birbeck http://webBackplane.com/mark-birbeck
  2. 2. RDF...a four letter word
  3. 3. RDF/XML is the real villain
  4. 4. The promise of XML
  5. 5. RDF Documents <ul><li>Primer </li></ul><ul><li>Concepts </li></ul><ul><li>Syntax </li></ul><ul><li>Semantics </li></ul><ul><li>Vocabulary </li></ul><ul><li>Test cases </li></ul>
  6. 6. This tutorial <ul><li>Concepts </li></ul><ul><li>Transporting RDF </li></ul><ul><li>Storing </li></ul><ul><li>Some sources of RDF data </li></ul><ul><li>Querying </li></ul><ul><li>Defining vocabularies </li></ul>
  7. 7. Metadata: data about data
  8. 8. Getting data from the web is easy...getting metadata is hard
  9. 10. XML was supposed to give us this information
  10. 11. <ul><li><music genre=&quot;classical&quot;> </li></ul><ul><li><title> </li></ul><ul><li>The Well-tempered Clavier </li></ul><ul><li></title> </li></ul><ul><li><composer>J. S. Bach</composer> </li></ul><ul><li></music> </li></ul>
  11. 12. Why has XML not delivered?
  12. 13. <ul><li><document type=&quot;classical music&quot;> </li></ul><ul><li><name> </li></ul><ul><li>The Well-tempered Clavier </li></ul><ul><li></name> </li></ul><ul><li><author>J. S. Bach</author> </li></ul><ul><li></document> </li></ul>
  13. 14. We want to say: &quot;give me everything created by J. S. Bach&quot;
  14. 15. To achieve that we need to agree how to say ' created by ' in any document
  15. 16. Dublin, Ohio Photo by Sleestak66: http://www.flickr.com/people/kesselring/
  16. 18. DC.Creator = &quot;J. S. Bach&quot;
  17. 19. DC.Title = &quot;The Well Tempered Clavier&quot;
  18. 20. <ul><li>abstract </li></ul><ul><li>audience </li></ul><ul><li>contributor </li></ul><ul><li>creator </li></ul><ul><li>description </li></ul><ul><li>publisher </li></ul><ul><li>rightsHolder </li></ul><ul><li>...and many more </li></ul>Often called a vocabulary or taxonomy
  19. 21. <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> </li></ul><ul><li>Bach: The Well Tempered Clavier </li></ul><ul><li></title> </li></ul><ul><li><meta name=&quot; DC.Title &quot; </li></ul><ul><li>content=&quot;The Well Tempered Clavier&quot; /> </li></ul><ul><li><meta name=&quot; DC.Creator &quot; </li></ul><ul><li>content=&quot;J. S. Bach&quot; /> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li>... </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  20. 22. <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> </li></ul><ul><li>An introduction to RDF </li></ul><ul><li></title> </li></ul><ul><li><meta name=&quot; title &quot; </li></ul><ul><li>content=&quot;Introduction to RDF&quot; /> </li></ul><ul><li><meta name=&quot; author &quot; </li></ul><ul><li>content=&quot;Mark Birbeck&quot; /> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li>... </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  21. 23. <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> </li></ul><ul><li>An introduction to RDF </li></ul><ul><li></title> </li></ul><ul><li><meta name=&quot; DC.Title &quot; </li></ul><ul><li>content=&quot;Introduction to RDF&quot; /> </li></ul><ul><li><meta name=&quot; DC.Creator &quot; </li></ul><ul><li>content=&quot;Mark Birbeck&quot; /> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li>... </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  22. 24. <ul><li><music genre=&quot;classical&quot;> </li></ul><ul><li><title> </li></ul><ul><li>The Well-tempered Clavier </li></ul><ul><li></title> </li></ul><ul><li><composer>J. S. Bach</composer> </li></ul><ul><li></music> </li></ul><ul><li><document type=&quot;classical music&quot;> </li></ul><ul><li><name> </li></ul><ul><li>The Well-tempered Clavier </li></ul><ul><li></name> </li></ul><ul><li><author>J. S. Bach</author> </li></ul><ul><li></document> </li></ul>
  23. 25. <ul><li><music genre=&quot;classical&quot;> </li></ul><ul><li><title> </li></ul><ul><li>The Well-tempered Clavier </li></ul><ul><li></title> </li></ul><ul><li>< dc:creator >J. S. Bach</ dc:creator > </li></ul><ul><li></music> </li></ul><ul><li><document type=&quot;classical music&quot;> </li></ul><ul><li><name> </li></ul><ul><li>The Well-tempered Clavier </li></ul><ul><li></name> </li></ul><ul><li>< dc:creator >J. S. Bach</ dc:creator > </li></ul><ul><li></document> </li></ul>
  24. 26. Recap <ul><li>XML doesn't help </li></ul><ul><li>Having unique identifiers does </li></ul>
  25. 27. Unique identifiers are a key concept in RDF
  26. 28. DC.Creator DC.Title
  27. 29. http://purl.org/dc/terms/ creator http://purl.org/dc/terms/ title
  28. 30. Resource Description Framework
  29. 31. http://purl.org/dc/terms/ creator http://purl.org/dc/terms/ title
  30. 35. Recap <ul><li>Resources and unique identifiers are fundamental for RDF: </li></ul><ul><li>http://purl.org/dc/terms/creator http://purl.org/dc/terms/title http://dbpedia.org/resource/Johann_Sebastian_Bach http://dbpedia.org/resource/Well-Tempered_Clavier </li></ul>
  31. 36. Triples
  32. 37. <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> </li></ul><ul><li>Bach: The Well Tempered Clavier </li></ul><ul><li></title> </li></ul><ul><li><meta name=&quot; DC.Title &quot; </li></ul><ul><li>content=&quot;The Well Tempered Clavier&quot; /> </li></ul><ul><li><meta name=&quot; DC.Creator &quot; </li></ul><ul><li>content=&quot;J. S. Bach&quot; /> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li>... </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  33. 39. <ul><li>var piece = { title : &quot;The Well-tempered Clavier&quot;, creator : &quot;J. S. Bach&quot; }; </li></ul>
  34. 40. <ul><li>Triples are sometimes called statements: </li></ul><ul><li>J. S. Bach composed &quot;The Well Tempered Clavier&quot;. J. S. Bach was born on 21 st March, 1685. J. S. Bach died on 28 th July, 1750. </li></ul>
  35. 41. The parts of a triple
  36. 42. Subject A URI: http://dbpedia.org/resource/Johann_Sebastian_Bach
  37. 43. Predicate <ul><li>Also a URI: </li></ul><ul><ul><li>http://purl.org/dc/terms/creator </li></ul></ul>
  38. 44. Object <ul><li>Literal or URI: </li></ul><ul><ul><li>&quot;Johann Sebastian Bach&quot; http://dbpedia.org/resource/Well-Tempered_Clavier </li></ul></ul>
  39. 45. Plain literals <ul><li>Essentially strings: </li></ul><ul><ul><li>&quot;Johann Sebastian Bach&quot; &quot;The Well-Tempered Clavier&quot; </li></ul></ul>
  40. 46. Plain literals <ul><li>But can contain language information: </li></ul><ul><ul><li>&quot;Johann Sebastian Bach&quot;@en &quot;Бах, Иоганн Себастьян&quot;@ru &quot;The Well-Tempered Clavier&quot;@en &quot;Wohltemperiertes Klavie&quot;@de </li></ul></ul>
  41. 47. Typed literals <ul><li>And a datatype: </li></ul><ul><ul><li>&quot;1685-03-21&quot;^^xsd:date &quot;1750-07-28&quot;^^xsd:date </li></ul></ul>
  42. 48. XML literals &quot;H<sub>2</sub>O&quot;^^rdf:XMLLiteral
  43. 49. Recap <ul><li>J. S. Bach composed &quot;The Well Tempered Clavier&quot;. J. S. Bach was born on 21 st March, 1685 J. S. Bach died on 28 th July, 1750. </li></ul>
  44. 50. Recap <ul><li>J. S. Bach composed &quot;The Well Tempered Clavier&quot;. J. S. Bach was born on 21 st March, 1685 J. S. Bach died on 28 th July, 1750. </li></ul><http://dbpedia.org/resource/Johann_Sebastian_Bach> dc:creator <http://dbpedia.org/resource/Well-Tempered_Clavier> . <http://dbpedia.org/resource/Well-Tempered_Clavier> dc:title &quot;The Well Tempered Clavier&quot;@en . <http://dbpedia.org/resource/Well-Tempered_Clavier> dc:title &quot;Wohltemperiertes Klavie&quot;@de .
  45. 51. Recap <ul><li>J. S. Bach composed &quot;The Well Tempered Clavier&quot;. J. S. Bach was born on 21 st March, 1685 J. S. Bach died on 28 th July, 1750. </li></ul><http://dbpedia.org/resource/Johann_Sebastian_Bach> p:dateOfBirth &quot;1685-03-21&quot;^^xsd:date .
  46. 52. Recap <ul><li>J. S. Bach composed &quot;The Well Tempered Clavier&quot;. J. S. Bach was born on 21 st March, 1685 J. S. Bach died on 28 th July, 1750. </li></ul><http://dbpedia.org/resource/Johann_Sebastian_Bach> p:dateOfDeath &quot;1750-07-28&quot;^^xsd:date .
  47. 53. Graphs
  48. 54. The Well Tempered Clavier Wohltemperiertes Klavie dc:title dc:title 1685-03-21 1750-07-28 p:dateOfBirth p:dateOfDeath dc:creator
  49. 55. rdf:type
  50. 56. <http://dbpedia.org/resource/Johann_Sebastian_Bach> rdf:type yago:Composer . <http://dbpedia.org/resource/Johann_Sebastian_Bach> rdf:type foaf:Person .
  51. 57. Lists
  52. 58. Performed by Performed by dc:creator Performed by dc:creator rdf:Bag rdf:type
  53. 59. Blank nodes
  54. 60. Representing RDF
  55. 61. RDF/XML <rdf:RDF> <yago:Composer109947232 rdf:about=&quot;http://[...]/Johann_Sebastian_Bach&quot; > <p:birthPlace rdf:resource=&quot;http://[...]/Eisenach&quot; /> <p:dateOfDeath rdf:datatype=&quot;http://[...]/XMLSchema#date&quot; >1750-07-28</p:dateOfDeath> </yago:Composer109947232> </rdf:RDF>
  56. 62. Turtle dbpedia:Johann_Sebastian_Bach p:dateOfBirth &quot;1685-03-21&quot;^^xsd:date; p:dateOfDeath &quot;1750-07-28&quot;^^xsd:date; p:death &quot;1750-07-28&quot;^^xsd:date; p:deathPlace dbpedia:Leipzig; a yago:Composer, foaf:Person .
  57. 63. RDFa <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> </li></ul><ul><li>Johann Sebastian Bach </li></ul><ul><li></title> </li></ul><ul><li>< link rel =&quot;dc:creator&quot; </li></ul><ul><li>href =&quot;http://[...]/Well-Tempered_Clavier&quot; /> </li></ul><ul><li><meta property=&quot;p:dateOfBirth&quot; </li></ul><ul><li>content =&quot;1685-03-21&quot; datatype =&quot;xsd:date&quot; /> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li>... </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  58. 64. RDFa <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li>... </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><span property=&quot;foaf:name&quot;> </li></ul><ul><li>Johann Sebastian Bach </li></ul><ul><li></span> </li></ul><ul><li>was born in </li></ul><ul><li><span property=&quot;p:dateOfBirth&quot; </li></ul><ul><li>content=&quot;1685-03-21&quot; datatype=&quot;xsd:date&quot; </li></ul><ul><li>> 1685 </span> , </li></ul><ul><li>in <span rel=&quot;p:placeOfBirth&quot; </li></ul><ul><li>resource=&quot; [dbp:Eisenach] &quot;> Eisenach </span>. </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  59. 65. Storing RDF
  60. 66. Sources of RDF
  61. 67. Querying RDF
  62. 68. <ul><li>SELECT ?composer WHERE { ?composer rdf:type yago:Composer } </li></ul>
  63. 69. <ul><li>SELECT ?composer WHERE { ?composer rdf:type yago:Composer } </li></ul><ul><li><http://dbpedia.org/resource/Johann_Sebastian_Bach> </li></ul><ul><li><http://dbpedia.org/resource/Ludwig_van_Beethoven> </li></ul>
  64. 70. <ul><li>SELECT ?piece WHERE { dbpr: Johann_Sebastian_Bach dc:creator ?piece } </li></ul><ul><li><http://dbpedia.org/resource/Well-Tempered_Clavier> </li></ul><ul><li><http://dbpedia.org/resource/Cello_Suites_%28Bach%29> </li></ul>
  65. 71. Creating vocabularies
  66. 72. Classes
  67. 73. Composer Musician Is a type of Artist Is a type of Creator Is a type of
  68. 74. <ul><li>yago:Composer a rdfs:Class . </li></ul>
  69. 75. <ul><li>yago:Composer a rdfs:Class . </li></ul><ul><li>yago:Composer rdfs:subClassOf yago:Musician . </li></ul><ul><li>yago:Musician rdfs:subClassOf yago:Artist . </li></ul><ul><li>yago:Artist rdfs:subClassOf yago:Creator . </li></ul>
  70. 76. <ul><li>yago:Composer a rdfs:Class . </li></ul><ul><li>yago:Composer rdfs:subClassOf yago:Musician . </li></ul><ul><li>yago:Musician rdfs:subClassOf yago:Artist . </li></ul><ul><li>yago:Artist rdfs:subClassOf yago:Creator . </li></ul><ul><li>dbpedia:Johann_Sebastian_Bach a yago:Composer , foaf:Person . </li></ul>
  71. 77. <ul><li>SELECT ?composer WHERE { ?composer rdf:type yago:Composer } </li></ul><ul><li><http://dbpedia.org/resource/Johann_Sebastian_Bach> </li></ul><ul><li><http://dbpedia.org/resource/Ludwig_van_Beethoven> </li></ul>
  72. 78. <ul><li>SELECT ?s WHERE { ?s rdf:type yago:Artist } </li></ul><ul><li><http://dbpedia.org/resource/Johann_Sebastian_Bach> </li></ul><ul><li><http://dbpedia.org/resource/Ludwig_van_Beethoven> </li></ul>
  73. 79. Properties
  74. 80. <ul><li>foaf:surname a rdfs:Property . </li></ul>
  75. 81. <ul><li>foaf:surname a rdfs:Property . </li></ul><ul><li>foaf:surname rdfs:Range rdfs:Literal . </li></ul>
  76. 82. <ul><li>foaf:surname a rdfs:Property . </li></ul><ul><li>foaf:surname rdfs:Range rdfs:Literal . </li></ul><ul><li>foaf:surname rdfs:Domain foaf:Person . </li></ul>
  77. 83. Validation v. inference
  78. 84. <ul><li>foaf:surname a rdfs:Property . </li></ul><ul><li>foaf:surname rdfs:Range rdfs:Literal . </li></ul><ul><li>foaf:surname rdfs:Domain foaf:Person . </li></ul><ul><li>dbpedia:Johann_Sebastian_Bach foaf:surname &quot;Bach&quot; . </li></ul>dbpedia:Johann_Sebastian_Bach a foaf:Person .
  79. 85. <ul><li>xyz:composedBy a rdfs:Property . </li></ul><ul><li>xyz:composedBy rdfs:Range yago:Composer . </li></ul><ul><li>xyz:composedBy rdfs:Domain yago:Piece . </li></ul><ul><li>dbp:Cello_Suites_%28Bach%29 xyz:composedBy dbp:Johann_Sebastian_Bach . </li></ul>dbp:Johann_Sebastian_Bach a yago:Composer .
  80. 86. <ul><li>xyz:composedBy a rdfs:Property . </li></ul><ul><li>xyz:composedBy rdfs:Range yago:Composer . </li></ul><ul><li>xyz:composedBy rdfs:Domain yago:Piece . </li></ul><ul><li>xyz:composedBy rdfs :subPropertyOf dc:creator . </li></ul>
  81. 87. OWL
  82. 88. Conclusion
  83. 89. References <ul><li>RDF Primer: http://www.w3.org/TR/rdf-primer/ </li></ul><ul><li>RDF Schema: http://www.w3.org/TR/rdf-schema/ </li></ul><ul><li>OWL: http://www.w3.org/2004/OWL/ </li></ul>

×