TriG Implementation Report

Unofficial Draft

Editor:
Gregg Kellogg (Kellogg Associates)

This document is also available in these non-normative formats: Turtle and JSON-LD


Abstract

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

1. Instructions for submitting implementation reports

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.

2. Test Manifests

2.1 TriG tests

Test Apache Jena RDF::TriG rdflib
anonymous_blank_node_graph PASS PASS PASS
labeled_blank_node_graph PASS PASS PASS
alternating_iri_graphs PASS PASS PASS
alternating_bnode_graphs PASS PASS PASS
trig-syntax-bad-base-04 PASS PASS PASS
trig-syntax-bad-base-05 PASS PASS PASS
trig-syntax-bad-prefix-06 PASS PASS PASS
trig-syntax-bad-prefix-07 PASS PASS PASS
trig-syntax-struct-06 PASS PASS PASS
trig-syntax-struct-07 PASS PASS PASS
trig-syntax-minimal-whitespace-01 PASS PASS PASS
IRI_subject PASS PASS PASS
IRI_with_four_digit_numeric_escape PASS PASS PASS
IRI_with_eight_digit_numeric_escape PASS PASS PASS
IRI_with_all_punctuation PASS PASS PASS
bareword_a_predicate PASS PASS PASS
old_style_prefix PASS PASS PASS
SPARQL_style_prefix PASS PASS PASS
prefixed_IRI_predicate PASS PASS PASS
prefixed_IRI_object PASS PASS PASS
prefix_only_IRI PASS PASS PASS
prefix_with_PN_CHARS_BASE_character_boundaries PASS PASS PASS
prefix_with_non_leading_extras PASS PASS PASS
default_namespace_IRI PASS PASS PASS
prefix_reassigned_and_used PASS PASS PASS
reserved_escaped_localName PASS PASS PASS
percent_escaped_localName PASS PASS PASS
HYPHEN_MINUS_in_localName PASS PASS PASS
underscore_in_localName PASS PASS PASS
localname_with_COLON PASS PASS PASS
localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries PASS PASS PASS
localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries PASS PASS PASS
localName_with_nfc_PN_CHARS_BASE_character_boundaries PASS PASS PASS
localName_with_leading_underscore PASS PASS PASS
localName_with_leading_digit PASS PASS PASS
localName_with_non_leading_extras PASS PASS PASS
old_style_base PASS PASS PASS
SPARQL_style_base PASS PASS PASS
labeled_blank_node_subject PASS PASS PASS
labeled_blank_node_object PASS PASS PASS
labeled_blank_node_with_PN_CHARS_BASE_character_boundaries PASS PASS PASS
labeled_blank_node_with_leading_underscore PASS PASS PASS
labeled_blank_node_with_leading_digit PASS PASS PASS
labeled_blank_node_with_non_leading_extras PASS PASS PASS
anonymous_blank_node_subject PASS PASS PASS
anonymous_blank_node_object PASS PASS PASS
sole_blankNodePropertyList PASS PASS PASS
blankNodePropertyList_as_subject PASS PASS PASS
blankNodePropertyList_as_object PASS PASS PASS
blankNodePropertyList_with_multiple_triples PASS PASS PASS
nested_blankNodePropertyLists PASS PASS PASS
blankNodePropertyList_containing_collection PASS PASS PASS
collection_subject PASS PASS PASS
collection_object PASS PASS PASS
empty_collection PASS PASS PASS
nested_collection PASS PASS PASS
first PASS PASS PASS
last PASS PASS PASS
LITERAL1 PASS PASS PASS
LITERAL1_ascii_boundaries PASS PASS PASS
LITERAL1_with_UTF8_boundaries PASS PASS PASS
LITERAL1_all_controls PASS PASS PASS
LITERAL1_all_punctuation PASS PASS PASS
LITERAL_LONG1 PASS PASS PASS
LITERAL_LONG1_ascii_boundaries PASS PASS PASS
LITERAL_LONG1_with_UTF8_boundaries PASS PASS PASS
LITERAL_LONG1_with_1_squote PASS PASS PASS
LITERAL_LONG1_with_2_squotes PASS PASS PASS
LITERAL2 PASS PASS PASS
LITERAL2_ascii_boundaries PASS PASS PASS
LITERAL2_with_UTF8_boundaries PASS PASS PASS
LITERAL_LONG2 PASS PASS PASS
LITERAL_LONG2_ascii_boundaries PASS PASS PASS
LITERAL_LONG2_with_UTF8_boundaries PASS PASS PASS
LITERAL_LONG2_with_1_squote PASS PASS PASS
LITERAL_LONG2_with_2_squotes PASS PASS PASS
literal_with_CHARACTER_TABULATION PASS PASS PASS
literal_with_BACKSPACE PASS PASS PASS
literal_with_LINE_FEED PASS PASS PASS
literal_with_CARRIAGE_RETURN PASS PASS PASS
literal_with_FORM_FEED PASS PASS PASS
literal_with_REVERSE_SOLIDUS PASS PASS PASS
literal_with_escaped_CHARACTER_TABULATION PASS PASS PASS
literal_with_escaped_BACKSPACE PASS PASS PASS
literal_with_escaped_LINE_FEED PASS PASS PASS
literal_with_escaped_CARRIAGE_RETURN PASS PASS PASS
literal_with_escaped_FORM_FEED PASS PASS PASS
literal_with_numeric_escape4 PASS PASS PASS
literal_with_numeric_escape8 PASS PASS PASS
IRIREF_datatype PASS PASS PASS
prefixed_name_datatype PASS PASS PASS
bareword_integer PASS PASS PASS
bareword_decimal PASS PASS PASS
bareword_double PASS PASS PASS
double_lower_case_e PASS PASS PASS
negative_numeric PASS PASS PASS
positive_numeric PASS PASS PASS
numeric_with_leading_0 PASS PASS PASS
literal_true PASS PASS PASS
literal_false PASS PASS PASS
langtagged_non_LONG PASS PASS PASS
langtagged_LONG PASS PASS PASS
lantag_with_subtag PASS PASS PASS
objectList_with_two_objects PASS PASS PASS
predicateObjectList_with_two_objectLists PASS PASS PASS
repeated_semis_at_end PASS PASS PASS
repeated_semis_not_at_end PASS PASS PASS
comment_following_localName PASS PASS PASS
number_sign_following_localName PASS PASS PASS
comment_following_PNAME_NS PASS PASS PASS
number_sign_following_PNAME_NS PASS PASS PASS
LITERAL_LONG2_with_REVERSE_SOLIDUS PASS PASS PASS
trig-syntax-bad-num-05 PASS PASS PASS
two_LITERAL_LONG2s PASS PASS PASS
langtagged_LONG_with_subtag PASS PASS PASS
trig-syntax-file-01 PASS PASS PASS
trig-syntax-file-02 PASS PASS PASS
trig-syntax-file-03 PASS PASS PASS
trig-syntax-uri-01 PASS PASS PASS
trig-syntax-uri-02 PASS PASS PASS
trig-syntax-uri-03 PASS PASS PASS
trig-syntax-uri-04 PASS PASS PASS
trig-syntax-base-01 PASS PASS PASS
trig-syntax-base-02 PASS PASS PASS
trig-syntax-base-03 PASS PASS PASS
trig-syntax-base-04 PASS PASS PASS
trig-syntax-prefix-01 PASS PASS PASS
trig-syntax-prefix-02 PASS PASS PASS
trig-syntax-prefix-03 PASS PASS PASS
trig-syntax-prefix-04 PASS PASS PASS
trig-syntax-prefix-05 PASS PASS PASS
trig-syntax-prefix-06 PASS PASS PASS
trig-syntax-prefix-07 PASS PASS PASS
trig-syntax-prefix-08 PASS PASS PASS
trig-syntax-prefix-09 PASS PASS PASS
trig-syntax-string-01 PASS PASS PASS
trig-syntax-string-02 PASS PASS PASS
trig-syntax-string-03 PASS PASS PASS
trig-syntax-string-04 PASS PASS PASS
trig-syntax-string-05 PASS PASS PASS
trig-syntax-string-06 PASS PASS PASS
trig-syntax-string-07 PASS PASS PASS
trig-syntax-string-08 PASS PASS PASS
trig-syntax-string-09 PASS PASS PASS
trig-syntax-string-10 PASS PASS PASS
trig-syntax-string-11 PASS PASS PASS
trig-syntax-str-esc-01 PASS PASS PASS
trig-syntax-str-esc-02 PASS PASS PASS
trig-syntax-str-esc-03 PASS PASS PASS
trig-syntax-pname-esc-01 PASS PASS PASS
trig-syntax-pname-esc-02 PASS PASS PASS
trig-syntax-pname-esc-03 PASS PASS PASS
trig-syntax-bnode-01 PASS PASS PASS
trig-syntax-bnode-02 PASS PASS PASS
trig-syntax-bnode-03 PASS PASS PASS
trig-syntax-bnode-04 PASS PASS PASS
trig-syntax-bnode-05 PASS PASS PASS
trig-syntax-bnode-06 PASS PASS PASS
trig-syntax-bnode-07 PASS PASS PASS
trig-syntax-bnode-08 PASS PASS PASS
trig-syntax-bnode-09 PASS PASS PASS
trig-syntax-bnode-10 PASS PASS PASS
trig-syntax-number-01 PASS PASS PASS
trig-syntax-number-02 PASS PASS PASS
trig-syntax-number-03 PASS PASS PASS
trig-syntax-number-04 PASS PASS PASS
trig-syntax-number-05 PASS PASS PASS
trig-syntax-number-06 PASS PASS PASS
trig-syntax-number-07 PASS PASS PASS
trig-syntax-number-08 PASS PASS PASS
trig-syntax-number-09 PASS PASS PASS
trig-syntax-number-10 PASS PASS PASS
trig-syntax-number-11 PASS PASS PASS
trig-syntax-datatypes-01 PASS PASS PASS
trig-syntax-datatypes-02 PASS PASS PASS
trig-syntax-kw-01 PASS PASS PASS
trig-syntax-kw-02 PASS PASS PASS
trig-syntax-kw-03 PASS PASS PASS
trig-syntax-struct-01 PASS PASS PASS
trig-syntax-struct-02 PASS PASS PASS
trig-syntax-struct-03 PASS PASS PASS
trig-syntax-struct-04 PASS PASS PASS
trig-syntax-struct-05 PASS PASS PASS
trig-syntax-lists-01 PASS PASS PASS
trig-syntax-lists-02 PASS PASS PASS
trig-syntax-lists-03 PASS PASS PASS
trig-syntax-lists-04 PASS PASS PASS
trig-syntax-lists-05 PASS PASS PASS
trig-syntax-bad-uri-01 PASS PASS PASS
trig-syntax-bad-uri-02 PASS PASS PASS
trig-syntax-bad-uri-03 PASS PASS PASS
trig-syntax-bad-uri-04 PASS PASS PASS
trig-syntax-bad-uri-05 PASS PASS PASS
trig-syntax-bad-prefix-01 PASS PASS PASS
trig-syntax-bad-prefix-02 PASS PASS PASS
trig-syntax-bad-prefix-03 PASS PASS PASS
trig-syntax-bad-prefix-04 PASS PASS PASS
trig-syntax-bad-prefix-05 PASS PASS PASS
trig-syntax-bad-base-01 PASS PASS PASS
trig-syntax-bad-base-02 PASS PASS PASS
trig-syntax-bad-base-03 PASS PASS PASS
trig-syntax-bad-struct-02 PASS PASS PASS
trig-syntax-bad-struct-03 PASS PASS PASS
trig-syntax-bad-struct-04 PASS PASS PASS
trig-syntax-bad-struct-05 PASS PASS PASS
trig-syntax-bad-struct-06 PASS PASS PASS
trig-syntax-bad-struct-07 PASS PASS PASS
trig-syntax-bad-kw-01 PASS PASS PASS
trig-syntax-bad-kw-02 PASS PASS PASS
trig-syntax-bad-kw-03 PASS PASS PASS
trig-syntax-bad-kw-04 PASS PASS PASS
trig-syntax-bad-kw-05 PASS PASS PASS
trig-syntax-bad-n3-extras-01 PASS PASS PASS
trig-syntax-bad-n3-extras-02 PASS PASS PASS
trig-syntax-bad-n3-extras-03 PASS PASS PASS
trig-syntax-bad-n3-extras-04 PASS PASS PASS
trig-syntax-bad-n3-extras-05 PASS PASS PASS
trig-syntax-bad-n3-extras-06 PASS PASS PASS
trig-syntax-bad-n3-extras-07 PASS PASS PASS
trig-syntax-bad-n3-extras-08 PASS PASS PASS
trig-syntax-bad-n3-extras-09 PASS PASS PASS
trig-syntax-bad-n3-extras-10 PASS PASS PASS
trig-syntax-bad-n3-extras-11 PASS PASS PASS
trig-syntax-bad-n3-extras-12 PASS PASS PASS
trig-syntax-bad-n3-extras-13 PASS PASS PASS
trig-syntax-bad-struct-09 PASS PASS PASS
trig-syntax-bad-struct-10 PASS PASS PASS
trig-syntax-bad-struct-12 PASS PASS PASS
trig-syntax-bad-struct-13 PASS PASS PASS
trig-syntax-bad-struct-14 PASS PASS PASS
trig-syntax-bad-struct-15 PASS PASS PASS
trig-syntax-bad-struct-16 PASS PASS PASS
trig-syntax-bad-struct-17 PASS PASS PASS
trig-syntax-bad-lang-01 PASS PASS PASS
trig-syntax-bad-esc-01 PASS PASS PASS
trig-syntax-bad-esc-02 PASS PASS PASS
trig-syntax-bad-esc-03 PASS PASS PASS
trig-syntax-bad-esc-04 PASS PASS PASS
trig-syntax-bad-pname-01 PASS PASS PASS
trig-syntax-bad-pname-02 PASS PASS PASS
trig-syntax-bad-pname-03 PASS PASS PASS
trig-syntax-bad-string-01 PASS PASS PASS
trig-syntax-bad-string-02 PASS PASS PASS
trig-syntax-bad-string-03 PASS PASS PASS
trig-syntax-bad-string-04 PASS PASS PASS
trig-syntax-bad-string-05 PASS PASS PASS
trig-syntax-bad-string-06 PASS PASS PASS
trig-syntax-bad-string-07 PASS PASS PASS
trig-syntax-bad-num-01 PASS PASS PASS
trig-syntax-bad-num-02 PASS PASS PASS
trig-syntax-bad-num-03 PASS PASS PASS
trig-syntax-bad-num-04 PASS PASS PASS
trig-syntax-bad-num-05 PASS PASS PASS
trig-eval-struct-01 PASS PASS PASS
trig-eval-struct-02 PASS PASS PASS
trig-subm-01 PASS PASS PASS
trig-subm-02 PASS PASS PASS
trig-subm-03 PASS PASS PASS
trig-subm-04 PASS PASS PASS
trig-subm-05 PASS PASS PASS
trig-subm-06 PASS PASS PASS
trig-subm-07 PASS PASS PASS
trig-subm-08 PASS PASS PASS
trig-subm-09 PASS PASS PASS
trig-subm-10 PASS PASS PASS
trig-subm-11 PASS PASS PASS
trig-subm-12 PASS PASS PASS
trig-subm-13 PASS PASS PASS
trig-subm-14 PASS PASS PASS
trig-subm-15 PASS PASS PASS
trig-subm-16 PASS PASS PASS
trig-subm-17 PASS PASS PASS
trig-subm-18 PASS PASS PASS
trig-subm-19 PASS PASS PASS
trig-subm-20 PASS PASS PASS
trig-subm-21 PASS PASS PASS
trig-subm-22 PASS PASS PASS
trig-subm-23 PASS PASS PASS
trig-subm-24 PASS PASS PASS
trig-subm-25 PASS PASS PASS
trig-subm-26 PASS PASS PASS
trig-subm-27 PASS PASS PASS
trig-eval-bad-01 PASS PASS PASS
trig-eval-bad-02 PASS PASS PASS
trig-eval-bad-03 PASS PASS PASS
trig-eval-bad-04 PASS PASS PASS
trig-syntax-bad-blank-label-dot-end PASS PASS PASS
trig-syntax-bad-ln-dash-start PASS PASS PASS
trig-syntax-bad-ln-escape-start PASS PASS PASS
trig-syntax-bad-ln-escape PASS PASS PASS
trig-syntax-bad-missing-ns-dot-end PASS PASS PASS
trig-syntax-bad-missing-ns-dot-start PASS PASS PASS
trig-syntax-bad-ns-dot-end PASS PASS PASS
trig-syntax-bad-ns-dot-start PASS PASS PASS
trig-syntax-bad-number-dot-in-anon PASS PASS PASS
trig-syntax-bad-list-01 PASS PASS PASS
trig-syntax-bad-list-02 PASS PASS PASS
trig-syntax-bad-list-03 PASS PASS PASS
trig-syntax-bad-list-04 PASS PASS PASS
trig-syntax-blank-label PASS PASS PASS
trig-syntax-ln-colons PASS PASS PASS
trig-syntax-ln-dots PASS PASS PASS
trig-syntax-ns-dots PASS PASS PASS
trig-kw-graph-01 PASS PASS PASS
trig-kw-graph-02 PASS PASS PASS
trig-kw-graph-03 PASS PASS PASS
trig-kw-graph-04 PASS PASS PASS
trig-kw-graph-05 PASS PASS PASS
trig-kw-graph-06 PASS PASS PASS
trig-kw-graph-07 PASS PASS PASS
trig-kw-graph-08 PASS PASS PASS
trig-kw-graph-09 PASS PASS PASS
trig-kw-graph-10 PASS PASS PASS
trig-graph-bad-01 PASS PASS PASS
trig-graph-bad-02 PASS PASS PASS
trig-graph-bad-03 PASS PASS PASS
trig-graph-bad-04 PASS PASS PASS
trig-graph-bad-05 PASS PASS PASS
trig-graph-bad-06 PASS PASS PASS
trig-graph-bad-07 PASS PASS PASS
trig-graph-bad-08 PASS PASS PASS
trig-graph-bad-09 PASS PASS PASS
trig-graph-bad-10 PASS PASS PASS
trig-graph-bad-11 PASS PASS PASS
trig-bnodeplist-graph-bad-01 PASS PASS PASS
trig-collection-graph-bad-01 PASS PASS PASS
trig-collection-graph-bad-02 PASS PASS PASS
trig-turtle-01 PASS PASS PASS
trig-turtle-02 PASS PASS PASS
trig-turtle-03 PASS PASS PASS
trig-turtle-04 PASS PASS PASS
trig-turtle-05 PASS PASS PASS
trig-turtle-06 PASS PASS PASS
trig-turtle-bad-01 PASS PASS PASS
trig-turtle-bad-02 PASS PASS PASS
Percentage passed out of 335 Tests 100.0% 100.0% 100.0%

