W3C

RDFa Implementation Report

Editor's Draft

This version:
$Id: Overview.html,v 1.14 2008/07/06 10:45:14 mhausenb Exp $
Latest version:
http://www.w3.org/2006/07/SWD/RDFa/implementation-report
Previous version:
This is a draft version for the first approval of the RDFa Implementation Report
Editors:
Michael Hausenblas (JOANNEUM RESEARCH)
Ben Adida (Creative Commons)

Abstract

This document reports on implementations of the RDFa Syntax and Processing rules [RDFa Syntax]. Such implementations are able to parse an XHTML+RDFa document, and extract the embedded RDF graph in order to query, serialise, convert or process it further.

Status of this document

This is an Editor's Draft, hence work in progress. Publication as a Editor's Draft does not imply endorsement by the W3C Membership. As this is a draft document, it may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

The worked described herein has been produced by the RDF in HTML Task Force [RDFHTML-TF], a joint task force of the Semantic Web Deployment Working Group [SWD-WG] and HTML Working Group [HTML-WG].

For comments, please send a mail to public-rdf-in-xhtml-tf@w3.org, with http://lists.w3.org/Archives/Public/public-rdf-in-xhtml-tf/ being the public archive.

Last Modified: $Date: 2008/07/06 10:45:14 $


Table of Contents

  1. Introduction
  2. RDFa Processors
    1. Server-side RDFa Processors
    2. Client-side RDFa Processors
  3. Implementation Test Results

  4. References
  5. Acknowledgements

1. Introduction

The goal of this report is to verify if the RDFa Syntax and Processing rules [RDFa Syntax] specification is implementable. However, the report does not attempt to test the conformance of the implementations.

2. RDFa Processors

In the following the RDFa processors are listed that have been used in the RDFa Implementation Report. We differentiate between server-side processors which typically run as a kind of Webservice on a server an take some kind of XHTML+RDFa as input (via URI, etc.) and client-side processors, working on the client side (e.g. as a UA plug-in).

2.1 Server-side RDFa Processors

Table 1.: Server-side RDFa Processors.
Name Contact Programming Language Home Service URI
RDFa2RDFXML Fabien Gandon XSLT http://ns.inria.fr/grddl/rdfa/ http://ns.inria.fr/grddl/rdfa/2008/04/08/RDFa2RDFXML.xsl
ARC2 Benjamin Nowack PHP http://arc.semsol.org/download http://arc.web-semantics.org/demos/rdfa_tests/extract.php?url=
RDFa Distiller (PyRDFa) Ivan Herman Python http://www.w3.org/2007/08/pyRdfa/ http://www.w3.org/2007/08/pyRdfa/extract?uri=
librdfa Manu Sporny C http://rdfa.digitalbazaar.com/librdfa/ http://rdfa.digitalbazaar.com/librdfa/rdfa2rdf.py?uri=
SPREAD Shane McCarron Perl ? http://htmlwg.mn.aptest.com/rdfa/extract_rdfa.pl?format=xml&uri=
Cognition Toby Inkster Perl http://buzzword.org.uk/cognition/ http://srv.buzzword.org.uk/crazy-ivan.cgi?uri=
shark Florian Schmedding C# http://shark.informatik.uni-freiburg.de/ http://shark.informatik.uni-freiburg.de/Ocean/SharkWeb.asmx/Parse?url=

2.2 Client-side RDFa Processors

Table 2.: Client-side RDFa Processors.
Name Contact Environment Home
Operator Michael Kaply, Elias Torres Firefox Plug-in http://www.kaply.com/weblog/operator/
RDFa in Javascript Ben Adida Javascript http://www.w3.org/2006/07/SWD/RDFa/impl/js/

3. Implementation Test Results

The following table lists the results of the implementation test. The approved RDFa Test Cases have been used as reference tests.

Where possible, the test result have been created automatically using the EARL-exporter of the RDFa Test Harness along with an XSLT to create the Table 3..

