This document is also available in these non-normative formats: Turtle and JSON-LD
This document is licensed under a Creative Commons Attribution 4.0 License.
This document report test subject conformance for and related specifications for TriG [TRIG] according to the requirements of the Evaluation and Report Language (EARL) 1.0 Schema [EARL10-SCHEMA].
This report is also available in alternate formats: Turtle and JSON-LD
Tests should be run using the test manifests defined in the Test Manifests Section.
The assumed base URI for the tests is <http://example/base/>
if needed.
Reports should be submitted in Turtle format to public-rdf-comments@w3.org
and include an earl:Assertion
for each test, referencing the test resource from the associated manifest
and the test subject being reported upon. An example test entry is be the following:
[ a earl:Assertion;
earl:assertedBy <http://greggkellogg.net/foaf#me>;
earl:subject <http://rubygems.org/gems/rdf-turtle>;
earl:test <http://www.w3.org/2013/TurtleTests/manifest.ttl#turtle-syntax-file-01>;
earl:result [
a earl:TestResult;
earl:outcome earl:passed;
dc:date "2013-02-22T15:12:30-08:00"^^xsd:dateTime];
earl:mode earl:automatic ] .
The Test Subject should be defined as a doap:Project
, including the name,
homepage and developer(s) of the software (see [DOAP]). Optionally, including the
project description and programming language. An example test subject description is the following:
<> foaf:primaryTopic <http://rubygems.org/gems/rdf-trig>
dc:issued "2013-06-18T17:30:22-07:00"^^xsd:dateTime ;
foaf:maker <http://greggkellogg.net/foaf#me> .
<http://rubygems.org/gems/rdf-trig> a doap:Project, earl:TestSubject, earl:Software ;
doap:name "RDF::TriG" ;
doap:homepage <http://ruby-rdf.github.com/rdf-trig> ;
doap:license <http://creativecommons.org/licenses/publicdomain/> ;
doap:description "RDF::TriG is an TriG reader/writer for the RDF.rb library suite."@en ;
doap:created "2011-08-29"^^xsd:date ;
doap:programming-language "Ruby" ;
doap:implements <http://www.w3.org/TR/trig/> ;
doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
<http://dbpedia.org/resource/Ruby_(programming_language)> ;
doap:developer <http://greggkellogg.net/foaf#me> ;
dc:title "RDF::TriG" ;
dc:description "RDF::TriG is an TriG reader/writer for the RDF.rb library suite."@en ;
dc:date "2011-08-29"^^xsd:date ;
.
The software developer, either an organization or one or more individuals SHOULD be
referenced from doap:developer
using [FOAF]. For example:
<http://greggkellogg.net/foaf#me> a foaf:Person, earl:Assertor;
foaf:name "Gregg Kellogg";
foaf:title "Implementor";
foaf:homepage <http://greggkellogg.net/> .
See Turtle Test Suite Wiki for more information.
This report was tested using the following test subjects:
335/335 (100.0%) |
335/335 (100.0%) |
335/335 (100.0%) |
Individual test results used to construct this report are available here:
anonymous blank node graph
[] {<http://a.example/s> <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> _:b1 .
labeled blank node graph
_:g {<http://a.example/s> <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> _:b1 .
alternating graphs with IRI names
@prefix : <http://example/> .
{:a :b :c.}
:G {:a :b :d.}
{:a :b :e.}
:G {:a :b :f.}
<http://example/a> <http://example/b> <http://example/c> .
<http://example/a> <http://example/b> <http://example/d> <http://example/G> .
<http://example/a> <http://example/b> <http://example/e> .
<http://example/a> <http://example/b> <http://example/f> <http://example/G> .
alternating graphs with BNode names
@prefix : <http://example/> .
{:a :b :c.}
_:G {:a :b :d.}
{:a :b :e.}
_:G {:a :b :f.}
<http://example/a> <http://example/b> <http://example/c> .
<http://example/a> <http://example/b> <http://example/d> _:G .
<http://example/a> <http://example/b> <http://example/e> .
<http://example/a> <http://example/b> <http://example/f> _:G .
@base inside graph (negative test)
# @base inside graph
{
@base <http://example/> .
}
BASE inside graph (negative test)
# BASE inside graph
{
BASE <http://example/>
}
@prefix inside graph (negative test)
# @prefix inside graph
{
@prefix ex: <http://example/> .
}
PREFIX inside graph (negative test)
# PREFIX inside graph
{
PREFIX ex: <http://example/>
}
missing '.'
# No DOT
{<http://example/s> <http://example/p> <http://example/o>}
trailing ';' no '.'
# Trailing ;
{<http://example/s> <http://example/p> <http://example/o> ;}
tests absense of whitespace in various positions
BASE<http://example/base>
@base<http://example/base>.
PREFIX :<http://example/a/>
PREFIX b:<http://example/b/>
@prefix:<http://example/c/>.
@prefix
d:<http://example/d/>.
{<http://example/s><http://example/p><http://example/o>.<http://example/s><http://example/p>"Alice".<http://example/s><http://example/p>_:o.}
{:s :p :o .:s :p"Alice".:s :p _:o.}
{b:s b:p b:o .b:s b:p"Alice".b:s b:p _:o.}
{_:s:p :o ._:s:p"Alice". _:s:p _:o .}
{[:p :o].[:p"Alice"].[:p _:o].}
{[:p(:o)].[:p(_:o)].[:p("Alice")].[:p(<http://example/o>)].}
{:s :p :o,:o2 .:s :p"Alice","Ted".:s :p _:o,_:o2.}
{:s :p :o;:p2 :o2 .:s :p"Alice";:p2 "Ted".:s :p _:o;:p2 _:o2.}
<http://example/g>{:s :p :o .:s :p"Alice".:s :p _:o.}
:s{:s :p :o .:s :p"Alice".:s :p _:o.}
_:s{:s :p :o .:s :p"Alice".:s :p _:o.}
:{: : :}{: : :}:{: : :}
:{():()}{():[]}:{[]:[]}
IRI subject
{<http://a.example/s> <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
IRI with four digit numeric escape (\u)
{<http://a.example/\u0073> <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {<http://a.example/\u0073> <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
IRI with eight digit numeric escape (\U)
{<http://a.example/\U00000073> <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {<http://a.example/\U00000073> <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
IRI with all punctuation
{<scheme:!$%25&'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {<scheme:!$%25&'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .}
<scheme:!$%25&'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .
<scheme:!$%25&'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> <http://example/graph> .
bareword a predicate
{<http://a.example/s> a <http://a.example/o> .}
<http://example/graph> {<http://a.example/s> a <http://a.example/o> .}
<http://a.example/s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://a.example/o> .
<http://a.example/s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://a.example/o> <http://example/graph> .
old-style prefix
@prefix p: <http://a.example/>.
{p:s <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:s <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
SPARQL-style prefix
PREFIX p: <http://a.example/>
{p:s <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:s <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
prefixed IRI predicate
@prefix p: <http://a.example/>.
{<http://a.example/s> p:p <http://a.example/o> .}
<http://example/graph> {<http://a.example/s> p:p <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
prefixed IRI object
@prefix p: <http://a.example/>.
{<http://a.example/s> <http://a.example/p> p:o .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> p:o .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
prefix-only IRI (p:)
@prefix p: <http://a.example/s>.
{p: <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p: <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
prefix with PN CHARS BASE character boundaries (prefix: AZazÀÖØöø...:)
@prefix AZazÀÖØöø˿ͰͽͿ⁰Ⰰ、豈﷏ﷰ�𐀀: <http://a.example/> .
{<http://a.example/s> <http://a.example/p> AZazÀÖØöø˿ͰͽͿ⁰Ⰰ、豈﷏ﷰ�𐀀:o}
<http://example/graph> {<http://a.example/s> <http://a.example/p> AZazÀÖØöø˿ͰͽͿ⁰Ⰰ、豈﷏ﷰ�𐀀:o}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
prefix with_non_leading_extras (_:a·̀ͯ‿.⁀)
@prefix a·̀ͯ‿.⁀: <http://a.example/>.
{a·̀ͯ‿.⁀:s <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {a·̀ͯ‿.⁀:s <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
default namespace IRI (:ln)
@prefix : <http://a.example/>.
{:s <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {:s <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
prefix reassigned and used
@prefix p: <http://a.example/>.
@prefix p: <http://b.example/>.
{p:s <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:s <http://a.example/p> <http://a.example/o> .}
<http://b.example/s> <http://a.example/p> <http://a.example/o> .
<http://b.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
reserved-escaped local name
@prefix p: <http://a.example/>.
{p:\_\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\%00 <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:\_\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\%00 <http://a.example/p> <http://a.example/o> .}
<http://a.example/_~.-!$&'()*+,;=/?#@%00> <http://a.example/p> <http://a.example/o> .
<http://a.example/_~.-!$&'()*+,;=/?#@%00> <http://a.example/p> <http://a.example/o> <http://example/graph> .
percent-escaped local name
@prefix p: <http://a.example/>.
{p:%25 <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:%25 <http://a.example/p> <http://a.example/o> .}
<http://a.example/%25> <http://a.example/p> <http://a.example/o> .
<http://a.example/%25> <http://a.example/p> <http://a.example/o> <http://example/graph> .
HYPHEN-MINUS in local name
@prefix p: <http://a.example/>.
{p:s- <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:s- <http://a.example/p> <http://a.example/o> .}
<http://a.example/s-> <http://a.example/p> <http://a.example/o> .
<http://a.example/s-> <http://a.example/p> <http://a.example/o> <http://example/graph> .
underscore in local name
@prefix p: <http://a.example/>.
{p:s_ <http://a.example/p> <http://a.example/o> .}
<http://a.example/s_> <http://a.example/p> <http://a.example/o> .
localname with COLON
@prefix p: <http://a.example/>.
{p:s: <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:s: <http://a.example/p> <http://a.example/o> .}
<http://a.example/s:> <http://a.example/p> <http://a.example/o> .
<http://a.example/s:> <http://a.example/p> <http://a.example/o> <http://example/graph>.
localName with assigned, NFC-normalized, basic-multilingual-plane PN CHARS BASE character boundaries (p:AZazÀÖØöø...)
@prefix p: <http://a.example/> .
{<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿Ͱͽ΄῾⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿Ͱͽ΄῾⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ .}
<http://a.example/s> <http://a.example/p> <http://a.example/AZaz\u00C0\u00D6\u00D8\u00F6\u00F8\u02FF\u0370\u037D\u0384\u1FFE\u200C\u200D\u2070\u2189\u2C00\u2FD5\u3001\uD7FB\uFA0E\uFDC7\uFDF0\uFFEF> .
<http://a.example/s> <http://a.example/p> <http://a.example/AZaz\u00C0\u00D6\u00D8\u00F6\u00F8\u02FF\u0370\u037D\u0384\u1FFE\u200C\u200D\u2070\u2189\u2C00\u2FD5\u3001\uD7FB\uFA0E\uFDC7\uFDF0\uFFEF> <http://example/graph> .
localName with assigned, NFC-normalized PN CHARS BASE character boundaries (p:AZazÀÖØöø...)
@prefix p: <http://a.example/> .
{<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿Ͱͽ΄῾⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ𐀀󠇯 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿Ͱͽ΄῾⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ𐀀󠇯 .}
<http://a.example/s> <http://a.example/p> <http://a.example/AZaz\u00C0\u00D6\u00D8\u00F6\u00F8\u02FF\u0370\u037D\u0384\u1FFE\u200C\u200D\u2070\u2189\u2C00\u2FD5\u3001\uD7FB\uFA0E\uFDC7\uFDF0\uFFEF\U00010000\U000E01EF> .
<http://a.example/s> <http://a.example/p> <http://a.example/AZaz\u00C0\u00D6\u00D8\u00F6\u00F8\u02FF\u0370\u037D\u0384\u1FFE\u200C\u200D\u2070\u2189\u2C00\u2FD5\u3001\uD7FB\uFA0E\uFDC7\uFDF0\uFFEF\U00010000\U000E01EF> <http://example/graph> .
localName with nfc-normalize PN CHARS BASE character boundaries (p:AZazÀÖØöø...)
@prefix p: <http://a.example/> .
{<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿ͰͽͿ⁰Ⰰ、﨎﷏ﷰ𐀀 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿ͰͽͿ⁰Ⰰ、﨎﷏ﷰ𐀀 .}
<http://a.example/s> <http://a.example/p> <http://a.example/AZaz\u00C0\u00D6\u00D8\u00F6\u00F8\u02FF\u0370\u037D\u037F\u1FFF\u200C\u200D\u2070\u218F\u2C00\u2FEF\u3001\uD7FF\uFA0E\uFDCF\uFDF0\uFFEF\U00010000\U000EFFFD> .
<http://a.example/s> <http://a.example/p> <http://a.example/AZaz\u00C0\u00D6\u00D8\u00F6\u00F8\u02FF\u0370\u037D\u037F\u1FFF\u200C\u200D\u2070\u218F\u2C00\u2FEF\u3001\uD7FF\uFA0E\uFDCF\uFDF0\uFFEF\U00010000\U000EFFFD> <http://example/graph> .
localName with leading underscore (p:_)
@prefix p: <http://a.example/>.
{p:_ <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:_ <http://a.example/p> <http://a.example/o> .}
<http://a.example/_> <http://a.example/p> <http://a.example/o> .
<http://a.example/_> <http://a.example/p> <http://a.example/o> <http://example/graph> .
localName with leading digit (p:_)
@prefix p: <http://a.example/>.
{p:0 <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:0 <http://a.example/p> <http://a.example/o> .}
<http://a.example/0> <http://a.example/p> <http://a.example/o> .
<http://a.example/0> <http://a.example/p> <http://a.example/o> <http://example/graph> .
localName with_non_leading_extras (_:a·̀ͯ‿.⁀)
@prefix p: <http://a.example/>.
{p:a·̀ͯ‿.⁀ <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {p:a·̀ͯ‿.⁀ <http://a.example/p> <http://a.example/o> .}
<http://a.example/a·̀ͯ‿.⁀> <http://a.example/p> <http://a.example/o> .
<http://a.example/a·̀ͯ‿.⁀> <http://a.example/p> <http://a.example/o> <http://example/graph> .
old-style base
@base <http://a.example/>.
{<s> <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {<s> <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
SPARQL-style base
BASE <http://a.example/>
{<s> <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {<s> <http://a.example/p> <http://a.example/o> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
labeled blank node subject
{_:s <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {_:s <http://a.example/p> <http://a.example/o> .}
_:b1 <http://a.example/p> <http://a.example/o> .
_:b1 <http://a.example/p> <http://a.example/o> <http://example/graph> .
labeled blank node object
{<http://a.example/s> <http://a.example/p> _:o .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:o .}
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
labeled blank node with PN_CHARS_BASE character boundaries (_:AZazÀÖØöø...)
{<http://a.example/s> <http://a.example/p> _:AZazÀÖØöø˿ͰͽͿ⁰Ⰰ、豈﷏ﷰ�𐀀 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:AZazÀÖØöø˿ͰͽͿ⁰Ⰰ、豈﷏ﷰ�𐀀 .}
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
labeled blank node with_leading_underscore (_:_)
{<http://a.example/s> <http://a.example/p> _:_ .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:_ .}
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
labeled blank node with_leading_digit (_:0)
{<http://a.example/s> <http://a.example/p> _:0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:0 .}
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
labeled blank node with_non_leading_extras (_:a·̀ͯ‿.⁀)
{<http://a.example/s> <http://a.example/p> _:a·̀ͯ‿.⁀ .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:a·̀ͯ‿.⁀ .}
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
anonymous blank node subject
{[] <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {[] <http://a.example/p> <http://a.example/o> .}
_:b1 <http://a.example/p> <http://a.example/o> .
_:b2 <http://a.example/p> <http://a.example/o> <http://example/graph> .
anonymous blank node object
{<http://a.example/s> <http://a.example/p> [] .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> [] .}
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b2 <http://example/graph> .
sole blankNodePropertyList [ <p> <o> ] .
{[ <http://a.example/p> <http://a.example/o> ] .}
<http://example/graph> { [ <http://a.example/p> <http://a.example/o> ] .}
<http://example/graph> { [ <http://a.example/p> <http://a.example/o> ] }
_:b1 <http://a.example/p> <http://a.example/o> .
_:b2 <http://a.example/p> <http://a.example/o> <http://example/graph> .
_:b3 <http://a.example/p> <http://a.example/o> <http://example/graph> .
blankNodePropertyList as subject [ … ] <p> <o> .
{[ <http://a.example/p> <http://a.example/o> ] <http://a.example/p2> <http://a.example/o2> .}
<http://example/graph> {[ <http://a.example/p> <http://a.example/o> ] <http://a.example/p2> <http://a.example/o2> .}
_:b1 <http://a.example/p> <http://a.example/o> .
_:b1 <http://a.example/p2> <http://a.example/o2> .
_:b2 <http://a.example/p> <http://a.example/o> <http://example/graph> .
_:b2 <http://a.example/p2> <http://a.example/o2> <http://example/graph> .
blankNodePropertyList as object <s> <p> [ … ] .
{<http://a.example/s> <http://a.example/p> [ <http://a.example/p2> <http://a.example/o2> ] .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> [ <http://a.example/p2> <http://a.example/o2> ] .}
<http://a.example/s> <http://a.example/p> _:b1 .
_:b1 <http://a.example/p2> <http://a.example/o2> .
<http://a.example/s> <http://a.example/p> _:b2 <http://example/graph> .
_:b2 <http://a.example/p2> <http://a.example/o2> <http://example/graph> .
blankNodePropertyList with multiple triples [ <s> <p> ; <s2> <p2> ]
{[ <http://a.example/p1> <http://a.example/o1> ; <http://a.example/p2> <http://a.example/o2> ] <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {[ <http://a.example/p1> <http://a.example/o1> ; <http://a.example/p2> <http://a.example/o2> ] <http://a.example/p> <http://a.example/o> .}
_:b1 <http://a.example/p1> <http://a.example/o1> .
_:b1 <http://a.example/p2> <http://a.example/o2> .
_:b1 <http://a.example/p> <http://a.example/o> .
_:b2 <http://a.example/p1> <http://a.example/o1> <http://example/graph> .
_:b2 <http://a.example/p2> <http://a.example/o2> <http://example/graph> .
_:b2 <http://a.example/p> <http://a.example/o> <http://example/graph> .
nested blankNodePropertyLists [ <p1> [ <p2> <o2> ] ; <p3> <o3> ]
{[ <http://a.example/p1> [ <http://a.example/p2> <http://a.example/o2> ] ; <http://a.example/p> <http://a.example/o> ].}
<http://example/graph> {[ <http://a.example/p1> [ <http://a.example/p2> <http://a.example/o2> ] ; <http://a.example/p> <http://a.example/o> ].}
_:b1 <http://a.example/p1> _:b2 .
_:b2 <http://a.example/p2> <http://a.example/o2> .
_:b1 <http://a.example/p> <http://a.example/o> .
_:b3 <http://a.example/p1> _:b4 <http://example/graph> .
_:b4 <http://a.example/p2> <http://a.example/o2> <http://example/graph> .
_:b3 <http://a.example/p> <http://a.example/o> <http://example/graph> .
blankNodePropertyList containing collection [ <p1> ( … ) ]
{[ <http://a.example/p1> (1) ] .}
<http://example/graph> {[ <http://a.example/p1> (1) ] .}
_:b1 <http://a.example/p1> _:el1 .
_:el1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:el1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b2 <http://a.example/p1> _:el2 <http://example/graph> .
_:el2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:el2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
collection subject
{(1) <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {(1) <http://a.example/p> <http://a.example/o> .}
_:el1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:el1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:el1 <http://a.example/p> <http://a.example/o> .
_:el2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:el2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
_:el2 <http://a.example/p> <http://a.example/o> <http://example/graph> .
collection object
{<http://a.example/s> <http://a.example/p> (1) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> (1) .}
<http://a.example/s> <http://a.example/p> _:el1 .
_:el1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:el1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
<http://a.example/s> <http://a.example/p> _:el2 <http://example/graph> .
_:el2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:el2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
empty collection ()
{<http://a.example/s> <http://a.example/p> () .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> () .}
<http://a.example/s> <http://a.example/p> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
<http://a.example/s> <http://a.example/p> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
nested collection (())
{<http://a.example/s> <http://a.example/p> ((1)) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ((1)) .}
<http://a.example/s> <http://a.example/p> _:outerEl1 .
_:outerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:innerEl1 .
_:innerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:innerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:outerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
<http://a.example/s> <http://a.example/p> _:outerEl3 <http://example/graph> .
_:outerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:innerEl3 <http://example/graph> .
_:innerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:innerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
_:outerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
first, not last, non-empty nested collection
{<http://a.example/s> <http://a.example/p> ((1) 2) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ((1) 2) .}
<http://a.example/s> <http://a.example/p> _:outerEl1 .
_:outerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:innerEl1 .
_:innerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:innerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:outerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:outerEl2 .
_:outerEl2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:outerEl2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
<http://a.example/s> <http://a.example/p> _:outerEl3 <http://example/graph> .
_:outerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:innerEl3 <http://example/graph> .
_:innerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:innerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
_:outerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:outerEl4 <http://example/graph> .
_:outerEl4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:outerEl4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
last, not first, non-empty nested collection
{<http://a.example/s> <http://a.example/p> (1 (2)) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> (1 (2)) .}
<http://a.example/s> <http://a.example/p> _:outerEl1 .
_:outerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:outerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:outerEl2 .
_:outerEl2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:innerEl1 .
_:innerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:innerEl1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:outerEl2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
<http://a.example/s> <http://a.example/p> _:outerEl3 <http://example/graph> .
_:outerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:outerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:outerEl4 <http://example/graph> .
_:outerEl4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:innerEl3 <http://example/graph> .
_:innerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
_:innerEl3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
_:outerEl4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
LITERAL1 'x'
{<http://a.example/s> <http://a.example/p> 'x' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 'x' .}
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
LITERAL1_ascii_boundaries '\x00\x09\x0b\x0c\x0e\x26\x28...'
{<http://a.example/s> <http://a.example/p> ' &([]' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ' &([]' .}
<http://a.example/s> <http://a.example/p> "\u0000\u0009\u000B\u000C\u000E\u0026\u0028\u005B\u005D\u007F" .
<http://a.example/s> <http://a.example/p> "\u0000\u0009\u000B\u000C\u000E\u0026\u0028\u005B\u005D\u007F" <http://example/graph> .
LITERAL1_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'
<http://a.example/s> <http://a.example/p> '߿ࠀက쿿퀀�𐀀' .
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
LITERAL1_all_controls '\x00\x01\x02\x03\x04...'
{<http://a.example/s> <http://a.example/p> ' ' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ' ' .}
<http://a.example/s> <http://a.example/p> "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\u000B\u000C\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" .
<http://a.example/s> <http://a.example/p> "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\u000B\u000C\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" <http://example/graph> .
LITERAL1_all_punctuation '!"#$%&()...'
{<http://a.example/s> <http://a.example/p> ' !"#$%&():;<=>?@[]^_`{|}~' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ' !"#$%&():;<=>?@[]^_`{|}~' .}
<http://a.example/s> <http://a.example/p> " !\u0022#$%&():;<=>?@[]^_`{|}~" .
<http://a.example/s> <http://a.example/p> " !\u0022#$%&():;<=>?@[]^_`{|}~" <http://example/graph> .
LITERAL_LONG1 '''x'''
{<http://a.example/s> <http://a.example/p> '''x''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''x''' .}
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
LITERAL_LONG1_ascii_boundaries '\x00\x26\x28...'
{<http://a.example/s> <http://a.example/p> '&([]' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '&([]' .}
<http://a.example/s> <http://a.example/p> "\u0000\u0026\u0028\u005B\u005D\u007F" .
<http://a.example/s> <http://a.example/p> "\u0000\u0026\u0028\u005B\u005D\u007F" <http://example/graph> .
LITERAL_LONG1_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'
<http://a.example/s> <http://a.example/p> '''߿ࠀက쿿퀀�𐀀''' .
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
LITERAL_LONG1 with 1 squote '''a'b'''
{<http://a.example/s> <http://a.example/p> '''x'y''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''x'y''' .}
<http://a.example/s> <http://a.example/p> "x'y" .
<http://a.example/s> <http://a.example/p> "x'y" <http://example/graph> .
LITERAL_LONG1 with 2 squotes '''a''b'''
{<http://a.example/s> <http://a.example/p> '''x''y''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''x''y''' .}
<http://a.example/s> <http://a.example/p> "x''y" .
<http://a.example/s> <http://a.example/p> "x''y" <http://example/graph> .
LITERAL2 "x"
{<http://a.example/s> <http://a.example/p> "x" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "x" .}
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
LITERAL2_ascii_boundaries '\x00\x09\x0b\x0c\x0e\x21\x23...'
{<http://a.example/s> <http://a.example/p> " !#[]" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> " !#[]" .}
<http://a.example/s> <http://a.example/p> "\u0000\u0009\u000B\u000C\u000E\u0021\u0023\u005B\u005D\u007F" .
<http://a.example/s> <http://a.example/p> "\u0000\u0009\u000B\u000C\u000E\u0021\u0023\u005B\u005D\u007F" <http://example/graph> .
LITERAL2_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'
<http://a.example/s> <http://a.example/p> "߿ࠀက쿿퀀�𐀀" .
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
LITERAL_LONG2 """x"""
{<http://a.example/s> <http://a.example/p> """x""" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """x""" .}
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
LITERAL_LONG2_ascii_boundaries '\x00\x21\x23...'
{<http://a.example/s> <http://a.example/p> "!#[]" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "!#[]" .}
<http://a.example/s> <http://a.example/p> "\u0000\u0021\u0023\u005B\u005D\u007F" .
<http://a.example/s> <http://a.example/p> "\u0000\u0021\u0023\u005B\u005D\u007F" <http://example/graph> .
LITERAL_LONG2_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'
<http://a.example/s> <http://a.example/p> """߿ࠀက쿿퀀�𐀀""" .
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
LITERAL_LONG2 with 1 squote """a"b"""
{<http://a.example/s> <http://a.example/p> """x"y""" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """x"y""" .}
<http://a.example/s> <http://a.example/p> "x\"y" .
<http://a.example/s> <http://a.example/p> "x\"y" <http://example/graph> .
LITERAL_LONG2 with 2 squotes """a""b"""
{<http://a.example/s> <http://a.example/p> """x""y""" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """x""y""" .}
<http://a.example/s> <http://a.example/p> "x\"\"y" .
<http://a.example/s> <http://a.example/p> "x\"\"y" <http://example/graph> .
literal with CHARACTER TABULATION
{<http://a.example/s> <http://a.example/p> ' ' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ' ' .}
<http://a.example/s> <http://a.example/p> "\t" .
<http://a.example/s> <http://a.example/p> "\t" <http://example/graph> .
literal with BACKSPACE
{<http://a.example/s> <http://a.example/p> '' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '' .}
<http://a.example/s> <http://a.example/p> "\u0008" .
<http://a.example/s> <http://a.example/p> "\u0008" <http://example/graph> .
literal with LINE FEED
{<http://a.example/s> <http://a.example/p> '''
''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''
''' .}
<http://a.example/s> <http://a.example/p> "\n" .
<http://a.example/s> <http://a.example/p> "\n" <http://example/graph> .
literal with CARRIAGE RETURN
{<http://a.example/s> <http://a.example/p> '''
''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''
''' .}
<http://a.example/s> <http://a.example/p> "\r" .
<http://a.example/s> <http://a.example/p> "\r" <http://example/graph> .
literal with FORM FEED
{<http://a.example/s> <http://a.example/p> '' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '' .}
<http://a.example/s> <http://a.example/p> "\u000C" .
<http://a.example/s> <http://a.example/p> "\u000C" <http://example/graph> .
literal with REVERSE SOLIDUS
{<http://a.example/s> <http://a.example/p> '\\' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\\' .}
<http://a.example/s> <http://a.example/p> "\\" .
<http://a.example/s> <http://a.example/p> "\\" <http://example/graph> .
literal with escaped CHARACTER TABULATION
{<http://a.example/s> <http://a.example/p> '\t' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\t' .}
<http://a.example/s> <http://a.example/p> "\t" .
<http://a.example/s> <http://a.example/p> "\t" <http://example/graph> .
literal with escaped BACKSPACE
{<http://a.example/s> <http://a.example/p> '\b' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\b' .}
<http://a.example/s> <http://a.example/p> "\u0008" .
<http://a.example/s> <http://a.example/p> "\u0008" <http://example/graph> .
literal with escaped LINE FEED
{<http://a.example/s> <http://a.example/p> '\n' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\n' .}
<http://a.example/s> <http://a.example/p> "\n" .
<http://a.example/s> <http://a.example/p> "\n" <http://example/graph> .
literal with escaped CARRIAGE RETURN
{<http://a.example/s> <http://a.example/p> '\r' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\r' .}
<http://a.example/s> <http://a.example/p> "\r" .
<http://a.example/s> <http://a.example/p> "\r" <http://example/graph> .
literal with escaped FORM FEED
{<http://a.example/s> <http://a.example/p> '\f' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\f' .}
<http://a.example/s> <http://a.example/p> "\u000C" .
<http://a.example/s> <http://a.example/p> "\u000C" <http://example/graph> .
literal with numeric escape4 \u
{<http://a.example/s> <http://a.example/p> '\u006F' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\u006F' .}
<http://a.example/s> <http://a.example/p> "o" .
<http://a.example/s> <http://a.example/p> "o" <http://example/graph> .
literal with numeric escape8 \U
{<http://a.example/s> <http://a.example/p> '\U0000006F' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\U0000006F' .}
<http://a.example/s> <http://a.example/p> "o" .
<http://a.example/s> <http://a.example/p> "o" <http://example/graph> .
IRIREF datatype ""^^<t>
{<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .}
<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
prefixed name datatype ""^^p:t
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
{<http://a.example/s> <http://a.example/p> "1"^^xsd:integer .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "1"^^xsd:integer .}
<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
bareword integer
{<http://a.example/s> <http://a.example/p> 1 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1 .}
<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
bareword decimal
{<http://a.example/s> <http://a.example/p> 1.0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1.0 .}
<http://a.example/s> <http://a.example/p> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://a.example/s> <http://a.example/p> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> <http://example/graph> .
bareword double
{<http://a.example/s> <http://a.example/p> 1E0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1E0 .}
<http://a.example/s> <http://a.example/p> "1E0"^^<http://www.w3.org/2001/XMLSchema#double> .
<http://a.example/s> <http://a.example/p> "1E0"^^<http://www.w3.org/2001/XMLSchema#double> <http://example/graph> .
double lower case e
{<http://a.example/s> <http://a.example/p> 1e0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1e0 .}
<http://a.example/s> <http://a.example/p> "1e0"^^<http://www.w3.org/2001/XMLSchema#double> .
<http://a.example/s> <http://a.example/p> "1e0"^^<http://www.w3.org/2001/XMLSchema#double> <http://example/graph> .
negative numeric
{<http://a.example/s> <http://a.example/p> -1 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> -1 .}
<http://a.example/s> <http://a.example/p> "-1"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://a.example/s> <http://a.example/p> "-1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
positive numeric
{<http://a.example/s> <http://a.example/p> +1 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> +1 .}
<http://a.example/s> <http://a.example/p> "+1"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://a.example/s> <http://a.example/p> "+1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
numeric with leading 0
{<http://a.example/s> <http://a.example/p> 01 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 01 .}
<http://a.example/s> <http://a.example/p> "01"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://a.example/s> <http://a.example/p> "01"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
literal true
{<http://a.example/s> <http://a.example/p> true .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> true .}
<http://a.example/s> <http://a.example/p> "true"^^<http://www.w3.org/2001/XMLSchema#boolean> .
<http://a.example/s> <http://a.example/p> "true"^^<http://www.w3.org/2001/XMLSchema#boolean> <http://example/graph> .
literal false
{<http://a.example/s> <http://a.example/p> false .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> false .}
<http://a.example/s> <http://a.example/p> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> .
<http://a.example/s> <http://a.example/p> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> <http://example/graph> .
langtagged non-LONG "x"@en
{<http://a.example/s> <http://a.example/p> "chat"@en .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "chat"@en .}
<http://a.example/s> <http://a.example/p> "chat"@en .
<http://a.example/s> <http://a.example/p> "chat"@en <http://example/graph> .
langtagged LONG """x"""@en
{<http://a.example/s> <http://a.example/p> """chat"""@en .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """chat"""@en .}
<http://a.example/s> <http://a.example/p> "chat"@en .
<http://a.example/s> <http://a.example/p> "chat"@en <http://example/graph> .
lantag with subtag "x"@en-us
{<http://a.example/s> <http://a.example/p> "chat"@en-us .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "chat"@en-us .}
<http://a.example/s> <http://a.example/p> "chat"@en-us .
<http://a.example/s> <http://a.example/p> "chat"@en-us <http://example/graph> .
objectList with two objects … <o1>,<o2>
{<http://a.example/s> <http://a.example/p> <http://a.example/o1>, <http://a.example/o2> .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> <http://a.example/o1>, <http://a.example/o2> .}
<http://a.example/s> <http://a.example/p> <http://a.example/o1> .
<http://a.example/s> <http://a.example/p> <http://a.example/o2> .
<http://a.example/s> <http://a.example/p> <http://a.example/o1> <http://example/graph> .
<http://a.example/s> <http://a.example/p> <http://a.example/o2> <http://example/graph> .
predicateObjectList with two objectLists … <o1>,<o2>
{<http://a.example/s> <http://a.example/p1> <http://a.example/o1>; <http://a.example/p2> <http://a.example/o2> .}
<http://example/graph> {<http://a.example/s> <http://a.example/p1> <http://a.example/o1>; <http://a.example/p2> <http://a.example/o2> .}
<http://a.example/s> <http://a.example/p1> <http://a.example/o1> .
<http://a.example/s> <http://a.example/p2> <http://a.example/o2> .
<http://a.example/s> <http://a.example/p1> <http://a.example/o1> <http://example/graph> .
<http://a.example/s> <http://a.example/p2> <http://a.example/o2> <http://example/graph> .
repeated semis at end <s> <p> <o> ;; <p2> <o2> .
{<http://a.example/s> <http://a.example/p1> <http://a.example/o1>;; <http://a.example/p2> <http://a.example/o2> .}
<http://example/graph> {<http://a.example/s> <http://a.example/p1> <http://a.example/o1>;; <http://a.example/p2> <http://a.example/o2> .}
<http://a.example/s> <http://a.example/p1> <http://a.example/o1> .
<http://a.example/s> <http://a.example/p2> <http://a.example/o2> .
<http://a.example/s> <http://a.example/p1> <http://a.example/o1> <http://example/graph> .
<http://a.example/s> <http://a.example/p2> <http://a.example/o2> <http://example/graph> .
repeated semis not at end <s> <p> <o> ;;.
{<http://a.example/s> <http://a.example/p1> <http://a.example/o1>;; .}
<http://example/graph> {<http://a.example/s> <http://a.example/p1> <http://a.example/o1>;; .}
<http://a.example/s> <http://a.example/p1> <http://a.example/o1> .
<http://a.example/s> <http://a.example/p1> <http://a.example/o1> <http://example/graph> .
comment following localName
@prefix p: <http://a.example/> .
<http://a.example/s> <http://a.example/p> p:o#comment
.
<http://example/graph> {
<http://a.example/s> <http://a.example/p> <http://a.example/o>#comment
.
}
<http://a.example/s> <http://a.example/p> <http://a.example/o> .
<http://a.example/s> <http://a.example/p> <http://a.example/o> <http://example/graph> .
number sign following localName
@prefix p: <http://a.example/> .
<http://a.example/s> <http://a.example/p> p:o\#numbersign
.
<http://a.example/s> <http://a.example/p> <http://a.example/o#numbersign> .
comment following PNAME_NS
@prefix p: <http://a.example/> .
<http://a.example/s> <http://a.example/p> p:#comment
.
<http://a.example/s> <http://a.example/p> <http://a.example/> .
number sign following PNAME_NS
@prefix p: <http://a.example/>.
<http://a.example/s> <http://a.example/p> p:\#numbersign
.
<http://a.example/s> <http://a.example/p> <http://a.example/#numbersign> .
REVERSE SOLIDUS at end of LITERAL_LONG2
@prefix : <http://example.org/ns#> .
{:s :p1 """test-\\""" .}
<http://example/graph> {:s :p1 """test-\\""" .}
<http://example.org/ns#s> <http://example.org/ns#p1> "test-\\" .
<http://example.org/ns#s> <http://example.org/ns#p1> "test-\\" <http://example/graph> .
Bad number format (negative test)
{<http://example.org/resource> <http://example.org#pred> "value"@en^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .}
two LITERAL_LONG2s testing quote delimiter overrun
# Test long literal twice to ensure it does not over-quote
@prefix : <http://example.org/ex#> .
{
:a :b """first long literal""" .
:c :d """second long literal""" .
}
<http://example.org/ex#a> <http://example.org/ex#b> "first long literal" .
<http://example.org/ex#c> <http://example.org/ex#d> "second long literal" .
langtagged LONG with subtag """Cheers"""@en-UK
# Test long literal with lang tag
@prefix : <http://example.org/ex#> .
{:a :b """Cheers"""@en-UK .}
<http://example/graph> {:a :b """Cheers"""@en-UK .}
<http://example.org/ex#a> <http://example.org/ex#b> "Cheers"@en-UK .
<http://example.org/ex#a> <http://example.org/ex#b> "Cheers"@en-UK <http://example/graph> .
Empty file
Only comment
#Empty file.
One comment, one empty line
#One comment, one empty line.
Only IRIs
{<http://example/s> <http://example/p> <http://example/o> .}
IRIs with Unicode escape
# x53 is capital S
{<http://example/\u0053> <http://example/p> <http://example/o> .}
IRIs with long Unicode escape
# x53 is capital S
{<http://example/\U00000053> <http://example/p> <http://example/o> .}
Legal IRIs
# IRI with all chars in it.
{<http://example/s> <http://example/p>
<scheme:!$%25&'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> .}
@base
@base <http://example/> .
BASE
BASE <http://example/>
@base with relative IRIs
@base <http://example/> .
{<s> <p> <o> .}
base with relative IRIs
base <http://example/>
{<s> <p> <o> .}
@prefix
@prefix : <http://example/> .
PreFIX
PreFIX : <http://example/>
Empty PREFIX
PREFIX : <http://example/>
{:s :p :123 .}
Empty @prefix with % escape
@prefix : <http://example/> .
{:s :p :%20 .}
@prefix with no suffix
@prefix : <http://example/> .
{: : : .}
colon is a legal pname character
# colon is a legal pname character
@prefix : <http://example/> .
@prefix x: <http://example/> .
{:a:b:c x:d:e:f :::: .}
dash is a legal pname character
# dash is a legal pname character
@prefix x: <http://example/> .
{x:a-b-c x:p x:o .}
underscore is a legal pname character
# underscore is a legal pname character
@prefix x: <http://example/> .
{x:_ x:p_1 x:o .}
percents in pnames
# percents
@prefix : <http://example/> .
@prefix x: <http://example/> .
{:a%3E x:%25 :a%3Eb .}
string literal
{<http://example/s> <http://example/p> "string" .}
langString literal
{<http://example/s> <http://example/p> "string"@en .}
langString literal with region
{<http://example/s> <http://example/p> "string"@en-uk .}
squote string literal
{<http://example/s> <http://example/p> 'string' .}
squote langString literal
{<http://example/s> <http://example/p> 'string'@en .}
squote langString literal with region
{<http://example/s> <http://example/p> 'string'@en-uk .}
long string literal with embedded single- and double-quotes
{<http://example/s> <http://example/p> """abc""def''ghi""" .}
long string literal with embedded newline
{<http://example/s> <http://example/p> """abc
def""" .}
squote long string literal with embedded single- and double-quotes
{<http://example/s> <http://example/p> '''abc
def''' .}
long langString literal with embedded newline
{<http://example/s> <http://example/p> """abc
def"""@en .}
squote long langString literal with embedded newline
{<http://example/s> <http://example/p> '''abc
def'''@en .}
string literal with escaped newline
{<http://example/s> <http://example/p> "a\n" .}
string literal with Unicode escape
{<http://example/s> <http://example/p> "a\u0020b" .}
string literal with long Unicode escape
{<http://example/s> <http://example/p> "a\U00000020b" .}
pname with back-slash escapes
@prefix : <http://example/> .
{:s :p :\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\_\%AA .}
pname with back-slash escapes (2)
@prefix : <http://example/> .
{:s :p :0123\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\_\%AA123 .}
pname with back-slash escapes (3)
@prefix : <http://example/> .
{:xyz\~ :abc\.: : .}
bnode subject
@prefix : <http://example/> .
{[] :p :o .}
bnode object
@prefix : <http://example/> .
{:s :p [] .}
bnode property list object
@prefix : <http://example/> .
{:s :p [ :q :o ] .}
bnode property list object (2)
@prefix : <http://example/> .
{:s :p [ :q1 :o1 ; :q2 :o2 ] .}
bnode property list subject
@prefix : <http://example/> .
{[ :q1 :o1 ; :q2 :o2 ] :p :o .}
labeled bnode subject
@prefix : <http://example/> .
{_:a :p :o .}
labeled bnode subject and object
@prefix : <http://example/> .
{:s :p _:a .
_:a :p :o .
}
bare bnode property list
@prefix : <http://example/> .
{[ :p :o ] .}
bnode property list
@prefix : <http://example/> .
{[ :p :o1,:2 ] .
:s :p :o .}
mixed bnode property list and triple
@prefix : <http://example/> .
{
:s1 :p :o .
[ :p1 :o1 ; :p2 :o2 ] .
:s2 :p :o .
}
integer literal
{<s> <p> 123 .}
negative integer literal
{<s> <p> -123 .}
positive integer literal
{<s> <p> +123 .}
decimal literal
# This is a decimal.
{<s> <p> 123.0 . }
decimal literal (no leading digits)
# This is a decimal.
{<s> <p> .1 . }
negative decimal literal
# This is a decimal.
{<s> <p> -123.0 . }
positive decimal literal
# This is a decimal.
{<s> <p> +123.0 . }
integer literal with decimal lexical confusion
# This is an integer
{<s> <p> 123.}
double literal
{<s> <p> 123.0e1 .}
negative double literal
{<s> <p> -123e-1 .}
double literal no fraction
{<s> <p> 123.E+1 .}
xsd:byte literal
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
{<s> <p> "123"^^xsd:byte .}
integer as xsd:string
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
{<s> <p> "123"^^xsd:string .}
boolean literal (true)
{<s> <p> true .}
boolean literal (false)
{<s> <p> false .}
'a' as keyword
@prefix : <http://example/> .
{:s a :C .}
object list
@prefix : <http://example/> .
{:s :p :o1 , :o2 .}
predicate list with object list
@prefix : <http://example/> .
{:s :p1 :o1 ;
:p2 :o2 .
}
predicate list with object list and dangling ';'
@prefix : <http://example/> .
{:s :p1 :o1 ;
:p2 :o2 ;
.
}
predicate list with multiple ;;
@prefix : <http://example/> .
{:s :p1 :o1 ;;
:p2 :o2
.
}
predicate list with multiple ;;
@prefix : <http://example/> .
{:s :p1 :o1 ;
:p2 :o2 ;;
.
}
empty list
@prefix : <http://example/> .
{:s :p () .}
mixed list
@prefix : <http://example/> .
{:s :p (1 "2" :o) .}
isomorphic list as subject and object
@prefix : <http://example/> .
{(1) :p (1) .}
lists of lists
@prefix : <http://example/> .
{(()) :p (()) .}
mixed lists with embedded lists
@prefix : <http://example/> .
{(1 2 (1 2)) :p (( "a") "b" :o) .}
Bad IRI : space (negative test)
# Bad IRI : space.
{<http://example/ space> <http://example/p> <http://example/o> .}
Bad IRI : bad escape (negative test)
# Bad IRI : bad escape
{<http://example/\u00ZZ11> <http://example/p> <http://example/o> .}
Bad IRI : bad long escape (negative test)
# Bad IRI : bad escape
{<http://example/\U00ZZ1111> <http://example/p> <http://example/o> .}
Bad IRI : character escapes not allowed (negative test)
# Bad IRI : character escapes not allowed.
{<http://example/\n> <http://example/p> <http://example/o> .}
Bad IRI : character escapes not allowed (2) (negative test)
# Bad IRI : character escapes not allowed.
{<http://example/\/> <http://example/p> <http://example/o> .}
No prefix (negative test)
# No prefix
{:s <http://example/p> "x" .}
No prefix (2) (negative test)
# No prefix
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
{<http://example/s> rdf:type :C .}
@prefix without URI (negative test)
# @prefix without URI.
@prefix ex: .
@prefix without prefix name (negative test)
# @prefix without prefix name .
@prefix <http://example/> .
@prefix without ':' (negative test)
# @prefix without :
@prefix x <http://example/> .
@base without URI (negative test)
# @base without URI.
@base .
@base in wrong case (negative test)
# @base in wrong case.
@BASE <http://example/> .
BASE without URI (negative test)
# FULL STOP used after SPARQL BASE
BASE <http://example/> .
{<s> <p> <o> .}
Turtle is not N3 (negative test)
# TriG is not N3
<http://example/s> = <http://example/o> .
Turtle is not NQuads (negative test)
# TriG is not NQuads
<http://example/s> <http://example/p> <http://example/o> <http://example/graph> .
Turtle does not allow literals-as-subjects (negative test)
# TriG does not allow literals-as-subjects
{"hello" <http://example/p> <http://example/o> .}
Turtle does not allow literals-as-predicates (negative test)
# TriG does not allow literals-as-predicates
{<http://example/s> "hello" <http://example/o> .}
Turtle does not allow bnodes-as-predicates (negative test)
# TriG does not allow bnodes-as-predicates
{<http://example/s> [] <http://example/o> .}
Turtle does not allow labeled bnodes-as-predicates (negative test)
# TriG does not allow bnodes-as-predicates
{<http://example/s> _:p <http://example/o> .}
'A' is not a keyword (negative test)
@prefix : <http://example/> .
{:s A :C .}
'a' cannot be used as subject (negative test)
@prefix : <http://example/> .
{a :p :o .}
'a' cannot be used as object (negative test)
@prefix : <http://example/> .
{:s :p a .}
'true' cannot be used as subject (negative test)
@prefix : <http://example/> .
{true :p :o .}
'true' cannot be used as object (negative test)
@prefix : <http://example/> .
{:s true :o .}
{} fomulae not in Turtle (negative test)
# {} formulae not in Turtle
@prefix : <http://example/> .
{ :a :q :c . } :p :z .
= is not Turtle (negative test)
# = is not Turtle
@prefix : <http://example/> .
{:a = :b .}
N3 paths not in Turtle (negative test)
# N3 paths
@prefix : <http://example/> .
@prefix ns: <http://example/p#> .
{
:x.
ns:p.
ns:q :p :z .
}
N3 paths not in Turtle (negative test)
# N3 paths
@prefix : <http://example/> .
@prefix ns: <http://example/p#> .
{:x^ns:p :p :z .}
N3 is...of not in Turtle (negative test)
# N3 is...of
@prefix : <http://example/> .
{:z is :p of :x .}
N3 paths not in Turtle (negative test)
# = is not Turtle
@prefix : <http://example/> .
{:a.:b.:c .}
@keywords is not Turtle (negative test)
# @keywords is not Turtle
@keywords a .
{x a Item .}
@keywords is not Turtle (negative test)
# @keywords is not Turtle
@keywords a .
{x a Item .}
=> is not Turtle (negative test)
# => is not Turtle
@prefix : <http://example/> .
{:s => :o .}
<= is not Turtle (negative test)
# <= is not Turtle
@prefix : <http://example/> .
{:s <= :o .}
@forSome is not Turtle (negative test)
# @forSome is not Turtle
@prefix : <http://example/> .
@forSome :x .
@forAll is not Turtle (negative test)
# @forAll is not Turtle
@prefix : <http://example/> .
@forAll :x .
@keywords is not Turtle (negative test)
# @keywords is not Turtle
@keywords .
{x @a Item .}
extra '.' (negative test)
# Too many DOTs
{<http://example/s> <http://example/p> <http://example/o> . .}
extra '.' (negative test)
# Too many DOTs
{
<http://example/s> <http://example/p> <http://example/o> . .
<http://example/s1> <http://example/p1> <http://example/o1> .
}
subject, predicate, no object (negative test)
{<http://example/s> }
subject, predicate, no object (negative test)
{<http://example/s> <http://example/p> }
literal as subject (negative test)
# Literal as subject
{"abc" <http://example/p> <http://example/p> .}
literal as predicate (negative test)
# Literal as predicate
{<http://example/s> "abc" <http://example/p> .}
bnode as predicate (negative test)
# BNode as predicate
{<http://example/s> [] <http://example/p> .}
labeled bnode as predicate (negative test)
# BNode as predicate
{<http://example/s> _:a <http://example/p> .}
langString with bad lang (negative test)
# Bad lang tag
{<http://example/s> <http://example/p> "string"@1 .}
Bad string escape (negative test)
# Bad string escape
{<http://example/s> <http://example/p> "a\zb" .}
Bad string escape (negative test)
# Bad string escape
{<http://example/s> <http://example/p> "\uWXYZ" .}
Bad string escape (negative test)
# Bad string escape
{<http://example/s> <http://example/p> "\U0000WXYZ" .}
Bad string escape (negative test)
# Bad string escape
{<http://example/s> <http://example/p> "\U0000WXYZ" .}
'~' must be escaped in pname (negative test)
# ~ must be escaped.
@prefix : <http://example/> .
{:a~b :p :o .}
Bad %-sequence in pname (negative test)
# Bad %-sequence
@prefix : <http://example/> .
{:a%2 :p :o .}
Bad unicode escape in pname (negative test)
# No \u (x39 is "9")
@prefix : <http://example/> .
{:a\u0039 :p :o .}
mismatching string literal open/close (negative test)
@prefix : <http://example/> .
{:s :p "abc' .}
mismatching string literal open/close (negative test)
@prefix : <http://example/> .
{:s :p 'abc" .}
mismatching string literal long/short (negative test)
@prefix : <http://example/> .
{:s :p '''abc' .}
mismatching long string literal open/close (negative test)
@prefix : <http://example/> .
{:s :p """abc''' .}
Long literal with missing end (negative test)
# Long literal with missing end
@prefix : <http://example/> .
{
:s :p """abc
def
}
Long literal with extra quote (negative test)
# Long literal with 4"
@prefix : <http://example/> .
{:s :p """abc""""@en .}
Long literal with extra squote (negative test)
# Long literal with 4'
@prefix : <http://example/> .
{:s :p '''abc''''@en .}
Bad number format (negative test)
{<http://example/s> <http://example/p> 123.abc .}
Bad number format (negative test)
{<http://example/s> <http://example/p> 123e .}
Bad number format (negative test)
{<http://example/s> <http://example/p> 123abc .}
Bad number format (negative test)
{<http://example/s> <http://example/p> 0x123 .}
Bad number format (negative test)
{<http://example/s> <http://example/p> +-1 .}
triple with IRIs
{<http://example/s> <http://example/p> <http://example/o> .}
<http://example/graph> {<http://example/s> <http://example/p> <http://example/o> .}
<http://example/s> <http://example/p> <http://example/o> .
<http://example/s> <http://example/p> <http://example/o> <http://example/graph> .
triple with IRIs and embedded whitespace
{
<http://example/s>
<http://example/p1> <http://example/o1> ;
<http://example/p2> <http://example/o2> ;
.
}
<http://example/graph> {
<http://example/s>
<http://example/p1> <http://example/o1> ;
<http://example/p2> <http://example/o2> ;
.
}
<http://example/s> <http://example/p1> <http://example/o1> .
<http://example/s> <http://example/p2> <http://example/o2> .
<http://example/s> <http://example/p1> <http://example/o1> <http://example/graph> .
<http://example/s> <http://example/p2> <http://example/o2> <http://example/graph> .
Blank subject
@prefix : <#> .
{[] :x :y .}
<http://example/graph> {[] :x :y .}
_:genid1 <http://www.w3.org/2013/TriGTests/trig-subm-01.trig#x> <http://www.w3.org/2013/TriGTests/trig-subm-01.trig#y> .
_:genid2 <http://www.w3.org/2013/TriGTests/trig-subm-01.trig#x> <http://www.w3.org/2013/TriGTests/trig-subm-01.trig#y> <http://example/graph> .
@prefix and qnames
# Test @prefix and qnames
@prefix : <http://example.org/base1#> .
@prefix a: <http://example.org/base2#> .
@prefix b: <http://example.org/base3#> .
{
:a :b :c .
a:a a:b a:c .
:a a:a b:a .
}
<http://example/graph> {
:a :b :c .
a:a a:b a:c .
:a a:a b:a .
}
<http://example.org/base1#a> <http://example.org/base1#b> <http://example.org/base1#c> .
<http://example.org/base2#a> <http://example.org/base2#b> <http://example.org/base2#c> .
<http://example.org/base1#a> <http://example.org/base2#a> <http://example.org/base3#a> .
<http://example.org/base1#a> <http://example.org/base1#b> <http://example.org/base1#c> <http://example/graph> .
<http://example.org/base2#a> <http://example.org/base2#b> <http://example.org/base2#c> <http://example/graph> .
<http://example.org/base1#a> <http://example.org/base2#a> <http://example.org/base3#a> <http://example/graph> .
, operator
# Test , operator
@prefix : <http://example.org/base#> .
{
:a :b :c,
:d,
:e .
}
<http://example/graph> {
:a :b :c,
:d,
:e .
}
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#c> .
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#d> .
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#e> .
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#c> <http://example/graph> .
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#d> <http://example/graph> .
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#e> <http://example/graph> .
; operator
# Test ; operator
@prefix : <http://example.org/base#> .
{
:a :b :c ;
:d :e ;
:f :g .
}
<http://example/graph> {
:a :b :c ;
:d :e ;
:f :g .
}
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#c> .
<http://example.org/base#a> <http://example.org/base#d> <http://example.org/base#e> .
<http://example.org/base#a> <http://example.org/base#f> <http://example.org/base#g> .
<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#c> <http://example/graph> .
<http://example.org/base#a> <http://example.org/base#d> <http://example.org/base#e> <http://example/graph> .
<http://example.org/base#a> <http://example.org/base#f> <http://example.org/base#g> <http://example/graph> .
empty [] as subject and object
# Test empty [] operator; not allowed as predicate
@prefix : <http://example.org/base#> .
{
[] :a :b .
:c :d [] .
}
<http://example/graph> {
[] :a :b .
:c :d [] .
}
_:genid1 <http://example.org/base#a> <http://example.org/base#b> .
<http://example.org/base#c> <http://example.org/base#d> _:genid2 .
_:genid3 <http://example.org/base#a> <http://example.org/base#b> <http://example/graph> .
<http://example.org/base#c> <http://example.org/base#d> _:genid4 <http://example/graph> .
non-empty [] as subject and object
# Test non empty [] operator; not allowed as predicate
@prefix : <http://example.org/base#> .
{
[ :a :b ] :c :d .
:e :f [ :g :h ] .
}
<http://example/graph> {
[ :a :b ] :c :d .
:e :f [ :g :h ] .
}
_:genid1 <http://example.org/base#a> <http://example.org/base#b> .
_:genid1 <http://example.org/base#c> <http://example.org/base#d> .
_:genid2 <http://example.org/base#g> <http://example.org/base#h> .
<http://example.org/base#e> <http://example.org/base#f> _:genid2 .
_:genid3 <http://example.org/base#a> <http://example.org/base#b> <http://example/graph> .
_:genid3 <http://example.org/base#c> <http://example.org/base#d> <http://example/graph> .
_:genid4 <http://example.org/base#g> <http://example.org/base#h> <http://example/graph> .
<http://example.org/base#e> <http://example.org/base#f> _:genid4 <http://example/graph> .
'a' as predicate
# 'a' only allowed as a predicate
@prefix : <http://example.org/base#> .
{:a a :b .}
<http://example/graph> {:a a :b .}
<http://example.org/base#a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/base#b> .
<http://example.org/base#a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/base#b> <http://example/graph> .
simple collection
@prefix : <http://example.org/stuff/1.0/> .
{:a :b ( "apple" "banana" ) .}
<http://example/graph> {:a :b ( "apple" "banana" ) .}
_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "banana" .
_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "apple" .
_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid1 .
<http://example.org/stuff/1.0/a> <http://example.org/stuff/1.0/b> _:genid2 .
_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "banana" <http://example/graph> .
_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
_:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "apple" <http://example/graph> .
_:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid3 <http://example/graph> .
<http://example.org/stuff/1.0/a> <http://example.org/stuff/1.0/b> _:genid4 <http://example/graph> .
empty collection
@prefix : <http://example.org/stuff/1.0/> .
{:a :b ( ) .}
<http://example/graph> {:a :b ( ) .}
<http://example.org/stuff/1.0/a> <http://example.org/stuff/1.0/b> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
<http://example.org/stuff/1.0/a> <http://example.org/stuff/1.0/b> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> <http://example/graph> .
integer datatyped literal
# Test integer datatyped literals using an OWL cardinality constraint
@prefix owl: <http://www.w3.org/2002/07/owl#> .
# based on examples in the OWL Reference
{
_:hasParent a owl:ObjectProperty .
[] a owl:Restriction ;
owl:onProperty _:hasParent ;
owl:maxCardinality 2 .
}
<http://example/graph> {
_:hasParent a owl:ObjectProperty .
[] a owl:Restriction ;
owl:onProperty _:hasParent ;
owl:maxCardinality 2 .
}
_:hasParent <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
_:genid1 <http://www.w3.org/2002/07/owl#onProperty> _:hasParent .
_:genid1 <http://www.w3.org/2002/07/owl#maxCardinality> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
_:hasParent <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> <http://example/graph> .
_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> <http://example/graph> .
_:genid3 <http://www.w3.org/2002/07/owl#onProperty> _:hasParent <http://example/graph> .
_:genid3 <http://www.w3.org/2002/07/owl#maxCardinality> "2"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
decimal integer canonicalization
{
<http://example.org/res1> <http://example.org/prop1> 000000 .
<http://example.org/res2> <http://example.org/prop2> 0 .
<http://example.org/res3> <http://example.org/prop3> 000001 .
<http://example.org/res4> <http://example.org/prop4> 2 .
<http://example.org/res5> <http://example.org/prop5> 4 .
}
<http://example/graph> {
<http://example.org/res1> <http://example.org/prop1> 000000 .
<http://example.org/res2> <http://example.org/prop2> 0 .
<http://example.org/res3> <http://example.org/prop3> 000001 .
<http://example.org/res4> <http://example.org/prop4> 2 .
<http://example.org/res5> <http://example.org/prop5> 4 .
}
<http://example.org/res1> <http://example.org/prop1> "000000"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://example.org/res2> <http://example.org/prop2> "0"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://example.org/res3> <http://example.org/prop3> "000001"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://example.org/res4> <http://example.org/prop4> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://example.org/res5> <http://example.org/prop5> "4"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://example.org/res1> <http://example.org/prop1> "000000"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
<http://example.org/res2> <http://example.org/prop2> "0"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
<http://example.org/res3> <http://example.org/prop3> "000001"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
<http://example.org/res4> <http://example.org/prop4> "2"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
<http://example.org/res5> <http://example.org/prop5> "4"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
- and _ in names and qnames
# Tests for - and _ in names, qnames
@prefix ex1: <http://example.org/ex1#> .
@prefix ex-2: <http://example.org/ex2#> .
@prefix ex3_: <http://example.org/ex3#> .
@prefix ex4-: <http://example.org/ex4#> .
{
ex1:foo-bar ex1:foo_bar "a" .
ex-2:foo-bar ex-2:foo_bar "b" .
ex3_:foo-bar ex3_:foo_bar "c" .
ex4-:foo-bar ex4-:foo_bar "d" .
}
<http://example/graph> {
ex1:foo-bar ex1:foo_bar "a" .
ex-2:foo-bar ex-2:foo_bar "b" .
ex3_:foo-bar ex3_:foo_bar "c" .
ex4-:foo-bar ex4-:foo_bar "d" .
}
<http://example.org/ex1#foo-bar> <http://example.org/ex1#foo_bar> "a" .
<http://example.org/ex2#foo-bar> <http://example.org/ex2#foo_bar> "b" .
<http://example.org/ex3#foo-bar> <http://example.org/ex3#foo_bar> "c" .
<http://example.org/ex4#foo-bar> <http://example.org/ex4#foo_bar> "d" .
<http://example.org/ex1#foo-bar> <http://example.org/ex1#foo_bar> "a" <http://example/graph> .
<http://example.org/ex2#foo-bar> <http://example.org/ex2#foo_bar> "b" <http://example/graph> .
<http://example.org/ex3#foo-bar> <http://example.org/ex3#foo_bar> "c" <http://example/graph> .
<http://example.org/ex4#foo-bar> <http://example.org/ex4#foo_bar> "d" <http://example/graph> .
tests for rdf:_<numbers> and other qnames starting with _
# Tests for rdf:_<numbers> and other qnames starting with _
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ex: <http://example.org/ex#> .
@prefix : <http://example.org/myprop#> .
{
ex:foo rdf:_1 "1" .
ex:foo rdf:_2 "2" .
ex:foo :_abc "def" .
ex:foo :_345 "678" .
}
<http://example/graph> {
ex:foo rdf:_1 "1" .
ex:foo rdf:_2 "2" .
ex:foo :_abc "def" .
ex:foo :_345 "678" .
}
<http://example.org/ex#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "1" .
<http://example.org/ex#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> "2" .
<http://example.org/ex#foo> <http://example.org/myprop#_abc> "def" .
<http://example.org/ex#foo> <http://example.org/myprop#_345> "678" .
<http://example.org/ex#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "1" <http://example/graph> .
<http://example.org/ex#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> "2" <http://example/graph> .
<http://example.org/ex#foo> <http://example.org/myprop#_abc> "def" <http://example/graph> .
<http://example.org/ex#foo> <http://example.org/myprop#_345> "678" <http://example/graph> .
bare : allowed
# Test for : allowed
@prefix : <http://example.org/ron> .
{
[] : [] .
: : : .
}
<http://example/graph> {
[] : [] .
: : : .
}
_:genid1 <http://example.org/ron> _:genid2 .
<http://example.org/ron> <http://example.org/ron> <http://example.org/ron> .
_:genid3 <http://example.org/ron> _:genid4 <http://example/graph> .
<http://example.org/ron> <http://example.org/ron> <http://example.org/ron> <http://example/graph> .
simple long literal
# Test long literal
@prefix : <http://example.org/ex#> .
{
:a :b """a long
literal
with
newlines""" .
}
<http://example/graph> {
:a :b """a long
literal
with
newlines""" .
}
<http://example.org/ex#a> <http://example.org/ex#b> "a long\n\tliteral\nwith\nnewlines" .
<http://example.org/ex#a> <http://example.org/ex#b> "a long\n\tliteral\nwith\nnewlines" <http://example/graph> .
long literals with escapes
@prefix : <http://example.org/foo#> .
{
## \U00015678 is a not a legal codepoint
## :a :b """\nthis \ris a \U00015678long\t
## literal\uABCD
## """ .
##
## :d :e """\tThis \uABCDis\r \U00015678another\n
## one
## """ .
# \U00015678 is a not a legal codepoint
# \U00012451 in Cuneiform numeric ban 3
:a :b """\nthis \ris a \U00012451long\t
literal\uABCD
""" .
:d :e """\tThis \uABCDis\r \U00012451another\n
one
""" .
}
<http://example/graph> {
## \U00015678 is a not a legal codepoint
## :a :b """\nthis \ris a \U00015678long\t
## literal\uABCD
## """ .
##
## :d :e """\tThis \uABCDis\r \U00015678another\n
## one
## """ .
# \U00015678 is a not a legal codepoint
# \U00012451 in Cuneiform numeric ban 3
:a :b """\nthis \ris a \U00012451long\t
literal\uABCD
""" .
:d :e """\tThis \uABCDis\r \U00012451another\n
one
""" .
}
<http://example.org/foo#a> <http://example.org/foo#b> "\nthis \ris a \U00012451long\t\nliteral\uABCD\n" .
<http://example.org/foo#d> <http://example.org/foo#e> "\tThis \uABCDis\r \U00012451another\n\none\n" .
<http://example.org/foo#a> <http://example.org/foo#b> "\nthis \ris a \U00012451long\t\nliteral\uABCD\n" <http://example/graph> .
<http://example.org/foo#d> <http://example.org/foo#e> "\tThis \uABCDis\r \U00012451another\n\none\n" <http://example/graph> .
floating point number
@prefix : <http://example.org/#> .
{:a :b 1.0 .}
<http://example/graph> {:a :b 1.0 .}
<http://example.org/#a> <http://example.org/#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/#a> <http://example.org/#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> <http://example/graph> .
empty literals, normal and long variant
@prefix : <http://example.org/#> .
{
:a :b "" .
:c :d """""" .
}
<http://example/graph> {
:a :b "" .
:c :d """""" .
}
<http://example.org/#a> <http://example.org/#b> "" .
<http://example.org/#c> <http://example.org/#d> "" .
<http://example.org/#a> <http://example.org/#b> "" <http://example/graph> .
<http://example.org/#c> <http://example.org/#d> "" <http://example/graph> .
positive integer, decimal and doubles
@prefix : <http://example.org#> .
{
:a :b 1.0 .
:c :d 1 .
:e :f 1.0e0 .
}
<http://example/graph> {
:a :b 1.0 .
:c :d 1 .
:e :f 1.0e0 .
}
<http://example.org#a> <http://example.org#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org#c> <http://example.org#d> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://example.org#e> <http://example.org#f> "1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> .
<http://example.org#a> <http://example.org#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> <http://example/graph> .
<http://example.org#c> <http://example.org#d> "1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
<http://example.org#e> <http://example.org#f> "1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> <http://example/graph> .
negative integer, decimal and doubles
@prefix : <http://example.org#> .
{
:a :b -1.0 .
:c :d -1 .
:e :f -1.0e0 .
}
<http://example/graph> {
:a :b -1.0 .
:c :d -1 .
:e :f -1.0e0 .
}
<http://example.org#a> <http://example.org#b> "-1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org#c> <http://example.org#d> "-1"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://example.org#e> <http://example.org#f> "-1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> .
<http://example.org#a> <http://example.org#b> "-1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> <http://example/graph> .
<http://example.org#c> <http://example.org#d> "-1"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example/graph> .
<http://example.org#e> <http://example.org#f> "-1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> <http://example/graph> .
long literal ending in double quote
# Test long literal
@prefix : <http://example.org/ex#> .
{:a :b """John said: "Hello World!\"""" .}
<http://example/graph> {:a :b """John said: "Hello World!\"""" .}
<http://example.org/ex#a> <http://example.org/ex#b> "John said: \"Hello World!\"" .
<http://example.org/ex#a> <http://example.org/ex#b> "John said: \"Hello World!\"" <http://example/graph> .
boolean literals
@prefix : <http://example.org#> .
{
:a :b true .
:c :d false .
}
<http://example/graph> {
:a :b true .
:c :d false .
}
<http://example.org#a> <http://example.org#b> "true"^^<http://www.w3.org/2001/XMLSchema#boolean> .
<http://example.org#c> <http://example.org#d> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> .
<http://example.org#a> <http://example.org#b> "true"^^<http://www.w3.org/2001/XMLSchema#boolean> <http://example/graph> .
<http://example.org#c> <http://example.org#d> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> <http://example/graph> .
comments
# comment test
@prefix : <http://example.org/#> .
{
:a :b :c . # end of line comment
:d # ignore me
:e # and me
:f # and me
.
:g :h #ignore me
:i, # and me
:j . # and me
:k :l :m ; #ignore me
:n :o ; # and me
:p :q . # and me
}
<http://example/graph> {
:a :b :c . # end of line comment
:d # ignore me
:e # and me
:f # and me
.
:g :h #ignore me
:i, # and me
:j . # and me
:k :l :m ; #ignore me
:n :o ; # and me
:p :q . # and me
}
<http://example.org/#a> <http://example.org/#b> <http://example.org/#c> .
<http://example.org/#d> <http://example.org/#e> <http://example.org/#f> .
<http://example.org/#g> <http://example.org/#h> <http://example.org/#i> .
<http://example.org/#g> <http://example.org/#h> <http://example.org/#j> .
<http://example.org/#k> <http://example.org/#l> <http://example.org/#m> .
<http://example.org/#k> <http://example.org/#n> <http://example.org/#o> .
<http://example.org/#k> <http://example.org/#p> <http://example.org/#q> .
<http://example.org/#a> <http://example.org/#b> <http://example.org/#c> <http://example/graph> .
<http://example.org/#d> <http://example.org/#e> <http://example.org/#f> <http://example/graph> .
<http://example.org/#g> <http://example.org/#h> <http://example.org/#i> <http://example/graph> .
<http://example.org/#g> <http://example.org/#h> <http://example.org/#j> <http://example/graph> .
<http://example.org/#k> <http://example.org/#l> <http://example.org/#m> <http://example/graph> .
<http://example.org/#k> <http://example.org/#n> <http://example.org/#o> <http://example/graph> .
<http://example.org/#k> <http://example.org/#p> <http://example.org/#q> <http://example/graph> .
no final mewline
# comment line with no final newline test
@prefix : <http://example.org/#> .
{:a :b :c .}
<http://example/graph> {:a :b :c .}
#foo
<http://example.org/#a> <http://example.org/#b> <http://example.org/#c> .
<http://example.org/#a> <http://example.org/#b> <http://example.org/#c> <http://example/graph> .
repeating a @prefix changes pname definition
@prefix foo: <http://example.org/foo#> .
@prefix foo: <http://example.org/bar#> .
{foo:blah foo:blah foo:blah .}
<http://example/graph> {foo:blah foo:blah foo:blah .}
<http://example.org/bar#blah> <http://example.org/bar#blah> <http://example.org/bar#blah> .
<http://example.org/bar#blah> <http://example.org/bar#blah> <http://example.org/bar#blah> <http://example/graph> .
Variations on decimal canonicalization
{
<http://example.org/foo> <http://example.org/bar> "2.345"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1."^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1.000000000"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.3"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1.2345678901234567890123457890"^^<http://www.w3.org/2001/XMLSchema#decimal> .
}
<http://example.org/foo> <http://example.org/bar> "2.345"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1."^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1.000000000"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.3"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.234000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.2340000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "2.23400000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
<http://example.org/foo> <http://example.org/bar> "1.2345678901234567890123457890"^^<http://www.w3.org/2001/XMLSchema#decimal> .
Repeating @base changes base for relative IRI lookup
# In-scope base URI is <http://www.w3.org/2013/TriGTests/trig-subm-27.trig> at this point
{<a1> <b1> <c1> .}
@base <http://example.org/ns/> .
# In-scope base URI is http://example.org/ns/ at this point
{<a2> <http://example.org/ns/b2> <c2> .}
@base <foo/> .
# In-scope base URI is http://example.org/ns/foo/ at this point
{<a3> <b3> <c3> .}
@prefix : <bar#> .
{:a4 :b4 :c4 .}
@prefix : <http://example.org/ns2#> .
{:a5 :b5 :c5 .}
<http://www.w3.org/2013/TriGTests/a1> <http://www.w3.org/2013/TriGTests/b1> <http://www.w3.org/2013/TriGTests/c1> .
<http://example.org/ns/a2> <http://example.org/ns/b2> <http://example.org/ns/c2> .
<http://example.org/ns/foo/a3> <http://example.org/ns/foo/b3> <http://example.org/ns/foo/c3> .
<http://example.org/ns/foo/bar#a4> <http://example.org/ns/foo/bar#b4> <http://example.org/ns/foo/bar#c4> .
<http://example.org/ns2#a5> <http://example.org/ns2#b5> <http://example.org/ns2#c5> .
Bad IRI : good escape, bad charcater (negative evaluation test)
# Bad IRI : good escape, bad charcater
{<http://example/\u0020> <http://example/p> <http://example/o> .}
Bad IRI : hex 3C is < (negative evaluation test)
# Bad IRI : hex 3C is <
{<http://example/\u003C> <http://example/p> <http://example/o> .}
Bad IRI : hex 3E is (negative evaluation test)
# Bad IRI : hex 3E is >
{<http://example/\u003E> <http://example/p> <http://example/o> .}
Bad IRI : {abc} (negative evaluation test)
# Bad IRI
{<http://example/{abc}> <http://example/p> <http://example/o> .}
Blank node label must not end in dot
@prefix : <http://example/> .
{_:b1. :p :o .}
Local name must not begin with dash
@prefix : <http://example/> .
{:s :p :-o .}
Bad hex escape at start of local name
@prefix : <http://example/> .
{:s :p :%2o .}
Bad hex escape in local name
@prefix : <http://example/> .
{:s :p :o%2 .}
Prefix must not end in dot (error in triple, not prefix directive like trig-syntax-bad-ns-dot-end)
{valid:s valid:p invalid.:o .}
Prefix must not start with dot (error in triple, not prefix directive like trig-syntax-bad-ns-dot-end)
{.undefined:s .undefined:p .undefined:o .}
Prefix must not end in dot
@prefix eg. : <http://example/> .
{eg.:s eg.:p eg.:o .}
Prefix must not start with dot
@prefix .eg : <http://example/> .
{.eg:s .eg:p .eg:o .}
Dot delimeter may not appear in anonymous nodes
@prefix : <http://example/> .
{
:s
:p [
:p1 27.
] .
}
Free-standing list outside {} : bad syntax
# RDF collection without predicate-object-list
( 1 2 3 ) .
Free-standing list of zero-elements outside {} : bad syntax
# RDF collection without predicate-object-list
( 1 2 3 ) .
Free-standing list inside {} : bad syntax
# RDF collection without predicate-object-list
{ ( 1 2 3 ) }
Free-standing list of zero elements : bad syntax
# RDF collection without predicate-object-list
{ ( ) }
Characters allowed in blank node labels
@prefix : <http://example/> .
{
_:0b :p :o . # Starts with digit
_:_b :p :o . # Starts with underscore
_:b.0 :p :o . # Contains dot, ends with digit
}
Colons in pname local names
@prefix : <http://example/> .
{
:s:1 :p:1 :o:1 .
:s::2 :p::2 :o::2 .
:3:s :3:p :3 .
::s ::p ::o .
::s: ::p: ::o: .
}
Dots in pname local names
@prefix : <http://example/> .
{
:s.1 :p.1 :o.1 .
:s..2 :p..2 :o..2.
:3.s :3.p :3.
}
Dots in namespace names
@prefix e.g: <http://example/> .
{e.g:s e.g:p e.g:o .}
Named graphs can be proceeded by GRAPH
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g { :s :p :o }
Trailing . not necessary inside {}
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g { :s :p :o . }
Named graph may be empty
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g { }
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g1 { :s :p :o }
GRAPH :g2 { :s :p :o }
:g3 { :s :p :o }
GRAPH :g4 { :s :p :o }
GRAPH :g5 { :s :p :o }
Use of empty prefix inside named graph
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g { :s :p :o }
# GRAPH tests
PREFIX : <http://example/>
GRAPH _:a { :s :p :o }
Named graph may be named with BNode _:a
# GRAPH tests
PREFIX : <http://example/>
GRAPH [] { :s :p :o }
[] { :s :p :o }
GRAPH [] { :s :p :o }
Named graph may be named with BNode []
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g { :s :p :o }
Named graph may be named with PNAME
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g { :s :p :o }
Named graph with PNAME and empty graph
# GRAPH tests
PREFIX : <http://example/>
GRAPH :g { }
GRAPH but no name - GRAPH is not used with the default graph
# GRAPH tests
PREFIX : <http://example/>
# GRAPH but no name - GRAPH is not used with the default graph
GRAPH { :s :p :o }
GRAPH not followed by DOT
# GRAPH tests
PREFIX : <http://example/>
# GRAPH not followed by DOT
GRAPH :g1 { :s :p :o } .
GRAPH :g2 { :s :p :o } .
GRAPH needs {}
# GRAPH tests
PREFIX : <http://example/>
# GRAPH needs {}
GRAPH :g
:s :p :o .
GRAPH needs {}
# GRAPH tests
PREFIX : <http://example/>
# GRAPH needs {}
GRAPH :s :p :o
GRAPH and a name, not several
# GRAPH tests
PREFIX : <http://example/>
# GRAPH and a name, not several.
GRAPH :g1 :g2 { :s :p :o }
GRAPH - Must close {}
# GRAPH tests
PREFIX : <http://example/>
# GRAPH - Must close {}
GRAPH :g { :s :p :o
GRAPH may not include a GRAPH
# GRAPH tests
PREFIX : <http://example/>
# GRAPH and a triples block.
GRAPH :g {
:s :p :o .
GRAPH :g1 { :s1 :p1 :o1 }
}
@graph is not a keyword
# GRAPH tests
PREFIX : <http://example/>
# GRAPH and a triples block.
@graph :g { :s :p :o }
Directives not allowed inside GRAPH
# GRAPH tests
PREFIX : <http://example/>
# GRAPH - no directives
graph :g {
:s :p :o
prefix x: <http://example/x#>
x:s1 x:p1 x:o1 .
}
A graph may not be named with an empty collection
# GRAPH tests
PREFIX : <http://example/>
# GRAPH - no lists
GRAPH () { :s :p :o }
A graph may not be named with a collection
# GRAPH tests
PREFIX : <http://example/>
# GRAPH - no lists
graph (1 2) { :s :p :o }
A graph may not be named with a blankNodePropertyList
# BlankNodePropertyList as Graph Name
PREFIX : <http://example/>
[:p1 :o1] {:s :p :o}
A graph may not be named with an empty collection
# Collection as Graph Name
PREFIX : <http://example/>
() {:s :p :o}
A graph may not be named with a collection
# Collection as Graph Name
PREFIX : <http://example/>
(1 2) {:s :p :o}
TriG can parse Turtle
# Turtle is TriG
PREFIX : <http://example/>
:s :p :o ;
:q 123 , 456 .
:s1 :p1 "more" .
TriG can parse Turtle (repeated PREFIX)
# Turtle is TriG
PREFIX : <http://example/>
:s :p :o ;
:q 123 , 456 .
PREFIX : <http://example/ns#>
:s :p :o .
TriG can parse Turtle (blankNodePropertyList subject)
# Turtle is TriG
prefix : <http://example/>
[ :p 123 ; :q 456 ] :r 1 .
TriG can parse Turtle (blankNodePropertyList subject)
# Turtle is TriG
prefix : <http://example/>
[] :p :o .
TriG can parse Turtle (bare blankNodePropertyList)
# Turtle is TriG
prefix : <http://example/>
[ :p :o ] .
TriG can parse Turtle (collection subject and object)
# Turtle is TriG
prefix : <http://example/>
( 1 2 3 ) :p ( 4 5 6 ) .
Trailing dot required in Turtle block
# Turtle is TriG
# Trailing dot required in Turtle block.
:s :p :o
TriG is not N-Quads
# Turtle is TriG
# N-Quads.
:s :p :o :g .
This report generated by earl-report version 0.3.1 an Unlicensed Ruby application. More information is available at https://github.com/gkellogg/earl-report .
This software is provided by Gregg Kellogg in hopes that it might make the lives of conformance testers easier.