A. Test Subjects

This report was tested using the following test subjects:

Apache Jena
Description
Apache Jena provides a complete framework for building Semantic Web and Linked Data applications in Java, and provides: parsers for RDF/XML, Turtle and N-triples; a Java programming API; a complete implementation of the SPARQL query language; a rule-based inference engine for RDFS and OWL entailments; TDB (a non-SQL persistent triple store); SDB (a persistent triples store built on a relational store) and Fuseki, an RDF server using web protocols. Jena complies with all relevant recommendations for RDF and related technologies from the W3C.
Programming Language
Java
Home Page
http://jena.apache.org
Developer
Rob Vesse
Paolo Castagna
Chris Dollin
Stephen Allen
Ian Dickinson
Damian Steer
Andy Seaborne
Claude Warren
Dave Reynolds
Test Suite Compliance
335/335 (100.0%)
RDF::TriG
Description
TriG reader/writer for RDF.rb
Programming Language
Ruby
Home Page
http://github.com/ruby-rdf/rdf-trig
Developer
Home Page
http://greggkellogg.net/
Test Suite Compliance
335/335 (100.0%)
rdflib
Home Page
https://github.com/RDFLib/rdflib
Developer
Gunnar Aastrand Grimnes
Home Page
http://gromgull.net
Test Suite Compliance
335/335 (100.0%)

B. Individual Test Results

Individual test results used to construct this report are available here:

C. Test Definitions

Test anonymous_blank_node_graph

anonymous blank node graph

Example 1: anonymous_blank_node_graph Input
[] {<http://a.example/s> <http://a.example/p> <http://a.example/o> .}
Example 2: anonymous_blank_node_graph Result
<http://a.example/s> <http://a.example/p> <http://a.example/o> _:b1 .
Test labeled_blank_node_graph

labeled blank node graph

Example 3: labeled_blank_node_graph Input
_:g {<http://a.example/s> <http://a.example/p> <http://a.example/o> .}
Example 4: labeled_blank_node_graph Result
<http://a.example/s> <http://a.example/p> <http://a.example/o> _:b1 .
Test alternating_iri_graphs

alternating graphs with IRI names

Example 5: alternating_iri_graphs Input
@prefix : <http://example/> .
{:a :b :c.}
:G {:a :b :d.}
{:a :b :e.}
:G {:a :b :f.}
Example 6: alternating_iri_graphs Result
<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> .
Test alternating_bnode_graphs

alternating graphs with BNode names

Example 7: alternating_bnode_graphs Input
@prefix : <http://example/> .
{:a :b :c.}
_:G {:a :b :d.}
{:a :b :e.}
_:G {:a :b :f.}
Example 8: alternating_bnode_graphs Result
<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 .
Test trig-syntax-bad-base-04

@base inside graph (negative test)

Example 9: trig-syntax-bad-base-04 Input
# @base inside graph
{
  @base <http://example/> .
}
Test trig-syntax-bad-base-05

BASE inside graph (negative test)

Example 10: trig-syntax-bad-base-05 Input
# BASE inside graph
{
  BASE <http://example/>
}
Test trig-syntax-bad-prefix-06

@prefix inside graph (negative test)

Example 11: trig-syntax-bad-prefix-06 Input
# @prefix inside graph
{
  @prefix ex: <http://example/> .
}
Test trig-syntax-bad-prefix-07

PREFIX inside graph (negative test)

Example 12: trig-syntax-bad-prefix-07 Input
# PREFIX inside graph
{
  PREFIX ex: <http://example/>
}
Test trig-syntax-struct-06

missing '.'

Example 13: trig-syntax-struct-06 Input
# No DOT
{<http://example/s> <http://example/p> <http://example/o>}
Test trig-syntax-struct-07

trailing ';' no '.'

Example 14: trig-syntax-struct-07 Input
# Trailing ;
{<http://example/s> <http://example/p> <http://example/o> ;}
Test trig-syntax-minimal-whitespace-01

tests absense of whitespace in various positions

Example 15: trig-syntax-minimal-whitespace-01 Input
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.}
:{: : :}{: : :}:{: : :}
:{():()}{():[]}:{[]:[]}
Test IRI_subject

IRI subject

Example 16: IRI_subject Input
{<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> .}
Example 17: IRI_subject Result
<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> .
Test IRI_with_four_digit_numeric_escape

IRI with four digit numeric escape (\u)

Example 18: IRI_with_four_digit_numeric_escape Input
{<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> .}
Example 19: IRI_with_four_digit_numeric_escape Result
<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> .
Test IRI_with_eight_digit_numeric_escape

IRI with eight digit numeric escape (\U)

Example 20: IRI_with_eight_digit_numeric_escape Input
{<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> .}
Example 21: IRI_with_eight_digit_numeric_escape Result
<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> .
Test IRI_with_all_punctuation

IRI with all punctuation

Example 22: IRI_with_all_punctuation Input
{<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .}
Example 23: IRI_with_all_punctuation Result
<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .
<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> <http://example/graph> .
Test bareword_a_predicate

bareword a predicate

Example 24: bareword_a_predicate Input
{<http://a.example/s> a <http://a.example/o> .}
<http://example/graph> {<http://a.example/s> a <http://a.example/o> .}
Example 25: bareword_a_predicate Result
<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> .
Test old_style_prefix

old-style prefix

Example 26: old_style_prefix Input
@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> .}
Example 27: old_style_prefix Result
<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> .
Test SPARQL_style_prefix

SPARQL-style prefix

Example 28: SPARQL_style_prefix Input
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> .}
Example 29: SPARQL_style_prefix Result
<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> .
Test prefixed_IRI_predicate

prefixed IRI predicate

Example 30: prefixed_IRI_predicate Input
@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> .}
Example 31: prefixed_IRI_predicate Result
<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> .
Test prefixed_IRI_object

prefixed IRI object

Example 32: prefixed_IRI_object Input
@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 .}
Example 33: prefixed_IRI_object Result
<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> .
Test prefix_only_IRI