Table 3.: Results for participating RDFa Processors.
Test Purpose RDFa Distiller (PyRDFa) ARC2 librdfa Cognition Summary (+ ... pass, - ... fail)
Test0001 Tests @property to establish the predicate; literal object is in the content of the element. pass pass pass pass ++++
Test0006 Tests @rev and @rel together, with the object being specified by @href, ignoring content pass pass pass pass ++++
Test0007 Tests @rel, @rev, @property, and @content together to generate several RDF triples. pass pass pass pass ++++
Test0008 Tests empty @about. pass pass pass pass ++++
Test0009 Tests @rev. pass pass pass pass ++++
Test0010 Tests @rel, @rev, and @href to generate two RDF triples. pass pass pass pass ++++
Test0011 Tests XMLLiteral content fail fail fail fail ----
Test0012 Tests @xml:lang pass pass pass pass ++++
Test0013 Tests @xml:lang inheritance pass pass pass +++
Test0014 Tests setting the @datatype to xsd:integer pass pass pass fail +++-
Test0015 Tests meta and link with no parent @about pass pass pass pass ++++
Test0018 Tests @rel to establish predicate. pass pass pass pass ++++
Test0019 Tests @about to establish subject. pass pass pass pass ++++
Test0020 Tests @about inheritance to establish subject. pass pass pass +++
Test0021 Tests inheritance of subject when no @about can be found pass pass pass pass ++++
Test0023 Tests that @id does not generate subjects pass pass pass pass ++++
Test0025 Tests simple chaining with cascade of @resource and @property pass pass pass pass ++++
Test0026 Tests @content for literal object pass pass pass pass ++++
Test0027 Tests @content for literal object, overriding element content. pass pass pass pass ++++
Test0029 Tests markup stripping from a span element with @datatype=xsd:string pass pass pass pass ++++
Test0030 Tests omitted @about. pass pass pass pass ++++
Test0031 Tests if @resource sets URIref object correct. pass pass pass fail +++-
Test0032 Tests if @resource overrides @href to set the URIref object. pass pass pass fail +++-
Test0033 Tests simple chaining with cascade of bNode and @property pass pass pass pass ++++
Test0034 Tests if a @src (in img element) correctly sets the URIref object pass pass pass pass ++++
Test0035 Tests if @href overwrites @src pass pass pass pass ++++
Test0036 Tests if @resource overwrites @src pass pass pass pass ++++
Test0037 Tests if @resource overwrites both @href and @src pass pass pass pass ++++
Test0038 Tests if a @src (in img element) correctly sets the URIref subject (due to @rev) pass pass pass pass ++++
Test0041 Tests if @resource overwrites both @href and @src correctly to set the URIref subject (due to @rev) pass pass pass pass ++++
Test0046 Tests @typeof with @rel present, no @href, @resource, or @about pass pass pass pass ++++
Test0047 Tests @typeof with @rel and @resource present, no @about pass pass pass pass ++++
Test0048 Tests @typeof with @about and @rel present, no @resource pass pass pass pass ++++
Test0049 Tests @typeof with @about, no @rel or @resource pass pass pass pass ++++
Test0050 Tests @typeof without anything else pass pass pass pass ++++
Test0051 Tests @typeof with a single @property pass pass pass fail +++-
Test0052 Tests to ensure that @typeof does not apply to @resource pass pass pass fail +++-
Test0053 Tests to make sure that @typeof does not apply to @resource, but @resource sets the subject for the next triple to be generated pass pass pass pass ++++
Test0054 Tests multiple @property separated by white spaces pass pass pass pass ++++
Test0055 Tests multiple @rel separated by white spaces pass pass pass pass ++++
Test0056 Tests if @typeof applies to @about on same element with hanging @rel pass pass pass pass ++++
Test0057 Tests if hanging @rel creates multiple triples pass pass pass pass ++++
Test0058 Tests if hanging @rel creates multiple triples with @typeof permutation pass pass pass pass ++++
Test0059 Tests multiple hanging @rels with multiple children pass pass pass pass ++++
Test0060 Tests conformance with UTF-8 encoding pass pass pass pass ++++
Test0061 Tests @rel in head using reserved, non-prefixed XHTML value pass pass pass pass ++++
Test0062 Tests @rev in head using reserved, non-prefixed XHTML value pass pass pass pass ++++
Test0063 Tests @rel in head using reserved XHTML value and empty-prefix CURIE syntax pass pass pass pass ++++
Test0064 Tests if @about generates a proper triple when a safe CURIE is used pass pass pass pass ++++
Test0065 Tests if @rel properly connects triples generated when safe CURIEs are used pass pass pass pass ++++
Test0066 Test to make sure that @about (with current document) is implied in the head, and the proper triples are generated using @typeof pass pass pass fail +++-
Test0067 Test to make sure that @property in head uses the implied current document as the subject if no other subject is specified pass pass pass pass ++++
Test0068 Tests to ensure that relative URI is resolved correctly when used in @about pass pass pass pass ++++
Test0069 Tests to ensure that relative URI is resolved correctly when used in @href pass pass pass pass ++++
Test0070 Tests to ensure that relative URI is resolved correctly when used in @resource pass pass pass pass ++++
Test0071 Tests to ensure that a triple is generated even if @typeof and @about is not specified anywhere in the document pass pass pass pass ++++
Test0072 Tests to ensure that relative URIs are resolved correctly when used in @about with XHTML base set in head pass pass pass fail +++-
Test0073 Tests to ensure that relative URIs are resolved correctly when used in @resource with XHTML base set in head pass pass pass fail +++-
Test0074 Tests to ensure that relative URIs are resolved correctly when used in @href with XHTML base set in head pass pass pass fail +++-
Test0075 Tests to ensure that the XHTML+RDFa reserved word 'license' when used in @rel (with no @about) generates the proper triple pass pass pass fail +++-
Test0076 Tests to ensure that all reserved XHTML words are supported in @rel pass pass pass pass ++++
Test0077 Tests to ensure that all reserved XHTML words are supported in @rev pass pass pass pass ++++
Test0078 Tests multiple ways of handling incomplete triples; the first two triples should use the same bnode as subject ('merged'). The third should have a separate bNode. pass pass pass pass ++++
Test0079 Tests role of @resource and @href in completing incomplete triples (including their mutual priorities) pass pass pass pass ++++
Test0080 Tests if @about has a higher priority than @resource in handling incomplete triples pass pass pass pass ++++
Test0081 Tests multiple ways of handling incomplete triples, this time with @rev pass pass pass pass ++++
Test0082 Tests multiple ways of handling incomplete triples, this time with both @rel and @rev pass pass pass pass ++++
Test0083 Tests multiple ways of handling incomplete triples; the first two triples should use the same bNode as subject ('merged'); the third case should use @about pass pass pass pass ++++
Test0084 Tests multiple ways of handling incomplete triples, this time with both @rel and @rev. There is an intermediate div that should be ignored by the process pass pass pass pass ++++
Test0085 Tests the role of @resource and @href in completing incomplete triples (including their mutual priorities), but with an intermediate layer (ie, bNode) added pass pass pass pass ++++
Test0086 Test that NO triple should be generated for a non-reserved @rel value pass pass pass pass ++++
Test0087 Tests to ensure that all reserved XHTML words are supported in @rel (with :xxx) pass pass pass pass ++++
Test0088 Test the interpretation of the CURIE "_:" pass pass fail pass ++-+
Test0089 Tests to ensure that @src sets a new subject (focuses on @typeof). pass pass pass fail +++-
Test0090 Tests to ensure that @src sets a new subject (focuses on @rel/@href). pass pass pass pass ++++
Test0091 Tests to ensure that non-reserved, un-prefixed CURIEs, when used in @property, generate triples. pass pass fail fail ++--
Test0092 Tests the explicit specification of an RDF XMLLiteral with @datatype. fail fail fail fail ----
Test0093 Tests the explicit specification of an RDF XMLLiteral with @datatype using a non-RDF namespace, yielding a user-data-typed literal pass pass fail fail ++--
Test0094 Tests the explicit specification of an RDF XMLLiteral with @datatype using the proper RDF namespace, but with an unusual prefix - bla: fail fail fail fail ----
Test0099 Tests the preservation of white space in literals. pass fail pass fail +-+-
Test0100 Tests XML elements with explicit namespace. Each of the XML elements in the literal should have at least those namespaces declared that are used in that literal (more is acceptable) fail fail fail fail ----
Test0101 Tests XML elements with explicit namespace. Each of the XML elements in the literal should have at least those namespaces declared that are used in that literal (more is acceptable). Furthermore, the xml:lang should also be set for each of those elements. fail fail fail fail ----
Test0102 Tests XML elements with explicit namespace. Each of the XML elements in the literal should have at least those namespaces declared that are used in that literal (more is acceptable). Furthermore, the xml:lang should also be set on the first element but existing language declaration should not be changed. fail fail fail fail ----
Test0103 Tests XML elements with explicit namespace. Each of the XML elements in the literal should have at least those namespaces declared that are used in that literal (more is acceptable), but locally set namespaces should not be changed; i.e., the default namespace for the svg element should remain unchanged in the output fail fail fail fail ----
Test1001 Tests Vevent using @typeof (inlc. dtstart, dtend, etc.) pass pass pass fail +++-

