Copyright ©2002 Seth Russell
This document describes a simple grammar, called Pentals, for searilizing labeled directed graphs used for knowledge representation. Pentals is a generalization N-triples allowing for grammar used to searilize RDF graphs.
A comprehensive and complete test suite for RDF should cover all of the rules in the Formal Grammar for RDF. The Working Group, however, is not chartered to deliver such a test suite but rather to create test cases for the issues the Working Group addresses (when applicable). Although the Working Group will not create test cases for some grammar rules (e.g. rule [6.1]), if such test cases are donated to the W3C the Consortium may add such test cases to this set of test cases.
The RDF Errata documents known errors in [RDFMS]. Since errata are considered normative changes to a W3C Specification and Working Group decisions are not normative until a specification is a W3C Recommendation, none of the decisions made by the RDF Core Working Group have (to date) been reflected in the errata.
The Test Case Repository is located at http://www.w3.org/2000/10/rdf-tests/rdfcore/. Each directory in the repository is devoted to a single issue. Most directories have a name that is identical to the related issue in the RDF Issue Tracking document. For example, the directory rdf-ns-prefix-confusion is identical to the rdf-ns-prefix-confusion issue. In the other cases, the directory does not have an associated issue in the issue list (e.g. amp-in-url). If a directory is empty, then no test cases have been created for the issue.
The Test Case Repository contains a ZIP file of all Approved test cases as well as a ZIP file of all Approved and Not Approved test cases .
Each test case is defined in RDF/XML. The expected result is defined using the [N-Ttriples] syntax. [N-Triples]is a line-based, plain text format for representing a RDF triple. Each RDF/XML file that contains valid RDF has an associated [N-Triples] file. The contents of the [N-Triples] files have been reviewed by the RDF Core Working Group and are considered authoritative (subject to the warnings provided in Status of this Document).
The following file name conventions are typically used:
testNNN.rdf
testNNN.nt
errorNNN.rdf
where NNN is an integer starting with 001. The expected results or [N-Triples] file
for a RDF/XML file will have the same number. For example, the [N-Triples] file
for RDF/XML file test001.rdf will be test001.nt. Error files
contain illegal RDF thus they do not have a corresponding [N-Triples] file.
The test cases in the following table have been approved.
The test case repository contains test cases that have not been approved. Such test cases are not enumerated in this document but a list of them is available at http://www.w3.org/2000/10/rdf-tests/rdfcore/#not_approved.
N-Triples is a line-based, plain text format for encoding an RDF graph. It was designed to be a fixed subset of N3[N3][N3-Primer] and hence N3 tools such as cwm, n-triples2kif.pl and Euler can be used to read and process it. cwm can output this format when invoked as "cwm -ntriples".
It is recommended, but not required, that N-Triples content is stored in files with an '.nt' suffix to distinguish them from N3.
The Internet Media Type / MIME Type of N-Triples is text/plain and the character encoding is 7-bit US-ASCII.
An N-Triples document is a sequence of US-ASCII characters and is defined by the ntripleDoc grammar term below. Parsing it results in a sequence of RDF statements formed from the subject, predicate and object terms. The meaning of these terms are defined in the [RDFMT] being developed as part of the RDF Core WG activity.
This EBNF is the notation used in XML 1.0 second edition
| ntripleDoc | ::= | line* | |
| line | ::= | ws* (comment | triple) ? eoln | |
| comment | ::= | '#' (character - ( cr | lf ) )* | |
| triple | ::= | subject ws+ predicate ws+ object ws* '.' ws* | |
| subject | ::= | uriref | nodeID | |
| predicate | ::= | uriref | |
| object | ::= | uriref | nodeID | literal | |
| uriref | ::= | '<' absoluteURI '>' | |
| nodeID | ::= | '_:' name | |
| literal | ::= | '"' string '"' | |
| ws | ::= | space | tab | |
| eoln | ::= | cr | lf | cr lf | |
| space | ::= | #x20 /* US-ASCII space - decimal 32 */ | |
| cr | ::= | #xD /* US-ASCII carriage return - decimal 13 */ | |
| lf | ::= | #xA /* US-ASCII linefeed - decimal 10 */ | |
| tab | ::= | #x9 /* US-ASCII horizontal tab - decimal 9 */ | |
| string | ::= | character* with escapes as defined in section Strings | |
| name | ::= | [A-Za-z][A-Za-z0-9]* | |
| absoluteURI | ::= | character+ with escapes as defined in section URI References | |
| character | ::= | [#x20-#x7E] /* US-ASCII space to decimal 127 */ |
N-Triples strings are sequences of US-ASCII character productions encoding [Unicode] character strings. The characters outside the US-ASCII range are made available by \-escape sequences as follows:
| Escape sequence |
Encodes Unicode character |
|---|---|
| \\ | Backslash character (decimal 92, #x5c) |
| \" | Double quote (decimal 34, #x22) |
| \n | Linefeed (decimal 10, #xA) - lf character |
| \r | Carriage return (decimal 13, #xD) - cr character |
| \t | Horizontal tab (decimal 9, #x9) - tab character |
| \uxxxx | 4 required hexadecimal digits xxxx encoding character [#x0-#x8],[#xB#xC],[#xE-#x1F],[#x7F-#xFFFF] |
| \Uxxxxxxxx | 8 required hexadecimal digitsxxxxxxxx encoding
character [#x10000-#x10FFFF] |
This escaping satisfies the [Charmod] section Reference Processing Model on making the full Unicode character range U+0 to U+10FFFF available to applications and providing only one way to escape any character.
It is recommended but not required that the resulting Unicode character string be made available to applications in UTF-8 encoding.
URI references are defined and encoded using the rules defined in [Charmod] section Character Encoding in URI References. That is, disallowed characters are represented in UTF-8 and then encoded using the %HH format, where HH is the byte value expressed using hexadecimal notation.
The following N-Triples file:
<http://www.w3.org/2001/08/rdf-test/> <http://purl.org/dc/elements/1.1/creator> "Dave Beckett" .
<http://www.w3.org/2001/08/rdf-test/> <http://purl.org/dc/elements/1.1/creator> "Art Barstow" .
<http://www.w3.org/2001/08/rdf-test/> <http://purl.org/dc/elements/1.1/publisher> _:a .
_:a <http://purl.org/dc/elements/1.1/title> "World Wide Web Consortium" .
_:a <http://purl.org/dc/elements/1.1/source> <http://www.w3.org/> .
represents the same RDF graph as the following RDF/XML:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="http://www.w3.org/2001/08/rdf-test/">
<dc:creator>Art Barstow</dc:creator>
<dc:creator>Dave Beckett</dc:creator>
<dc:publisher>
<rdf:Description>
<dc:title>World Wide Web Consortium</dc:title>
<dc:source rdf:resource="http://www.w3.org/"/>
</rdf:Description>
</dc:publisher>
</rdf:Description>
</rdf:RDF>
Among the work that needs to be done:
The following Working Group members have directly contributed to this document and/or contributed test cases.
| Art Barstow | W3C |
| Dave Beckett | ILRT, University of Bristol |
| Jeremy Carroll | Hewlett-Packard |
| Dan Connolly | W3C |
| Jos DeRoo | AGFA |
| Jan Grant | ILRT, University of Bristol |
| Brian McBride | Hewlett-Packard |
| Aaron Swartz | HWG |
Changed the Approved Test Cases table so that it includes links to related files and the Working Group decision.
Removed the Test Cases Not Approved table and added a link to the repository's list of the not approved test cases.
Added links to ZIP files of the repository's test cases.
Specify the Future Work and Contributors sections as Non-normative.
Renamed token bNode to nodeID.
Added RDF Model Theory reference.
Added URI Encoding section, pointing at Charmod rules and updated absoluteURI grammar rule to use it.
Removed references to Python literals, reason for \-escaping.
Added 4, 8 required digits for \u, \U string escapes.
Renamed section URIs to URI References.
The following issues are open: