Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 87 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Ähnlich wie RDFa Tutorial (20)

Anzeige

Weitere von Ivan Herman (20)

Aktuellste (20)

Anzeige

RDFa Tutorial

  1. 1. ISWC 2010, Shanghai, 8th November, 2010 Ivan Herman (郝易文), W3C
  2. 2. (2)  For RDF people, it sounds very simple: ◦ RDFa is a serialization of RDF embedded in XHTML, HTML, or XML in general
  3. 3. (3)
  4. 4. (4)
  5. 5. (5)  Apart from relational databases, most of the data on the Web are in… (X)HTML content  New content is generated every day  How would one get structured data from that information?
  6. 6. (6)  Do not generate RDF/XML files separately ◦ RDF/XML is complex ◦ it requires a separate storage, generation, etc mechanism  that is also valid for, e.g., Turtle  even when authoring with, say, Emacs, creating an extra file is a load
  7. 7. (7)  Add extra structured content to the (X)HTML pages  Let processors extract those and turn into RDF
  8. 8. (8)  Microformats ◦ reuses HTML attributes like @class, @title ◦ separate vocabularies (address, CV, …) ◦ difficult to mix microformats (no concept of namespaces) ◦ possible to transform via, e.g., XSLT + GRDDL, but all transformations are vocabulary dependent
  9. 9. (9)  Microdata ◦ adds new attributes to HTML5 to express metadata ◦ can use URI-s, it also fixes some vocabulary mappings (e.g., to Dublin Core elements) ◦ works for simpler usages, not well suited for complex vocabularies ◦ has no notion of datatypes, namespaces ◦ but generic processing becomes possible to generate RDF
  10. 10. (10)  RDFa ◦ adds new (X)HTML/XML attributes ◦ has namespaces and URIs at its core; i.e., mixing vocabulary is just as easy as in RDF ◦ complete flexibility for using Literals or URI Resources ◦ is a complete serialization of RDF ◦ generic processing becomes possible to generate RDF
  11. 11. (11)
  12. 12. (12)  It is very important for RDF experts to ◦ know RDFa ◦ parse it alongside Turtle, RDF/XML or other ◦ when appropriate, generate RDFa pages
  13. 13. (13)
  14. 14. (14)  RDFa means “RDF in attributes”. Ie: ◦ all RDF contents are defined through XML attributes (no elements) ◦ the XML/HTML tree structure is used ◦ many of the attributes are defined by RDFa  some attributes (@href, @rel) are also reused ◦ if possible, the text content is also reused (for literals) as well as @href values
  15. 15. (15)  The same (X)HTML file: ◦ is used, unchanged, by browsers  they ignore attributes they do not know ◦ can be used by specialized processors (or APIs) to extract RDF triples
  16. 16. (16)  The current Recommendation is RDFa 1.0  There is an RDFa1.1 in the making, almost ready  I will talk about RDFa1.1 and warn when the feature is not available in RDFa1.0
  17. 17. (17)  Formally: ◦ RDFa WG defines Core and XHTML ◦ HTML WG defines HTML5  this tutorial uses XHTML examples XHTML +RDFa HTML5 +RDFa SVG 1.2 …ODF RDFa Core 1.1 (valid for any XML)
  18. 18. (18)  A browser usually asks for an HTML content:
  19. 19. (19)  Via content negotiations this goes to:
  20. 20. (20)  Via content negotiations this goes to:
  21. 21. (21)  But a client could ask for, say, Turtle:
  22. 22. (22)  The triples are embedded in the HTML file ◦ a client may know how to extract RDF triples directly from that file; or ◦ an online “distiller” service is used; or ◦ the server is set up to generate the Turtle file automatically
  23. 23. (23)
  24. 24. (24) RewriteEngine On RewriteBase /ns/entailment/data/ RewriteRule RDFS.ttl /2007/08/pyRdfa/extract?format=turtle& uri=http://www.w3.org/ns/entailment/data/RDFS.html [L]
  25. 25. (25)
  26. 26. (26)
  27. 27. (27)
  28. 28. (28) <p about="http://www.w3.org/ns/entailment/RDFS" property="http://purl.org/dc/terms/description"> Unique identifier for <em>RDFS Entailment</em>.</p>
  29. 29. (29) <p about="http://www.w3.org/ns/entailment/RDFS" property="http://purl.org/dc/terms/description"> Unique identifier for <em>RDFS Entailment</em>.</p> <http://www.w3.org/ns/entailment/RDFS> … .
  30. 30. (30) <p about="http://www.w3.org/ns/entailment/RDFS" property="http://purl.org/dc/terms/description"> Unique identifier for <em>RDFS Entailment</em>.</p> <http://www.w3.org/ns/entailment/RDFS> <http://purl.org/dc/terms/description> … .
  31. 31. (31) <p about="http://www.w3.org/ns/entailment/RDFS" property="http://purl.org/dc/terms/description"> Unique identifier for <em>RDFS Entailment</em>.</p> <http://www.w3.org/ns/entailment/RDFS> <http://purl.org/dc/terms/description> "Unique identifier for RDFS Entailment." .
  32. 32. (32)
  33. 33. (33) <a about="http://www.w3.org/ns/entailment/RDFS" rel="http://www.w3.org/2000/01/rdf-schema#seeAlso" href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/"> RDF Semantics. </a>
  34. 34. (34) <a about="http://www.w3.org/ns/entailment/RDFS" rel="http://www.w3.org/2000/01/rdf-schema#seeAlso" href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/"> RDF Semantics. </a> <http://www.w3.org/ns/entailment/RDFS> ….
  35. 35. (35) <a about="http://www.w3.org/ns/entailment/RDFS" rel="http://www.w3.org/2000/01/rdf-schema#seeAlso" href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/"> RDF Semantics. </a> <http://www.w3.org/ns/entailment/RDFS> <http://www.w3.org/2000/01/rdf-schema#seeAlso> … .
  36. 36. (36) <a about="http://www.w3.org/ns/entailment/RDFS" rel="http://www.w3.org/2000/01/rdf-schema#seeAlso" href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/"> RDF Semantics. </a> <http://www.w3.org/ns/entailment/RDFS> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/TR/2004/REC-rdf-mt-20040210/> .
  37. 37. (37)
  38. 38. (38)  The combination of @about with @rel/@property and possibly @href covers most of we need…  But this is too complex for authors
  39. 39. (39) <http://www.w3.org/ns/entailment/RDFS> <http://purl.org/dc/terms/description> "Unique identifier for RDFS Entailment." . <http://www.w3.org/ns/entailment/RDFS> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/TR/2004/REC-rdf-mt-20040210/> .  with @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix dc: <http://purl.org/dc/terms/> . <http://www.w3.org/ns/entailment/RDFS> rdfs:seeAlso <http://www.w3.org/TR/2004/REC-rdf-mt-20040210/> ; dc:description "Unique identifier for RDFS Entailment." .
  40. 40. (40)  Use compact URI-s when possible  Make use of XML structure for ◦ shared subjects ◦ shared predicates ◦ create blank nodes ◦ …
  41. 41. (41)  Just like in Turtle: ◦ define a prefix via @prefix ◦ use prefix:reference to abbreviate a URI
  42. 42. (42) <html> … <p about="http://www.w3.org/ns/entailment/RDFS" property="http://purl.org/dc/terms/description"> Unique identifier for <em>RDFS Entailment</em>.</p> … </html>  can be replaced by: <html prefix="dc: http://purl.org/dc/terms/"> … <p about="http://www.w3.org/ns/entailment/RDFS" property="dc:description"> Unique identifier for <em>RDFS Entailment</em>.</p> … </html>
  43. 43. (43)  Can be anywhere in the XML tree and is valid for the whole sub-tree ◦ i.e., the html element is not the only place to have it  The same @prefix attribute can hold several definitions: ◦ prefix="dc: http://purl.org… rdfs: http://…"
  44. 44. (44)  An alternative (deprecated) syntax is ◦ xmlns:dc="http://purl.org/dc/terms/"  CURIEs and “real” URIs can be mixed ◦ if an attribute value can be interpreted as a CURIE, fine ◦ alternatively, it is considered as a URI  CURIEs can be used on RDFa attributes only! ◦ e.g., not for @href
  45. 45. (45)  In RDFa 1.0 ◦ only the xslt:XXX syntax is usable ◦ CURIEs on @about can only be used with the syntax: about="[pref:ref]" ◦ Only CURIEs can be used on, e.g., @property or @rel (no fallback on URIs)
  46. 46. (46)  The basic principle: @about is inherited by children nodes ◦ i.e., no reason to repeat it
  47. 47. (47) <html prefix="dc: http://purl.org/dc/terms/ rdfs: http://www.w3.org/2000/01/rdf-schema#"> … <body about="http://www.w3.org/ns/entailment/RDFS"> … <p property="dc:description"> Unique identifier for <em>RDFS Entailment</em>.</p> <p>…<a rel="rdfs:seeAlso" href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210"> RDFS Semantics</a>…</p>
  48. 48. (48) @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix dc: <http://purl.org/dc/terms/> . <http://www.w3.org/ns/entailment/RDFS> rdfs:seeAlso <http://www.w3.org/TR/2004/REC-rdf-mt-20040210/> ; dc:description "Unique identifier for RDFS Entailment." .
  49. 49. (49)
  50. 50. (50) <body about=".." prefix="dc: http://…" <address> <p property="dc:date">2010-07-05</p> </address> </body>  This leads to: @prefix dc: <http://…> <..> dc:date "2010-07-05" .
  51. 51. (51) <body about=".." prefix="dc: http://… xsd: http://…" <address> <p property="dc:date" datatype="xsd:date">2010-07-05</p> </address> </body>  This leads to: @prefix dc: <http://…> @prefix xsd: <http://…> <..> dc:date "2010-07-05"^^xsd:date .
  52. 52. (52)  The basic rule says: the (RDF) Literal is the enclosed text from the HTML content  This is fine in 80% of the cases, but…  It may not be natural in all cases! E.g., ◦ 2010-07-05 is the “official” ISO format (for xsd:date) ◦ but “July 5, 2010” looks much more natural for a human…
  53. 53. (53) <body about=".." prefix="dc: http://… xsd: http://…" <address> <p property="dc:date" datatype="xsd:date" content="2010-07-05">July 5, 2010</p> </address> </body>  Also leads to: @prefix dc: <http://…> @prefix xsd: <http://…> <..> dc:date "2010-07-05"^^xsd:date .
  54. 54. (54)
  55. 55. (55)  What we said is: ◦ @about sets the subject ◦ @href sets the object  But that is not always good enough ◦ we do not always want active links (i.e., the "a" element) ◦ what about other links in HTML?
  56. 56. (56) <body about="…"> …<img rel="foaf:depiction" src="http://www.ex.org/img.png"/>… </body>  yields: <…> foaf:depiction <http://www.ex.org/img.png> .
  57. 57. (57) <span about="http://www.ivan-herman.net/foaf#me"> <span rel="rdfs:seeAlso" resource="http://www.ivan-herman.net/foaf"> Activity Lead</span> </span>  The RDFa @resource attribute is equivalent to @href ◦ it sets the object, just like @href ◦ but it is ignored by a browser, i.e., not a link! ◦ e.g.,:
  58. 58. (58) <http://www.w3.org/ns/entailment/RDFS> dc:creator <http://www.ivan-herman.net/foaf#me> . <http://www.ivan-herman.net/foaf#me> foaf:mailbox <mailto:ivan@w3.org> ; foaf:workplaceHomepage <http://www.w3.org> .  Here is what we would like to have in RDFa
  59. 59. (59) <body about="http://www.w3.org/ns/entailment/RDFS"> … <address> <span rel="dc:creator" resource="http://www.ivan-herman.net/foaf#me"/> <span about="http://www.ivan-herman.net/foaf#me"> <a rel="foaf:mailbox" href="mailto:ivan@w3.org">ivan@w3.org</a>, <a rel="foaf:workplaceHomepage" href="http://www.w3.org">W3C</a> </span> </address>  A straightforward way:
  60. 60. (60) <body about="http://www.w3.org/ns/entailment/RDFS"> … <address> <span rel="dc:creator" resource="http://www.ivan-herman.net/foaf#me"/> <span about="http://www.ivan-herman.net/foaf#me"> <a rel="foaf:mailbox" href="mailto:ivan@w3.org">ivan@w3.org</a>, <a rel="foaf:workplaceHomepage" href="http://www.w3.org">W3C</a> </span> </address>  A straightforward way:
  61. 61. (61) <body about="http://www.w3.org/ns/entailment/RDFS"> … <address> <span rel="dc:creator" resource="http://www.ivan-herman.net/foaf#me"> <a rel="foaf:mailbox" href="mailto:ivan@w3.org">ivan@w3.org</a>, <a rel="foaf:workplaceHomepage" href="http://www.w3.org">W3C</a> </span> </address>  An alternative:
  62. 62. (62)  @resource (or @href) becomes a subject for the sub-tree  This feature is a bit like in RDF/XML
  63. 63. (63)
  64. 64. (64)  Blank nodes can be created using “_:XX”  Shorthand for rdf types  An API has been defined for Web Applications
  65. 65. (65)  Prefix declarations can be collected in a separate file and referred to via a @profile attribute ◦ the “profile file” ◦ RDFa1.0 warning: this is an RDFa1.1 feature!
  66. 66. (66)  A profile file can also define a term: ◦ assign a URI to a simple string  The term can be used directly by authors, without prefixes
  67. 67. (67)  Say, file “http://ex.org/prof” defines a mapping: ◦ "desc" → "http://purl.org/dc/terms/description"
  68. 68. (68) <html prefix="dc: http://purl.org/dc/terms/ rdfs: http://www.w3.org/2000/01/rdf-schema#"> … <body profile="http://ex.org/prof.html" about="…"> … <p property="desc"> Unique identifier for <em>RDFS Entailment</em>.</p>  yields @prefix dc: <http://purl.org/dc/terms/> . <…> <http://purl.org/dc/terms/description> "Unique identifier for RDFS Entailment."
  69. 69. (69)  Usage of CURIEs and URIs is intuitive for RDF people…  It is not for average HTML authors!  Profile files can be published by major publishers: ◦ Dublin Core, FOAF, … ◦ FaceBook, Google, …  … and users can simply refer to the profiles
  70. 70. (70)  Typing can of course be done using @rel="rdf:type"  But that is a widely used combination, so there is a separate @typeof attribute for that
  71. 71. (71) <span about="http://www.ivan-herman.net/foaf#me" typeof="foaf:Person"> <span property="foaf:name">Ivan Herman</span> </span>,  yields <http://www.ivan-herman.net/foaf#me> a foaf:Person ; foaf:name "Ivan Herman" .
  72. 72. (72)  RDFa gives an easy way of publishing RDF data on the Web  Often, the same RDF data is available in different formats, including RDFa ◦ it is up to the client to choose which one to use ◦ Web Applications would rely on RDFa, though…
  73. 73. (73)
  74. 74. (74)
  75. 75. (75)  Various search engines begin to consume RDFa ◦ Google, Yahoo, …  they may specify which vocabularies they “understand”  this is still an evolving area  Facebook’s “social graph” is based on RDFa
  76. 76. (76)  Embedded metadata (microformat or RDFa) is used to improve search result page ◦ at the moment only a few vocabularies are recognized, but that will evolve over the years
  77. 77. (77)  A number of popular sites publish RDFa as part of their normal pages: ◦ Tesco, BestBuy, Slideshare, The London Gazette, Newsweek, MSNBC, O’Reilly Catalog, the White House… ◦ Creative Commons snippets are in RDFa
  78. 78. (78)Courtesy of Jay Myers, BestBuy, SemTech2010 Presentation
  79. 79. (79)Courtesy of Jay Myers, BestBuy, SemTech2010 Presentation
  80. 80. (80)  Reported in a BestBuy blog: ◦ GoodRelations+RDFa improved Google rank tremendously ◦ 30% increase in traffic on BestBuy store pages ◦ Yahoo observers a 15% increase in click-through rate  Not bad…
  81. 81. (81)
  82. 82. (82)
  83. 83. (83)
  84. 84. (84)
  85. 85. (85)  Publishing RDFa is an important step in combining the Semantic Web and the “traditional” Web  But publishing is not always straightforward for a lambda Web designer and user  This is where the role of Drupal 7 is huge! ◦ make the publication of data in RDFa part of the normal CMS operation
  86. 86. (86)
  87. 87. (87) Thank you for your attention! These slides are also available on the Web: http://www.w3.org/2010/Talks/RDFa-Drupal- Tutorial/RDFa.pdf

×