References

[HTML-WG]
HTML Working Group, see http://w3.org/MarkUp/Group/ .
[SWD-WG]
Semantic Web Deployment Working Group, see http://www.w3.org/2006/07/SWD/ .
[RDFHTML-TF]
RDF-in-HTML Task Force, see http://w3.org/2001/sw/BestPractices/HTML/ .
[RDFa Syntax]
RDFa in XHTML: Syntax and Processing, Ben Adida, Mark Birbeck, Shane McCarron and Steven Pemberton, W3C Candidate Recommendation, 20 June 2008 http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/ . Latest version available at http://www.w3.org/TR/rdfa-syntax/ .
[RDF/XML Syntax]
RDF/XML Syntax Specification (Revised), Dave Beckett, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/ . Latest version available at http://www.w3.org/TR/rdf-syntax-grammar/ .
[RDF Concepts]
Resource Description Framework (RDF): Concepts and Abstract Syntax, Graham Klyne and Jeremy J. Carroll, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/ . Latest version available at http://www.w3.org/TR/rdf-concepts/ .
[RDF Schema]
RDF Vocabulary Description Language 1.0: RDF Schema, Dan Brickley and R. V. Guha, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-schema-20040210/ . Latest version available at http://www.w3.org/TR/rdf-schema/ .
[RDF Semantics]
RDF Semantics, Patrick Hayes, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-mt-20040210/ . Latest version available at http://www.w3.org/TR/rdf-mt/ .

Acknowledgements

This document is the result of discussions within the RDF in HTML Task Force. The editors would like to thank Manu Sporny for creating an excellent Test Harness producing directly usable EARL documents which have been used as the main input for this report. We want to thank all the implementors; thanks for your great work and the patience.