prefix-only IRI (p:)

Example 34: prefix_only_IRI Input
@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> .}
Example 35: prefix_only_IRI Result
<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> .
Test prefix_with_PN_CHARS_BASE_character_boundaries

prefix with PN CHARS BASE character boundaries (prefix: AZazÀÖØöø...:)

Example 36: prefix_with_PN_CHARS_BASE_character_boundaries Input
@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}
Example 37: prefix_with_PN_CHARS_BASE_character_boundaries Result
<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> .
Test prefix_with_non_leading_extras

prefix with_non_leading_extras (_:a·̀ͯ‿.⁀)

Example 38: prefix_with_non_leading_extras Input
@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> .}
Example 39: prefix_with_non_leading_extras Result
<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> .
Test default_namespace_IRI

default namespace IRI (:ln)

Example 40: default_namespace_IRI Input
@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> .}
Example 41: default_namespace_IRI Result
<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> .
Test prefix_reassigned_and_used

prefix reassigned and used

Example 42: prefix_reassigned_and_used Input
@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> .}
Example 43: prefix_reassigned_and_used Result
<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> .
Test reserved_escaped_localName

reserved-escaped local name

Example 44: reserved_escaped_localName Input
@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> .}
Example 45: reserved_escaped_localName Result
<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> .
Test percent_escaped_localName

percent-escaped local name

Example 46: percent_escaped_localName Input
@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> .}
Example 47: percent_escaped_localName Result
<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> .
Test HYPHEN_MINUS_in_localName

HYPHEN-MINUS in local name

Example 48: HYPHEN_MINUS_in_localName Input
@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> .}
Example 49: HYPHEN_MINUS_in_localName Result
<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> .
Test underscore_in_localName

underscore in local name

Example 50: underscore_in_localName Input
@prefix p: <http://a.example/>.
{p:s_ <http://a.example/p> <http://a.example/o> .}
Example 51: underscore_in_localName Result
<http://a.example/s_> <http://a.example/p> <http://a.example/o> .
Test localname_with_COLON

localname with COLON

Example 52: localname_with_COLON Input
@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> .}
Example 53: localname_with_COLON Result
<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>.
Test localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries

localName with assigned, NFC-normalized, basic-multilingual-plane PN CHARS BASE character boundaries (p:AZazÀÖØöø...)

Example 54: localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries Input
@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ÀÖØöø˿Ͱͽ΄῾‌‍⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ￯ .}
Example 55: localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries Result
<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> .
Test localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries

localName with assigned, NFC-normalized PN CHARS BASE character boundaries (p:AZazÀÖØöø...)

Example 56: localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries Input
@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ÀÖØöø˿Ͱͽ΄῾‌‍⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ￯𐀀󠇯 .}
Example 57: localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries Result
<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> .
Test localName_with_nfc_PN_CHARS_BASE_character_boundaries

localName with nfc-normalize PN CHARS BASE character boundaries (p:AZazÀÖØöø...)

Example 58: localName_with_nfc_PN_CHARS_BASE_character_boundaries Input
@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ÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿﨎﷏ﷰ￯𐀀󯿽 .}
Example 59: localName_with_nfc_PN_CHARS_BASE_character_boundaries Result
<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> .
Test localName_with_leading_underscore

localName with leading underscore (p:_)

Example 60: localName_with_leading_underscore Input
@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> .}
Example 61: localName_with_leading_underscore Result
<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> .
Test localName_with_leading_digit

localName with leading digit (p:_)

Example 62: localName_with_leading_digit Input
@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> .}
Example 63: localName_with_leading_digit Result
<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> .
Test localName_with_non_leading_extras

localName with_non_leading_extras (_:a·̀ͯ‿.⁀)

Example 64: localName_with_non_leading_extras Input
@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> .}
Example 65: localName_with_non_leading_extras Result
<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> .
Test old_style_base

old-style base

Example 66: old_style_base Input
@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> .}
Example 67: old_style_base Result
<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> .
Test SPARQL_style_base

SPARQL-style base

Example 68: SPARQL_style_base Input
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> .}
Example 69: SPARQL_style_base Result
<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> .
Test labeled_blank_node_subject

labeled blank node subject

