This document is also available in these non-normative formats: Turtle and JSON-LD
This document is licensed under a Creative Commons Attribution 3.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
See also the Implementation report for PR transition (a step in the W3C Process ).
This document is merely a public working draft of a potential specification. It has no official standing of any kind and does not represent the support or consensus of any standards organisation.
New Version Available
The RDF Test Curation Community Group is maintaining updates to important test suites, including for TriG. The new tests are available at http://w3c.github.io/rdf-tests/trig/ along with an updated Implementation Report.
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.
Test | Apache Jena | RDF::TriG | Chelona | rdflib | N3.js |
---|---|---|---|---|---|
anonymous_blank_node_graph | PASS | PASS | PASS | PASS | PASS |
labeled_blank_node_graph | PASS | PASS | PASS | PASS | PASS |
alternating_iri_graphs | PASS | PASS | PASS | PASS | PASS |
alternating_bnode_graphs | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-base-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-base-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-prefix-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-prefix-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-struct-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-struct-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-minimal-whitespace-01 | PASS | PASS | PASS | PASS | PASS |
IRI_subject | PASS | PASS | PASS | PASS | PASS |
IRI_with_four_digit_numeric_escape | PASS | PASS | PASS | PASS | PASS |
IRI_with_eight_digit_numeric_escape | PASS | PASS | PASS | PASS | PASS |
IRI_with_all_punctuation | PASS | PASS | PASS | PASS | PASS |
bareword_a_predicate | PASS | PASS | PASS | PASS | PASS |
old_style_prefix | PASS | PASS | PASS | PASS | PASS |
SPARQL_style_prefix | PASS | PASS | PASS | PASS | PASS |
prefixed_IRI_predicate | PASS | PASS | PASS | PASS | PASS |
prefixed_IRI_object | PASS | PASS | PASS | PASS | PASS |
prefix_only_IRI | PASS | PASS | PASS | PASS | PASS |
prefix_with_PN_CHARS_BASE_character_boundaries | PASS | PASS | PASS | PASS | PASS |
prefix_with_non_leading_extras | PASS | PASS | PASS | PASS | PASS |
default_namespace_IRI | PASS | PASS | PASS | PASS | PASS |
prefix_reassigned_and_used | PASS | PASS | PASS | PASS | PASS |
reserved_escaped_localName | PASS | PASS | PASS | PASS | PASS |
percent_escaped_localName | PASS | PASS | PASS | PASS | PASS |
HYPHEN_MINUS_in_localName | PASS | PASS | PASS | PASS | PASS |
underscore_in_localName | PASS | PASS | PASS | PASS | PASS |
localname_with_COLON | PASS | PASS | PASS | PASS | PASS |
localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries | PASS | PASS | PASS | PASS | PASS |
localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries | PASS | PASS | PASS | PASS | PASS |
localName_with_nfc_PN_CHARS_BASE_character_boundaries | PASS | PASS | PASS | PASS | PASS |
localName_with_leading_underscore | PASS | PASS | PASS | PASS | PASS |
localName_with_leading_digit | PASS | PASS | PASS | PASS | PASS |
localName_with_non_leading_extras | PASS | PASS | PASS | PASS | PASS |
old_style_base | PASS | PASS | PASS | PASS | PASS |
SPARQL_style_base | PASS | PASS | PASS | PASS | PASS |
labeled_blank_node_subject | PASS | PASS | PASS | PASS | PASS |
labeled_blank_node_object | PASS | PASS | PASS | PASS | PASS |
labeled_blank_node_with_PN_CHARS_BASE_character_boundaries | PASS | PASS | PASS | PASS | PASS |
labeled_blank_node_with_leading_underscore | PASS | PASS | PASS | PASS | PASS |
labeled_blank_node_with_leading_digit | PASS | PASS | PASS | PASS | PASS |
labeled_blank_node_with_non_leading_extras | PASS | PASS | PASS | PASS | PASS |
anonymous_blank_node_subject | PASS | PASS | PASS | PASS | PASS |
anonymous_blank_node_object | PASS | PASS | PASS | PASS | PASS |
sole_blankNodePropertyList | PASS | PASS | PASS | PASS | PASS |
blankNodePropertyList_as_subject | PASS | PASS | PASS | PASS | PASS |
blankNodePropertyList_as_object | PASS | PASS | PASS | PASS | PASS |
blankNodePropertyList_with_multiple_triples | PASS | PASS | PASS | PASS | PASS |
nested_blankNodePropertyLists | PASS | PASS | PASS | PASS | PASS |
blankNodePropertyList_containing_collection | PASS | PASS | PASS | PASS | PASS |
collection_subject | PASS | PASS | PASS | PASS | PASS |
collection_object | PASS | PASS | PASS | PASS | PASS |
empty_collection | PASS | PASS | PASS | PASS | PASS |
nested_collection | PASS | PASS | PASS | PASS | PASS |
first | PASS | PASS | PASS | PASS | PASS |
last | PASS | PASS | PASS | PASS | PASS |
LITERAL1 | PASS | PASS | PASS | PASS | PASS |
LITERAL1_ascii_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL1_with_UTF8_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL1_all_controls | PASS | PASS | PASS | PASS | PASS |
LITERAL1_all_punctuation | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG1 | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG1_ascii_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG1_with_UTF8_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG1_with_1_squote | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG1_with_2_squotes | PASS | PASS | PASS | PASS | PASS |
LITERAL2 | PASS | PASS | PASS | PASS | PASS |
LITERAL2_ascii_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL2_with_UTF8_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG2 | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG2_ascii_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG2_with_UTF8_boundaries | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG2_with_1_squote | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG2_with_2_squotes | PASS | PASS | PASS | PASS | PASS |
literal_with_CHARACTER_TABULATION | PASS | PASS | PASS | PASS | PASS |
literal_with_BACKSPACE | PASS | PASS | PASS | PASS | PASS |
literal_with_LINE_FEED | PASS | PASS | PASS | PASS | PASS |
literal_with_CARRIAGE_RETURN | PASS | PASS | PASS | PASS | PASS |
literal_with_FORM_FEED | PASS | PASS | PASS | PASS | PASS |
literal_with_REVERSE_SOLIDUS | PASS | PASS | PASS | PASS | PASS |
literal_with_escaped_CHARACTER_TABULATION | PASS | PASS | PASS | PASS | PASS |
literal_with_escaped_BACKSPACE | PASS | PASS | PASS | PASS | PASS |
literal_with_escaped_LINE_FEED | PASS | PASS | PASS | PASS | PASS |
literal_with_escaped_CARRIAGE_RETURN | PASS | PASS | PASS | PASS | PASS |
literal_with_escaped_FORM_FEED | PASS | PASS | PASS | PASS | PASS |
literal_with_numeric_escape4 | PASS | PASS | PASS | PASS | PASS |
literal_with_numeric_escape8 | PASS | PASS | PASS | PASS | PASS |
IRIREF_datatype | PASS | PASS | PASS | PASS | PASS |
prefixed_name_datatype | PASS | PASS | PASS | PASS | PASS |
bareword_integer | PASS | PASS | PASS | PASS | PASS |
bareword_decimal | PASS | PASS | PASS | PASS | PASS |
bareword_double | PASS | PASS | PASS | PASS | PASS |
double_lower_case_e | PASS | PASS | PASS | PASS | PASS |
negative_numeric | PASS | PASS | PASS | PASS | PASS |
positive_numeric | PASS | PASS | PASS | PASS | PASS |
numeric_with_leading_0 | PASS | PASS | PASS | PASS | PASS |
literal_true | PASS | PASS | PASS | PASS | PASS |
literal_false | PASS | PASS | PASS | PASS | PASS |
langtagged_non_LONG | PASS | PASS | PASS | PASS | PASS |
langtagged_LONG | PASS | PASS | PASS | PASS | PASS |
lantag_with_subtag | PASS | PASS | PASS | PASS | PASS |
objectList_with_two_objects | PASS | PASS | PASS | PASS | PASS |
predicateObjectList_with_two_objectLists | PASS | PASS | PASS | PASS | PASS |
repeated_semis_at_end | PASS | PASS | PASS | PASS | PASS |
repeated_semis_not_at_end | PASS | PASS | PASS | PASS | PASS |
comment_following_localName | PASS | PASS | PASS | PASS | PASS |
number_sign_following_localName | PASS | PASS | PASS | PASS | PASS |
comment_following_PNAME_NS | PASS | PASS | PASS | PASS | PASS |
number_sign_following_PNAME_NS | PASS | PASS | PASS | PASS | PASS |
LITERAL_LONG2_with_REVERSE_SOLIDUS | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-num-05 | PASS | PASS | PASS | PASS | PASS |
two_LITERAL_LONG2s | PASS | PASS | PASS | PASS | PASS |
langtagged_LONG_with_subtag | PASS | PASS | PASS | PASS | PASS |
trig-syntax-file-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-file-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-file-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-uri-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-uri-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-uri-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-uri-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-base-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-base-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-base-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-base-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-08 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-prefix-09 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-08 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-09 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-10 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-string-11 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-str-esc-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-str-esc-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-str-esc-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-pname-esc-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-pname-esc-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-pname-esc-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-08 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-09 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bnode-10 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-08 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-09 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-10 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-number-11 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-datatypes-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-datatypes-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-kw-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-kw-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-kw-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-struct-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-struct-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-struct-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-struct-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-struct-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-lists-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-lists-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-lists-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-lists-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-lists-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-uri-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-uri-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-uri-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-uri-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-uri-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-prefix-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-prefix-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-prefix-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-prefix-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-prefix-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-base-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-base-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-base-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-kw-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-kw-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-kw-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-kw-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-kw-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-08 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-09 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-10 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-11 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-12 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-n3-extras-13 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-09 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-10 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-12 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-13 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-14 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-15 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-16 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-struct-17 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-lang-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-esc-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-esc-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-esc-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-esc-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-pname-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-pname-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-pname-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-string-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-string-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-string-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-string-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-string-05 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-string-06 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-string-07 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-num-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-num-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-num-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-num-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-num-05 | PASS | PASS | PASS | PASS | PASS |
trig-eval-struct-01 | PASS | PASS | PASS | PASS | PASS |
trig-eval-struct-02 | PASS | PASS | PASS | PASS | PASS |
trig-subm-01 | PASS | PASS | PASS | PASS | PASS |
trig-subm-02 | PASS | PASS | PASS | PASS | PASS |
trig-subm-03 | PASS | PASS | PASS | PASS | PASS |
trig-subm-04 | PASS | PASS | PASS | PASS | PASS |
trig-subm-05 | PASS | PASS | PASS | PASS | PASS |
trig-subm-06 | PASS | PASS | PASS | PASS | PASS |
trig-subm-07 | PASS | PASS | PASS | PASS | PASS |
trig-subm-08 | PASS | PASS | PASS | PASS | PASS |
trig-subm-09 | PASS | PASS | PASS | PASS | PASS |
trig-subm-10 | PASS | PASS | PASS | PASS | PASS |
trig-subm-11 | PASS | PASS | PASS | PASS | PASS |
trig-subm-12 | PASS | PASS | PASS | PASS | PASS |
trig-subm-13 | PASS | PASS | PASS | PASS | PASS |
trig-subm-14 | PASS | PASS | PASS | PASS | PASS |
trig-subm-15 | PASS | PASS | PASS | PASS | PASS |
trig-subm-16 | PASS | PASS | PASS | PASS | PASS |
trig-subm-17 | PASS | PASS | PASS | PASS | PASS |
trig-subm-18 | PASS | PASS | PASS | PASS | PASS |
trig-subm-19 | PASS | PASS | PASS | PASS | PASS |
trig-subm-20 | PASS | PASS | PASS | PASS | PASS |
trig-subm-21 | PASS | PASS | PASS | PASS | PASS |
trig-subm-22 | PASS | PASS | PASS | PASS | PASS |
trig-subm-23 | PASS | PASS | PASS | PASS | PASS |
trig-subm-24 | PASS | PASS | PASS | PASS | PASS |
trig-subm-25 | PASS | PASS | PASS | PASS | PASS |
trig-subm-26 | PASS | PASS | PASS | PASS | PASS |
trig-subm-27 | PASS | PASS | PASS | PASS | PASS |
trig-eval-bad-01 | PASS | PASS | PASS | PASS | PASS |
trig-eval-bad-02 | PASS | PASS | PASS | PASS | PASS |
trig-eval-bad-03 | PASS | PASS | PASS | PASS | PASS |
trig-eval-bad-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-blank-label-dot-end | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-ln-dash-start | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-ln-escape-start | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-ln-escape | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-missing-ns-dot-end | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-missing-ns-dot-start | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-ns-dot-end | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-ns-dot-start | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-number-dot-in-anon | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-list-01 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-list-02 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-list-03 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-bad-list-04 | PASS | PASS | PASS | PASS | PASS |
trig-syntax-blank-label | PASS | PASS | PASS | PASS | PASS |
trig-syntax-ln-colons | PASS | PASS | PASS | PASS | PASS |
trig-syntax-ln-dots | PASS | PASS | PASS | PASS | PASS |
trig-syntax-ns-dots | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-01 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-02 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-03 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-04 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-05 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-06 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-07 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-08 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-09 | PASS | PASS | PASS | PASS | PASS |
trig-kw-graph-10 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-01 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-02 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-03 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-04 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-05 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-06 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-07 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-08 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-09 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-10 | PASS | PASS | PASS | PASS | PASS |
trig-graph-bad-11 | PASS | PASS | PASS | PASS | PASS |
trig-bnodeplist-graph-bad-01 | PASS | PASS | PASS | PASS | PASS |
trig-collection-graph-bad-01 | PASS | PASS | PASS | PASS | PASS |
trig-collection-graph-bad-02 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-01 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-02 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-03 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-04 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-05 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-06 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-bad-01 | PASS | PASS | PASS | PASS | PASS |
trig-turtle-bad-02 | PASS | PASS | PASS | PASS | PASS |
Percentage passed out of 335 Tests | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
This report was tested using the following test subjects:
335/335 (100.0%) |
335/335 (100.0%) |
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.6 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.