Example 70: labeled_blank_node_subject Input
{_:s <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {_:s <http://a.example/p> <http://a.example/o> .}
Example 71: labeled_blank_node_subject Result
_:b1 <http://a.example/p> <http://a.example/o> .
_:b1 <http://a.example/p> <http://a.example/o> <http://example/graph> .
Test labeled_blank_node_object

labeled blank node object

Example 72: labeled_blank_node_object Input
{<http://a.example/s> <http://a.example/p> _:o .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:o .}
Example 73: labeled_blank_node_object Result
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
Test labeled_blank_node_with_PN_CHARS_BASE_character_boundaries

labeled blank node with PN_CHARS_BASE character boundaries (_:AZazÀÖØöø...)

Example 74: labeled_blank_node_with_PN_CHARS_BASE_character_boundaries Input
{<http://a.example/s> <http://a.example/p> _:AZazÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿豈﷏ﷰ�𐀀󯿽 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:AZazÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿豈﷏ﷰ�𐀀󯿽 .}
Example 75: labeled_blank_node_with_PN_CHARS_BASE_character_boundaries Result
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
Test labeled_blank_node_with_leading_underscore

labeled blank node with_leading_underscore (_:_)

Example 76: labeled_blank_node_with_leading_underscore Input
{<http://a.example/s> <http://a.example/p> _:_ .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:_ .}
Example 77: labeled_blank_node_with_leading_underscore Result
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
Test labeled_blank_node_with_leading_digit

labeled blank node with_leading_digit (_:0)

Example 78: labeled_blank_node_with_leading_digit Input
{<http://a.example/s> <http://a.example/p> _:0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:0 .}
Example 79: labeled_blank_node_with_leading_digit Result
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
Test labeled_blank_node_with_non_leading_extras

labeled blank node with_non_leading_extras (_:a·̀ͯ‿.⁀)

Example 80: labeled_blank_node_with_non_leading_extras Input
{<http://a.example/s> <http://a.example/p> _:a·̀ͯ‿.⁀ .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> _:a·̀ͯ‿.⁀ .}
Example 81: labeled_blank_node_with_non_leading_extras Result
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b1 <http://example/graph> .
Test anonymous_blank_node_subject

anonymous blank node subject

Example 82: anonymous_blank_node_subject Input
{[] <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {[] <http://a.example/p> <http://a.example/o> .}
Example 83: anonymous_blank_node_subject Result
_:b1 <http://a.example/p> <http://a.example/o> .
_:b2 <http://a.example/p> <http://a.example/o> <http://example/graph> .
Test anonymous_blank_node_object

anonymous blank node object

Example 84: anonymous_blank_node_object Input
{<http://a.example/s> <http://a.example/p> [] .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> [] .}
Example 85: anonymous_blank_node_object Result
<http://a.example/s> <http://a.example/p> _:b1 .
<http://a.example/s> <http://a.example/p> _:b2 <http://example/graph> .
Test sole_blankNodePropertyList

sole blankNodePropertyList [ <p> <o> ] .

Example 86: sole_blankNodePropertyList Input
{[ <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> ] }
Example 87: sole_blankNodePropertyList Result
_: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> .
Test blankNodePropertyList_as_subject

blankNodePropertyList as subject [ … ] <p> <o> .

Example 88: blankNodePropertyList_as_subject Input
{[ <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> .}
Example 89: blankNodePropertyList_as_subject Result
_: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>  .
Test blankNodePropertyList_as_object

blankNodePropertyList as object <s> <p> [ … ] .

Example 90: blankNodePropertyList_as_object Input
{<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> ] .}
Example 91: blankNodePropertyList_as_object Result
<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>  .
Test blankNodePropertyList_with_multiple_triples

blankNodePropertyList with multiple triples [ <s> <p> ; <s2> <p2> ]

Example 92: blankNodePropertyList_with_multiple_triples Input
{[ <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> .}
Example 93: blankNodePropertyList_with_multiple_triples Result
_: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> .
Test nested_blankNodePropertyLists

nested blankNodePropertyLists [ <p1> [ <p2> <o2> ] ; <p3> <o3> ]

Example 94: nested_blankNodePropertyLists Input
{[ <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> ].}
Example 95: nested_blankNodePropertyLists Result
_: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> .
Test blankNodePropertyList_containing_collection

blankNodePropertyList containing collection [ <p1> ( … ) ]

Example 96: blankNodePropertyList_containing_collection Input
{[ <http://a.example/p1> (1) ] .}
<http://example/graph> {[ <http://a.example/p1> (1) ] .}
Example 97: blankNodePropertyList_containing_collection Result
_: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> .
Test collection_subject

collection subject

Example 98: collection_subject Input
{(1) <http://a.example/p> <http://a.example/o> .}
<http://example/graph> {(1) <http://a.example/p> <http://a.example/o> .}
Example 99: collection_subject Result
_: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> .
Test collection_object

collection object

Example 100: collection_object Input
{<http://a.example/s> <http://a.example/p> (1) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> (1) .}
Example 101: collection_object Result
<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> .
Test empty_collection

empty collection ()

Example 102: empty_collection Input
{<http://a.example/s> <http://a.example/p> () .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> () .}
Example 103: empty_collection Result
<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> .
Test nested_collection

nested collection (())

Example 104: nested_collection Input
{<http://a.example/s> <http://a.example/p> ((1)) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ((1)) .}
Example 105: nested_collection Result
<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> .
Test first

first, not last, non-empty nested collection

Example 106: first Input
{<http://a.example/s> <http://a.example/p> ((1) 2) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ((1) 2) .}
Example 107: first Result
<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> .
Test last

last, not first, non-empty nested collection

Example 108: last Input
{<http://a.example/s> <http://a.example/p> (1 (2)) .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> (1 (2)) .}
Example 109: last Result
<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> .
Test LITERAL1

LITERAL1 'x'

Example 110: LITERAL1 Input
{<http://a.example/s> <http://a.example/p> 'x' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 'x' .}
Example 111: LITERAL1 Result
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
Test LITERAL1_ascii_boundaries

LITERAL1_ascii_boundaries '\x00\x09\x0b\x0c\x0e\x26\x28...'

Example 112: LITERAL1_ascii_boundaries Input
{<http://a.example/s> <http://a.example/p> '	&([]' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '	&([]' .}
Example 113: LITERAL1_ascii_boundaries Result
<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> .
Test LITERAL1_with_UTF8_boundaries

LITERAL1_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'

Example 114: LITERAL1_with_UTF8_boundaries Input
<http://a.example/s> <http://a.example/p> '€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽' .
Example 115: LITERAL1_with_UTF8_boundaries Result
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
Test LITERAL1_all_controls

LITERAL1_all_controls '\x00\x01\x02\x03\x04...'

Example 116: LITERAL1_all_controls Input
{<http://a.example/s> <http://a.example/p> '	' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '	' .}
Example 117: LITERAL1_all_controls Result
<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> .
Test LITERAL1_all_punctuation

LITERAL1_all_punctuation '!"#$%&()...'

Example 118: LITERAL1_all_punctuation Input
{<http://a.example/s> <http://a.example/p> ' !"#$%&():;<=>?@[]^_`{|}~' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> ' !"#$%&():;<=>?@[]^_`{|}~' .}
Example 119: LITERAL1_all_punctuation Result
<http://a.example/s> <http://a.example/p> " !\u0022#$%&():;<=>?@[]^_`{|}~" .
<http://a.example/s> <http://a.example/p> " !\u0022#$%&():;<=>?@[]^_`{|}~" <http://example/graph> .
Test LITERAL_LONG1

LITERAL_LONG1 '''x'''

Example 120: LITERAL_LONG1 Input
{<http://a.example/s> <http://a.example/p> '''x''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''x''' .}
Example 121: LITERAL_LONG1 Result
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
Test LITERAL_LONG1_ascii_boundaries

LITERAL_LONG1_ascii_boundaries '\x00\x26\x28...'

Example 122: LITERAL_LONG1_ascii_boundaries Input
{<http://a.example/s> <http://a.example/p> '&([]' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '&([]' .}
Example 123: LITERAL_LONG1_ascii_boundaries Result
<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> .
Test LITERAL_LONG1_with_UTF8_boundaries

LITERAL_LONG1_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'

Example 124: LITERAL_LONG1_with_UTF8_boundaries Input
<http://a.example/s> <http://a.example/p> '''€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽''' .
Example 125: LITERAL_LONG1_with_UTF8_boundaries Result
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
Test LITERAL_LONG1_with_1_squote

LITERAL_LONG1 with 1 squote '''a'b'''

Example 126: LITERAL_LONG1_with_1_squote Input
{<http://a.example/s> <http://a.example/p> '''x'y''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''x'y''' .}
Example 127: LITERAL_LONG1_with_1_squote Result
<http://a.example/s> <http://a.example/p> "x'y" .
<http://a.example/s> <http://a.example/p> "x'y" <http://example/graph> .
Test LITERAL_LONG1_with_2_squotes

LITERAL_LONG1 with 2 squotes '''a''b'''

Example 128: LITERAL_LONG1_with_2_squotes Input
{<http://a.example/s> <http://a.example/p> '''x''y''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''x''y''' .}
Example 129: LITERAL_LONG1_with_2_squotes Result
<http://a.example/s> <http://a.example/p> "x''y" .
<http://a.example/s> <http://a.example/p> "x''y" <http://example/graph> .
Test LITERAL2

LITERAL2 "x"

Example 130: LITERAL2 Input
{<http://a.example/s> <http://a.example/p> "x" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "x" .}
Example 131: LITERAL2 Result
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
Test LITERAL2_ascii_boundaries

LITERAL2_ascii_boundaries '\x00\x09\x0b\x0c\x0e\x21\x23...'

Example 132: LITERAL2_ascii_boundaries Input
{<http://a.example/s> <http://a.example/p> "	!#[]" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "	!#[]" .}
Example 133: LITERAL2_ascii_boundaries Result
<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> .
Test LITERAL2_with_UTF8_boundaries

LITERAL2_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'

Example 134: LITERAL2_with_UTF8_boundaries Input
<http://a.example/s> <http://a.example/p> "€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽" .
Example 135: LITERAL2_with_UTF8_boundaries Result
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
Test LITERAL_LONG2

LITERAL_LONG2 """x"""

Example 136: LITERAL_LONG2 Input
{<http://a.example/s> <http://a.example/p> """x""" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """x""" .}
Example 137: LITERAL_LONG2 Result
<http://a.example/s> <http://a.example/p> "x" .
<http://a.example/s> <http://a.example/p> "x" <http://example/graph> .
Test LITERAL_LONG2_ascii_boundaries

LITERAL_LONG2_ascii_boundaries '\x00\x21\x23...'

Example 138: LITERAL_LONG2_ascii_boundaries Input
{<http://a.example/s> <http://a.example/p> "!#[]" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "!#[]" .}
Example 139: LITERAL_LONG2_ascii_boundaries Result
<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> .
Test LITERAL_LONG2_with_UTF8_boundaries

LITERAL_LONG2_with_UTF8_boundaries '\x80\x7ff\x800\xfff...'

Example 140: LITERAL_LONG2_with_UTF8_boundaries Input
<http://a.example/s> <http://a.example/p> """€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽""" .
Example 141: LITERAL_LONG2_with_UTF8_boundaries Result
<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
Test LITERAL_LONG2_with_1_squote

LITERAL_LONG2 with 1 squote """a"b"""

Example 142: LITERAL_LONG2_with_1_squote Input
{<http://a.example/s> <http://a.example/p> """x"y""" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """x"y""" .}
Example 143: LITERAL_LONG2_with_1_squote Result
<http://a.example/s> <http://a.example/p> "x\"y" .
<http://a.example/s> <http://a.example/p> "x\"y" <http://example/graph> .
Test LITERAL_LONG2_with_2_squotes

LITERAL_LONG2 with 2 squotes """a""b"""

Example 144: LITERAL_LONG2_with_2_squotes Input
{<http://a.example/s> <http://a.example/p> """x""y""" .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """x""y""" .}
Example 145: LITERAL_LONG2_with_2_squotes Result
<http://a.example/s> <http://a.example/p> "x\"\"y" .
<http://a.example/s> <http://a.example/p> "x\"\"y" <http://example/graph> .
Test literal_with_CHARACTER_TABULATION

literal with CHARACTER TABULATION

Example 146: literal_with_CHARACTER_TABULATION Input
{<http://a.example/s> <http://a.example/p> '	' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '	' .}
Example 147: literal_with_CHARACTER_TABULATION Result
<http://a.example/s> <http://a.example/p> "\t" .
<http://a.example/s> <http://a.example/p> "\t" <http://example/graph> .
Test literal_with_BACKSPACE

literal with BACKSPACE

Example 148: literal_with_BACKSPACE Input
{<http://a.example/s> <http://a.example/p> '' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '' .}
Example 149: literal_with_BACKSPACE Result
<http://a.example/s> <http://a.example/p> "\u0008" .
<http://a.example/s> <http://a.example/p> "\u0008" <http://example/graph> .
Test literal_with_LINE_FEED

literal with LINE FEED

Example 150: literal_with_LINE_FEED Input
{<http://a.example/s> <http://a.example/p> '''
''' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '''
''' .}
Example 151: literal_with_LINE_FEED Result
<http://a.example/s> <http://a.example/p> "\n" .
<http://a.example/s> <http://a.example/p> "\n" <http://example/graph> .
Test literal_with_CARRIAGE_RETURN

literal with CARRIAGE RETURN

Example 152: literal_with_CARRIAGE_RETURN Input
{<http://a.example/s> <http://a.example/p> '''
''' .}

<http://example/graph> {<http://a.example/s> <http://a.example/p> '''
''' .}
Example 153: literal_with_CARRIAGE_RETURN Result
<http://a.example/s> <http://a.example/p> "\r" .
<http://a.example/s> <http://a.example/p> "\r" <http://example/graph> .
Test literal_with_FORM_FEED

literal with FORM FEED

Example 154: literal_with_FORM_FEED Input
{<http://a.example/s> <http://a.example/p> '' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '' .}
Example 155: literal_with_FORM_FEED Result
<http://a.example/s> <http://a.example/p> "\u000C" .
<http://a.example/s> <http://a.example/p> "\u000C" <http://example/graph> .
Test literal_with_REVERSE_SOLIDUS

literal with REVERSE SOLIDUS

Example 156: literal_with_REVERSE_SOLIDUS Input
{<http://a.example/s> <http://a.example/p> '\\' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\\' .}
Example 157: literal_with_REVERSE_SOLIDUS Result
<http://a.example/s> <http://a.example/p> "\\" .
<http://a.example/s> <http://a.example/p> "\\" <http://example/graph> .
Test literal_with_escaped_CHARACTER_TABULATION

literal with escaped CHARACTER TABULATION

Example 158: literal_with_escaped_CHARACTER_TABULATION Input
{<http://a.example/s> <http://a.example/p> '\t' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\t' .}
Example 159: literal_with_escaped_CHARACTER_TABULATION Result
<http://a.example/s> <http://a.example/p> "\t" .
<http://a.example/s> <http://a.example/p> "\t" <http://example/graph> .
Test literal_with_escaped_BACKSPACE

literal with escaped BACKSPACE

Example 160: literal_with_escaped_BACKSPACE Input
{<http://a.example/s> <http://a.example/p> '\b' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\b' .}
Example 161: literal_with_escaped_BACKSPACE Result
<http://a.example/s> <http://a.example/p> "\u0008" .
<http://a.example/s> <http://a.example/p> "\u0008" <http://example/graph> .
Test literal_with_escaped_LINE_FEED

literal with escaped LINE FEED

Example 162: literal_with_escaped_LINE_FEED Input
{<http://a.example/s> <http://a.example/p> '\n' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\n' .}
Example 163: literal_with_escaped_LINE_FEED Result
<http://a.example/s> <http://a.example/p> "\n" .
<http://a.example/s> <http://a.example/p> "\n" <http://example/graph> .
Test literal_with_escaped_CARRIAGE_RETURN

literal with escaped CARRIAGE RETURN

Example 164: literal_with_escaped_CARRIAGE_RETURN Input
{<http://a.example/s> <http://a.example/p> '\r' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\r' .}
Example 165: literal_with_escaped_CARRIAGE_RETURN Result
<http://a.example/s> <http://a.example/p> "\r" .
<http://a.example/s> <http://a.example/p> "\r" <http://example/graph> .
Test literal_with_escaped_FORM_FEED

literal with escaped FORM FEED

Example 166: literal_with_escaped_FORM_FEED Input
{<http://a.example/s> <http://a.example/p> '\f' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\f' .}
Example 167: literal_with_escaped_FORM_FEED Result
<http://a.example/s> <http://a.example/p> "\u000C" .
<http://a.example/s> <http://a.example/p> "\u000C" <http://example/graph> .
Test literal_with_numeric_escape4

literal with numeric escape4 \u

Example 168: literal_with_numeric_escape4 Input
{<http://a.example/s> <http://a.example/p> '\u006F' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\u006F' .}
Example 169: literal_with_numeric_escape4 Result
<http://a.example/s> <http://a.example/p> "o" .
<http://a.example/s> <http://a.example/p> "o" <http://example/graph> .
Test literal_with_numeric_escape8

literal with numeric escape8 \U

Example 170: literal_with_numeric_escape8 Input
{<http://a.example/s> <http://a.example/p> '\U0000006F' .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> '\U0000006F' .}
Example 171: literal_with_numeric_escape8 Result
<http://a.example/s> <http://a.example/p> "o" .
<http://a.example/s> <http://a.example/p> "o" <http://example/graph> .
Test IRIREF_datatype

IRIREF datatype ""^^<t>

Example 172: IRIREF_datatype Input
{<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> .}
Example 173: IRIREF_datatype Result
<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> .
Test prefixed_name_datatype

prefixed name datatype ""^^p:t

Example 174: prefixed_name_datatype Input
@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 .}
Example 175: prefixed_name_datatype Result
<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> .
Test bareword_integer

bareword integer

Example 176: bareword_integer Input
{<http://a.example/s> <http://a.example/p> 1 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1 .}
Example 177: bareword_integer Result
<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> .
Test bareword_decimal

bareword decimal

Example 178: bareword_decimal Input
{<http://a.example/s> <http://a.example/p> 1.0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1.0 .}
Example 179: bareword_decimal Result
<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> .
Test bareword_double

bareword double

Example 180: bareword_double Input
{<http://a.example/s> <http://a.example/p> 1E0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1E0 .}
Example 181: bareword_double Result
<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> .
Test double_lower_case_e

double lower case e

Example 182: double_lower_case_e Input
{<http://a.example/s> <http://a.example/p> 1e0 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 1e0 .}
Example 183: double_lower_case_e Result
<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> .
Test negative_numeric

negative numeric

Example 184: negative_numeric Input
{<http://a.example/s> <http://a.example/p> -1 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> -1 .}
Example 185: negative_numeric Result
<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> .
Test positive_numeric

positive numeric

Example 186: positive_numeric Input
{<http://a.example/s> <http://a.example/p> +1 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> +1 .}
Example 187: positive_numeric Result
<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> .
Test numeric_with_leading_0

numeric with leading 0

Example 188: numeric_with_leading_0 Input
{<http://a.example/s> <http://a.example/p> 01 .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> 01 .}
Example 189: numeric_with_leading_0 Result
<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> .
Test literal_true

literal true

Example 190: literal_true Input
{<http://a.example/s> <http://a.example/p> true .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> true .}
Example 191: literal_true Result
<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> .
Test literal_false

literal false

Example 192: literal_false Input
{<http://a.example/s> <http://a.example/p> false .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> false .}
Example 193: literal_false Result
<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> .
Test langtagged_non_LONG

langtagged non-LONG "x"@en

Example 194: langtagged_non_LONG Input
{<http://a.example/s> <http://a.example/p> "chat"@en .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> "chat"@en .}
Example 195: langtagged_non_LONG Result
<http://a.example/s> <http://a.example/p> "chat"@en .
<http://a.example/s> <http://a.example/p> "chat"@en <http://example/graph> .
Test langtagged_LONG

langtagged LONG """x"""@en

Example 196: langtagged_LONG Input
{<http://a.example/s> <http://a.example/p> """chat"""@en .}
<http://example/graph> {<http://a.example/s> <http://a.example/p> """chat"""@en .}
Example 197: langtagged_LONG Result
<http://a.example/s> <http://a.example/p> "chat"@en .
<http://a.example/s> <http://a.example/p> "chat"@en <http://example/graph> .
Test lantag_with_subtag

lantag with subtag "x"@en-us

Example 198: lantag_with_subtag Input
{<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 .}
Example 199: lantag_with_subtag Result
<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> .
Test objectList_with_two_objects

objectList with two objects … <o1>,<o2>

Example 200: objectList_with_two_objects Input
{<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> .}
Example 201: objectList_with_two_objects Result
<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> .
Test predicateObjectList_with_two_objectLists

predicateObjectList with two objectLists … <o1>,<o2>

Example 202: predicateObjectList_with_two_objectLists Input
{<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> .}
Example 203: predicateObjectList_with_two_objectLists Result
<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> .
Test repeated_semis_at_end

repeated semis at end <s> <p> <o> ;; <p2> <o2> .

Example 204: repeated_semis_at_end Input
{<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> .}
Example 205: repeated_semis_at_end Result
<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> .
Test repeated_semis_not_at_end

repeated semis not at end <s> <p> <o> ;;.

Example 206: repeated_semis_not_at_end Input
{<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>;; .}
Example 207: repeated_semis_not_at_end Result
<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> .
Test comment_following_localName

comment following localName

Example 208: comment_following_localName Input
@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
  .
}
Example 209: comment_following_localName Result
<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> .
Test number_sign_following_localName

number sign following localName

Example 210: number_sign_following_localName Input
@prefix p: <http://a.example/> .
<http://a.example/s> <http://a.example/p> p:o\#numbersign
.
Example 211: number_sign_following_localName Result
<http://a.example/s> <http://a.example/p> <http://a.example/o#numbersign> .
Test comment_following_PNAME_NS

comment following PNAME_NS

Example 212: comment_following_PNAME_NS Input
@prefix p: <http://a.example/> .
<http://a.example/s> <http://a.example/p> p:#comment
.
Example 213: comment_following_PNAME_NS Result
<http://a.example/s> <http://a.example/p> <http://a.example/> .
Test number_sign_following_PNAME_NS

number sign following PNAME_NS

Example 214: number_sign_following_PNAME_NS Input
@prefix p: <http://a.example/>.
<http://a.example/s> <http://a.example/p> p:\#numbersign
.
Example 215: number_sign_following_PNAME_NS Result
<http://a.example/s> <http://a.example/p> <http://a.example/#numbersign> .
Test LITERAL_LONG2_with_REVERSE_SOLIDUS

REVERSE SOLIDUS at end of LITERAL_LONG2

Example 216: LITERAL_LONG2_with_REVERSE_SOLIDUS Input
@prefix : <http://example.org/ns#> .

{:s :p1 """test-\\""" .}
<http://example/graph> {:s :p1 """test-\\""" .}
Example 217: LITERAL_LONG2_with_REVERSE_SOLIDUS Result
<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> .
Test trig-syntax-bad-num-05

Bad number format (negative test)

Example 218: trig-syntax-bad-num-05 Input
{<http://example.org/resource> <http://example.org#pred> "value"@en^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .}
Test two_LITERAL_LONG2s

two LITERAL_LONG2s testing quote delimiter overrun

Example 219: two_LITERAL_LONG2s Input
# 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""" .
}
Example 220: two_LITERAL_LONG2s Result
<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" .
Test langtagged_LONG_with_subtag

langtagged LONG with subtag """Cheers"""@en-UK

Example 221: langtagged_LONG_with_subtag Input
# Test long literal with lang tag
@prefix :  <http://example.org/ex#> .
{:a :b """Cheers"""@en-UK .}
<http://example/graph> {:a :b """Cheers"""@en-UK .}
Example 222: langtagged_LONG_with_subtag Result
<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> .
Test trig-syntax-file-01

Empty file

Example 223: trig-syntax-file-01 Input

      
Test trig-syntax-file-02

Only comment

Example 224: trig-syntax-file-02 Input
#Empty file.
Test trig-syntax-file-03

One comment, one empty line

Example 225: trig-syntax-file-03 Input
#One comment, one empty line.

Test trig-syntax-uri-01

Only IRIs

Example 226: trig-syntax-uri-01 Input
{<http://example/s> <http://example/p> <http://example/o> .}
Test trig-syntax-uri-02

IRIs with Unicode escape

Example 227: trig-syntax-uri-02 Input
# x53 is capital S
{<http://example/\u0053> <http://example/p> <http://example/o> .}
Test trig-syntax-uri-03

IRIs with long Unicode escape

Example 228: trig-syntax-uri-03 Input
# x53 is capital S
{<http://example/\U00000053> <http://example/p> <http://example/o> .}
Test trig-syntax-uri-04

Legal IRIs

Example 229: trig-syntax-uri-04 Input
# IRI with all chars in it.
{<http://example/s> <http://example/p>
<scheme:!$%25&'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> .}
Test trig-syntax-base-01

@base

Example 230: trig-syntax-base-01 Input
@base <http://example/> .
Test trig-syntax-base-02

BASE

Example 231: trig-syntax-base-02 Input
BASE <http://example/>
Test trig-syntax-base-03

@base with relative IRIs

Example 232: trig-syntax-base-03 Input
@base <http://example/> .
{<s> <p> <o> .}
Test trig-syntax-base-04

base with relative IRIs

Example 233: trig-syntax-base-04 Input
base <http://example/>
{<s> <p> <o> .}
Test trig-syntax-prefix-01

@prefix

Example 234: trig-syntax-prefix-01 Input
@prefix : <http://example/> .
Test trig-syntax-prefix-02

PreFIX

Example 235: trig-syntax-prefix-02 Input
PreFIX : <http://example/>
Test trig-syntax-prefix-03

Empty PREFIX

Example 236: trig-syntax-prefix-03 Input
PREFIX : <http://example/>
{:s :p :123 .}
Test trig-syntax-prefix-04

Empty @prefix with % escape

Example 237: trig-syntax-prefix-04 Input
@prefix : <http://example/> .
{:s :p :%20 .}
Test trig-syntax-prefix-05

@prefix with no suffix

Example 238: trig-syntax-prefix-05 Input
@prefix : <http://example/> .
{: : : .}
Test trig-syntax-prefix-06

colon is a legal pname character

Example 239: trig-syntax-prefix-06 Input
# colon is a legal pname character
@prefix : <http://example/> .
@prefix x: <http://example/> .
{:a:b:c  x:d:e:f :::: .}
Test trig-syntax-prefix-07

dash is a legal pname character

Example 240: trig-syntax-prefix-07 Input
# dash is a legal pname character
@prefix x: <http://example/> .
{x:a-b-c  x:p x:o .}
Test trig-syntax-prefix-08

underscore is a legal pname character

Example 241: trig-syntax-prefix-08 Input
# underscore is a legal pname character
@prefix x: <http://example/> .
{x:_  x:p_1 x:o .}
Test trig-syntax-prefix-09

percents in pnames

Example 242: trig-syntax-prefix-09 Input
# percents
@prefix : <http://example/> .
@prefix x: <http://example/> .
{:a%3E  x:%25 :a%3Eb .}
Test trig-syntax-string-01

string literal

Example 243: trig-syntax-string-01 Input
{<http://example/s> <http://example/p> "string" .}
Test trig-syntax-string-02

langString literal

Example 244: trig-syntax-string-02 Input
{<http://example/s> <http://example/p> "string"@en .}
Test trig-syntax-string-03

langString literal with region

Example 245: trig-syntax-string-03 Input
{<http://example/s> <http://example/p> "string"@en-uk .}
Test trig-syntax-string-04

squote string literal

Example 246: trig-syntax-string-04 Input
{<http://example/s> <http://example/p> 'string' .}
Test trig-syntax-string-05

squote langString literal

Example 247: trig-syntax-string-05 Input
{<http://example/s> <http://example/p> 'string'@en .}
Test trig-syntax-string-06

squote langString literal with region

Example 248: trig-syntax-string-06 Input
{<http://example/s> <http://example/p> 'string'@en-uk .}
Test trig-syntax-string-07

long string literal with embedded single- and double-quotes

Example 249: trig-syntax-string-07 Input
{<http://example/s> <http://example/p> """abc""def''ghi""" .}
Test trig-syntax-string-08

long string literal with embedded newline

Example 250: trig-syntax-string-08 Input
{<http://example/s> <http://example/p> """abc
def""" .}
Test trig-syntax-string-09

squote long string literal with embedded single- and double-quotes

Example 251: trig-syntax-string-09 Input
{<http://example/s> <http://example/p> '''abc
def''' .}
Test trig-syntax-string-10

long langString literal with embedded newline

Example 252: trig-syntax-string-10 Input
{<http://example/s> <http://example/p> """abc
def"""@en .}
Test trig-syntax-string-11

squote long langString literal with embedded newline

Example 253: trig-syntax-string-11 Input
{<http://example/s> <http://example/p> '''abc
def'''@en .}
Test trig-syntax-str-esc-01

string literal with escaped newline

Example 254: trig-syntax-str-esc-01 Input
{<http://example/s> <http://example/p> "a\n" .}
Test trig-syntax-str-esc-02

string literal with Unicode escape

Example 255: trig-syntax-str-esc-02 Input
{<http://example/s> <http://example/p> "a\u0020b" .}
Test trig-syntax-str-esc-03

string literal with long Unicode escape

Example 256: trig-syntax-str-esc-03 Input
{<http://example/s> <http://example/p> "a\U00000020b" .}
Test trig-syntax-pname-esc-01

pname with back-slash escapes

Example 257: trig-syntax-pname-esc-01 Input
@prefix : <http://example/> .
{:s :p :\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\_\%AA .}
Test trig-syntax-pname-esc-02

pname with back-slash escapes (2)

Example 258: trig-syntax-pname-esc-02 Input
@prefix : <http://example/> .
{:s :p :0123\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\_\%AA123 .}
Test trig-syntax-pname-esc-03

pname with back-slash escapes (3)

Example 259: trig-syntax-pname-esc-03 Input
@prefix : <http://example/> .
{:xyz\~ :abc\.:  : .}
Test trig-syntax-bnode-01

bnode subject

Example 260: trig-syntax-bnode-01 Input
@prefix : <http://example/> .
{[] :p :o .}
Test trig-syntax-bnode-02

bnode object

Example 261: trig-syntax-bnode-02 Input
@prefix : <http://example/> .
{:s :p [] .}
Test trig-syntax-bnode-03

bnode property list object

Example 262: trig-syntax-bnode-03 Input
@prefix : <http://example/> .
{:s :p [ :q :o ] .}
Test trig-syntax-bnode-04

bnode property list object (2)

Example 263: trig-syntax-bnode-04 Input
@prefix : <http://example/> .
{:s :p [ :q1 :o1 ; :q2 :o2 ] .}
Test trig-syntax-bnode-05

bnode property list subject

Example 264: trig-syntax-bnode-05 Input
@prefix : <http://example/> .
{[ :q1 :o1 ; :q2 :o2 ] :p :o .}
Test trig-syntax-bnode-06

labeled bnode subject

Example 265: trig-syntax-bnode-06 Input
@prefix : <http://example/> .
{_:a  :p :o .}
Test trig-syntax-bnode-07

labeled bnode subject and object

Example 266: trig-syntax-bnode-07 Input
@prefix : <http://example/> .
{:s  :p _:a .
_:a  :p :o .
}
Test trig-syntax-bnode-08

bare bnode property list

Example 267: trig-syntax-bnode-08 Input
@prefix : <http://example/> .
{[ :p  :o ] .}
Test trig-syntax-bnode-09

bnode property list

Example 268: trig-syntax-bnode-09 Input
@prefix : <http://example/> .
{[ :p  :o1,:2 ] .
:s :p :o  .}
Test trig-syntax-bnode-10

mixed bnode property list and triple

Example 269: trig-syntax-bnode-10 Input
@prefix : <http://example/> .
{
:s1 :p :o .
[ :p1  :o1 ; :p2 :o2 ] .
:s2 :p :o .
}
Test trig-syntax-number-01

integer literal

Example 270: trig-syntax-number-01 Input
{<s> <p> 123 .}
Test trig-syntax-number-02

negative integer literal

Example 271: trig-syntax-number-02 Input
{<s> <p> -123 .}
Test trig-syntax-number-03

positive integer literal

Example 272: trig-syntax-number-03 Input
{<s> <p> +123 .}
Test trig-syntax-number-04

decimal literal

Example 273: trig-syntax-number-04 Input
# This is a decimal.
{<s> <p> 123.0 . }
Test trig-syntax-number-05

decimal literal (no leading digits)

Example 274: trig-syntax-number-05 Input
# This is a decimal.
{<s> <p> .1 . }
Test trig-syntax-number-06

negative decimal literal

Example 275: trig-syntax-number-06 Input
# This is a decimal.
{<s> <p> -123.0 . }
Test trig-syntax-number-07

positive decimal literal

Example 276: trig-syntax-number-07 Input
# This is a decimal.
{<s> <p> +123.0 . }
Test trig-syntax-number-08

integer literal with decimal lexical confusion

Example 277: trig-syntax-number-08 Input
# This is an integer
{<s> <p> 123.}
Test trig-syntax-number-09

double literal

Example 278: trig-syntax-number-09 Input
{<s> <p> 123.0e1 .}
Test trig-syntax-number-10

negative double literal

Example 279: trig-syntax-number-10 Input
{<s> <p> -123e-1 .}
Test trig-syntax-number-11

double literal no fraction

Example 280: trig-syntax-number-11 Input
{<s> <p> 123.E+1 .}
Test trig-syntax-datatypes-01

xsd:byte literal

Example 281: trig-syntax-datatypes-01 Input
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
{<s> <p> "123"^^xsd:byte .}
Test trig-syntax-datatypes-02

integer as xsd:string

Example 282: trig-syntax-datatypes-02 Input
@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 .}
Test trig-syntax-kw-01

boolean literal (true)

Example 283: trig-syntax-kw-01 Input
{<s> <p> true .}
Test trig-syntax-kw-02

boolean literal (false)

Example 284: trig-syntax-kw-02 Input
{<s> <p> false .}
Test trig-syntax-kw-03

'a' as keyword

Example 285: trig-syntax-kw-03 Input
@prefix : <http://example/> .
{:s a :C .}
Test trig-syntax-struct-01

object list

Example 286: trig-syntax-struct-01 Input
@prefix : <http://example/> .
{:s :p :o1 , :o2 .}
Test trig-syntax-struct-02

predicate list with object list

Example 287: trig-syntax-struct-02 Input
@prefix : <http://example/> .
{:s :p1 :o1 ;
   :p2 :o2 .
}
Test trig-syntax-struct-03

predicate list with object list and dangling ';'

Example 288: trig-syntax-struct-03 Input
@prefix : <http://example/> .
{:s :p1 :o1 ;
   :p2 :o2 ;
   .
}
Test trig-syntax-struct-04

predicate list with multiple ;;

Example 289: trig-syntax-struct-04 Input
@prefix : <http://example/> .
{:s :p1 :o1 ;;
   :p2 :o2 
   .
}
Test trig-syntax-struct-05

predicate list with multiple ;;

Example 290: trig-syntax-struct-05 Input
@prefix : <http://example/> .
{:s :p1 :o1 ;
   :p2 :o2 ;;
   .
}
Test trig-syntax-lists-01

empty list

Example 291: trig-syntax-lists-01 Input
@prefix : <http://example/> .
{:s :p () .}
Test trig-syntax-lists-02

mixed list

Example 292: trig-syntax-lists-02 Input
@prefix : <http://example/> .
{:s :p (1 "2" :o) .}
Test trig-syntax-lists-03

isomorphic list as subject and object

Example 293: trig-syntax-lists-03 Input
@prefix : <http://example/> .
{(1) :p (1) .}
Test trig-syntax-lists-04

lists of lists

Example 294: trig-syntax-lists-04 Input
@prefix : <http://example/> .
{(()) :p (()) .}
Test trig-syntax-lists-05

mixed lists with embedded lists

Example 295: trig-syntax-lists-05 Input
@prefix : <http://example/> .
{(1 2 (1 2)) :p (( "a") "b" :o) .}
Test trig-syntax-bad-uri-01

Bad IRI : space (negative test)

Example 296: trig-syntax-bad-uri-01 Input
# Bad IRI : space.
{<http://example/ space> <http://example/p> <http://example/o> .}
Test trig-syntax-bad-uri-02

Bad IRI : bad escape (negative test)

Example 297: trig-syntax-bad-uri-02 Input
# Bad IRI : bad escape
{<http://example/\u00ZZ11> <http://example/p> <http://example/o> .}
Test trig-syntax-bad-uri-03

Bad IRI : bad long escape (negative test)

Example 298: trig-syntax-bad-uri-03 Input
# Bad IRI : bad escape
{<http://example/\U00ZZ1111> <http://example/p> <http://example/o> .}
Test trig-syntax-bad-uri-04

Bad IRI : character escapes not allowed (negative test)

Example 299: trig-syntax-bad-uri-04 Input
# Bad IRI : character escapes not allowed.
{<http://example/\n> <http://example/p> <http://example/o> .}
Test trig-syntax-bad-uri-05

Bad IRI : character escapes not allowed (2) (negative test)

Example 300: trig-syntax-bad-uri-05 Input
# Bad IRI : character escapes not allowed.
{<http://example/\/> <http://example/p> <http://example/o> .}
Test trig-syntax-bad-prefix-01

No prefix (negative test)

Example 301: trig-syntax-bad-prefix-01 Input
# No prefix
{:s <http://example/p> "x" .}
Test trig-syntax-bad-prefix-02

No prefix (2) (negative test)

Example 302: trig-syntax-bad-prefix-02 Input
# No prefix
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
{<http://example/s> rdf:type :C .}
Test trig-syntax-bad-prefix-03

@prefix without URI (negative test)

Example 303: trig-syntax-bad-prefix-03 Input
# @prefix without URI.
@prefix ex: .
Test trig-syntax-bad-prefix-04

@prefix without prefix name (negative test)

Example 304: trig-syntax-bad-prefix-04 Input
# @prefix without prefix name .
@prefix <http://example/> .
Test trig-syntax-bad-prefix-05

@prefix without ':' (negative test)

Example 305: trig-syntax-bad-prefix-05 Input
# @prefix without :
@prefix x <http://example/> .
Test trig-syntax-bad-base-01

@base without URI (negative test)

Example 306: trig-syntax-bad-base-01 Input
# @base without URI.
@base .
Test trig-syntax-bad-base-02

@base in wrong case (negative test)

Example 307: trig-syntax-bad-base-02 Input
# @base in wrong case.
@BASE <http://example/> .
Test trig-syntax-bad-base-03

BASE without URI (negative test)

Example 308: trig-syntax-bad-base-03 Input
# FULL STOP used after SPARQL BASE
BASE <http://example/> .
{<s> <p> <o> .}
Test trig-syntax-bad-struct-02

Turtle is not N3 (negative test)

Example 309: trig-syntax-bad-struct-02 Input
# TriG is not N3
<http://example/s> = <http://example/o> .
Test trig-syntax-bad-struct-03

Turtle is not NQuads (negative test)

Example 310: trig-syntax-bad-struct-03 Input
# TriG is not NQuads
<http://example/s> <http://example/p> <http://example/o> <http://example/graph> .
Test trig-syntax-bad-struct-04

Turtle does not allow literals-as-subjects (negative test)

Example 311: trig-syntax-bad-struct-04 Input
# TriG does not allow literals-as-subjects
{"hello" <http://example/p> <http://example/o> .}
Test trig-syntax-bad-struct-05

Turtle does not allow literals-as-predicates (negative test)

Example 312: trig-syntax-bad-struct-05 Input
# TriG does not allow literals-as-predicates
{<http://example/s> "hello" <http://example/o> .}
Test trig-syntax-bad-struct-06

Turtle does not allow bnodes-as-predicates (negative test)

Example 313: trig-syntax-bad-struct-06 Input
# TriG does not allow bnodes-as-predicates
{<http://example/s> [] <http://example/o> .}
Test trig-syntax-bad-struct-07

Turtle does not allow labeled bnodes-as-predicates (negative test)

Example 314: trig-syntax-bad-struct-07 Input
# TriG does not allow bnodes-as-predicates
{<http://example/s> _:p <http://example/o> .}
Test trig-syntax-bad-kw-01

'A' is not a keyword (negative test)

Example 315: trig-syntax-bad-kw-01 Input
@prefix : <http://example/> .
{:s A :C .}
Test trig-syntax-bad-kw-02

'a' cannot be used as subject (negative test)

Example 316: trig-syntax-bad-kw-02 Input
@prefix : <http://example/> .
{a :p :o .}
Test trig-syntax-bad-kw-03

'a' cannot be used as object (negative test)

Example 317: trig-syntax-bad-kw-03 Input
@prefix : <http://example/> .
{:s :p a .}
Test trig-syntax-bad-kw-04

'true' cannot be used as subject (negative test)

Example 318: trig-syntax-bad-kw-04 Input
@prefix : <http://example/> .
{true :p :o .}
Test trig-syntax-bad-kw-05

'true' cannot be used as object (negative test)

Example 319: trig-syntax-bad-kw-05 Input
@prefix : <http://example/> .
{:s true :o .}
Test trig-syntax-bad-n3-extras-01

{} fomulae not in Turtle (negative test)

Example 320: trig-syntax-bad-n3-extras-01 Input
# {} formulae not in Turtle
@prefix : <http://example/> .

{ :a :q :c . } :p :z .

Test trig-syntax-bad-n3-extras-02

= is not Turtle (negative test)

Example 321: trig-syntax-bad-n3-extras-02 Input
# = is not Turtle
@prefix : <http://example/> .

{:a = :b .}
Test trig-syntax-bad-n3-extras-03

N3 paths not in Turtle (negative test)

Example 322: trig-syntax-bad-n3-extras-03 Input
# N3 paths
@prefix : <http://example/> .
@prefix ns: <http://example/p#> .

{
:x.
  ns:p.
    ns:q :p :z .
}
Test trig-syntax-bad-n3-extras-04

N3 paths not in Turtle (negative test)

Example 323: trig-syntax-bad-n3-extras-04 Input
# N3 paths
@prefix : <http://example/> .
@prefix ns: <http://example/p#> .

{:x^ns:p :p :z .}
Test trig-syntax-bad-n3-extras-05

N3 is...of not in Turtle (negative test)

Example 324: trig-syntax-bad-n3-extras-05 Input
# N3 is...of
@prefix : <http://example/> .

{:z is :p of :x .}
Test trig-syntax-bad-n3-extras-06

N3 paths not in Turtle (negative test)

Example 325: trig-syntax-bad-n3-extras-06 Input
# = is not Turtle
@prefix : <http://example/> .

{:a.:b.:c .}
Test trig-syntax-bad-n3-extras-07

@keywords is not Turtle (negative test)

Example 326: trig-syntax-bad-n3-extras-07 Input
# @keywords is not Turtle
@keywords a .
{x a Item .}
Test trig-syntax-bad-n3-extras-08

@keywords is not Turtle (negative test)

Example 327: trig-syntax-bad-n3-extras-08 Input
# @keywords is not Turtle
@keywords a .
{x a Item .}
Test trig-syntax-bad-n3-extras-09

=> is not Turtle (negative test)

Example 328: trig-syntax-bad-n3-extras-09 Input
# => is not Turtle
@prefix : <http://example/> .
{:s => :o .}
Test trig-syntax-bad-n3-extras-10

<= is not Turtle (negative test)

Example 329: trig-syntax-bad-n3-extras-10 Input
# <= is not Turtle
@prefix : <http://example/> .
{:s <= :o .}
Test trig-syntax-bad-n3-extras-11

@forSome is not Turtle (negative test)

Example 330: trig-syntax-bad-n3-extras-11 Input
# @forSome is not Turtle
@prefix : <http://example/> .
@forSome :x .
Test trig-syntax-bad-n3-extras-12

@forAll is not Turtle (negative test)

Example 331: trig-syntax-bad-n3-extras-12 Input
# @forAll is not Turtle
@prefix : <http://example/> .
@forAll :x .
Test trig-syntax-bad-n3-extras-13

@keywords is not Turtle (negative test)

Example 332: trig-syntax-bad-n3-extras-13 Input
# @keywords is not Turtle
@keywords .
{x @a Item .}
Test trig-syntax-bad-struct-09

extra '.' (negative test)

Example 333: trig-syntax-bad-struct-09 Input
# Too many DOTs
{<http://example/s> <http://example/p> <http://example/o> . .}
Test trig-syntax-bad-struct-10

extra '.' (negative test)

Example 334: trig-syntax-bad-struct-10 Input
# Too many DOTs
{
<http://example/s> <http://example/p> <http://example/o> . .
<http://example/s1> <http://example/p1> <http://example/o1> .
}
Test trig-syntax-bad-struct-12

subject, predicate, no object (negative test)

Example 335: trig-syntax-bad-struct-12 Input
{<http://example/s> }
Test trig-syntax-bad-struct-13

subject, predicate, no object (negative test)

Example 336: trig-syntax-bad-struct-13 Input
{<http://example/s> <http://example/p> }
Test trig-syntax-bad-struct-14

literal as subject (negative test)

Example 337: trig-syntax-bad-struct-14 Input
# Literal as subject
{"abc" <http://example/p> <http://example/p>  .}
Test trig-syntax-bad-struct-15

literal as predicate (negative test)

Example 338: trig-syntax-bad-struct-15 Input
# Literal as predicate
{<http://example/s> "abc" <http://example/p>  .}
Test trig-syntax-bad-struct-16

bnode as predicate (negative test)

Example 339: trig-syntax-bad-struct-16 Input
# BNode as predicate
{<http://example/s> [] <http://example/p>  .}
Test trig-syntax-bad-struct-17

labeled bnode as predicate (negative test)

Example 340: trig-syntax-bad-struct-17 Input
# BNode as predicate
{<http://example/s> _:a <http://example/p>  .}
Test trig-syntax-bad-lang-01

langString with bad lang (negative test)

Example 341: trig-syntax-bad-lang-01 Input
# Bad lang tag
{<http://example/s> <http://example/p> "string"@1 .}
Test trig-syntax-bad-esc-01

Bad string escape (negative test)

Example 342: trig-syntax-bad-esc-01 Input
# Bad string escape
{<http://example/s> <http://example/p> "a\zb" .}
Test trig-syntax-bad-esc-02

Bad string escape (negative test)

Example 343: trig-syntax-bad-esc-02 Input
# Bad string escape
{<http://example/s> <http://example/p> "\uWXYZ" .}
Test trig-syntax-bad-esc-03

Bad string escape (negative test)

Example 344: trig-syntax-bad-esc-03 Input
# Bad string escape
{<http://example/s> <http://example/p> "\U0000WXYZ" .}
Test trig-syntax-bad-esc-04

Bad string escape (negative test)

Example 345: trig-syntax-bad-esc-04 Input
# Bad string escape
{<http://example/s> <http://example/p> "\U0000WXYZ" .}
Test trig-syntax-bad-pname-01

'~' must be escaped in pname (negative test)

Example 346: trig-syntax-bad-pname-01 Input
# ~ must be escaped.
@prefix : <http://example/> .
{:a~b :p :o .}
Test trig-syntax-bad-pname-02

Bad %-sequence in pname (negative test)

Example 347: trig-syntax-bad-pname-02 Input
# Bad %-sequence
@prefix : <http://example/> .
{:a%2 :p :o .}
Test trig-syntax-bad-pname-03

Bad unicode escape in pname (negative test)

Example 348: trig-syntax-bad-pname-03 Input
# No \u (x39 is "9")
@prefix : <http://example/> .
{:a\u0039 :p :o .}
Test trig-syntax-bad-string-01

mismatching string literal open/close (negative test)

Example 349: trig-syntax-bad-string-01 Input
@prefix : <http://example/> .
{:s :p "abc' .}
Test trig-syntax-bad-string-02

mismatching string literal open/close (negative test)

Example 350: trig-syntax-bad-string-02 Input
@prefix : <http://example/> .
{:s :p 'abc" .}
Test trig-syntax-bad-string-03

mismatching string literal long/short (negative test)

Example 351: trig-syntax-bad-string-03 Input
@prefix : <http://example/> .
{:s :p '''abc' .}
Test trig-syntax-bad-string-04

mismatching long string literal open/close (negative test)

Example 352: trig-syntax-bad-string-04 Input
@prefix : <http://example/> .
{:s :p """abc''' .}
Test trig-syntax-bad-string-05

Long literal with missing end (negative test)

Example 353: trig-syntax-bad-string-05 Input
# Long literal with missing end
@prefix : <http://example/> .
{
:s :p """abc
def
}
Test trig-syntax-bad-string-06

Long literal with extra quote (negative test)

Example 354: trig-syntax-bad-string-06 Input
# Long literal with 4"
@prefix : <http://example/> .
{:s :p """abc""""@en .}
Test trig-syntax-bad-string-07

Long literal with extra squote (negative test)

Example 355: trig-syntax-bad-string-07 Input
# Long literal with 4'
@prefix : <http://example/> .
{:s :p '''abc''''@en .}
Test trig-syntax-bad-num-01

Bad number format (negative test)

Example 356: trig-syntax-bad-num-01 Input
{<http://example/s> <http://example/p> 123.abc .}
Test trig-syntax-bad-num-02

Bad number format (negative test)

Example 357: trig-syntax-bad-num-02 Input
{<http://example/s> <http://example/p> 123e .}
Test trig-syntax-bad-num-03

Bad number format (negative test)

Example 358: trig-syntax-bad-num-03 Input
{<http://example/s> <http://example/p> 123abc .}
Test trig-syntax-bad-num-04

Bad number format (negative test)

Example 359: trig-syntax-bad-num-04 Input
{<http://example/s> <http://example/p> 0x123 .}
Test trig-syntax-bad-num-05

Bad number format (negative test)

Example 360: trig-syntax-bad-num-05 Input
{<http://example/s> <http://example/p> +-1 .}
Test trig-eval-struct-01

triple with IRIs

Example 361: trig-eval-struct-01 Input
{<http://example/s> <http://example/p> <http://example/o> .}
<http://example/graph> {<http://example/s> <http://example/p> <http://example/o> .}
Example 362: trig-eval-struct-01 Result
<http://example/s> <http://example/p> <http://example/o> .
<http://example/s> <http://example/p> <http://example/o> <http://example/graph> .
Test trig-eval-struct-02

triple with IRIs and embedded whitespace

Example 363: trig-eval-struct-02 Input
{
  <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> ; 
      .
}
Example 364: trig-eval-struct-02 Result
<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> .
Test trig-subm-01

Blank subject

Example 365: trig-subm-01 Input
@prefix : <#> .
{[] :x :y .}
<http://example/graph> {[] :x :y .}
Example 366: trig-subm-01 Result
_: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> .
Test trig-subm-02

@prefix and qnames

Example 367: trig-subm-02 Input
# 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 .
}
Example 368: trig-subm-02 Result
<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> .
Test trig-subm-03

, operator

Example 369: trig-subm-03 Input
# Test , operator
@prefix : <http://example.org/base#> .

{
:a :b :c,
      :d,
      :e .
}

<http://example/graph> {
:a :b :c,
      :d,
      :e .
}
Example 370: trig-subm-03 Result
<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> .
Test trig-subm-04

; operator

Example 371: trig-subm-04 Input
# Test ; operator
@prefix : <http://example.org/base#> .

{
:a :b :c ;
   :d :e ;
   :f :g .
}

<http://example/graph> {
:a :b :c ;
   :d :e ;
   :f :g .
}
Example 372: trig-subm-04 Result
<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> .
Test trig-subm-05

empty [] as subject and object

Example 373: trig-subm-05 Input
# Test empty [] operator; not allowed as predicate
@prefix : <http://example.org/base#> .

{
[] :a :b .
:c :d [] .
}

<http://example/graph> {
[] :a :b .
:c :d [] .
}
Example 374: trig-subm-05 Result
_: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> .
Test trig-subm-06

non-empty [] as subject and object

Example 375: trig-subm-06 Input
# 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 ] .
}
Example 376: trig-subm-06 Result
_: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> .
Test trig-subm-07

'a' as predicate

Example 377: trig-subm-07 Input
# 'a' only allowed as a predicate
@prefix : <http://example.org/base#> .
{:a a :b .}
<http://example/graph> {:a a :b .}
Example 378: trig-subm-07 Result
<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> .
Test trig-subm-08

simple collection

Example 379: trig-subm-08 Input
@prefix : <http://example.org/stuff/1.0/> .
{:a :b ( "apple" "banana" ) .}
<http://example/graph> {:a :b ( "apple" "banana" ) .}

Example 380: trig-subm-08 Result
_: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> .
Test trig-subm-09

empty collection

Example 381: trig-subm-09 Input
@prefix : <http://example.org/stuff/1.0/> .
{:a :b ( ) .}
<http://example/graph> {:a :b ( ) .}

Example 382: trig-subm-09 Result
<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> .
Test trig-subm-10

integer datatyped literal

Example 383: trig-subm-10 Input
# 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 .
}
Example 384: trig-subm-10 Result
_: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> .
Test trig-subm-11

decimal integer canonicalization

Example 385: trig-subm-11 Input
{
<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 .
}
Example 386: trig-subm-11 Result
<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> .
Test trig-subm-12

- and _ in names and qnames

Example 387: trig-subm-12 Input
# 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" .
}
Example 388: trig-subm-12 Result
<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> .
Test trig-subm-13

tests for rdf:_<numbers> and other qnames starting with _

Example 389: trig-subm-13 Input
# 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" .
}
Example 390: trig-subm-13 Result
<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> .
Test trig-subm-14

bare : allowed

Example 391: trig-subm-14 Input
# Test for : allowed
@prefix :    <http://example.org/ron> .

{
[] : [] .

: : : .

}

<http://example/graph> {
[] : [] .

: : : .

}
Example 392: trig-subm-14 Result
_: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> .
Test trig-subm-15

simple long literal

Example 393: trig-subm-15 Input
# 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""" .
}
Example 394: trig-subm-15 Result
<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> .
Test trig-subm-16

long literals with escapes

Example 395: trig-subm-16 Input
@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
""" .
}
Example 396: trig-subm-16 Result
<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> .
Test trig-subm-17

floating point number

Example 397: trig-subm-17 Input
@prefix : <http://example.org/#> .

{:a :b  1.0 .}
<http://example/graph> {:a :b  1.0 .}

Example 398: trig-subm-17 Result
<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> .
Test trig-subm-18

empty literals, normal and long variant

Example 399: trig-subm-18 Input
@prefix : <http://example.org/#> .

{
:a :b "" .

:c :d """""" .

}

<http://example/graph> {
:a :b "" .

:c :d """""" .

}
Example 400: trig-subm-18 Result
<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> .
Test trig-subm-19

positive integer, decimal and doubles

Example 401: trig-subm-19 Input
@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 .
}
Example 402: trig-subm-19 Result
<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> .
Test trig-subm-20

negative integer, decimal and doubles

Example 403: trig-subm-20 Input
@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 .
}
Example 404: trig-subm-20 Result
<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> .
Test trig-subm-21

long literal ending in double quote

Example 405: trig-subm-21 Input
# Test long literal
@prefix :  <http://example.org/ex#> .
{:a :b """John said: "Hello World!\"""" .}
<http://example/graph> {:a :b """John said: "Hello World!\"""" .}
Example 406: trig-subm-21 Result
<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> .
Test trig-subm-22

boolean literals

Example 407: trig-subm-22 Input
@prefix : <http://example.org#> .

{
:a :b true .
:c :d false .
}

<http://example/graph> {
:a :b true .
:c :d false .
}
Example 408: trig-subm-22 Result
<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> .
Test trig-subm-23

comments

Example 409: trig-subm-23 Input
# 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
}
Example 410: trig-subm-23 Result
<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> .
Test trig-subm-24

no final mewline

Example 411: trig-subm-24 Input
# comment line with no final newline test
@prefix : <http://example.org/#> .
{:a :b :c .}
<http://example/graph> {:a :b :c .}
#foo
Example 412: trig-subm-24 Result
<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> .
Test trig-subm-25

repeating a @prefix changes pname definition

Example 413: trig-subm-25 Input
@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 .}
Example 414: trig-subm-25 Result
<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> .
Test trig-subm-26

Variations on decimal canonicalization

Example 415: trig-subm-26 Input
{
<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> .
}
Example 416: trig-subm-26 Result
<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> .
Test trig-subm-27

Repeating @base changes base for relative IRI lookup

Example 417: trig-subm-27 Input
# 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 .}
Example 418: trig-subm-27 Result
<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> .
Test trig-eval-bad-01

Bad IRI : good escape, bad charcater (negative evaluation test)

Example 419: trig-eval-bad-01 Input
# Bad IRI : good escape, bad charcater
{<http://example/\u0020> <http://example/p> <http://example/o> .}
Test trig-eval-bad-02

Bad IRI : hex 3C is < (negative evaluation test)

Example 420: trig-eval-bad-02 Input
# Bad IRI : hex 3C is <
{<http://example/\u003C> <http://example/p> <http://example/o> .}
Test trig-eval-bad-03

Bad IRI : hex 3E is (negative evaluation test)

Example 421: trig-eval-bad-03 Input
# Bad IRI : hex 3E is >
{<http://example/\u003E> <http://example/p> <http://example/o> .}
Test trig-eval-bad-04

Bad IRI : {abc} (negative evaluation test)

Example 422: trig-eval-bad-04 Input
# Bad IRI
{<http://example/{abc}> <http://example/p> <http://example/o> .}
Test trig-syntax-bad-blank-label-dot-end

Blank node label must not end in dot

Example 423: trig-syntax-bad-blank-label-dot-end Input
@prefix : <http://example/> .
{_:b1. :p :o .}
Test trig-syntax-bad-ln-dash-start

Local name must not begin with dash

Example 424: trig-syntax-bad-ln-dash-start Input
@prefix : <http://example/> .
{:s :p :-o .}
Test trig-syntax-bad-ln-escape-start

Bad hex escape at start of local name

Example 425: trig-syntax-bad-ln-escape-start Input
@prefix : <http://example/> .
{:s :p :%2o .}
Test trig-syntax-bad-ln-escape

Bad hex escape in local name

Example 426: trig-syntax-bad-ln-escape Input
@prefix : <http://example/> .
{:s :p :o%2 .}
Test trig-syntax-bad-missing-ns-dot-end

Prefix must not end in dot (error in triple, not prefix directive like trig-syntax-bad-ns-dot-end)

Example 427: trig-syntax-bad-missing-ns-dot-end Input
{valid:s valid:p invalid.:o .}
Test trig-syntax-bad-missing-ns-dot-start

Prefix must not start with dot (error in triple, not prefix directive like trig-syntax-bad-ns-dot-end)

Example 428: trig-syntax-bad-missing-ns-dot-start Input
{.undefined:s .undefined:p .undefined:o .}
Test trig-syntax-bad-ns-dot-end

Prefix must not end in dot

Example 429: trig-syntax-bad-ns-dot-end Input
@prefix eg. : <http://example/> .
{eg.:s eg.:p eg.:o .}
Test trig-syntax-bad-ns-dot-start

Prefix must not start with dot

Example 430: trig-syntax-bad-ns-dot-start Input
@prefix .eg : <http://example/> .
{.eg:s .eg:p .eg:o .}
Test trig-syntax-bad-number-dot-in-anon

Dot delimeter may not appear in anonymous nodes

Example 431: trig-syntax-bad-number-dot-in-anon Input
@prefix : <http://example/> .

{
:s
	:p [
		:p1 27.
	] .
}
Test trig-syntax-bad-list-01

Free-standing list outside {} : bad syntax

Example 432: trig-syntax-bad-list-01 Input
# RDF collection without predicate-object-list
( 1 2 3 ) .
Test trig-syntax-bad-list-02

Free-standing list of zero-elements outside {} : bad syntax

Example 433: trig-syntax-bad-list-02 Input
# RDF collection without predicate-object-list
( 1 2 3 ) .
Test trig-syntax-bad-list-03

Free-standing list inside {} : bad syntax

Example 434: trig-syntax-bad-list-03 Input
# RDF collection without predicate-object-list
{ ( 1 2 3 ) }

Test trig-syntax-bad-list-04

Free-standing list of zero elements : bad syntax

Example 435: trig-syntax-bad-list-04 Input
# RDF collection without predicate-object-list
{ ( ) }

Test trig-syntax-blank-label

Characters allowed in blank node labels

Example 436: trig-syntax-blank-label Input
@prefix : <http://example/> .
{
_:0b :p :o . # Starts with digit
_:_b :p :o . # Starts with underscore
_:b.0 :p :o . # Contains dot, ends with digit
}
Test trig-syntax-ln-colons

Colons in pname local names

Example 437: trig-syntax-ln-colons Input
@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: .
}
Test trig-syntax-ln-dots

Dots in pname local names

Example 438: trig-syntax-ln-dots Input
@prefix : <http://example/> .
{
:s.1 :p.1 :o.1 .
:s..2 :p..2 :o..2.
:3.s :3.p :3.
}
Test trig-syntax-ns-dots

Dots in namespace names

Example 439: trig-syntax-ns-dots Input
@prefix e.g: <http://example/> .
{e.g:s e.g:p e.g:o .}
Test trig-kw-graph-01

Named graphs can be proceeded by GRAPH

Example 440: trig-kw-graph-01 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH :g { :s :p :o }
Test trig-kw-graph-02

Trailing . not necessary inside {}

Example 441: trig-kw-graph-02 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH :g { :s :p :o . }
Test trig-kw-graph-03

Named graph may be empty

Example 442: trig-kw-graph-03 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH :g { }
Test trig-kw-graph-04

Example 443: trig-kw-graph-04 Input
# 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 }
Test trig-kw-graph-05

Use of empty prefix inside named graph

Example 444: trig-kw-graph-05 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH :g { :s :p :o }
Test trig-kw-graph-06

Example 445: trig-kw-graph-06 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH _:a { :s :p :o }
Test trig-kw-graph-07

Named graph may be named with BNode _:a

Example 446: trig-kw-graph-07 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH [] { :s :p :o }
[] { :s :p :o }
GRAPH [] { :s :p :o }
Test trig-kw-graph-08

Named graph may be named with BNode []

Example 447: trig-kw-graph-08 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH :g { :s :p :o }
Test trig-kw-graph-09

Named graph may be named with PNAME

Example 448: trig-kw-graph-09 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH :g { :s :p :o }
Test trig-kw-graph-10

Named graph with PNAME and empty graph

Example 449: trig-kw-graph-10 Input
# GRAPH tests
PREFIX : <http://example/> 

GRAPH :g { }
Test trig-graph-bad-01

GRAPH but no name - GRAPH is not used with the default graph

Example 450: trig-graph-bad-01 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH but no name - GRAPH is not used with the default graph
GRAPH { :s :p :o }
Test trig-graph-bad-02

GRAPH not followed by DOT

Example 451: trig-graph-bad-02 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH not followed by DOT
GRAPH :g1 { :s :p :o } .
GRAPH :g2 { :s :p :o } .
Test trig-graph-bad-03

GRAPH needs {}

Example 452: trig-graph-bad-03 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH needs {}
GRAPH :g 
  :s :p :o .


Test trig-graph-bad-04

GRAPH needs {}

Example 453: trig-graph-bad-04 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH needs {}
GRAPH :s :p :o
Test trig-graph-bad-05

GRAPH and a name, not several

Example 454: trig-graph-bad-05 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH and a name, not several.
GRAPH :g1 :g2 { :s :p :o }
Test trig-graph-bad-06

GRAPH - Must close {}

Example 455: trig-graph-bad-06 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH - Must close {}
GRAPH :g { :s :p :o 

Test trig-graph-bad-07

GRAPH may not include a GRAPH

Example 456: trig-graph-bad-07 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH and a triples block.
GRAPH :g { 
   :s :p :o .
   GRAPH :g1 { :s1 :p1 :o1 }
}

Test trig-graph-bad-08

@graph is not a keyword

Example 457: trig-graph-bad-08 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH and a triples block.
@graph :g { :s :p :o }
Test trig-graph-bad-09

Directives not allowed inside GRAPH

Example 458: trig-graph-bad-09 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH - no directives
graph :g { 
  :s :p :o 
prefix x: <http://example/x#> 
  x:s1 x:p1 x:o1 .
}



Test trig-graph-bad-10

A graph may not be named with an empty collection

Example 459: trig-graph-bad-10 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH - no lists
GRAPH () { :s :p :o }



Test trig-graph-bad-11

A graph may not be named with a collection

Example 460: trig-graph-bad-11 Input
# GRAPH tests
PREFIX : <http://example/> 

# GRAPH - no lists
graph (1 2) { :s :p :o }



Test trig-bnodeplist-graph-bad-01

A graph may not be named with a blankNodePropertyList

Example 461: trig-bnodeplist-graph-bad-01 Input
# BlankNodePropertyList as Graph Name
PREFIX : <http://example/> 

[:p1 :o1] {:s :p :o}
Test trig-collection-graph-bad-01

A graph may not be named with an empty collection

Example 462: trig-collection-graph-bad-01 Input
# Collection as Graph Name
PREFIX : <http://example/> 

() {:s :p :o}
Test trig-collection-graph-bad-02

A graph may not be named with a collection

Example 463: trig-collection-graph-bad-02 Input
# Collection as Graph Name
PREFIX : <http://example/> 

(1 2) {:s :p :o}
Test trig-turtle-01

TriG can parse Turtle

Example 464: trig-turtle-01 Input
# Turtle is TriG
PREFIX : <http://example/> 

:s :p :o ;
   :q 123 , 456 .

:s1 :p1 "more" .

Test trig-turtle-02

TriG can parse Turtle (repeated PREFIX)

Example 465: trig-turtle-02 Input
# Turtle is TriG
PREFIX : <http://example/>

:s :p :o ;
   :q 123 , 456 .

PREFIX : <http://example/ns#>

:s :p :o .
Test trig-turtle-03

TriG can parse Turtle (blankNodePropertyList subject)

Example 466: trig-turtle-03 Input
# Turtle is TriG
prefix : <http://example/> 

[ :p 123 ; :q 456 ] :r 1 .

Test trig-turtle-04

TriG can parse Turtle (blankNodePropertyList subject)

Example 467: trig-turtle-04 Input
# Turtle is TriG
prefix : <http://example/> 

[] :p :o .

Test trig-turtle-05

TriG can parse Turtle (bare blankNodePropertyList)

Example 468: trig-turtle-05 Input
# Turtle is TriG
prefix : <http://example/> 

[ :p :o ] .


Test trig-turtle-06

TriG can parse Turtle (collection subject and object)

Example 469: trig-turtle-06 Input
# Turtle is TriG
prefix : <http://example/> 

( 1 2 3 ) :p ( 4 5 6 ) .
Test trig-turtle-bad-01

Trailing dot required in Turtle block

Example 470: trig-turtle-bad-01 Input
# Turtle is TriG

# Trailing dot required in Turtle block.

:s :p :o  
Test trig-turtle-bad-02

TriG is not N-Quads

Example 471: trig-turtle-bad-02 Input
# Turtle is TriG

# N-Quads.

:s :p :o :g .

D. Report Generation Software

This report generated by earl-report version 0.3.1 an Unlicensed Ruby application. More information is available at https://github.com/gkellogg/earl-report .

This software is provided by Gregg Kellogg in hopes that it might make the lives of conformance testers easier.