aboutsummaryrefslogtreecommitdiffstats
path: root/test/w3c/turtle
diff options
context:
space:
mode:
Diffstat (limited to 'test/w3c/turtle')
-rw-r--r--test/w3c/turtle/HYPHEN_MINUS_in_localName.nt1
-rw-r--r--test/w3c/turtle/HYPHEN_MINUS_in_localName.ttl2
-rw-r--r--test/w3c/turtle/IRIREF_datatype.nt1
-rw-r--r--test/w3c/turtle/IRIREF_datatype.ttl1
-rw-r--r--test/w3c/turtle/IRI_spo.nt1
-rw-r--r--test/w3c/turtle/IRI_subject.ttl1
-rw-r--r--test/w3c/turtle/IRI_with_all_punctuation.nt1
-rw-r--r--test/w3c/turtle/IRI_with_all_punctuation.ttl1
-rw-r--r--test/w3c/turtle/IRI_with_eight_digit_numeric_escape.ttl1
-rw-r--r--test/w3c/turtle/IRI_with_four_digit_numeric_escape.ttl1
-rw-r--r--test/w3c/turtle/LICENSE117
-rw-r--r--test/w3c/turtle/LITERAL1.nt1
-rw-r--r--test/w3c/turtle/LITERAL1.ttl1
-rw-r--r--test/w3c/turtle/LITERAL1_all_controls.nt1
-rw-r--r--test/w3c/turtle/LITERAL1_all_controls.ttlbin0 -> 77 bytes
-rw-r--r--test/w3c/turtle/LITERAL1_all_punctuation.nt1
-rw-r--r--test/w3c/turtle/LITERAL1_all_punctuation.ttl1
-rw-r--r--test/w3c/turtle/LITERAL1_ascii_boundaries.nt1
-rw-r--r--test/w3c/turtle/LITERAL1_ascii_boundaries.ttlbin0 -> 57 bytes
-rw-r--r--test/w3c/turtle/LITERAL1_with_UTF8_boundaries.ttl1
-rw-r--r--test/w3c/turtle/LITERAL2.ttl1
-rw-r--r--test/w3c/turtle/LITERAL2_ascii_boundaries.nt1
-rw-r--r--test/w3c/turtle/LITERAL2_ascii_boundaries.ttlbin0 -> 57 bytes
-rw-r--r--test/w3c/turtle/LITERAL2_with_UTF8_boundaries.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG1.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.nt1
-rw-r--r--test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.ttlbin0 -> 53 bytes
-rw-r--r--test/w3c/turtle/LITERAL_LONG1_with_1_squote.nt1
-rw-r--r--test/w3c/turtle/LITERAL_LONG1_with_1_squote.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG1_with_2_squotes.nt1
-rw-r--r--test/w3c/turtle/LITERAL_LONG1_with_2_squotes.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG1_with_UTF8_boundaries.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.nt1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.ttlbin0 -> 53 bytes
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_with_1_squote.nt1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_with_1_squote.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_with_2_squotes.nt1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_with_2_squotes.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.nt1
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.ttl3
-rw-r--r--test/w3c/turtle/LITERAL_LONG2_with_UTF8_boundaries.ttl1
-rw-r--r--test/w3c/turtle/LITERAL_with_UTF8_boundaries.nt1
-rw-r--r--test/w3c/turtle/README65
-rw-r--r--test/w3c/turtle/SPARQL_style_base.ttl2
-rw-r--r--test/w3c/turtle/SPARQL_style_prefix.ttl2
-rw-r--r--test/w3c/turtle/anonymous_blank_node_object.nt1
-rw-r--r--test/w3c/turtle/anonymous_blank_node_object.ttl1
-rw-r--r--test/w3c/turtle/anonymous_blank_node_subject.nt1
-rw-r--r--test/w3c/turtle/anonymous_blank_node_subject.ttl1
-rw-r--r--test/w3c/turtle/bareword_a_predicate.nt1
-rw-r--r--test/w3c/turtle/bareword_a_predicate.ttl1
-rw-r--r--test/w3c/turtle/bareword_decimal.nt1
-rw-r--r--test/w3c/turtle/bareword_decimal.ttl1
-rw-r--r--test/w3c/turtle/bareword_double.nt1
-rw-r--r--test/w3c/turtle/bareword_double.ttl1
-rw-r--r--test/w3c/turtle/bareword_integer.ttl1
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_object.nt2
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_object.ttl1
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.nt3
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.ttl1
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.nt3
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.ttl2
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_subject.nt2
-rw-r--r--test/w3c/turtle/blankNodePropertyList_as_subject.ttl1
-rw-r--r--test/w3c/turtle/blankNodePropertyList_containing_collection.nt3
-rw-r--r--test/w3c/turtle/blankNodePropertyList_containing_collection.ttl1
-rw-r--r--test/w3c/turtle/blankNodePropertyList_with_multiple_triples.nt3
-rw-r--r--test/w3c/turtle/blankNodePropertyList_with_multiple_triples.ttl1
-rw-r--r--test/w3c/turtle/collection_object.nt3
-rw-r--r--test/w3c/turtle/collection_object.ttl1
-rw-r--r--test/w3c/turtle/collection_subject.nt3
-rw-r--r--test/w3c/turtle/collection_subject.ttl1
-rw-r--r--test/w3c/turtle/comment_following_PNAME_NS.nt1
-rw-r--r--test/w3c/turtle/comment_following_PNAME_NS.ttl3
-rw-r--r--test/w3c/turtle/comment_following_localName.ttl3
-rw-r--r--test/w3c/turtle/default_namespace_IRI.ttl2
-rw-r--r--test/w3c/turtle/double_lower_case_e.nt1
-rw-r--r--test/w3c/turtle/double_lower_case_e.ttl1
-rw-r--r--test/w3c/turtle/empty_collection.nt1
-rw-r--r--test/w3c/turtle/empty_collection.ttl1
-rw-r--r--test/w3c/turtle/first.nt7
-rw-r--r--test/w3c/turtle/first.ttl1
-rw-r--r--test/w3c/turtle/labeled_blank_node_object.nt1
-rw-r--r--test/w3c/turtle/labeled_blank_node_object.ttl1
-rw-r--r--test/w3c/turtle/labeled_blank_node_subject.nt1
-rw-r--r--test/w3c/turtle/labeled_blank_node_subject.ttl1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.nt1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.ttl1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_leading_digit.nt1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_leading_digit.ttl1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_leading_underscore.nt1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_leading_underscore.ttl1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_non_leading_extras.nt1
-rw-r--r--test/w3c/turtle/labeled_blank_node_with_non_leading_extras.ttl1
-rw-r--r--test/w3c/turtle/langtagged_LONG.ttl1
-rw-r--r--test/w3c/turtle/langtagged_LONG_with_subtag.nt1
-rw-r--r--test/w3c/turtle/langtagged_LONG_with_subtag.ttl3
-rw-r--r--test/w3c/turtle/langtagged_non_LONG.nt1
-rw-r--r--test/w3c/turtle/langtagged_non_LONG.ttl1
-rw-r--r--test/w3c/turtle/lantag_with_subtag.nt1
-rw-r--r--test/w3c/turtle/lantag_with_subtag.ttl1
-rw-r--r--test/w3c/turtle/last.nt7
-rw-r--r--test/w3c/turtle/last.ttl1
-rw-r--r--test/w3c/turtle/literal_false.nt1
-rw-r--r--test/w3c/turtle/literal_false.ttl1
-rw-r--r--test/w3c/turtle/literal_true.nt1
-rw-r--r--test/w3c/turtle/literal_true.ttl1
-rw-r--r--test/w3c/turtle/literal_with_BACKSPACE.nt1
-rw-r--r--test/w3c/turtle/literal_with_BACKSPACE.ttl1
-rw-r--r--test/w3c/turtle/literal_with_CARRIAGE_RETURN.nt1
-rw-r--r--test/w3c/turtle/literal_with_CARRIAGE_RETURN.ttl1
-rw-r--r--test/w3c/turtle/literal_with_CHARACTER_TABULATION.nt1
-rw-r--r--test/w3c/turtle/literal_with_CHARACTER_TABULATION.ttl1
-rw-r--r--test/w3c/turtle/literal_with_FORM_FEED.nt1
-rw-r--r--test/w3c/turtle/literal_with_FORM_FEED.ttl1
-rw-r--r--test/w3c/turtle/literal_with_LINE_FEED.nt1
-rw-r--r--test/w3c/turtle/literal_with_LINE_FEED.ttl2
-rw-r--r--test/w3c/turtle/literal_with_REVERSE_SOLIDUS.nt1
-rw-r--r--test/w3c/turtle/literal_with_REVERSE_SOLIDUS.ttl1
-rw-r--r--test/w3c/turtle/literal_with_escaped_BACKSPACE.ttl1
-rw-r--r--test/w3c/turtle/literal_with_escaped_CARRIAGE_RETURN.ttl1
-rw-r--r--test/w3c/turtle/literal_with_escaped_CHARACTER_TABULATION.ttl1
-rw-r--r--test/w3c/turtle/literal_with_escaped_FORM_FEED.ttl1
-rw-r--r--test/w3c/turtle/literal_with_escaped_LINE_FEED.ttl1
-rw-r--r--test/w3c/turtle/literal_with_numeric_escape4.nt1
-rw-r--r--test/w3c/turtle/literal_with_numeric_escape4.ttl1
-rw-r--r--test/w3c/turtle/literal_with_numeric_escape8.ttl1
-rw-r--r--test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.nt1
-rw-r--r--test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.ttl2
-rw-r--r--test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.nt1
-rw-r--r--test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.ttl2
-rw-r--r--test/w3c/turtle/localName_with_leading_digit.nt1
-rw-r--r--test/w3c/turtle/localName_with_leading_digit.ttl2
-rw-r--r--test/w3c/turtle/localName_with_leading_underscore.nt1
-rw-r--r--test/w3c/turtle/localName_with_leading_underscore.ttl2
-rw-r--r--test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.nt1
-rw-r--r--test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.ttl2
-rw-r--r--test/w3c/turtle/localName_with_non_leading_extras.nt1
-rw-r--r--test/w3c/turtle/localName_with_non_leading_extras.ttl2
-rw-r--r--test/w3c/turtle/localname_with_COLON.nt1
-rw-r--r--test/w3c/turtle/localname_with_COLON.ttl2
-rw-r--r--test/w3c/turtle/manifest.ttl2549
-rw-r--r--test/w3c/turtle/negative_numeric.nt1
-rw-r--r--test/w3c/turtle/negative_numeric.ttl1
-rw-r--r--test/w3c/turtle/nested_blankNodePropertyLists.nt3
-rw-r--r--test/w3c/turtle/nested_blankNodePropertyLists.ttl1
-rw-r--r--test/w3c/turtle/nested_collection.nt5
-rw-r--r--test/w3c/turtle/nested_collection.ttl1
-rw-r--r--test/w3c/turtle/number_sign_following_PNAME_NS.nt1
-rw-r--r--test/w3c/turtle/number_sign_following_PNAME_NS.ttl3
-rw-r--r--test/w3c/turtle/number_sign_following_localName.nt1
-rw-r--r--test/w3c/turtle/number_sign_following_localName.ttl3
-rw-r--r--test/w3c/turtle/numeric_with_leading_0.nt1
-rw-r--r--test/w3c/turtle/numeric_with_leading_0.ttl1
-rw-r--r--test/w3c/turtle/objectList_with_two_objects.nt2
-rw-r--r--test/w3c/turtle/objectList_with_two_objects.ttl1
-rw-r--r--test/w3c/turtle/old_style_base.ttl2
-rw-r--r--test/w3c/turtle/old_style_prefix.ttl2
-rw-r--r--test/w3c/turtle/percent_escaped_localName.nt1
-rw-r--r--test/w3c/turtle/percent_escaped_localName.ttl2
-rw-r--r--test/w3c/turtle/positive_numeric.nt1
-rw-r--r--test/w3c/turtle/positive_numeric.ttl1
-rw-r--r--test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.nt5
-rw-r--r--test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.ttl3
-rw-r--r--test/w3c/turtle/predicateObjectList_with_two_objectLists.nt2
-rw-r--r--test/w3c/turtle/predicateObjectList_with_two_objectLists.ttl1
-rw-r--r--test/w3c/turtle/prefix_only_IRI.ttl2
-rw-r--r--test/w3c/turtle/prefix_reassigned_and_used.nt1
-rw-r--r--test/w3c/turtle/prefix_reassigned_and_used.ttl3
-rw-r--r--test/w3c/turtle/prefix_with_PN_CHARS_BASE_character_boundaries.ttl2
-rw-r--r--test/w3c/turtle/prefix_with_non_leading_extras.ttl2
-rw-r--r--test/w3c/turtle/prefixed_IRI_object.ttl2
-rw-r--r--test/w3c/turtle/prefixed_IRI_predicate.ttl2
-rw-r--r--test/w3c/turtle/prefixed_name_datatype.ttl2
-rw-r--r--test/w3c/turtle/repeated_semis_at_end.ttl1
-rw-r--r--test/w3c/turtle/repeated_semis_not_at_end.nt1
-rw-r--r--test/w3c/turtle/repeated_semis_not_at_end.ttl1
-rw-r--r--test/w3c/turtle/reserved_escaped_localName.nt1
-rw-r--r--test/w3c/turtle/reserved_escaped_localName.ttl2
-rw-r--r--test/w3c/turtle/sole_blankNodePropertyList.nt1
-rw-r--r--test/w3c/turtle/sole_blankNodePropertyList.ttl1
-rw-r--r--test/w3c/turtle/turtle-eval-bad-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-bad-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-bad-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-bad-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-lists-01.nt1
-rw-r--r--test/w3c/turtle/turtle-eval-lists-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-lists-02.nt7
-rw-r--r--test/w3c/turtle/turtle-eval-lists-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-lists-03.nt5
-rw-r--r--test/w3c/turtle/turtle-eval-lists-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-lists-04.nt5
-rw-r--r--test/w3c/turtle/turtle-eval-lists-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-lists-05.nt19
-rw-r--r--test/w3c/turtle/turtle-eval-lists-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-eval-struct-01.nt1
-rw-r--r--test/w3c/turtle/turtle-eval-struct-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-eval-struct-02.nt2
-rw-r--r--test/w3c/turtle/turtle-eval-struct-02.ttl4
-rw-r--r--test/w3c/turtle/turtle-subm-01.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-subm-02.nt3
-rw-r--r--test/w3c/turtle/turtle-subm-02.ttl7
-rw-r--r--test/w3c/turtle/turtle-subm-03.nt3
-rw-r--r--test/w3c/turtle/turtle-subm-03.ttl5
-rw-r--r--test/w3c/turtle/turtle-subm-04.nt3
-rw-r--r--test/w3c/turtle/turtle-subm-04.ttl5
-rw-r--r--test/w3c/turtle/turtle-subm-05.nt2
-rw-r--r--test/w3c/turtle/turtle-subm-05.ttl4
-rw-r--r--test/w3c/turtle/turtle-subm-06.nt4
-rw-r--r--test/w3c/turtle/turtle-subm-06.ttl4
-rw-r--r--test/w3c/turtle/turtle-subm-07.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-07.ttl3
-rw-r--r--test/w3c/turtle/turtle-subm-08.nt5
-rw-r--r--test/w3c/turtle/turtle-subm-08.ttl3
-rw-r--r--test/w3c/turtle/turtle-subm-09.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-09.ttl3
-rw-r--r--test/w3c/turtle/turtle-subm-10.nt4
-rw-r--r--test/w3c/turtle/turtle-subm-10.ttl10
-rw-r--r--test/w3c/turtle/turtle-subm-11.nt5
-rw-r--r--test/w3c/turtle/turtle-subm-11.ttl5
-rw-r--r--test/w3c/turtle/turtle-subm-12.nt4
-rw-r--r--test/w3c/turtle/turtle-subm-12.ttl10
-rw-r--r--test/w3c/turtle/turtle-subm-13.nt4
-rw-r--r--test/w3c/turtle/turtle-subm-13.ttl9
-rw-r--r--test/w3c/turtle/turtle-subm-14.nt2
-rw-r--r--test/w3c/turtle/turtle-subm-14.ttl7
-rw-r--r--test/w3c/turtle/turtle-subm-15.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-15.ttl6
-rw-r--r--test/w3c/turtle/turtle-subm-16.nt2
-rw-r--r--test/w3c/turtle/turtle-subm-16.ttl20
-rw-r--r--test/w3c/turtle/turtle-subm-17.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-17.ttl4
-rw-r--r--test/w3c/turtle/turtle-subm-18.nt2
-rw-r--r--test/w3c/turtle/turtle-subm-18.ttl6
-rw-r--r--test/w3c/turtle/turtle-subm-19.nt3
-rw-r--r--test/w3c/turtle/turtle-subm-19.ttl4
-rw-r--r--test/w3c/turtle/turtle-subm-20.nt3
-rw-r--r--test/w3c/turtle/turtle-subm-20.ttl4
-rw-r--r--test/w3c/turtle/turtle-subm-21.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-21.ttl3
-rw-r--r--test/w3c/turtle/turtle-subm-22.nt2
-rw-r--r--test/w3c/turtle/turtle-subm-22.ttl3
-rw-r--r--test/w3c/turtle/turtle-subm-23.nt7
-rw-r--r--test/w3c/turtle/turtle-subm-23.ttl14
-rw-r--r--test/w3c/turtle/turtle-subm-24.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-24.ttl4
-rw-r--r--test/w3c/turtle/turtle-subm-25.nt1
-rw-r--r--test/w3c/turtle/turtle-subm-25.ttl5
-rw-r--r--test/w3c/turtle/turtle-subm-26.nt22
-rw-r--r--test/w3c/turtle/turtle-subm-26.ttl22
-rw-r--r--test/w3c/turtle/turtle-subm-27.nt5
-rw-r--r--test/w3c/turtle/turtle-subm-27.ttl12
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-LITERAL2_with_langtag_and_datatype.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-base-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-base-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-base-03.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-blank-label-dot-end.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-bnode-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-bnode-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-esc-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-esc-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-esc-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-esc-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-kw-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-kw-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-kw-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-kw-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-kw-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-lang-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-ln-dash-start.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-ln-escape-start.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-ln-escape.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-end.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-start.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-01.ttl5
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-02.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-03.ttl7
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-04.ttl5
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-05.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-06.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-07.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-08.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-09.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-10.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-11.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-12.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-n3-extras-13.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-ns-dot-end.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-ns-dot-start.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-num-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-num-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-num-03.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-num-04.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-num-05.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-number-dot-in-anon.ttl6
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-pname-01.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-pname-02.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-pname-03.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-prefix-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-prefix-02.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-prefix-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-prefix-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-prefix-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-string-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-string-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-string-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-string-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-string-05.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-string-06.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-string-07.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-06.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-07.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-08.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-09.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-10.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-11.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-12.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-13.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-14.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-15.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-16.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-struct-17.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-uri-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-uri-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-uri-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-uri-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bad-uri-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-base-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-base-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-base-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-base-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-blank-label.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-06.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-07.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-08.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-09.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-bnode-10.ttl5
-rw-r--r--test/w3c/turtle/turtle-syntax-datatypes-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-datatypes-02.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-file-01.ttl0
-rw-r--r--test/w3c/turtle/turtle-syntax-file-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-file-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-kw-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-kw-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-kw-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-ln-colons.ttl6
-rw-r--r--test/w3c/turtle/turtle-syntax-ln-dots.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-ns-dots.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-number-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-number-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-number-03.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-number-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-number-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-number-06.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-number-07.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-number-08.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-number-09.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-number-10.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-number-11.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-pname-esc-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-pname-esc-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-pname-esc-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-04.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-05.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-06.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-07.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-08.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-prefix-09.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-str-esc-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-str-esc-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-str-esc-03.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-02.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-03.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-04.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-05.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-06.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-07.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-string-08.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-string-09.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-string-10.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-string-11.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-struct-01.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-struct-02.ttl3
-rw-r--r--test/w3c/turtle/turtle-syntax-struct-03.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-struct-04.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-struct-05.ttl4
-rw-r--r--test/w3c/turtle/turtle-syntax-uri-01.ttl1
-rw-r--r--test/w3c/turtle/turtle-syntax-uri-02.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-uri-03.ttl2
-rw-r--r--test/w3c/turtle/turtle-syntax-uri-04.ttl3
-rw-r--r--test/w3c/turtle/two_LITERAL_LONG2s.nt2
-rw-r--r--test/w3c/turtle/two_LITERAL_LONG2s.ttl4
-rw-r--r--test/w3c/turtle/underscore_in_localName.nt1
-rw-r--r--test/w3c/turtle/underscore_in_localName.ttl2
410 files changed, 3663 insertions, 0 deletions
diff --git a/test/w3c/turtle/HYPHEN_MINUS_in_localName.nt b/test/w3c/turtle/HYPHEN_MINUS_in_localName.nt
new file mode 100644
index 00000000..25546b38
--- /dev/null
+++ b/test/w3c/turtle/HYPHEN_MINUS_in_localName.nt
@@ -0,0 +1 @@
+<http://a.example/s-> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/HYPHEN_MINUS_in_localName.ttl b/test/w3c/turtle/HYPHEN_MINUS_in_localName.ttl
new file mode 100644
index 00000000..0340b8c8
--- /dev/null
+++ b/test/w3c/turtle/HYPHEN_MINUS_in_localName.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:s- <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/IRIREF_datatype.nt b/test/w3c/turtle/IRIREF_datatype.nt
new file mode 100644
index 00000000..c333a5f6
--- /dev/null
+++ b/test/w3c/turtle/IRIREF_datatype.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/test/w3c/turtle/IRIREF_datatype.ttl b/test/w3c/turtle/IRIREF_datatype.ttl
new file mode 100644
index 00000000..c333a5f6
--- /dev/null
+++ b/test/w3c/turtle/IRIREF_datatype.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/test/w3c/turtle/IRI_spo.nt b/test/w3c/turtle/IRI_spo.nt
new file mode 100644
index 00000000..01125e50
--- /dev/null
+++ b/test/w3c/turtle/IRI_spo.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/IRI_subject.ttl b/test/w3c/turtle/IRI_subject.ttl
new file mode 100644
index 00000000..01125e50
--- /dev/null
+++ b/test/w3c/turtle/IRI_subject.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/IRI_with_all_punctuation.nt b/test/w3c/turtle/IRI_with_all_punctuation.nt
new file mode 100644
index 00000000..94158773
--- /dev/null
+++ b/test/w3c/turtle/IRI_with_all_punctuation.nt
@@ -0,0 +1 @@
+<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/IRI_with_all_punctuation.ttl b/test/w3c/turtle/IRI_with_all_punctuation.ttl
new file mode 100644
index 00000000..94158773
--- /dev/null
+++ b/test/w3c/turtle/IRI_with_all_punctuation.ttl
@@ -0,0 +1 @@
+<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/IRI_with_eight_digit_numeric_escape.ttl b/test/w3c/turtle/IRI_with_eight_digit_numeric_escape.ttl
new file mode 100644
index 00000000..434034e7
--- /dev/null
+++ b/test/w3c/turtle/IRI_with_eight_digit_numeric_escape.ttl
@@ -0,0 +1 @@
+<http://a.example/\U00000073> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/IRI_with_four_digit_numeric_escape.ttl b/test/w3c/turtle/IRI_with_four_digit_numeric_escape.ttl
new file mode 100644
index 00000000..4163636e
--- /dev/null
+++ b/test/w3c/turtle/IRI_with_four_digit_numeric_escape.ttl
@@ -0,0 +1 @@
+<http://a.example/\u0073> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/LICENSE b/test/w3c/turtle/LICENSE
new file mode 100644
index 00000000..1ac8f4e1
--- /dev/null
+++ b/test/w3c/turtle/LICENSE
@@ -0,0 +1,117 @@
+Summary
+=======
+
+Distributed under both the W3C Test Suite License[1] and the W3C 3-clause BSD
+License[2]. To contribute to a W3C Test Suite, see the policies and contribution
+forms [3]
+
+1. http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
+2. http://www.w3.org/Consortium/Legal/2008/03-bsd-license
+3. http://www.w3.org/2004/10/27-testcases
+
+DISCLAIMER
+
+UNDER BOTH MUTUALLY EXCLUSIVE LICENSES, THIS DOCUMENT AND ALL DOCUMENTS, TESTS
+AND SOFTWARE THAT LINK THIS STATEMENT ARE PROVIDED "AS IS," AND COPYRIGHT
+HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE
+SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT
+INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE
+OR IMPLEMENTATION OF THE CONTENTS THEREOF.
+
+
+W3C Test Suite License
+======================
+
+This document, Test Suites and other documents that link to this statement are
+provided by the copyright holders under the following license: By using and/or
+copying this document, or the W3C document from which this statement is linked,
+you (the licensee) agree that you have read, understood, and will comply with
+the following terms and conditions:
+
+Permission to copy, and distribute the contents of this document, or the W3C
+document from which this statement is linked, in any medium for any purpose and
+without fee or royalty is hereby granted, provided that you include the
+following on ALL copies of the document, or portions thereof, that you use:
+
+1 A link or URL to the original W3C document.
+
+2 The pre-existing copyright notice of the original author, or if it doesn't
+ exist, a notice (hypertext is preferred, but a textual representation is
+ permitted) of the form: "Copyright © [$date-of-document] World Wide Web
+ Consortium, (Massachusetts Institute of Technology, European Research
+ Consortium for Informatics and Mathematics, Keio University) and others. All
+ Rights
+ Reserved. http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html"
+
+3 If it exists, the STATUS of the W3C document.
+
+4 When space permits, inclusion of the full text of this NOTICE should be
+ provided. We request that authorship attribution be provided in any software,
+ documents, or other items or products that you create pursuant to the
+ implementation of the contents of this document, or any portion thereof.
+
+
+No right to create modifications or derivatives of W3C documents is granted
+pursuant to this license. However, if additional requirements (documented in the
+Copyright FAQ) are satisfied, the right to create modifications or derivatives
+is sometimes granted by the W3C to individuals complying with those
+requirements.
+
+If a Test Suite distinguishes the test harness (or, framework for navigation)
+and the actual tests, permission is given to remove or alter the harness or
+navigation if the Test Suite in question allows to do so. The tests themselves
+shall NOT be changed in any way.
+
+The name and trademarks of W3C and other copyright holders may NOT be used in
+advertising or publicity pertaining to this document or other documents that
+link to this statement without specific, written prior permission. Title to
+copyright in this document will at all times remain with copyright
+holders. Permission is given to use the trademarked string W3C within claims of
+performance concerning W3C Specifications or features described therein, and
+there only, if the test suite so authorizes.
+
+THIS WORK IS PROVIDED BY W3C, MIT, ERCIM, KEIO UNIVERSITY, THE COPYRIGHT HOLDERS
+AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL W3C, MIT, ERCIM, KEIO
+UNIVERSITY, THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+W3C 3-clause BSD License
+========================
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1 Redistributions of works must retain the original copyright notice, this list
+ of conditions and the following disclaimer.
+
+2 Redistributions in binary form must reproduce the original copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3 Neither the name of the W3C nor the names of its contributors may be used to
+ endorse or promote products derived from this work without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/test/w3c/turtle/LITERAL1.nt b/test/w3c/turtle/LITERAL1.nt
new file mode 100644
index 00000000..3aba89e4
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "x" .
diff --git a/test/w3c/turtle/LITERAL1.ttl b/test/w3c/turtle/LITERAL1.ttl
new file mode 100644
index 00000000..725a2403
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> 'x' .
diff --git a/test/w3c/turtle/LITERAL1_all_controls.nt b/test/w3c/turtle/LITERAL1_all_controls.nt
new file mode 100644
index 00000000..91c8af14
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1_all_controls.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\t\u000B\u000C\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" .
diff --git a/test/w3c/turtle/LITERAL1_all_controls.ttl b/test/w3c/turtle/LITERAL1_all_controls.ttl
new file mode 100644
index 00000000..dbf3721c
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1_all_controls.ttl
Binary files differ
diff --git a/test/w3c/turtle/LITERAL1_all_punctuation.nt b/test/w3c/turtle/LITERAL1_all_punctuation.nt
new file mode 100644
index 00000000..c25d818f
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1_all_punctuation.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> " !\"#$%&():;<=>?@[]^_`{|}~" .
diff --git a/test/w3c/turtle/LITERAL1_all_punctuation.ttl b/test/w3c/turtle/LITERAL1_all_punctuation.ttl
new file mode 100644
index 00000000..7b1d9e54
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1_all_punctuation.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> ' !"#$%&():;<=>?@[]^_`{|}~' .
diff --git a/test/w3c/turtle/LITERAL1_ascii_boundaries.nt b/test/w3c/turtle/LITERAL1_ascii_boundaries.nt
new file mode 100644
index 00000000..69c41447
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1_ascii_boundaries.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u0000\t\u000B\u000C\u000E&([]\u007F" .
diff --git a/test/w3c/turtle/LITERAL1_ascii_boundaries.ttl b/test/w3c/turtle/LITERAL1_ascii_boundaries.ttl
new file mode 100644
index 00000000..7d65396f
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1_ascii_boundaries.ttl
Binary files differ
diff --git a/test/w3c/turtle/LITERAL1_with_UTF8_boundaries.ttl b/test/w3c/turtle/LITERAL1_with_UTF8_boundaries.ttl
new file mode 100644
index 00000000..b72eb040
--- /dev/null
+++ b/test/w3c/turtle/LITERAL1_with_UTF8_boundaries.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽' .
diff --git a/test/w3c/turtle/LITERAL2.ttl b/test/w3c/turtle/LITERAL2.ttl
new file mode 100644
index 00000000..3aba89e4
--- /dev/null
+++ b/test/w3c/turtle/LITERAL2.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "x" .
diff --git a/test/w3c/turtle/LITERAL2_ascii_boundaries.nt b/test/w3c/turtle/LITERAL2_ascii_boundaries.nt
new file mode 100644
index 00000000..270a51e3
--- /dev/null
+++ b/test/w3c/turtle/LITERAL2_ascii_boundaries.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u0000\t\u000B\u000C\u000E!#[]\u007F" .
diff --git a/test/w3c/turtle/LITERAL2_ascii_boundaries.ttl b/test/w3c/turtle/LITERAL2_ascii_boundaries.ttl
new file mode 100644
index 00000000..90b4cd69
--- /dev/null
+++ b/test/w3c/turtle/LITERAL2_ascii_boundaries.ttl
Binary files differ
diff --git a/test/w3c/turtle/LITERAL2_with_UTF8_boundaries.ttl b/test/w3c/turtle/LITERAL2_with_UTF8_boundaries.ttl
new file mode 100644
index 00000000..0e1616db
--- /dev/null
+++ b/test/w3c/turtle/LITERAL2_with_UTF8_boundaries.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽" .
diff --git a/test/w3c/turtle/LITERAL_LONG1.ttl b/test/w3c/turtle/LITERAL_LONG1.ttl
new file mode 100644
index 00000000..ab6baa93
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '''x''' .
diff --git a/test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.nt b/test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.nt
new file mode 100644
index 00000000..a592b4a1
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u0000&([]\u007F" .
diff --git a/test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.ttl b/test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.ttl
new file mode 100644
index 00000000..f943e249
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1_ascii_boundaries.ttl
Binary files differ
diff --git a/test/w3c/turtle/LITERAL_LONG1_with_1_squote.nt b/test/w3c/turtle/LITERAL_LONG1_with_1_squote.nt
new file mode 100644
index 00000000..acf7f58f
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1_with_1_squote.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "x'y" .
diff --git a/test/w3c/turtle/LITERAL_LONG1_with_1_squote.ttl b/test/w3c/turtle/LITERAL_LONG1_with_1_squote.ttl
new file mode 100644
index 00000000..3b93046b
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1_with_1_squote.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '''x'y''' .
diff --git a/test/w3c/turtle/LITERAL_LONG1_with_2_squotes.nt b/test/w3c/turtle/LITERAL_LONG1_with_2_squotes.nt
new file mode 100644
index 00000000..8ddc52e8
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1_with_2_squotes.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "x''y" .
diff --git a/test/w3c/turtle/LITERAL_LONG1_with_2_squotes.ttl b/test/w3c/turtle/LITERAL_LONG1_with_2_squotes.ttl
new file mode 100644
index 00000000..1219bad3
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1_with_2_squotes.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '''x''y''' .
diff --git a/test/w3c/turtle/LITERAL_LONG1_with_UTF8_boundaries.ttl b/test/w3c/turtle/LITERAL_LONG1_with_UTF8_boundaries.ttl
new file mode 100644
index 00000000..e04b675e
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG1_with_UTF8_boundaries.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '''€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽''' .
diff --git a/test/w3c/turtle/LITERAL_LONG2.ttl b/test/w3c/turtle/LITERAL_LONG2.ttl
new file mode 100644
index 00000000..e37bf4a3
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> """x""" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.nt b/test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.nt
new file mode 100644
index 00000000..28785039
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u0000!#[]\u007F" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.ttl b/test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.ttl
new file mode 100644
index 00000000..e919865f
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_ascii_boundaries.ttl
Binary files differ
diff --git a/test/w3c/turtle/LITERAL_LONG2_with_1_squote.nt b/test/w3c/turtle/LITERAL_LONG2_with_1_squote.nt
new file mode 100644
index 00000000..05a1fd3a
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_with_1_squote.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "x\"y" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_with_1_squote.ttl b/test/w3c/turtle/LITERAL_LONG2_with_1_squote.ttl
new file mode 100644
index 00000000..80e389b8
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_with_1_squote.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> """x"y""" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_with_2_squotes.nt b/test/w3c/turtle/LITERAL_LONG2_with_2_squotes.nt
new file mode 100644
index 00000000..3e69dc10
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_with_2_squotes.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "x\"\"y" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_with_2_squotes.ttl b/test/w3c/turtle/LITERAL_LONG2_with_2_squotes.ttl
new file mode 100644
index 00000000..2f14f5b3
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_with_2_squotes.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> """x""y""" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.nt b/test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.nt
new file mode 100644
index 00000000..586e364d
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.nt
@@ -0,0 +1 @@
+<http://example.org/ns#s> <http://example.org/ns#p1> "test-\\" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.ttl b/test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.ttl
new file mode 100644
index 00000000..2206e33b
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_with_REVERSE_SOLIDUS.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/ns#> .
+
+:s :p1 """test-\\""" .
diff --git a/test/w3c/turtle/LITERAL_LONG2_with_UTF8_boundaries.ttl b/test/w3c/turtle/LITERAL_LONG2_with_UTF8_boundaries.ttl
new file mode 100644
index 00000000..644b32d8
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_LONG2_with_UTF8_boundaries.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> """€߿ࠀ࿿က쿿퀀퟿�𐀀𿿽񀀀󿿽􀀀􏿽""" .
diff --git a/test/w3c/turtle/LITERAL_with_UTF8_boundaries.nt b/test/w3c/turtle/LITERAL_with_UTF8_boundaries.nt
new file mode 100644
index 00000000..47a2527a
--- /dev/null
+++ b/test/w3c/turtle/LITERAL_with_UTF8_boundaries.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u0080\u07FF\u0800\u0FFF\u1000\uCFFF\uD000\uD7FF\uE000\uFFFD\U00010000\U0003FFFD\U00040000\U000FFFFD\U00100000\U0010FFFD" .
diff --git a/test/w3c/turtle/README b/test/w3c/turtle/README
new file mode 100644
index 00000000..1b049b9c
--- /dev/null
+++ b/test/w3c/turtle/README
@@ -0,0 +1,65 @@
+This README is for the W3C RDF Working Group's Turtle test suite.
+This test suite contains four kinds of tests:
+
+ 132 Evaluation (rdft:TestTurtleEval) - a pair of an input turtle
+ file and reference ntriples file.
+
+ 77 Positive syntax (rdft:TestTurtlePositiveSyntax) - an input turtle
+ file with no syntax errors.
+
+ 78 Negative syntax (rdft:TestTurtleNegativeSyntax) - an input turtle
+ file with at least one syntax error.
+
+ 4 Negative Evaluation (rdft:TestTurtleNegativeEval) - a pair of an
+ input turtle file and reference ntriples file. These tests have the
+ same properties as rdft:TestTurtleNegativeSyntax.
+
+The manifest.ttl file in this directory lists all of the tests in the
+RDF WG's Turtle test suite. Each test is one of the above tests. All
+tests have a name (mf:name) and an input (mf:action). The Evaluation
+tests have an expected result (mf:result).
+
+• An implementation passes an Evaluation test if it parses the input
+ into a graph, parses the expecte result into another graph, and
+ those two graphs are isomorphic (see
+ <http://www.w3.org/TR/rdf11-concepts/#graph-isomorphism>).
+
+• An implementation passes a positive syntax test if it parses the
+ input.
+
+• An implementation passes a negative syntax test if it fails to parse
+ the input.
+
+
+RELATIVE IRI RESOLUTION:
+
+The home of the test suite is <http://www.w3.org/2013/TurtleTests/>.
+Per RFC 3986 section 5.1.3, the base IRI for parsing each file is the
+retrieval IRI for that file. For example, the tests turtle-subm-01 and
+turtle-subm-27 require relative IRI resolution against a base of
+<http://www.w3.org/2013/TurtleTests/turtle-subm-01.ttl> and
+<http://www.w3.org/2013/TurtleTests/turtle-subm-27.ttl> respectively.
+
+
+CHARACTER ENCODING:
+
+The Turtle language uses UTF-8 encoding. The following tests include
+non-ascii characters:
+ localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries
+ localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries *
+ localName_with_nfc_PN_CHARS_BASE_character_boundaries *
+ labeled_blank_node_with_PN_CHARS_BASE_character_boundaries *
+ LITERAL1_with_UTF8_boundaries *
+ LITERAL_LONG1_with_UTF8_boundaries *
+ LITERAL2_with_UTF8_boundaries *
+ LITERAL_LONG2_with_UTF8_boundaries *
+
+Those marked with a * include characters with codepoints greater than
+U+FFFD and are thus expressed as a pair of surrogate characters when
+represented in UCS2.
+
+
+See http://www.w3.org/2011/rdf-wg/wiki/Turtle_Test_Suite for more details.
+
+
+Eric Prud'hommeaux <eric+turtle@w3.org> - 11 June 2013.
diff --git a/test/w3c/turtle/SPARQL_style_base.ttl b/test/w3c/turtle/SPARQL_style_base.ttl
new file mode 100644
index 00000000..d134ea81
--- /dev/null
+++ b/test/w3c/turtle/SPARQL_style_base.ttl
@@ -0,0 +1,2 @@
+BASE <http://a.example/>
+<s> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/SPARQL_style_prefix.ttl b/test/w3c/turtle/SPARQL_style_prefix.ttl
new file mode 100644
index 00000000..e7e4a3da
--- /dev/null
+++ b/test/w3c/turtle/SPARQL_style_prefix.ttl
@@ -0,0 +1,2 @@
+PREFIX p: <http://a.example/>
+p:s <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/anonymous_blank_node_object.nt b/test/w3c/turtle/anonymous_blank_node_object.nt
new file mode 100644
index 00000000..89e88f63
--- /dev/null
+++ b/test/w3c/turtle/anonymous_blank_node_object.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
diff --git a/test/w3c/turtle/anonymous_blank_node_object.ttl b/test/w3c/turtle/anonymous_blank_node_object.ttl
new file mode 100644
index 00000000..0b2ce436
--- /dev/null
+++ b/test/w3c/turtle/anonymous_blank_node_object.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> [] .
diff --git a/test/w3c/turtle/anonymous_blank_node_subject.nt b/test/w3c/turtle/anonymous_blank_node_subject.nt
new file mode 100644
index 00000000..b48df9a7
--- /dev/null
+++ b/test/w3c/turtle/anonymous_blank_node_subject.nt
@@ -0,0 +1 @@
+_:b1 <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/anonymous_blank_node_subject.ttl b/test/w3c/turtle/anonymous_blank_node_subject.ttl
new file mode 100644
index 00000000..17b378c2
--- /dev/null
+++ b/test/w3c/turtle/anonymous_blank_node_subject.ttl
@@ -0,0 +1 @@
+[] <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/bareword_a_predicate.nt b/test/w3c/turtle/bareword_a_predicate.nt
new file mode 100644
index 00000000..afe14252
--- /dev/null
+++ b/test/w3c/turtle/bareword_a_predicate.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://a.example/o> .
diff --git a/test/w3c/turtle/bareword_a_predicate.ttl b/test/w3c/turtle/bareword_a_predicate.ttl
new file mode 100644
index 00000000..66fa0d0c
--- /dev/null
+++ b/test/w3c/turtle/bareword_a_predicate.ttl
@@ -0,0 +1 @@
+<http://a.example/s> a <http://a.example/o> .
diff --git a/test/w3c/turtle/bareword_decimal.nt b/test/w3c/turtle/bareword_decimal.nt
new file mode 100644
index 00000000..e177a9c6
--- /dev/null
+++ b/test/w3c/turtle/bareword_decimal.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
diff --git a/test/w3c/turtle/bareword_decimal.ttl b/test/w3c/turtle/bareword_decimal.ttl
new file mode 100644
index 00000000..20955d51
--- /dev/null
+++ b/test/w3c/turtle/bareword_decimal.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> 1.0 .
diff --git a/test/w3c/turtle/bareword_double.nt b/test/w3c/turtle/bareword_double.nt
new file mode 100644
index 00000000..dd8be2fd
--- /dev/null
+++ b/test/w3c/turtle/bareword_double.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "1E0"^^<http://www.w3.org/2001/XMLSchema#double> .
diff --git a/test/w3c/turtle/bareword_double.ttl b/test/w3c/turtle/bareword_double.ttl
new file mode 100644
index 00000000..7ce25b11
--- /dev/null
+++ b/test/w3c/turtle/bareword_double.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> 1E0 .
diff --git a/test/w3c/turtle/bareword_integer.ttl b/test/w3c/turtle/bareword_integer.ttl
new file mode 100644
index 00000000..087e71b6
--- /dev/null
+++ b/test/w3c/turtle/bareword_integer.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> 1 .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_object.nt b/test/w3c/turtle/blankNodePropertyList_as_object.nt
new file mode 100644
index 00000000..528bd844
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_object.nt
@@ -0,0 +1,2 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://a.example/p2> <http://a.example/o2> .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_object.ttl b/test/w3c/turtle/blankNodePropertyList_as_object.ttl
new file mode 100644
index 00000000..aa85a746
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_object.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> [ <http://a.example/p2> <http://a.example/o2> ] .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.nt b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.nt
new file mode 100644
index 00000000..03618699
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.nt
@@ -0,0 +1,3 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://a.example/p2> <http://a.example/o> .
+_:b1 <http://a.example/p2> <http://a.example/o2> .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.ttl b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.ttl
new file mode 100644
index 00000000..c5e224df
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> [ <http://a.example/p2> <http://a.example/o>,<http://a.example/o2> ] .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.nt b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.nt
new file mode 100644
index 00000000..d67ef6ca
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.nt
@@ -0,0 +1,3 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://a.example/p2> <http://a.example/o> .
+<http://a.example/s> <http://a.example/p> <http://a.example/o2> .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.ttl b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.ttl
new file mode 100644
index 00000000..884fac6c
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_object_containing_objectList_of_two_objects.ttl
@@ -0,0 +1,2 @@
+<http://a.example/s> <http://a.example/p> [ <http://a.example/p2> <http://a.example/o> ]
+ , <http://a.example/o2> .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_subject.nt b/test/w3c/turtle/blankNodePropertyList_as_subject.nt
new file mode 100644
index 00000000..f0768879
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_subject.nt
@@ -0,0 +1,2 @@
+_:b1 <http://a.example/p> <http://a.example/o> .
+_:b1 <http://a.example/p2> <http://a.example/o2> .
diff --git a/test/w3c/turtle/blankNodePropertyList_as_subject.ttl b/test/w3c/turtle/blankNodePropertyList_as_subject.ttl
new file mode 100644
index 00000000..cb2e52aa
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_as_subject.ttl
@@ -0,0 +1 @@
+[ <http://a.example/p> <http://a.example/o> ] <http://a.example/p2> <http://a.example/o2> .
diff --git a/test/w3c/turtle/blankNodePropertyList_containing_collection.nt b/test/w3c/turtle/blankNodePropertyList_containing_collection.nt
new file mode 100644
index 00000000..e590826b
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_containing_collection.nt
@@ -0,0 +1,3 @@
+_:b1 <http://a.example/p1> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/blankNodePropertyList_containing_collection.ttl b/test/w3c/turtle/blankNodePropertyList_containing_collection.ttl
new file mode 100644
index 00000000..bf164c83
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_containing_collection.ttl
@@ -0,0 +1 @@
+[ <http://a.example/p1> (1) ] .
diff --git a/test/w3c/turtle/blankNodePropertyList_with_multiple_triples.nt b/test/w3c/turtle/blankNodePropertyList_with_multiple_triples.nt
new file mode 100644
index 00000000..8f3fc507
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_with_multiple_triples.nt
@@ -0,0 +1,3 @@
+_: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> .
diff --git a/test/w3c/turtle/blankNodePropertyList_with_multiple_triples.ttl b/test/w3c/turtle/blankNodePropertyList_with_multiple_triples.ttl
new file mode 100644
index 00000000..6153c13d
--- /dev/null
+++ b/test/w3c/turtle/blankNodePropertyList_with_multiple_triples.ttl
@@ -0,0 +1 @@
+[ <http://a.example/p1> <http://a.example/o1> ; <http://a.example/p2> <http://a.example/o2> ] <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/collection_object.nt b/test/w3c/turtle/collection_object.nt
new file mode 100644
index 00000000..391162e0
--- /dev/null
+++ b/test/w3c/turtle/collection_object.nt
@@ -0,0 +1,3 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/collection_object.ttl b/test/w3c/turtle/collection_object.ttl
new file mode 100644
index 00000000..6af34715
--- /dev/null
+++ b/test/w3c/turtle/collection_object.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> (1) .
diff --git a/test/w3c/turtle/collection_subject.nt b/test/w3c/turtle/collection_subject.nt
new file mode 100644
index 00000000..502768c8
--- /dev/null
+++ b/test/w3c/turtle/collection_subject.nt
@@ -0,0 +1,3 @@
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b1 <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/collection_subject.ttl b/test/w3c/turtle/collection_subject.ttl
new file mode 100644
index 00000000..00a4c0bc
--- /dev/null
+++ b/test/w3c/turtle/collection_subject.ttl
@@ -0,0 +1 @@
+(1) <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/comment_following_PNAME_NS.nt b/test/w3c/turtle/comment_following_PNAME_NS.nt
new file mode 100644
index 00000000..a8ca81c5
--- /dev/null
+++ b/test/w3c/turtle/comment_following_PNAME_NS.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/> .
diff --git a/test/w3c/turtle/comment_following_PNAME_NS.ttl b/test/w3c/turtle/comment_following_PNAME_NS.ttl
new file mode 100644
index 00000000..c03124c4
--- /dev/null
+++ b/test/w3c/turtle/comment_following_PNAME_NS.ttl
@@ -0,0 +1,3 @@
+@prefix p: <http://a.example/> .
+<http://a.example/s> <http://a.example/p> p:#comment
+.
diff --git a/test/w3c/turtle/comment_following_localName.ttl b/test/w3c/turtle/comment_following_localName.ttl
new file mode 100644
index 00000000..919f876b
--- /dev/null
+++ b/test/w3c/turtle/comment_following_localName.ttl
@@ -0,0 +1,3 @@
+@prefix p: <http://a.example/> .
+<http://a.example/s> <http://a.example/p> p:o#comment
+.
diff --git a/test/w3c/turtle/default_namespace_IRI.ttl b/test/w3c/turtle/default_namespace_IRI.ttl
new file mode 100644
index 00000000..f1f83fd5
--- /dev/null
+++ b/test/w3c/turtle/default_namespace_IRI.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://a.example/>.
+:s <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/double_lower_case_e.nt b/test/w3c/turtle/double_lower_case_e.nt
new file mode 100644
index 00000000..49a792b9
--- /dev/null
+++ b/test/w3c/turtle/double_lower_case_e.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "1e0"^^<http://www.w3.org/2001/XMLSchema#double> .
diff --git a/test/w3c/turtle/double_lower_case_e.ttl b/test/w3c/turtle/double_lower_case_e.ttl
new file mode 100644
index 00000000..5f4552bf
--- /dev/null
+++ b/test/w3c/turtle/double_lower_case_e.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> 1e0 .
diff --git a/test/w3c/turtle/empty_collection.nt b/test/w3c/turtle/empty_collection.nt
new file mode 100644
index 00000000..82726a3f
--- /dev/null
+++ b/test/w3c/turtle/empty_collection.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/empty_collection.ttl b/test/w3c/turtle/empty_collection.ttl
new file mode 100644
index 00000000..02f9cc07
--- /dev/null
+++ b/test/w3c/turtle/empty_collection.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> () .
diff --git a/test/w3c/turtle/first.nt b/test/w3c/turtle/first.nt
new file mode 100644
index 00000000..d50539f6
--- /dev/null
+++ b/test/w3c/turtle/first.nt
@@ -0,0 +1,7 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/first.ttl b/test/w3c/turtle/first.ttl
new file mode 100644
index 00000000..44f496cb
--- /dev/null
+++ b/test/w3c/turtle/first.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> ((1) 2) .
diff --git a/test/w3c/turtle/labeled_blank_node_object.nt b/test/w3c/turtle/labeled_blank_node_object.nt
new file mode 100644
index 00000000..2645d4ee
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_object.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:o .
diff --git a/test/w3c/turtle/labeled_blank_node_object.ttl b/test/w3c/turtle/labeled_blank_node_object.ttl
new file mode 100644
index 00000000..2645d4ee
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_object.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:o .
diff --git a/test/w3c/turtle/labeled_blank_node_subject.nt b/test/w3c/turtle/labeled_blank_node_subject.nt
new file mode 100644
index 00000000..d0c7f458
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_subject.nt
@@ -0,0 +1 @@
+_:s <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/labeled_blank_node_subject.ttl b/test/w3c/turtle/labeled_blank_node_subject.ttl
new file mode 100644
index 00000000..d0c7f458
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_subject.ttl
@@ -0,0 +1 @@
+_:s <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.nt b/test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.nt
new file mode 100644
index 00000000..50be8d6f
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:AZazÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿豈﷏ﷰ�𐀀󯿽 .
diff --git a/test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.ttl b/test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.ttl
new file mode 100644
index 00000000..50be8d6f
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:AZazÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿豈﷏ﷰ�𐀀󯿽 .
diff --git a/test/w3c/turtle/labeled_blank_node_with_leading_digit.nt b/test/w3c/turtle/labeled_blank_node_with_leading_digit.nt
new file mode 100644
index 00000000..7244d806
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_leading_digit.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:0 .
diff --git a/test/w3c/turtle/labeled_blank_node_with_leading_digit.ttl b/test/w3c/turtle/labeled_blank_node_with_leading_digit.ttl
new file mode 100644
index 00000000..7244d806
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_leading_digit.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:0 .
diff --git a/test/w3c/turtle/labeled_blank_node_with_leading_underscore.nt b/test/w3c/turtle/labeled_blank_node_with_leading_underscore.nt
new file mode 100644
index 00000000..15d9ffc8
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_leading_underscore.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:_ .
diff --git a/test/w3c/turtle/labeled_blank_node_with_leading_underscore.ttl b/test/w3c/turtle/labeled_blank_node_with_leading_underscore.ttl
new file mode 100644
index 00000000..15d9ffc8
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_leading_underscore.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:_ .
diff --git a/test/w3c/turtle/labeled_blank_node_with_non_leading_extras.nt b/test/w3c/turtle/labeled_blank_node_with_non_leading_extras.nt
new file mode 100644
index 00000000..5ae09b7c
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_non_leading_extras.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:a·̀ͯ‿.⁀ .
diff --git a/test/w3c/turtle/labeled_blank_node_with_non_leading_extras.ttl b/test/w3c/turtle/labeled_blank_node_with_non_leading_extras.ttl
new file mode 100644
index 00000000..5ae09b7c
--- /dev/null
+++ b/test/w3c/turtle/labeled_blank_node_with_non_leading_extras.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> _:a·̀ͯ‿.⁀ .
diff --git a/test/w3c/turtle/langtagged_LONG.ttl b/test/w3c/turtle/langtagged_LONG.ttl
new file mode 100644
index 00000000..2baefe5d
--- /dev/null
+++ b/test/w3c/turtle/langtagged_LONG.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> """chat"""@en .
diff --git a/test/w3c/turtle/langtagged_LONG_with_subtag.nt b/test/w3c/turtle/langtagged_LONG_with_subtag.nt
new file mode 100644
index 00000000..629cbf42
--- /dev/null
+++ b/test/w3c/turtle/langtagged_LONG_with_subtag.nt
@@ -0,0 +1 @@
+<http://example.org/ex#a> <http://example.org/ex#b> "Cheers"@en-UK .
diff --git a/test/w3c/turtle/langtagged_LONG_with_subtag.ttl b/test/w3c/turtle/langtagged_LONG_with_subtag.ttl
new file mode 100644
index 00000000..7fd527c4
--- /dev/null
+++ b/test/w3c/turtle/langtagged_LONG_with_subtag.ttl
@@ -0,0 +1,3 @@
+# Test long literal with lang tag
+@prefix : <http://example.org/ex#> .
+:a :b """Cheers"""@en-UK .
diff --git a/test/w3c/turtle/langtagged_non_LONG.nt b/test/w3c/turtle/langtagged_non_LONG.nt
new file mode 100644
index 00000000..1bddb04e
--- /dev/null
+++ b/test/w3c/turtle/langtagged_non_LONG.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "chat"@en .
diff --git a/test/w3c/turtle/langtagged_non_LONG.ttl b/test/w3c/turtle/langtagged_non_LONG.ttl
new file mode 100644
index 00000000..1bddb04e
--- /dev/null
+++ b/test/w3c/turtle/langtagged_non_LONG.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "chat"@en .
diff --git a/test/w3c/turtle/lantag_with_subtag.nt b/test/w3c/turtle/lantag_with_subtag.nt
new file mode 100644
index 00000000..46c9d53a
--- /dev/null
+++ b/test/w3c/turtle/lantag_with_subtag.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "chat"@en-us .
diff --git a/test/w3c/turtle/lantag_with_subtag.ttl b/test/w3c/turtle/lantag_with_subtag.ttl
new file mode 100644
index 00000000..46c9d53a
--- /dev/null
+++ b/test/w3c/turtle/lantag_with_subtag.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "chat"@en-us .
diff --git a/test/w3c/turtle/last.nt b/test/w3c/turtle/last.nt
new file mode 100644
index 00000000..27c21b3d
--- /dev/null
+++ b/test/w3c/turtle/last.nt
@@ -0,0 +1,7 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b3 .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/last.ttl b/test/w3c/turtle/last.ttl
new file mode 100644
index 00000000..1254c261
--- /dev/null
+++ b/test/w3c/turtle/last.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> (1 (2)) .
diff --git a/test/w3c/turtle/literal_false.nt b/test/w3c/turtle/literal_false.nt
new file mode 100644
index 00000000..5bbbae84
--- /dev/null
+++ b/test/w3c/turtle/literal_false.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> .
diff --git a/test/w3c/turtle/literal_false.ttl b/test/w3c/turtle/literal_false.ttl
new file mode 100644
index 00000000..6a32e362
--- /dev/null
+++ b/test/w3c/turtle/literal_false.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> false .
diff --git a/test/w3c/turtle/literal_true.nt b/test/w3c/turtle/literal_true.nt
new file mode 100644
index 00000000..054b229f
--- /dev/null
+++ b/test/w3c/turtle/literal_true.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "true"^^<http://www.w3.org/2001/XMLSchema#boolean> .
diff --git a/test/w3c/turtle/literal_true.ttl b/test/w3c/turtle/literal_true.ttl
new file mode 100644
index 00000000..6c5bb742
--- /dev/null
+++ b/test/w3c/turtle/literal_true.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> true .
diff --git a/test/w3c/turtle/literal_with_BACKSPACE.nt b/test/w3c/turtle/literal_with_BACKSPACE.nt
new file mode 100644
index 00000000..7dba113b
--- /dev/null
+++ b/test/w3c/turtle/literal_with_BACKSPACE.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u0008" .
diff --git a/test/w3c/turtle/literal_with_BACKSPACE.ttl b/test/w3c/turtle/literal_with_BACKSPACE.ttl
new file mode 100644
index 00000000..17b2880f
--- /dev/null
+++ b/test/w3c/turtle/literal_with_BACKSPACE.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '' .
diff --git a/test/w3c/turtle/literal_with_CARRIAGE_RETURN.nt b/test/w3c/turtle/literal_with_CARRIAGE_RETURN.nt
new file mode 100644
index 00000000..91b85c89
--- /dev/null
+++ b/test/w3c/turtle/literal_with_CARRIAGE_RETURN.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\r" .
diff --git a/test/w3c/turtle/literal_with_CARRIAGE_RETURN.ttl b/test/w3c/turtle/literal_with_CARRIAGE_RETURN.ttl
new file mode 100644
index 00000000..3cd1d89c
--- /dev/null
+++ b/test/w3c/turtle/literal_with_CARRIAGE_RETURN.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> ''' ''' .
diff --git a/test/w3c/turtle/literal_with_CHARACTER_TABULATION.nt b/test/w3c/turtle/literal_with_CHARACTER_TABULATION.nt
new file mode 100644
index 00000000..a6a9d9f0
--- /dev/null
+++ b/test/w3c/turtle/literal_with_CHARACTER_TABULATION.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\t" .
diff --git a/test/w3c/turtle/literal_with_CHARACTER_TABULATION.ttl b/test/w3c/turtle/literal_with_CHARACTER_TABULATION.ttl
new file mode 100644
index 00000000..37fbd9d1
--- /dev/null
+++ b/test/w3c/turtle/literal_with_CHARACTER_TABULATION.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> ' ' .
diff --git a/test/w3c/turtle/literal_with_FORM_FEED.nt b/test/w3c/turtle/literal_with_FORM_FEED.nt
new file mode 100644
index 00000000..2a4490b3
--- /dev/null
+++ b/test/w3c/turtle/literal_with_FORM_FEED.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\u000C" .
diff --git a/test/w3c/turtle/literal_with_FORM_FEED.ttl b/test/w3c/turtle/literal_with_FORM_FEED.ttl
new file mode 100644
index 00000000..76d6ee77
--- /dev/null
+++ b/test/w3c/turtle/literal_with_FORM_FEED.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> ' ' .
diff --git a/test/w3c/turtle/literal_with_LINE_FEED.nt b/test/w3c/turtle/literal_with_LINE_FEED.nt
new file mode 100644
index 00000000..462f97ac
--- /dev/null
+++ b/test/w3c/turtle/literal_with_LINE_FEED.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\n" .
diff --git a/test/w3c/turtle/literal_with_LINE_FEED.ttl b/test/w3c/turtle/literal_with_LINE_FEED.ttl
new file mode 100644
index 00000000..50cc8a8b
--- /dev/null
+++ b/test/w3c/turtle/literal_with_LINE_FEED.ttl
@@ -0,0 +1,2 @@
+<http://a.example/s> <http://a.example/p> '''
+''' .
diff --git a/test/w3c/turtle/literal_with_REVERSE_SOLIDUS.nt b/test/w3c/turtle/literal_with_REVERSE_SOLIDUS.nt
new file mode 100644
index 00000000..ebc846ed
--- /dev/null
+++ b/test/w3c/turtle/literal_with_REVERSE_SOLIDUS.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "\\" .
diff --git a/test/w3c/turtle/literal_with_REVERSE_SOLIDUS.ttl b/test/w3c/turtle/literal_with_REVERSE_SOLIDUS.ttl
new file mode 100644
index 00000000..380a3d04
--- /dev/null
+++ b/test/w3c/turtle/literal_with_REVERSE_SOLIDUS.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\\' .
diff --git a/test/w3c/turtle/literal_with_escaped_BACKSPACE.ttl b/test/w3c/turtle/literal_with_escaped_BACKSPACE.ttl
new file mode 100644
index 00000000..5284b9b6
--- /dev/null
+++ b/test/w3c/turtle/literal_with_escaped_BACKSPACE.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\b' .
diff --git a/test/w3c/turtle/literal_with_escaped_CARRIAGE_RETURN.ttl b/test/w3c/turtle/literal_with_escaped_CARRIAGE_RETURN.ttl
new file mode 100644
index 00000000..a28e7c0b
--- /dev/null
+++ b/test/w3c/turtle/literal_with_escaped_CARRIAGE_RETURN.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\r' .
diff --git a/test/w3c/turtle/literal_with_escaped_CHARACTER_TABULATION.ttl b/test/w3c/turtle/literal_with_escaped_CHARACTER_TABULATION.ttl
new file mode 100644
index 00000000..67966f78
--- /dev/null
+++ b/test/w3c/turtle/literal_with_escaped_CHARACTER_TABULATION.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\t' .
diff --git a/test/w3c/turtle/literal_with_escaped_FORM_FEED.ttl b/test/w3c/turtle/literal_with_escaped_FORM_FEED.ttl
new file mode 100644
index 00000000..21acace9
--- /dev/null
+++ b/test/w3c/turtle/literal_with_escaped_FORM_FEED.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\f' .
diff --git a/test/w3c/turtle/literal_with_escaped_LINE_FEED.ttl b/test/w3c/turtle/literal_with_escaped_LINE_FEED.ttl
new file mode 100644
index 00000000..b53f49ec
--- /dev/null
+++ b/test/w3c/turtle/literal_with_escaped_LINE_FEED.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\n' .
diff --git a/test/w3c/turtle/literal_with_numeric_escape4.nt b/test/w3c/turtle/literal_with_numeric_escape4.nt
new file mode 100644
index 00000000..0b35a89a
--- /dev/null
+++ b/test/w3c/turtle/literal_with_numeric_escape4.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "o" .
diff --git a/test/w3c/turtle/literal_with_numeric_escape4.ttl b/test/w3c/turtle/literal_with_numeric_escape4.ttl
new file mode 100644
index 00000000..2b4e0175
--- /dev/null
+++ b/test/w3c/turtle/literal_with_numeric_escape4.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\u006F' .
diff --git a/test/w3c/turtle/literal_with_numeric_escape8.ttl b/test/w3c/turtle/literal_with_numeric_escape8.ttl
new file mode 100644
index 00000000..8d0e4ef2
--- /dev/null
+++ b/test/w3c/turtle/literal_with_numeric_escape8.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> '\U0000006F' .
diff --git a/test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.nt b/test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.nt
new file mode 100644
index 00000000..4b60c9e1
--- /dev/null
+++ b/test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.nt
@@ -0,0 +1 @@
+<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> .
diff --git a/test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.ttl b/test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.ttl
new file mode 100644
index 00000000..c532e3d0
--- /dev/null
+++ b/test/w3c/turtle/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/> .
+<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿Ͱͽ΄῾‌‍⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ￯𐀀󠇯 .
diff --git a/test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.nt b/test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.nt
new file mode 100644
index 00000000..78ef1086
--- /dev/null
+++ b/test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.nt
@@ -0,0 +1 @@
+<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> .
diff --git a/test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.ttl b/test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.ttl
new file mode 100644
index 00000000..15b23dd8
--- /dev/null
+++ b/test/w3c/turtle/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/> .
+<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿Ͱͽ΄῾‌‍⁰↉Ⰰ⿕、ퟻ﨎ﷇﷰ￯ .
diff --git a/test/w3c/turtle/localName_with_leading_digit.nt b/test/w3c/turtle/localName_with_leading_digit.nt
new file mode 100644
index 00000000..a9e101e5
--- /dev/null
+++ b/test/w3c/turtle/localName_with_leading_digit.nt
@@ -0,0 +1 @@
+<http://a.example/0> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/localName_with_leading_digit.ttl b/test/w3c/turtle/localName_with_leading_digit.ttl
new file mode 100644
index 00000000..65da2499
--- /dev/null
+++ b/test/w3c/turtle/localName_with_leading_digit.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:0 <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/localName_with_leading_underscore.nt b/test/w3c/turtle/localName_with_leading_underscore.nt
new file mode 100644
index 00000000..e042a7b9
--- /dev/null
+++ b/test/w3c/turtle/localName_with_leading_underscore.nt
@@ -0,0 +1 @@
+<http://a.example/_> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/localName_with_leading_underscore.ttl b/test/w3c/turtle/localName_with_leading_underscore.ttl
new file mode 100644
index 00000000..762ace98
--- /dev/null
+++ b/test/w3c/turtle/localName_with_leading_underscore.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:_ <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.nt b/test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.nt
new file mode 100644
index 00000000..5b346919
--- /dev/null
+++ b/test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.nt
@@ -0,0 +1 @@
+<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> .
diff --git a/test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.ttl b/test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.ttl
new file mode 100644
index 00000000..0922d95d
--- /dev/null
+++ b/test/w3c/turtle/localName_with_nfc_PN_CHARS_BASE_character_boundaries.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/> .
+<http://a.example/s> <http://a.example/p> p:AZazÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿﨎﷏ﷰ￯𐀀󯿽 .
diff --git a/test/w3c/turtle/localName_with_non_leading_extras.nt b/test/w3c/turtle/localName_with_non_leading_extras.nt
new file mode 100644
index 00000000..749b98cd
--- /dev/null
+++ b/test/w3c/turtle/localName_with_non_leading_extras.nt
@@ -0,0 +1 @@
+<http://a.example/a\u00B7\u0300\u036F\u203F.\u2040> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/localName_with_non_leading_extras.ttl b/test/w3c/turtle/localName_with_non_leading_extras.ttl
new file mode 100644
index 00000000..db25a8a6
--- /dev/null
+++ b/test/w3c/turtle/localName_with_non_leading_extras.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:a·̀ͯ‿.⁀ <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/localname_with_COLON.nt b/test/w3c/turtle/localname_with_COLON.nt
new file mode 100644
index 00000000..eb966ca3
--- /dev/null
+++ b/test/w3c/turtle/localname_with_COLON.nt
@@ -0,0 +1 @@
+<http://a.example/s:> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/localname_with_COLON.ttl b/test/w3c/turtle/localname_with_COLON.ttl
new file mode 100644
index 00000000..1d45f20f
--- /dev/null
+++ b/test/w3c/turtle/localname_with_COLON.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:s: <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/manifest.ttl b/test/w3c/turtle/manifest.ttl
new file mode 100644
index 00000000..5a0183ab
--- /dev/null
+++ b/test/w3c/turtle/manifest.ttl
@@ -0,0 +1,2549 @@
+## Distributed under both the W3C Test Suite License[1] and the W3C 3-
+## clause BSD License[2]. To contribute to a W3C Test Suite, see the
+## policies and contribution forms [3]
+##
+## 1. http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
+## 2. http://www.w3.org/Consortium/Legal/2008/03-bsd-license
+## 3. http://www.w3.org/2004/10/27-testcases
+
+# Test named *subm* are (c) W3C and taken from the Turtle submission.
+
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> .
+@prefix qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> .
+
+@prefix rdft: <http://www.w3.org/ns/rdftest#> .
+
+<> rdf:type mf:Manifest ;
+ rdfs:label "Turtle tests" ;
+ mf:entries
+ (
+
+ # atomic tests
+ <#IRI_subject>
+ <#IRI_with_four_digit_numeric_escape>
+ <#IRI_with_eight_digit_numeric_escape>
+ <#IRI_with_all_punctuation>
+ <#bareword_a_predicate>
+ <#old_style_prefix>
+ <#SPARQL_style_prefix>
+ <#prefixed_IRI_predicate>
+ <#prefixed_IRI_object>
+ <#prefix_only_IRI>
+ <#prefix_with_PN_CHARS_BASE_character_boundaries>
+ <#prefix_with_non_leading_extras>
+ <#default_namespace_IRI>
+ <#prefix_reassigned_and_used>
+ <#reserved_escaped_localName>
+ <#percent_escaped_localName>
+ <#HYPHEN_MINUS_in_localName>
+ <#underscore_in_localName>
+ <#localname_with_COLON>
+ <#localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries>
+ <#localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries>
+ <#localName_with_nfc_PN_CHARS_BASE_character_boundaries>
+ <#localName_with_leading_underscore>
+ <#localName_with_leading_digit>
+ <#localName_with_non_leading_extras>
+ <#old_style_base>
+ <#SPARQL_style_base>
+ <#labeled_blank_node_subject>
+ <#labeled_blank_node_object>
+ <#labeled_blank_node_with_PN_CHARS_BASE_character_boundaries>
+ <#labeled_blank_node_with_leading_underscore>
+ <#labeled_blank_node_with_leading_digit>
+ <#labeled_blank_node_with_non_leading_extras>
+ <#anonymous_blank_node_subject>
+ <#anonymous_blank_node_object>
+ <#sole_blankNodePropertyList>
+ <#blankNodePropertyList_as_subject>
+ <#blankNodePropertyList_as_object>
+ <#blankNodePropertyList_as_object_containing_objectList>
+ <#blankNodePropertyList_as_object_containing_objectList_of_two_objects>
+ <#blankNodePropertyList_with_multiple_triples>
+ <#nested_blankNodePropertyLists>
+ <#blankNodePropertyList_containing_collection>
+ <#collection_subject>
+ <#collection_object>
+ <#empty_collection>
+ <#nested_collection>
+ <#first>
+ <#last>
+ <#LITERAL1>
+ <#LITERAL1_ascii_boundaries>
+ <#LITERAL1_with_UTF8_boundaries>
+ <#LITERAL1_all_controls>
+ <#LITERAL1_all_punctuation>
+ <#LITERAL_LONG1>
+ <#LITERAL_LONG1_ascii_boundaries>
+ <#LITERAL_LONG1_with_UTF8_boundaries>
+ <#LITERAL_LONG1_with_1_squote>
+ <#LITERAL_LONG1_with_2_squotes>
+ <#LITERAL2>
+ <#LITERAL2_ascii_boundaries>
+ <#LITERAL2_with_UTF8_boundaries>
+ <#LITERAL_LONG2>
+ <#LITERAL_LONG2_ascii_boundaries>
+ <#LITERAL_LONG2_with_UTF8_boundaries>
+ <#LITERAL_LONG2_with_1_squote>
+ <#LITERAL_LONG2_with_2_squotes>
+ <#literal_with_CHARACTER_TABULATION>
+ <#literal_with_BACKSPACE>
+ <#literal_with_LINE_FEED>
+ <#literal_with_CARRIAGE_RETURN>
+ <#literal_with_FORM_FEED>
+ <#literal_with_REVERSE_SOLIDUS>
+ <#literal_with_escaped_CHARACTER_TABULATION>
+ <#literal_with_escaped_BACKSPACE>
+ <#literal_with_escaped_LINE_FEED>
+ <#literal_with_escaped_CARRIAGE_RETURN>
+ <#literal_with_escaped_FORM_FEED>
+ <#literal_with_numeric_escape4>
+ <#literal_with_numeric_escape8>
+ <#IRIREF_datatype>
+ <#prefixed_name_datatype>
+ <#bareword_integer>
+ <#bareword_decimal>
+ <#bareword_double>
+ <#double_lower_case_e>
+ <#negative_numeric>
+ <#positive_numeric>
+ <#numeric_with_leading_0>
+ <#literal_true>
+ <#literal_false>
+ <#langtagged_non_LONG>
+ <#langtagged_LONG>
+ <#lantag_with_subtag>
+ <#objectList_with_two_objects>
+ <#predicateObjectList_with_two_objectLists>
+ <#predicateObjectList_with_blankNodePropertyList_as_object>
+ <#repeated_semis_at_end>
+ <#repeated_semis_not_at_end>
+
+ # tests requested by Jeremy Carroll
+ # http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c35
+ <#comment_following_localName>
+ <#number_sign_following_localName>
+ <#comment_following_PNAME_NS>
+ <#number_sign_following_PNAME_NS>
+
+ # tests from Dave Beckett
+ # http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c28
+ <#LITERAL_LONG2_with_REVERSE_SOLIDUS>
+ <#turtle-syntax-bad-LITERAL2_with_langtag_and_datatype>
+ <#two_LITERAL_LONG2s>
+ <#langtagged_LONG_with_subtag>
+
+ # original tests-ttl
+ <#turtle-syntax-file-01>
+ <#turtle-syntax-file-02>
+ <#turtle-syntax-file-03>
+ <#turtle-syntax-uri-01>
+ <#turtle-syntax-uri-02>
+ <#turtle-syntax-uri-03>
+ <#turtle-syntax-uri-04>
+ <#turtle-syntax-base-01>
+ <#turtle-syntax-base-02>
+ <#turtle-syntax-base-03>
+ <#turtle-syntax-base-04>
+ <#turtle-syntax-prefix-01>
+ <#turtle-syntax-prefix-02>
+ <#turtle-syntax-prefix-03>
+ <#turtle-syntax-prefix-04>
+ <#turtle-syntax-prefix-05>
+ <#turtle-syntax-prefix-06>
+ <#turtle-syntax-prefix-07>
+ <#turtle-syntax-prefix-08>
+ <#turtle-syntax-prefix-09>
+ <#turtle-syntax-string-01>
+ <#turtle-syntax-string-02>
+ <#turtle-syntax-string-03>
+ <#turtle-syntax-string-04>
+ <#turtle-syntax-string-05>
+ <#turtle-syntax-string-06>
+ <#turtle-syntax-string-07>
+ <#turtle-syntax-string-08>
+ <#turtle-syntax-string-09>
+ <#turtle-syntax-string-10>
+ <#turtle-syntax-string-11>
+ <#turtle-syntax-str-esc-01>
+ <#turtle-syntax-str-esc-02>
+ <#turtle-syntax-str-esc-03>
+ <#turtle-syntax-pname-esc-01>
+ <#turtle-syntax-pname-esc-02>
+ <#turtle-syntax-pname-esc-03>
+ <#turtle-syntax-bnode-01>
+ <#turtle-syntax-bnode-02>
+ <#turtle-syntax-bnode-03>
+ <#turtle-syntax-bnode-04>
+ <#turtle-syntax-bnode-05>
+ <#turtle-syntax-bnode-06>
+ <#turtle-syntax-bnode-07>
+ <#turtle-syntax-bnode-08>
+ <#turtle-syntax-bnode-09>
+ <#turtle-syntax-bnode-10>
+ <#turtle-syntax-number-01>
+ <#turtle-syntax-number-02>
+ <#turtle-syntax-number-03>
+ <#turtle-syntax-number-04>
+ <#turtle-syntax-number-05>
+ <#turtle-syntax-number-06>
+ <#turtle-syntax-number-07>
+ <#turtle-syntax-number-08>
+ <#turtle-syntax-number-09>
+ <#turtle-syntax-number-10>
+ <#turtle-syntax-number-11>
+ <#turtle-syntax-datatypes-01>
+ <#turtle-syntax-datatypes-02>
+ <#turtle-syntax-kw-01>
+ <#turtle-syntax-kw-02>
+ <#turtle-syntax-kw-03>
+ <#turtle-syntax-struct-01>
+ <#turtle-syntax-struct-02>
+ <#turtle-syntax-struct-03>
+ <#turtle-syntax-struct-04>
+ <#turtle-syntax-struct-05>
+ <#turtle-eval-lists-01>
+ <#turtle-eval-lists-02>
+ <#turtle-eval-lists-03>
+ <#turtle-eval-lists-04>
+ <#turtle-eval-lists-05>
+ <#turtle-syntax-bad-uri-01>
+ <#turtle-syntax-bad-uri-02>
+ <#turtle-syntax-bad-uri-03>
+ <#turtle-syntax-bad-uri-04>
+ <#turtle-syntax-bad-uri-05>
+ <#turtle-syntax-bad-prefix-01>
+ <#turtle-syntax-bad-prefix-02>
+ <#turtle-syntax-bad-prefix-03>
+ <#turtle-syntax-bad-prefix-04>
+ <#turtle-syntax-bad-prefix-05>
+ <#turtle-syntax-bad-base-01>
+ <#turtle-syntax-bad-base-02>
+ <#turtle-syntax-bad-base-03>
+ <#turtle-syntax-bad-bnode-01>
+ <#turtle-syntax-bad-bnode-02>
+ <#turtle-syntax-bad-struct-01>
+ <#turtle-syntax-bad-struct-02>
+ <#turtle-syntax-bad-struct-03>
+ <#turtle-syntax-bad-struct-04>
+ <#turtle-syntax-bad-struct-05>
+ <#turtle-syntax-bad-struct-06>
+ <#turtle-syntax-bad-struct-07>
+ <#turtle-syntax-bad-kw-01>
+ <#turtle-syntax-bad-kw-02>
+ <#turtle-syntax-bad-kw-03>
+ <#turtle-syntax-bad-kw-04>
+ <#turtle-syntax-bad-kw-05>
+ <#turtle-syntax-bad-n3-extras-01>
+ <#turtle-syntax-bad-n3-extras-02>
+ <#turtle-syntax-bad-n3-extras-03>
+ <#turtle-syntax-bad-n3-extras-04>
+ <#turtle-syntax-bad-n3-extras-05>
+ <#turtle-syntax-bad-n3-extras-06>
+ <#turtle-syntax-bad-n3-extras-07>
+ <#turtle-syntax-bad-n3-extras-08>
+ <#turtle-syntax-bad-n3-extras-09>
+ <#turtle-syntax-bad-n3-extras-10>
+ <#turtle-syntax-bad-n3-extras-11>
+ <#turtle-syntax-bad-n3-extras-12>
+ <#turtle-syntax-bad-n3-extras-13>
+ <#turtle-syntax-bad-struct-08>
+ <#turtle-syntax-bad-struct-09>
+ <#turtle-syntax-bad-struct-10>
+ <#turtle-syntax-bad-struct-11>
+ <#turtle-syntax-bad-struct-12>
+ <#turtle-syntax-bad-struct-13>
+ <#turtle-syntax-bad-struct-14>
+ <#turtle-syntax-bad-struct-15>
+ <#turtle-syntax-bad-struct-16>
+ <#turtle-syntax-bad-struct-17>
+ <#turtle-syntax-bad-lang-01>
+ <#turtle-syntax-bad-esc-01>
+ <#turtle-syntax-bad-esc-02>
+ <#turtle-syntax-bad-esc-03>
+ <#turtle-syntax-bad-esc-04>
+ <#turtle-syntax-bad-pname-01>
+ <#turtle-syntax-bad-pname-02>
+ <#turtle-syntax-bad-pname-03>
+ <#turtle-syntax-bad-string-01>
+ <#turtle-syntax-bad-string-02>
+ <#turtle-syntax-bad-string-03>
+ <#turtle-syntax-bad-string-04>
+ <#turtle-syntax-bad-string-05>
+ <#turtle-syntax-bad-string-06>
+ <#turtle-syntax-bad-string-07>
+ <#turtle-syntax-bad-num-01>
+ <#turtle-syntax-bad-num-02>
+ <#turtle-syntax-bad-num-03>
+ <#turtle-syntax-bad-num-04>
+ <#turtle-syntax-bad-num-05>
+ <#turtle-eval-struct-01>
+ <#turtle-eval-struct-02>
+ <#turtle-subm-01>
+ <#turtle-subm-02>
+ <#turtle-subm-03>
+ <#turtle-subm-04>
+ <#turtle-subm-05>
+ <#turtle-subm-06>
+ <#turtle-subm-07>
+ <#turtle-subm-08>
+ <#turtle-subm-09>
+ <#turtle-subm-10>
+ <#turtle-subm-11>
+ <#turtle-subm-12>
+ <#turtle-subm-13>
+ <#turtle-subm-14>
+ <#turtle-subm-15>
+ <#turtle-subm-16>
+ <#turtle-subm-17>
+ <#turtle-subm-18>
+ <#turtle-subm-19>
+ <#turtle-subm-20>
+ <#turtle-subm-21>
+ <#turtle-subm-22>
+ <#turtle-subm-23>
+ <#turtle-subm-24>
+ <#turtle-subm-25>
+ <#turtle-subm-26>
+ <#turtle-subm-27>
+ <#turtle-eval-bad-01>
+ <#turtle-eval-bad-02>
+ <#turtle-eval-bad-03>
+ <#turtle-eval-bad-04>
+
+ # tests from David Robillard
+ # http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c21
+ <#turtle-syntax-bad-blank-label-dot-end>
+ <#turtle-syntax-bad-ln-dash-start>
+ <#turtle-syntax-bad-ln-escape-start>
+ <#turtle-syntax-bad-ln-escape>
+ <#turtle-syntax-bad-missing-ns-dot-end>
+ <#turtle-syntax-bad-missing-ns-dot-start>
+ <#turtle-syntax-bad-ns-dot-end>
+ <#turtle-syntax-bad-ns-dot-start>
+ <#turtle-syntax-bad-number-dot-in-anon>
+ <#turtle-syntax-blank-label>
+ <#turtle-syntax-ln-colons>
+ <#turtle-syntax-ln-dots>
+ <#turtle-syntax-ns-dots>
+ ) .
+
+# atomic tests
+<#IRI_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_subject" ;
+ rdfs:comment "IRI subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <IRI_subject.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#IRI_with_four_digit_numeric_escape> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_with_four_digit_numeric_escape" ;
+ rdfs:comment "IRI with four digit numeric escape (\\u)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <IRI_with_four_digit_numeric_escape.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#IRI_with_eight_digit_numeric_escape> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_with_eight_digit_numeric_escape" ;
+ rdfs:comment "IRI with eight digit numeric escape (\\U)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <IRI_with_eight_digit_numeric_escape.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#IRI_with_all_punctuation> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_with_all_punctuation" ;
+ rdfs:comment "IRI with all punctuation" ;
+ rdft:approval rdft:Approved ;
+ mf:action <IRI_with_all_punctuation.ttl> ;
+ mf:result <IRI_with_all_punctuation.nt> ;
+ .
+
+<#bareword_a_predicate> rdf:type rdft:TestTurtleEval ;
+ mf:name "bareword_a_predicate" ;
+ rdfs:comment "bareword a predicate" ;
+ rdft:approval rdft:Approved ;
+ mf:action <bareword_a_predicate.ttl> ;
+ mf:result <bareword_a_predicate.nt> ;
+ .
+
+<#old_style_prefix> rdf:type rdft:TestTurtleEval ;
+ mf:name "old_style_prefix" ;
+ rdfs:comment "old-style prefix" ;
+ rdft:approval rdft:Approved ;
+ mf:action <old_style_prefix.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#SPARQL_style_prefix> rdf:type rdft:TestTurtleEval ;
+ mf:name "SPARQL_style_prefix" ;
+ rdfs:comment "SPARQL-style prefix" ;
+ rdft:approval rdft:Approved ;
+ mf:action <SPARQL_style_prefix.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#prefixed_IRI_predicate> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefixed_IRI_predicate" ;
+ rdfs:comment "prefixed IRI predicate" ;
+ rdft:approval rdft:Approved ;
+ mf:action <prefixed_IRI_predicate.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#prefixed_IRI_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefixed_IRI_object" ;
+ rdfs:comment "prefixed IRI object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <prefixed_IRI_object.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#prefix_only_IRI> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_only_IRI" ;
+ rdfs:comment "prefix-only IRI (p:)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <prefix_only_IRI.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#prefix_with_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_with_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "prefix with PN CHARS BASE character boundaries (prefix: AZazÀÖØöø...:)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <prefix_with_PN_CHARS_BASE_character_boundaries.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#prefix_with_non_leading_extras> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_with_non_leading_extras" ;
+ rdfs:comment "prefix with_non_leading_extras (_:a·̀ͯ‿.⁀)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <prefix_with_non_leading_extras.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "localName with assigned, NFC-normalized, basic-multilingual-plane PN CHARS BASE character boundaries (p:AZazÀÖØöø...)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.ttl> ;
+ mf:result <localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.nt> ;
+ .
+
+<#localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "localName with assigned, NFC-normalized PN CHARS BASE character boundaries (p:AZazÀÖØöø...)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.ttl> ;
+ mf:result <localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.nt> ;
+ .
+
+<#localName_with_nfc_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_nfc_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "localName with nfc-normalize PN CHARS BASE character boundaries (p:AZazÀÖØöø...)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <localName_with_nfc_PN_CHARS_BASE_character_boundaries.ttl> ;
+ mf:result <localName_with_nfc_PN_CHARS_BASE_character_boundaries.nt> ;
+ .
+
+<#default_namespace_IRI> rdf:type rdft:TestTurtleEval ;
+ mf:name "default_namespace_IRI" ;
+ rdfs:comment "default namespace IRI (:ln)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <default_namespace_IRI.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#prefix_reassigned_and_used> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_reassigned_and_used" ;
+ rdfs:comment "prefix reassigned and used" ;
+ rdft:approval rdft:Approved ;
+ mf:action <prefix_reassigned_and_used.ttl> ;
+ mf:result <prefix_reassigned_and_used.nt> ;
+ .
+
+<#reserved_escaped_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "reserved_escaped_localName" ;
+ rdfs:comment "reserved-escaped local name" ;
+ rdft:approval rdft:Approved ;
+ mf:action <reserved_escaped_localName.ttl> ;
+ mf:result <reserved_escaped_localName.nt> ;
+ .
+
+<#percent_escaped_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "percent_escaped_localName" ;
+ rdfs:comment "percent-escaped local name" ;
+ rdft:approval rdft:Approved ;
+ mf:action <percent_escaped_localName.ttl> ;
+ mf:result <percent_escaped_localName.nt> ;
+ .
+
+<#HYPHEN_MINUS_in_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "HYPHEN_MINUS_in_localName" ;
+ rdfs:comment "HYPHEN-MINUS in local name" ;
+ rdft:approval rdft:Approved ;
+ mf:action <HYPHEN_MINUS_in_localName.ttl> ;
+ mf:result <HYPHEN_MINUS_in_localName.nt> ;
+ .
+
+<#underscore_in_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "underscore_in_localName" ;
+ rdfs:comment "underscore in local name" ;
+ rdft:approval rdft:Approved ;
+ mf:action <underscore_in_localName.ttl> ;
+ mf:result <underscore_in_localName.nt> ;
+ .
+
+<#localname_with_COLON> rdf:type rdft:TestTurtleEval ;
+ mf:name "localname_with_COLON" ;
+ rdfs:comment "localname with COLON" ;
+ rdft:approval rdft:Approved ;
+ mf:action <localname_with_COLON.ttl> ;
+ mf:result <localname_with_COLON.nt> ;
+ .
+
+<#localName_with_leading_underscore> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_leading_underscore" ;
+ rdfs:comment "localName with leading underscore (p:_)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <localName_with_leading_underscore.ttl> ;
+ mf:result <localName_with_leading_underscore.nt> ;
+ .
+
+<#localName_with_leading_digit> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_leading_digit" ;
+ rdfs:comment "localName with leading digit (p:_)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <localName_with_leading_digit.ttl> ;
+ mf:result <localName_with_leading_digit.nt> ;
+ .
+
+<#localName_with_non_leading_extras> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_non_leading_extras" ;
+ rdfs:comment "localName with_non_leading_extras (_:a·̀ͯ‿.⁀)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <localName_with_non_leading_extras.ttl> ;
+ mf:result <localName_with_non_leading_extras.nt> ;
+ .
+
+<#old_style_base> rdf:type rdft:TestTurtleEval ;
+ mf:name "old_style_base" ;
+ rdfs:comment "old-style base" ;
+ rdft:approval rdft:Approved ;
+ mf:action <old_style_base.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#SPARQL_style_base> rdf:type rdft:TestTurtleEval ;
+ mf:name "SPARQL_style_base" ;
+ rdfs:comment "SPARQL-style base" ;
+ rdft:approval rdft:Approved ;
+ mf:action <SPARQL_style_base.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#labeled_blank_node_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_subject" ;
+ rdfs:comment "labeled blank node subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <labeled_blank_node_subject.ttl> ;
+ mf:result <labeled_blank_node_subject.nt> ;
+ .
+
+<#labeled_blank_node_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_object" ;
+ rdfs:comment "labeled blank node object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <labeled_blank_node_object.ttl> ;
+ mf:result <labeled_blank_node_object.nt> ;
+ .
+
+<#labeled_blank_node_with_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "labeled blank node with PN_CHARS_BASE character boundaries (_:AZazÀÖØöø...)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.ttl> ;
+ mf:result <labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.nt> ;
+ .
+
+<#labeled_blank_node_with_leading_underscore> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_leading_underscore" ;
+ rdfs:comment "labeled blank node with_leading_underscore (_:_)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <labeled_blank_node_with_leading_underscore.ttl> ;
+ mf:result <labeled_blank_node_with_leading_underscore.nt> ;
+ .
+
+<#labeled_blank_node_with_leading_digit> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_leading_digit" ;
+ rdfs:comment "labeled blank node with_leading_digit (_:0)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <labeled_blank_node_with_leading_digit.ttl> ;
+ mf:result <labeled_blank_node_with_leading_digit.nt> ;
+ .
+
+<#labeled_blank_node_with_non_leading_extras> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_non_leading_extras" ;
+ rdfs:comment "labeled blank node with_non_leading_extras (_:a·̀ͯ‿.⁀)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <labeled_blank_node_with_non_leading_extras.ttl> ;
+ mf:result <labeled_blank_node_with_non_leading_extras.nt> ;
+ .
+
+<#anonymous_blank_node_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "anonymous_blank_node_subject" ;
+ rdfs:comment "anonymous blank node subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <anonymous_blank_node_subject.ttl> ;
+ mf:result <anonymous_blank_node_subject.nt> ;
+ .
+
+<#anonymous_blank_node_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "anonymous_blank_node_object" ;
+ rdfs:comment "anonymous blank node object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <anonymous_blank_node_object.ttl> ;
+ mf:result <anonymous_blank_node_object.nt> ;
+ .
+
+<#sole_blankNodePropertyList> rdf:type rdft:TestTurtleEval ;
+ mf:name "sole_blankNodePropertyList" ;
+ rdfs:comment "sole blankNodePropertyList [ <p> <o> ] ." ;
+ rdft:approval rdft:Approved ;
+ mf:action <sole_blankNodePropertyList.ttl> ;
+ mf:result <sole_blankNodePropertyList.nt> ;
+ .
+
+<#blankNodePropertyList_as_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_as_subject" ;
+ rdfs:comment "blankNodePropertyList as subject [ … ] <p> <o> ." ;
+ rdft:approval rdft:Approved ;
+ mf:action <blankNodePropertyList_as_subject.ttl> ;
+ mf:result <blankNodePropertyList_as_subject.nt> ;
+ .
+
+<#blankNodePropertyList_as_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_as_object" ;
+ rdfs:comment "blankNodePropertyList as object <s> <p> [ … ] ." ;
+ rdft:approval rdft:Approved ;
+ mf:action <blankNodePropertyList_as_object.ttl> ;
+ mf:result <blankNodePropertyList_as_object.nt> ;
+ .
+
+<#blankNodePropertyList_as_object_containing_objectList> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_as_object_containing_objectList" ;
+ rdfs:comment "blankNodePropertyList as object containing objectList <s> <p> [ <p2> <o>,<o2> ] ." ;
+ rdft:approval rdft:Approved ;
+ mf:action <blankNodePropertyList_as_object_containing_objectList.ttl> ;
+ mf:result <blankNodePropertyList_as_object_containing_objectList.nt> ;
+ .
+
+<#blankNodePropertyList_as_object_containing_objectList_of_two_objects> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_as_object_containing_objectList_of_two_objects" ;
+ rdfs:comment "blankNodePropertyList as object containing objectList of two objects <s> <p> [ <p2 <o> ] , <o2> ." ;
+ rdft:approval rdft:Approved ;
+ mf:action <blankNodePropertyList_as_object_containing_objectList_of_two_objects.ttl> ;
+ mf:result <blankNodePropertyList_as_object_containing_objectList_of_two_objects.nt> ;
+ .
+
+<#blankNodePropertyList_with_multiple_triples> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_with_multiple_triples" ;
+ rdfs:comment "blankNodePropertyList with multiple triples [ <s> <p> ; <s2> <p2> ]" ;
+ rdft:approval rdft:Approved ;
+ mf:action <blankNodePropertyList_with_multiple_triples.ttl> ;
+ mf:result <blankNodePropertyList_with_multiple_triples.nt> ;
+ .
+
+<#nested_blankNodePropertyLists> rdf:type rdft:TestTurtleEval ;
+ mf:name "nested_blankNodePropertyLists" ;
+ rdfs:comment "nested blankNodePropertyLists [ <p1> [ <p2> <o2> ] ; <p3> <o3> ]" ;
+ rdft:approval rdft:Approved ;
+ mf:action <nested_blankNodePropertyLists.ttl> ;
+ mf:result <nested_blankNodePropertyLists.nt> ;
+ .
+
+<#blankNodePropertyList_containing_collection> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_containing_collection" ;
+ rdfs:comment "blankNodePropertyList containing collection [ <p1> ( … ) ]" ;
+ rdft:approval rdft:Approved ;
+ mf:action <blankNodePropertyList_containing_collection.ttl> ;
+ mf:result <blankNodePropertyList_containing_collection.nt> ;
+ .
+
+<#collection_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "collection_subject" ;
+ rdfs:comment "collection subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <collection_subject.ttl> ;
+ mf:result <collection_subject.nt> ;
+ .
+
+<#collection_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "collection_object" ;
+ rdfs:comment "collection object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <collection_object.ttl> ;
+ mf:result <collection_object.nt> ;
+ .
+
+<#empty_collection> rdf:type rdft:TestTurtleEval ;
+ mf:name "empty_collection" ;
+ rdfs:comment "empty collection ()" ;
+ rdft:approval rdft:Approved ;
+ mf:action <empty_collection.ttl> ;
+ mf:result <empty_collection.nt> ;
+ .
+
+<#nested_collection> rdf:type rdft:TestTurtleEval ;
+ mf:name "nested_collection" ;
+ rdfs:comment "nested collection (())" ;
+ rdft:approval rdft:Approved ;
+ mf:action <nested_collection.ttl> ;
+ mf:result <nested_collection.nt> ;
+ .
+
+<#first> rdf:type rdft:TestTurtleEval ;
+ mf:name "first" ;
+ rdfs:comment "first, not last, non-empty nested collection" ;
+ rdft:approval rdft:Approved ;
+ mf:action <first.ttl> ;
+ mf:result <first.nt> ;
+ .
+
+<#last> rdf:type rdft:TestTurtleEval ;
+ mf:name "last" ;
+ rdfs:comment "last, not first, non-empty nested collection" ;
+ rdft:approval rdft:Approved ;
+ mf:action <last.ttl> ;
+ mf:result <last.nt> ;
+ .
+
+<#LITERAL1> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1" ;
+ rdfs:comment "LITERAL1 'x'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL1.ttl> ;
+ mf:result <LITERAL1.nt> ;
+ .
+
+<#LITERAL1_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_ascii_boundaries" ;
+ rdfs:comment "LITERAL1_ascii_boundaries '\\x00\\x09\\x0b\\x0c\\x0e\\x26\\x28...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL1_ascii_boundaries.ttl> ;
+ mf:result <LITERAL1_ascii_boundaries.nt> ;
+ .
+
+<#LITERAL1_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL1_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL1_with_UTF8_boundaries.ttl> ;
+ mf:result <LITERAL_with_UTF8_boundaries.nt> ;
+ .
+
+<#LITERAL1_all_controls> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_all_controls" ;
+ rdfs:comment "LITERAL1_all_controls '\\x00\\x01\\x02\\x03\\x04...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL1_all_controls.ttl> ;
+ mf:result <LITERAL1_all_controls.nt> ;
+ .
+
+<#LITERAL1_all_punctuation> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_all_punctuation" ;
+ rdfs:comment "LITERAL1_all_punctuation '!\"#$%&()...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL1_all_punctuation.ttl> ;
+ mf:result <LITERAL1_all_punctuation.nt> ;
+ .
+
+<#LITERAL_LONG1> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1" ;
+ rdfs:comment "LITERAL_LONG1 '''x'''" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG1.ttl> ;
+ mf:result <LITERAL1.nt> ;
+ .
+
+<#LITERAL_LONG1_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_ascii_boundaries" ;
+ rdfs:comment "LITERAL_LONG1_ascii_boundaries '\\x00\\x26\\x28...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG1_ascii_boundaries.ttl> ;
+ mf:result <LITERAL_LONG1_ascii_boundaries.nt> ;
+ .
+
+<#LITERAL_LONG1_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL_LONG1_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG1_with_UTF8_boundaries.ttl> ;
+ mf:result <LITERAL_with_UTF8_boundaries.nt> ;
+ .
+
+<#LITERAL_LONG1_with_1_squote> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_with_1_squote" ;
+ rdfs:comment "LITERAL_LONG1 with 1 squote '''a'b'''" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG1_with_1_squote.ttl> ;
+ mf:result <LITERAL_LONG1_with_1_squote.nt> ;
+ .
+
+<#LITERAL_LONG1_with_2_squotes> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_with_2_squotes" ;
+ rdfs:comment "LITERAL_LONG1 with 2 squotes '''a''b'''" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG1_with_2_squotes.ttl> ;
+ mf:result <LITERAL_LONG1_with_2_squotes.nt> ;
+ .
+
+<#LITERAL2> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL2" ;
+ rdfs:comment "LITERAL2 \"x\"" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL2.ttl> ;
+ mf:result <LITERAL1.nt> ;
+ .
+
+<#LITERAL2_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL2_ascii_boundaries" ;
+ rdfs:comment "LITERAL2_ascii_boundaries '\\x00\\x09\\x0b\\x0c\\x0e\\x21\\x23...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL2_ascii_boundaries.ttl> ;
+ mf:result <LITERAL2_ascii_boundaries.nt> ;
+ .
+
+<#LITERAL2_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL2_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL2_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL2_with_UTF8_boundaries.ttl> ;
+ mf:result <LITERAL_with_UTF8_boundaries.nt> ;
+ .
+
+<#LITERAL_LONG2> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2" ;
+ rdfs:comment "LITERAL_LONG2 \"\"\"x\"\"\"" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG2.ttl> ;
+ mf:result <LITERAL1.nt> ;
+ .
+
+<#LITERAL_LONG2_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_ascii_boundaries" ;
+ rdfs:comment "LITERAL_LONG2_ascii_boundaries '\\x00\\x21\\x23...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG2_ascii_boundaries.ttl> ;
+ mf:result <LITERAL_LONG2_ascii_boundaries.nt> ;
+ .
+
+<#LITERAL_LONG2_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL_LONG2_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG2_with_UTF8_boundaries.ttl> ;
+ mf:result <LITERAL_with_UTF8_boundaries.nt> ;
+ .
+
+<#LITERAL_LONG2_with_1_squote> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_with_1_squote" ;
+ rdfs:comment "LITERAL_LONG2 with 1 squote \"\"\"a\"b\"\"\"" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG2_with_1_squote.ttl> ;
+ mf:result <LITERAL_LONG2_with_1_squote.nt> ;
+ .
+
+<#LITERAL_LONG2_with_2_squotes> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_with_2_squotes" ;
+ rdfs:comment "LITERAL_LONG2 with 2 squotes \"\"\"a\"\"b\"\"\"" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG2_with_2_squotes.ttl> ;
+ mf:result <LITERAL_LONG2_with_2_squotes.nt> ;
+ .
+
+<#literal_with_CHARACTER_TABULATION> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_CHARACTER_TABULATION" ;
+ rdfs:comment "literal with CHARACTER TABULATION" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_CHARACTER_TABULATION.ttl> ;
+ mf:result <literal_with_CHARACTER_TABULATION.nt> ;
+ .
+
+<#literal_with_BACKSPACE> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_BACKSPACE" ;
+ rdfs:comment "literal with BACKSPACE" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_BACKSPACE.ttl> ;
+ mf:result <literal_with_BACKSPACE.nt> ;
+ .
+
+<#literal_with_LINE_FEED> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_LINE_FEED" ;
+ rdfs:comment "literal with LINE FEED" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_LINE_FEED.ttl> ;
+ mf:result <literal_with_LINE_FEED.nt> ;
+ .
+
+<#literal_with_CARRIAGE_RETURN> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_CARRIAGE_RETURN" ;
+ rdfs:comment "literal with CARRIAGE RETURN" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_CARRIAGE_RETURN.ttl> ;
+ mf:result <literal_with_CARRIAGE_RETURN.nt> ;
+ .
+
+<#literal_with_FORM_FEED> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_FORM_FEED" ;
+ rdfs:comment "literal with FORM FEED" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_FORM_FEED.ttl> ;
+ mf:result <literal_with_FORM_FEED.nt> ;
+ .
+
+<#literal_with_REVERSE_SOLIDUS> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_REVERSE_SOLIDUS" ;
+ rdfs:comment "literal with REVERSE SOLIDUS" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_REVERSE_SOLIDUS.ttl> ;
+ mf:result <literal_with_REVERSE_SOLIDUS.nt> ;
+ .
+
+<#literal_with_escaped_CHARACTER_TABULATION> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_escaped_CHARACTER_TABULATION" ;
+ rdfs:comment "literal with escaped CHARACTER TABULATION" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_escaped_CHARACTER_TABULATION.ttl> ;
+ mf:result <literal_with_CHARACTER_TABULATION.nt> ;
+ .
+
+<#literal_with_escaped_BACKSPACE> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_escaped_BACKSPACE" ;
+ rdfs:comment "literal with escaped BACKSPACE" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_escaped_BACKSPACE.ttl> ;
+ mf:result <literal_with_BACKSPACE.nt> ;
+ .
+
+<#literal_with_escaped_LINE_FEED> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_escaped_LINE_FEED" ;
+ rdfs:comment "literal with escaped LINE FEED" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_escaped_LINE_FEED.ttl> ;
+ mf:result <literal_with_LINE_FEED.nt> ;
+ .
+
+<#literal_with_escaped_CARRIAGE_RETURN> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_escaped_CARRIAGE_RETURN" ;
+ rdfs:comment "literal with escaped CARRIAGE RETURN" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_escaped_CARRIAGE_RETURN.ttl> ;
+ mf:result <literal_with_CARRIAGE_RETURN.nt> ;
+ .
+
+<#literal_with_escaped_FORM_FEED> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_escaped_FORM_FEED" ;
+ rdfs:comment "literal with escaped FORM FEED" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_escaped_FORM_FEED.ttl> ;
+ mf:result <literal_with_FORM_FEED.nt> ;
+ .
+
+<#literal_with_numeric_escape4> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_numeric_escape4" ;
+ rdfs:comment "literal with numeric escape4 \\u" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_numeric_escape4.ttl> ;
+ mf:result <literal_with_numeric_escape4.nt> ;
+ .
+
+<#literal_with_numeric_escape8> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_numeric_escape8" ;
+ rdfs:comment "literal with numeric escape8 \\U" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_with_numeric_escape8.ttl> ;
+ mf:result <literal_with_numeric_escape4.nt> ;
+ .
+
+<#IRIREF_datatype> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRIREF_datatype" ;
+ rdfs:comment "IRIREF datatype \"\"^^<t>" ;
+ rdft:approval rdft:Approved ;
+ mf:action <IRIREF_datatype.ttl> ;
+ mf:result <IRIREF_datatype.nt> ;
+ .
+
+<#prefixed_name_datatype> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefixed_name_datatype" ;
+ rdfs:comment "prefixed name datatype \"\"^^p:t" ;
+ rdft:approval rdft:Approved ;
+ mf:action <prefixed_name_datatype.ttl> ;
+ mf:result <IRIREF_datatype.nt> ;
+ .
+
+<#bareword_integer> rdf:type rdft:TestTurtleEval ;
+ mf:name "bareword_integer" ;
+ rdfs:comment "bareword integer" ;
+ rdft:approval rdft:Approved ;
+ mf:action <bareword_integer.ttl> ;
+ mf:result <IRIREF_datatype.nt> ;
+ .
+
+<#bareword_decimal> rdf:type rdft:TestTurtleEval ;
+ mf:name "bareword_decimal" ;
+ rdfs:comment "bareword decimal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <bareword_decimal.ttl> ;
+ mf:result <bareword_decimal.nt> ;
+ .
+
+<#bareword_double> rdf:type rdft:TestTurtleEval ;
+ mf:name "bareword_double" ;
+ rdfs:comment "bareword double" ;
+ rdft:approval rdft:Approved ;
+ mf:action <bareword_double.ttl> ;
+ mf:result <bareword_double.nt> ;
+ .
+
+<#double_lower_case_e> rdf:type rdft:TestTurtleEval ;
+ mf:name "double_lower_case_e" ;
+ rdfs:comment "double lower case e" ;
+ rdft:approval rdft:Approved ;
+ mf:action <double_lower_case_e.ttl> ;
+ mf:result <double_lower_case_e.nt> ;
+ .
+
+<#negative_numeric> rdf:type rdft:TestTurtleEval ;
+ mf:name "negative_numeric" ;
+ rdfs:comment "negative numeric" ;
+ rdft:approval rdft:Approved ;
+ mf:action <negative_numeric.ttl> ;
+ mf:result <negative_numeric.nt> ;
+ .
+
+<#positive_numeric> rdf:type rdft:TestTurtleEval ;
+ mf:name "positive_numeric" ;
+ rdfs:comment "positive numeric" ;
+ rdft:approval rdft:Approved ;
+ mf:action <positive_numeric.ttl> ;
+ mf:result <positive_numeric.nt> ;
+ .
+
+<#numeric_with_leading_0> rdf:type rdft:TestTurtleEval ;
+ mf:name "numeric_with_leading_0" ;
+ rdfs:comment "numeric with leading 0" ;
+ rdft:approval rdft:Approved ;
+ mf:action <numeric_with_leading_0.ttl> ;
+ mf:result <numeric_with_leading_0.nt> ;
+ .
+
+<#literal_true> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_true" ;
+ rdfs:comment "literal true" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_true.ttl> ;
+ mf:result <literal_true.nt> ;
+ .
+
+<#literal_false> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_false" ;
+ rdfs:comment "literal false" ;
+ rdft:approval rdft:Approved ;
+ mf:action <literal_false.ttl> ;
+ mf:result <literal_false.nt> ;
+ .
+
+<#langtagged_non_LONG> rdf:type rdft:TestTurtleEval ;
+ mf:name "langtagged_non_LONG" ;
+ rdfs:comment "langtagged non-LONG \"x\"@en" ;
+ rdft:approval rdft:Approved ;
+ mf:action <langtagged_non_LONG.ttl> ;
+ mf:result <langtagged_non_LONG.nt> ;
+ .
+
+<#langtagged_LONG> rdf:type rdft:TestTurtleEval ;
+ mf:name "langtagged_LONG" ;
+ rdfs:comment "langtagged LONG \"\"\"x\"\"\"@en" ;
+ rdft:approval rdft:Approved ;
+ mf:action <langtagged_LONG.ttl> ;
+ mf:result <langtagged_non_LONG.nt> ;
+ .
+
+<#lantag_with_subtag> rdf:type rdft:TestTurtleEval ;
+ mf:name "lantag_with_subtag" ;
+ rdfs:comment "lantag with subtag \"x\"@en-us" ;
+ rdft:approval rdft:Approved ;
+ mf:action <lantag_with_subtag.ttl> ;
+ mf:result <lantag_with_subtag.nt> ;
+ .
+
+<#objectList_with_two_objects> rdf:type rdft:TestTurtleEval ;
+ mf:name "objectList_with_two_objects" ;
+ rdfs:comment "objectList with two objects … <o1>,<o2>" ;
+ rdft:approval rdft:Approved ;
+ mf:action <objectList_with_two_objects.ttl> ;
+ mf:result <objectList_with_two_objects.nt> ;
+ .
+
+<#predicateObjectList_with_two_objectLists> rdf:type rdft:TestTurtleEval ;
+ mf:name "predicateObjectList_with_two_objectLists" ;
+ rdfs:comment "predicateObjectList with two objectLists … <o1>,<o2>" ;
+ rdft:approval rdft:Approved ;
+ mf:action <predicateObjectList_with_two_objectLists.ttl> ;
+ mf:result <predicateObjectList_with_two_objectLists.nt> ;
+ .
+
+<#predicateObjectList_with_blankNodePropertyList_as_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "predicateObjectList_with_blankNodePropertyList_as_object" ;
+ rdfs:comment "predicateObjectList_with_blankNodePropertyList_as_object <s> <p> [ <p2> <o> ] ; <p3> [ <p4> <o2> , <o3> ] " ;
+ rdft:approval rdft:Approved ;
+ mf:action <predicateObjectList_with_blankNodePropertyList_as_object.ttl> ;
+ mf:result <predicateObjectList_with_blankNodePropertyList_as_object.nt> ;
+ .
+
+<#repeated_semis_at_end> rdf:type rdft:TestTurtleEval ;
+ mf:name "repeated_semis_at_end" ;
+ rdfs:comment "repeated semis at end <s> <p> <o> ;; <p2> <o2> ." ;
+ rdft:approval rdft:Approved ;
+ mf:action <repeated_semis_at_end.ttl> ;
+ mf:result <predicateObjectList_with_two_objectLists.nt> ;
+ .
+
+<#repeated_semis_not_at_end> rdf:type rdft:TestTurtleEval ;
+ mf:name "repeated_semis_not_at_end" ;
+ rdfs:comment "repeated semis not at end <s> <p> <o> ;;." ;
+ rdft:approval rdft:Approved ;
+ mf:action <repeated_semis_not_at_end.ttl> ;
+ mf:result <repeated_semis_not_at_end.nt> ;
+ .
+
+# original tests-ttl
+<#turtle-syntax-file-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-file-01" ;
+ rdfs:comment "Empty file" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-file-01.ttl> ;
+ .
+
+<#turtle-syntax-file-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-file-02" ;
+ rdfs:comment "Only comment" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-file-02.ttl> ;
+ .
+
+<#turtle-syntax-file-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-file-03" ;
+ rdfs:comment "One comment, one empty line" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-file-03.ttl> ;
+ .
+
+<#turtle-syntax-uri-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-uri-01" ;
+ rdfs:comment "Only IRIs" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-uri-01.ttl> ;
+ .
+
+<#turtle-syntax-uri-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-uri-02" ;
+ rdfs:comment "IRIs with Unicode escape" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-uri-02.ttl> ;
+ .
+
+<#turtle-syntax-uri-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-uri-03" ;
+ rdfs:comment "IRIs with long Unicode escape" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-uri-03.ttl> ;
+ .
+
+<#turtle-syntax-uri-04> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-uri-04" ;
+ rdfs:comment "Legal IRIs" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-uri-04.ttl> ;
+ .
+
+<#turtle-syntax-base-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-base-01" ;
+ rdfs:comment "@base" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-base-01.ttl> ;
+ .
+
+<#turtle-syntax-base-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-base-02" ;
+ rdfs:comment "BASE" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-base-02.ttl> ;
+ .
+
+<#turtle-syntax-base-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-base-03" ;
+ rdfs:comment "@base with relative IRIs" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-base-03.ttl> ;
+ .
+
+<#turtle-syntax-base-04> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-base-04" ;
+ rdfs:comment "base with relative IRIs" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-base-04.ttl> ;
+ .
+
+<#turtle-syntax-prefix-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-01" ;
+ rdfs:comment "@prefix" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-01.ttl> ;
+ .
+
+<#turtle-syntax-prefix-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-02" ;
+ rdfs:comment "PreFIX" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-02.ttl> ;
+ .
+
+<#turtle-syntax-prefix-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-03" ;
+ rdfs:comment "Empty PREFIX" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-03.ttl> ;
+ .
+
+<#turtle-syntax-prefix-04> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-04" ;
+ rdfs:comment "Empty @prefix with % escape" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-04.ttl> ;
+ .
+
+<#turtle-syntax-prefix-05> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-05" ;
+ rdfs:comment "@prefix with no suffix" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-05.ttl> ;
+ .
+
+<#turtle-syntax-prefix-06> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-06" ;
+ rdfs:comment "colon is a legal pname character" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-06.ttl> ;
+ .
+
+<#turtle-syntax-prefix-07> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-07" ;
+ rdfs:comment "dash is a legal pname character" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-07.ttl> ;
+ .
+
+<#turtle-syntax-prefix-08> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-08" ;
+ rdfs:comment "underscore is a legal pname character" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-08.ttl> ;
+ .
+
+<#turtle-syntax-prefix-09> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-prefix-09" ;
+ rdfs:comment "percents in pnames" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-prefix-09.ttl> ;
+ .
+
+<#turtle-syntax-string-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-01" ;
+ rdfs:comment "string literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-01.ttl> ;
+ .
+
+<#turtle-syntax-string-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-02" ;
+ rdfs:comment "langString literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-02.ttl> ;
+ .
+
+<#turtle-syntax-string-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-03" ;
+ rdfs:comment "langString literal with region" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-03.ttl> ;
+ .
+
+<#turtle-syntax-string-04> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-04" ;
+ rdfs:comment "squote string literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-04.ttl> ;
+ .
+
+<#turtle-syntax-string-05> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-05" ;
+ rdfs:comment "squote langString literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-05.ttl> ;
+ .
+
+<#turtle-syntax-string-06> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-06" ;
+ rdfs:comment "squote langString literal with region" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-06.ttl> ;
+ .
+
+<#turtle-syntax-string-07> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-07" ;
+ rdfs:comment "long string literal with embedded single- and double-quotes" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-07.ttl> ;
+ .
+
+<#turtle-syntax-string-08> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-08" ;
+ rdfs:comment "long string literal with embedded newline" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-08.ttl> ;
+ .
+
+<#turtle-syntax-string-09> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-09" ;
+ rdfs:comment "squote long string literal with embedded single- and double-quotes" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-09.ttl> ;
+ .
+
+<#turtle-syntax-string-10> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-10" ;
+ rdfs:comment "long langString literal with embedded newline" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-10.ttl> ;
+ .
+
+<#turtle-syntax-string-11> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-string-11" ;
+ rdfs:comment "squote long langString literal with embedded newline" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-string-11.ttl> ;
+ .
+
+<#turtle-syntax-str-esc-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-str-esc-01" ;
+ rdfs:comment "string literal with escaped newline" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-str-esc-01.ttl> ;
+ .
+
+<#turtle-syntax-str-esc-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-str-esc-02" ;
+ rdfs:comment "string literal with Unicode escape" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-str-esc-02.ttl> ;
+ .
+
+<#turtle-syntax-str-esc-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-str-esc-03" ;
+ rdfs:comment "string literal with long Unicode escape" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-str-esc-03.ttl> ;
+ .
+
+<#turtle-syntax-pname-esc-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-pname-esc-01" ;
+ rdfs:comment "pname with back-slash escapes" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-pname-esc-01.ttl> ;
+ .
+
+<#turtle-syntax-pname-esc-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-pname-esc-02" ;
+ rdfs:comment "pname with back-slash escapes (2)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-pname-esc-02.ttl> ;
+ .
+
+<#turtle-syntax-pname-esc-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-pname-esc-03" ;
+ rdfs:comment "pname with back-slash escapes (3)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-pname-esc-03.ttl> ;
+ .
+
+<#turtle-syntax-bnode-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-01" ;
+ rdfs:comment "bnode subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-01.ttl> ;
+ .
+
+<#turtle-syntax-bnode-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-02" ;
+ rdfs:comment "bnode object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-02.ttl> ;
+ .
+
+<#turtle-syntax-bnode-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-03" ;
+ rdfs:comment "bnode property list object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-03.ttl> ;
+ .
+
+<#turtle-syntax-bnode-04> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-04" ;
+ rdfs:comment "bnode property list object (2)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-04.ttl> ;
+ .
+
+<#turtle-syntax-bnode-05> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-05" ;
+ rdfs:comment "bnode property list subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-05.ttl> ;
+ .
+
+<#turtle-syntax-bnode-06> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-06" ;
+ rdfs:comment "labeled bnode subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-06.ttl> ;
+ .
+
+<#turtle-syntax-bnode-07> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-07" ;
+ rdfs:comment "labeled bnode subject and object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-07.ttl> ;
+ .
+
+<#turtle-syntax-bnode-08> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-08" ;
+ rdfs:comment "bare bnode property list" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-08.ttl> ;
+ .
+
+<#turtle-syntax-bnode-09> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-09" ;
+ rdfs:comment "bnode property list" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-09.ttl> ;
+ .
+
+<#turtle-syntax-bnode-10> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-bnode-10" ;
+ rdfs:comment "mixed bnode property list and triple" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bnode-10.ttl> ;
+ .
+
+<#turtle-syntax-number-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-01" ;
+ rdfs:comment "integer literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-01.ttl> ;
+ .
+
+<#turtle-syntax-number-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-02" ;
+ rdfs:comment "negative integer literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-02.ttl> ;
+ .
+
+<#turtle-syntax-number-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-03" ;
+ rdfs:comment "positive integer literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-03.ttl> ;
+ .
+
+<#turtle-syntax-number-04> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-04" ;
+ rdfs:comment "decimal literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-04.ttl> ;
+ .
+
+<#turtle-syntax-number-05> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-05" ;
+ rdfs:comment "decimal literal (no leading digits)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-05.ttl> ;
+ .
+
+<#turtle-syntax-number-06> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-06" ;
+ rdfs:comment "negative decimal literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-06.ttl> ;
+ .
+
+<#turtle-syntax-number-07> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-07" ;
+ rdfs:comment "positive decimal literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-07.ttl> ;
+ .
+
+<#turtle-syntax-number-08> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-08" ;
+ rdfs:comment "integer literal with decimal lexical confusion" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-08.ttl> ;
+ .
+
+<#turtle-syntax-number-09> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-09" ;
+ rdfs:comment "double literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-09.ttl> ;
+ .
+
+<#turtle-syntax-number-10> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-10" ;
+ rdfs:comment "negative double literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-10.ttl> ;
+ .
+
+<#turtle-syntax-number-11> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-number-11" ;
+ rdfs:comment "double literal no fraction" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-number-11.ttl> ;
+ .
+
+<#turtle-syntax-datatypes-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-datatypes-01" ;
+ rdfs:comment "xsd:byte literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-datatypes-01.ttl> ;
+ .
+
+<#turtle-syntax-datatypes-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-datatypes-02" ;
+ rdfs:comment "integer as xsd:string" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-datatypes-02.ttl> ;
+ .
+
+<#turtle-syntax-kw-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-kw-01" ;
+ rdfs:comment "boolean literal (true)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-kw-01.ttl> ;
+ .
+
+<#turtle-syntax-kw-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-kw-02" ;
+ rdfs:comment "boolean literal (false)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-kw-02.ttl> ;
+ .
+
+<#turtle-syntax-kw-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-kw-03" ;
+ rdfs:comment "'a' as keyword" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-kw-03.ttl> ;
+ .
+
+<#turtle-syntax-struct-01> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-struct-01" ;
+ rdfs:comment "object list" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-struct-01.ttl> ;
+ .
+
+<#turtle-syntax-struct-02> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-struct-02" ;
+ rdfs:comment "predicate list with object list" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-struct-02.ttl> ;
+ .
+
+<#turtle-syntax-struct-03> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-struct-03" ;
+ rdfs:comment "predicate list with object list and dangling ';'" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-struct-03.ttl> ;
+ .
+
+<#turtle-syntax-struct-04> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-struct-04" ;
+ rdfs:comment "predicate list with multiple ;;" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-struct-04.ttl> ;
+ .
+
+<#turtle-syntax-struct-05> rdf:type rdft:TestTurtlePositiveSyntax ;
+ mf:name "turtle-syntax-struct-05" ;
+ rdfs:comment "predicate list with multiple ;;" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-struct-05.ttl> ;
+ .
+
+<#turtle-eval-lists-01> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-eval-lists-01" ;
+ rdfs:comment "empty list" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-lists-01.ttl> ;
+ mf:result <turtle-eval-lists-01.nt> ;
+ .
+
+<#turtle-eval-lists-02> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-eval-lists-02" ;
+ rdfs:comment "mixed list" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-lists-02.ttl> ;
+ mf:result <turtle-eval-lists-02.nt> ;
+ .
+
+<#turtle-eval-lists-03> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-eval-lists-03" ;
+ rdfs:comment "isomorphic list as subject and object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-lists-03.ttl> ;
+ mf:result <turtle-eval-lists-03.nt> ;
+ .
+
+<#turtle-eval-lists-04> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-eval-lists-04" ;
+ rdfs:comment "lists of lists" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-lists-04.ttl> ;
+ mf:result <turtle-eval-lists-04.nt> ;
+ .
+
+<#turtle-eval-lists-05> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-eval-lists-05" ;
+ rdfs:comment "mixed lists with embedded lists" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-lists-05.ttl> ;
+ mf:result <turtle-eval-lists-05.nt> ;
+ .
+
+<#turtle-syntax-bad-uri-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-uri-01" ;
+ rdfs:comment "Bad IRI : space (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-uri-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-uri-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-uri-02" ;
+ rdfs:comment "Bad IRI : bad escape (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-uri-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-uri-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-uri-03" ;
+ rdfs:comment "Bad IRI : bad long escape (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-uri-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-uri-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-uri-04" ;
+ rdfs:comment "Bad IRI : character escapes not allowed (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-uri-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-uri-05> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-uri-05" ;
+ rdfs:comment "Bad IRI : character escapes not allowed (2) (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-uri-05.ttl> ;
+ .
+
+<#turtle-syntax-bad-prefix-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-prefix-01" ;
+ rdfs:comment "No prefix (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-prefix-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-prefix-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-prefix-02" ;
+ rdfs:comment "No prefix (2) (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-prefix-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-prefix-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-prefix-03" ;
+ rdfs:comment "@prefix without URI (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-prefix-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-prefix-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-prefix-04" ;
+ rdfs:comment "@prefix without prefix name (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-prefix-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-prefix-05> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-prefix-05" ;
+ rdfs:comment "@prefix without ':' (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-prefix-05.ttl> ;
+ .
+
+<#turtle-syntax-bad-base-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-base-01" ;
+ rdfs:comment "@base without URI (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-base-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-base-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-base-02" ;
+ rdfs:comment "@base in wrong case (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-base-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-base-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-base-03" ;
+ rdfs:comment "BASE without URI (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-base-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-bnode-01> rdf:type rdft:TestNTriplesNegativeSyntax ;
+ mf:name "turtle-syntax-bad-bnode-01" ;
+ rdfs:comment "Colon in bnode label not allowed (negative test)" ;
+ mf:action <turtle-syntax-bad-bnode-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-bnode-02> rdf:type rdft:TestNTriplesNegativeSyntax ;
+ mf:name "turtle-syntax-bad-bnode-02" ;
+ rdfs:comment "Colon in bnode label not allowed (negative test)" ;
+ mf:action <turtle-syntax-bad-bnode-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-01" ;
+ rdfs:comment "Turtle is not TriG (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-02" ;
+ rdfs:comment "Turtle is not N3 (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-03" ;
+ rdfs:comment "Turtle is not NQuads (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-04" ;
+ rdfs:comment "Turtle does not allow literals-as-subjects (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-05> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-05" ;
+ rdfs:comment "Turtle does not allow literals-as-predicates (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-05.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-06> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-06" ;
+ rdfs:comment "Turtle does not allow bnodes-as-predicates (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-06.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-07> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-07" ;
+ rdfs:comment "Turtle does not allow labeled bnodes-as-predicates (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-07.ttl> ;
+ .
+
+<#turtle-syntax-bad-kw-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-kw-01" ;
+ rdfs:comment "'A' is not a keyword (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-kw-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-kw-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-kw-02" ;
+ rdfs:comment "'a' cannot be used as subject (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-kw-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-kw-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-kw-03" ;
+ rdfs:comment "'a' cannot be used as object (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-kw-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-kw-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-kw-04" ;
+ rdfs:comment "'true' cannot be used as subject (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-kw-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-kw-05> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-kw-05" ;
+ rdfs:comment "'true' cannot be used as object (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-kw-05.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-01" ;
+ rdfs:comment "{} fomulae not in Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-02" ;
+ rdfs:comment "= is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-03" ;
+ rdfs:comment "N3 paths not in Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-04" ;
+ rdfs:comment "N3 paths not in Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-05> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-05" ;
+ rdfs:comment "N3 is...of not in Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-05.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-06> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-06" ;
+ rdfs:comment "N3 paths not in Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-06.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-07> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-07" ;
+ rdfs:comment "@keywords is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-07.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-08> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-08" ;
+ rdfs:comment "@keywords is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-08.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-09> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-09" ;
+ rdfs:comment "=> is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-09.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-10> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-10" ;
+ rdfs:comment "<= is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-10.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-11> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-11" ;
+ rdfs:comment "@forSome is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-11.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-12> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-12" ;
+ rdfs:comment "@forAll is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-12.ttl> ;
+ .
+
+<#turtle-syntax-bad-n3-extras-13> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-n3-extras-13" ;
+ rdfs:comment "@keywords is not Turtle (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-n3-extras-13.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-08> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-08" ;
+ rdfs:comment "missing '.' (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-08.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-09> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-09" ;
+ rdfs:comment "extra '.' (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-09.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-10> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-10" ;
+ rdfs:comment "extra '.' (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-10.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-11> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-11" ;
+ rdfs:comment "trailing ';' no '.' (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-11.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-12> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-12" ;
+ rdfs:comment "subject, predicate, no object (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-12.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-13> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-13" ;
+ rdfs:comment "subject, predicate, no object (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-13.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-14> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-14" ;
+ rdfs:comment "literal as subject (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-14.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-15> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-15" ;
+ rdfs:comment "literal as predicate (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-15.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-16> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-16" ;
+ rdfs:comment "bnode as predicate (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-16.ttl> ;
+ .
+
+<#turtle-syntax-bad-struct-17> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-struct-17" ;
+ rdfs:comment "labeled bnode as predicate (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-struct-17.ttl> ;
+ .
+
+<#turtle-syntax-bad-lang-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-lang-01" ;
+ rdfs:comment "langString with bad lang (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-lang-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-esc-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-esc-01" ;
+ rdfs:comment "Bad string escape (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-esc-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-esc-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-esc-02" ;
+ rdfs:comment "Bad string escape (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-esc-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-esc-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-esc-03" ;
+ rdfs:comment "Bad string escape (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-esc-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-esc-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-esc-04" ;
+ rdfs:comment "Bad string escape (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-esc-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-pname-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-pname-01" ;
+ rdfs:comment "'~' must be escaped in pname (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-pname-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-pname-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-pname-02" ;
+ rdfs:comment "Bad %-sequence in pname (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-pname-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-pname-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-pname-03" ;
+ rdfs:comment "Bad unicode escape in pname (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-pname-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-string-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-string-01" ;
+ rdfs:comment "mismatching string literal open/close (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-string-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-string-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-string-02" ;
+ rdfs:comment "mismatching string literal open/close (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-string-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-string-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-string-03" ;
+ rdfs:comment "mismatching string literal long/short (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-string-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-string-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-string-04" ;
+ rdfs:comment "mismatching long string literal open/close (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-string-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-string-05> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-string-05" ;
+ rdfs:comment "Long literal with missing end (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-string-05.ttl> ;
+ .
+
+<#turtle-syntax-bad-string-06> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-string-06" ;
+ rdfs:comment "Long literal with extra quote (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-string-06.ttl> ;
+ .
+
+<#turtle-syntax-bad-string-07> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-string-07" ;
+ rdfs:comment "Long literal with extra squote (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-string-07.ttl> ;
+ .
+
+<#turtle-syntax-bad-num-01> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-num-01" ;
+ rdfs:comment "Bad number format (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-num-01.ttl> ;
+ .
+
+<#turtle-syntax-bad-num-02> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-num-02" ;
+ rdfs:comment "Bad number format (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-num-02.ttl> ;
+ .
+
+<#turtle-syntax-bad-num-03> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-num-03" ;
+ rdfs:comment "Bad number format (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-num-03.ttl> ;
+ .
+
+<#turtle-syntax-bad-num-04> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-num-04" ;
+ rdfs:comment "Bad number format (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-num-04.ttl> ;
+ .
+
+<#turtle-syntax-bad-num-05> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-num-05" ;
+ rdfs:comment "Bad number format (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-num-05.ttl> ;
+ .
+
+<#turtle-eval-struct-01> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-eval-struct-01" ;
+ rdfs:comment "triple with IRIs" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-struct-01.ttl> ;
+ mf:result <turtle-eval-struct-01.nt> ;
+ .
+
+<#turtle-eval-struct-02> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-eval-struct-02" ;
+ rdfs:comment "triple with IRIs and embedded whitespace" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-struct-02.ttl> ;
+ mf:result <turtle-eval-struct-02.nt> ;
+ .
+
+<#turtle-subm-01> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-01" ;
+ rdfs:comment "Blank subject" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-01.ttl> ;
+ mf:result <turtle-subm-01.nt> ;
+ .
+
+<#turtle-subm-02> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-02" ;
+ rdfs:comment "@prefix and qnames" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-02.ttl> ;
+ mf:result <turtle-subm-02.nt> ;
+ .
+
+<#turtle-subm-03> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-03" ;
+ rdfs:comment ", operator" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-03.ttl> ;
+ mf:result <turtle-subm-03.nt> ;
+ .
+
+<#turtle-subm-04> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-04" ;
+ rdfs:comment "; operator" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-04.ttl> ;
+ mf:result <turtle-subm-04.nt> ;
+ .
+
+<#turtle-subm-05> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-05" ;
+ rdfs:comment "empty [] as subject and object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-05.ttl> ;
+ mf:result <turtle-subm-05.nt> ;
+ .
+
+<#turtle-subm-06> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-06" ;
+ rdfs:comment "non-empty [] as subject and object" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-06.ttl> ;
+ mf:result <turtle-subm-06.nt> ;
+ .
+
+<#turtle-subm-07> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-07" ;
+ rdfs:comment "'a' as predicate" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-07.ttl> ;
+ mf:result <turtle-subm-07.nt> ;
+ .
+
+<#turtle-subm-08> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-08" ;
+ rdfs:comment "simple collection" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-08.ttl> ;
+ mf:result <turtle-subm-08.nt> ;
+ .
+
+<#turtle-subm-09> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-09" ;
+ rdfs:comment "empty collection" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-09.ttl> ;
+ mf:result <turtle-subm-09.nt> ;
+ .
+
+<#turtle-subm-10> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-10" ;
+ rdfs:comment "integer datatyped literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-10.ttl> ;
+ mf:result <turtle-subm-10.nt> ;
+ .
+
+<#turtle-subm-11> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-11" ;
+ rdfs:comment "decimal integer canonicalization" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-11.ttl> ;
+ mf:result <turtle-subm-11.nt> ;
+ .
+
+<#turtle-subm-12> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-12" ;
+ rdfs:comment "- and _ in names and qnames" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-12.ttl> ;
+ mf:result <turtle-subm-12.nt> ;
+ .
+
+<#turtle-subm-13> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-13" ;
+ rdfs:comment "tests for rdf:_<numbers> and other qnames starting with _" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-13.ttl> ;
+ mf:result <turtle-subm-13.nt> ;
+ .
+
+<#turtle-subm-14> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-14" ;
+ rdfs:comment "bare : allowed" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-14.ttl> ;
+ mf:result <turtle-subm-14.nt> ;
+ .
+
+<#turtle-subm-15> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-15" ;
+ rdfs:comment "simple long literal" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-15.ttl> ;
+ mf:result <turtle-subm-15.nt> ;
+ .
+
+<#turtle-subm-16> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-16" ;
+ rdfs:comment "long literals with escapes" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-16.ttl> ;
+ mf:result <turtle-subm-16.nt> ;
+ .
+
+<#turtle-subm-17> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-17" ;
+ rdfs:comment "floating point number" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-17.ttl> ;
+ mf:result <turtle-subm-17.nt> ;
+ .
+
+<#turtle-subm-18> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-18" ;
+ rdfs:comment "empty literals, normal and long variant" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-18.ttl> ;
+ mf:result <turtle-subm-18.nt> ;
+ .
+
+<#turtle-subm-19> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-19" ;
+ rdfs:comment "positive integer, decimal and doubles" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-19.ttl> ;
+ mf:result <turtle-subm-19.nt> ;
+ .
+
+<#turtle-subm-20> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-20" ;
+ rdfs:comment "negative integer, decimal and doubles" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-20.ttl> ;
+ mf:result <turtle-subm-20.nt> ;
+ .
+
+<#turtle-subm-21> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-21" ;
+ rdfs:comment "long literal ending in double quote" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-21.ttl> ;
+ mf:result <turtle-subm-21.nt> ;
+ .
+
+<#turtle-subm-22> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-22" ;
+ rdfs:comment "boolean literals" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-22.ttl> ;
+ mf:result <turtle-subm-22.nt> ;
+ .
+
+<#turtle-subm-23> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-23" ;
+ rdfs:comment "comments" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-23.ttl> ;
+ mf:result <turtle-subm-23.nt> ;
+ .
+
+<#turtle-subm-24> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-24" ;
+ rdfs:comment "no final mewline" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-24.ttl> ;
+ mf:result <turtle-subm-24.nt> ;
+ .
+
+<#turtle-subm-25> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-25" ;
+ rdfs:comment "repeating a @prefix changes pname definition" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-25.ttl> ;
+ mf:result <turtle-subm-25.nt> ;
+ .
+
+<#turtle-subm-26> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-26" ;
+ rdfs:comment "Variations on decimal canonicalization" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-26.ttl> ;
+ mf:result <turtle-subm-26.nt> ;
+ .
+
+<#turtle-subm-27> rdf:type rdft:TestTurtleEval ;
+ mf:name "turtle-subm-27" ;
+ rdfs:comment "Repeating @base changes base for relative IRI lookup" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-subm-27.ttl> ;
+ mf:result <turtle-subm-27.nt> ;
+ .
+
+<#turtle-eval-bad-01> rdf:type rdft:TestTurtleNegativeEval ;
+ mf:name "turtle-eval-bad-01" ;
+ rdfs:comment "Bad IRI : good escape, bad charcater (negative evaluation test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-bad-01.ttl> ;
+ .
+
+<#turtle-eval-bad-02> rdf:type rdft:TestTurtleNegativeEval ;
+ mf:name "turtle-eval-bad-02" ;
+ rdfs:comment "Bad IRI : hex 3C is < (negative evaluation test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-bad-02.ttl> ;
+ .
+
+<#turtle-eval-bad-03> rdf:type rdft:TestTurtleNegativeEval ;
+ mf:name "turtle-eval-bad-03" ;
+ rdfs:comment "Bad IRI : hex 3E is (negative evaluation test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-bad-03.ttl> ;
+ .
+
+<#turtle-eval-bad-04> rdf:type rdft:TestTurtleNegativeEval ;
+ mf:name "turtle-eval-bad-04" ;
+ rdfs:comment "Bad IRI : {abc} (negative evaluation test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-eval-bad-04.ttl> ;
+ .
+
+# tests requested by Jeremy Carroll
+# http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c35
+<#comment_following_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "comment_following_localName" ;
+ rdfs:comment "comment following localName" ;
+ rdft:approval rdft:Proposed ;
+ mf:action <comment_following_localName.ttl> ;
+ mf:result <IRI_spo.nt> ;
+ .
+
+<#number_sign_following_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "number_sign_following_localName" ;
+ rdfs:comment "number sign following localName" ;
+ rdft:approval rdft:Proposed ;
+ mf:action <number_sign_following_localName.ttl> ;
+ mf:result <number_sign_following_localName.nt> ;
+ .
+
+<#comment_following_PNAME_NS> rdf:type rdft:TestTurtleEval ;
+ mf:name "comment_following_PNAME_NS" ;
+ rdfs:comment "comment following PNAME_NS" ;
+ rdft:approval rdft:Proposed ;
+ mf:action <comment_following_PNAME_NS.ttl> ;
+ mf:result <comment_following_PNAME_NS.nt> ;
+ .
+
+<#number_sign_following_PNAME_NS> rdf:type rdft:TestTurtleEval ;
+ mf:name "number_sign_following_PNAME_NS" ;
+ rdfs:comment "number sign following PNAME_NS" ;
+ rdft:approval rdft:Proposed ;
+ mf:action <number_sign_following_PNAME_NS.ttl> ;
+ mf:result <number_sign_following_PNAME_NS.nt> ;
+ .
+
+# tests from Dave Beckett
+# http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c28
+<#LITERAL_LONG2_with_REVERSE_SOLIDUS> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_with_REVERSE_SOLIDUS" ;
+ rdfs:comment "REVERSE SOLIDUS at end of LITERAL_LONG2" ;
+ rdft:approval rdft:Approved ;
+ mf:action <LITERAL_LONG2_with_REVERSE_SOLIDUS.ttl> ;
+ mf:result <LITERAL_LONG2_with_REVERSE_SOLIDUS.nt> ;
+ .
+
+<#turtle-syntax-bad-LITERAL2_with_langtag_and_datatype> rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "turtle-syntax-bad-num-05" ;
+ rdfs:comment "Bad number format (negative test)" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-LITERAL2_with_langtag_and_datatype.ttl> ;
+ .
+
+<#two_LITERAL_LONG2s> rdf:type rdft:TestTurtleEval ;
+ mf:name "two_LITERAL_LONG2s" ;
+ rdfs:comment "two LITERAL_LONG2s testing quote delimiter overrun" ;
+ rdft:approval rdft:Approved ;
+ mf:action <two_LITERAL_LONG2s.ttl> ;
+ mf:result <two_LITERAL_LONG2s.nt> ;
+ .
+
+<#langtagged_LONG_with_subtag> rdf:type rdft:TestTurtleEval ;
+ mf:name "langtagged_LONG_with_subtag" ;
+ rdfs:comment "langtagged LONG with subtag \"\"\"Cheers\"\"\"@en-UK" ;
+ rdft:approval rdft:Approved ;
+ mf:action <langtagged_LONG_with_subtag.ttl> ;
+ mf:result <langtagged_LONG_with_subtag.nt> ;
+ .
+
+# tests from David Robillard
+# http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c21
+<#turtle-syntax-bad-blank-label-dot-end>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Blank node label must not end in dot" ;
+ mf:name "turtle-syntax-bad-blank-label-dot-end" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-blank-label-dot-end.ttl> .
+
+<#turtle-syntax-bad-number-dot-in-anon>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Dot delimeter may not appear in anonymous nodes" ;
+ mf:name "turtle-syntax-bad-number-dot-in-anon" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-number-dot-in-anon.ttl> .
+
+<#turtle-syntax-bad-ln-dash-start>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Local name must not begin with dash" ;
+ mf:name "turtle-syntax-bad-ln-dash-start" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-ln-dash-start.ttl> .
+
+<#turtle-syntax-bad-ln-escape>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Bad hex escape in local name" ;
+ mf:name "turtle-syntax-bad-ln-escape" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-ln-escape.ttl> .
+
+<#turtle-syntax-bad-ln-escape-start>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Bad hex escape at start of local name" ;
+ mf:name "turtle-syntax-bad-ln-escape-start" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-ln-escape-start.ttl> .
+
+<#turtle-syntax-bad-ns-dot-end>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Prefix must not end in dot" ;
+ mf:name "turtle-syntax-bad-ns-dot-end" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-ns-dot-end.ttl> .
+
+<#turtle-syntax-bad-ns-dot-start>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Prefix must not start with dot" ;
+ mf:name "turtle-syntax-bad-ns-dot-start" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-ns-dot-start.ttl> .
+
+<#turtle-syntax-bad-missing-ns-dot-end>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Prefix must not end in dot (error in triple, not prefix directive like turtle-syntax-bad-ns-dot-end)" ;
+ mf:name "turtle-syntax-bad-missing-ns-dot-end" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-missing-ns-dot-end.ttl> .
+
+<#turtle-syntax-bad-missing-ns-dot-start>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ rdfs:comment "Prefix must not start with dot (error in triple, not prefix directive like turtle-syntax-bad-ns-dot-end)" ;
+ mf:name "turtle-syntax-bad-missing-ns-dot-start" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-bad-missing-ns-dot-start.ttl> .
+
+<#turtle-syntax-ln-dots>
+ rdf:type rdft:TestTurtlePositiveSyntax ;
+ rdfs:comment "Dots in pname local names" ;
+ mf:name "turtle-syntax-ln-dots" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-ln-dots.ttl> .
+
+<#turtle-syntax-ln-colons>
+ rdf:type rdft:TestTurtlePositiveSyntax ;
+ rdfs:comment "Colons in pname local names" ;
+ mf:name "turtle-syntax-ln-colons" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-ln-colons.ttl> .
+
+<#turtle-syntax-ns-dots>
+ rdf:type rdft:TestTurtlePositiveSyntax ;
+ rdfs:comment "Dots in namespace names" ;
+ mf:name "turtle-syntax-ns-dots" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-ns-dots.ttl> .
+
+<#turtle-syntax-blank-label>
+ rdf:type rdft:TestTurtlePositiveSyntax ;
+ rdfs:comment "Characters allowed in blank node labels" ;
+ mf:name "turtle-syntax-blank-label" ;
+ rdft:approval rdft:Approved ;
+ mf:action <turtle-syntax-blank-label.ttl> .
diff --git a/test/w3c/turtle/negative_numeric.nt b/test/w3c/turtle/negative_numeric.nt
new file mode 100644
index 00000000..4baf628d
--- /dev/null
+++ b/test/w3c/turtle/negative_numeric.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "-1"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/test/w3c/turtle/negative_numeric.ttl b/test/w3c/turtle/negative_numeric.ttl
new file mode 100644
index 00000000..a6a7f57b
--- /dev/null
+++ b/test/w3c/turtle/negative_numeric.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> -1 .
diff --git a/test/w3c/turtle/nested_blankNodePropertyLists.nt b/test/w3c/turtle/nested_blankNodePropertyLists.nt
new file mode 100644
index 00000000..5284c007
--- /dev/null
+++ b/test/w3c/turtle/nested_blankNodePropertyLists.nt
@@ -0,0 +1,3 @@
+_:b1 <http://a.example/p1> _:b2 .
+_:b2 <http://a.example/p2> <http://a.example/o2> .
+_:b1 <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/nested_blankNodePropertyLists.ttl b/test/w3c/turtle/nested_blankNodePropertyLists.ttl
new file mode 100644
index 00000000..a3e4681c
--- /dev/null
+++ b/test/w3c/turtle/nested_blankNodePropertyLists.ttl
@@ -0,0 +1 @@
+[ <http://a.example/p1> [ <http://a.example/p2> <http://a.example/o2> ] ; <http://a.example/p> <http://a.example/o> ].
diff --git a/test/w3c/turtle/nested_collection.nt b/test/w3c/turtle/nested_collection.nt
new file mode 100644
index 00000000..eaea2847
--- /dev/null
+++ b/test/w3c/turtle/nested_collection.nt
@@ -0,0 +1,5 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/nested_collection.ttl b/test/w3c/turtle/nested_collection.ttl
new file mode 100644
index 00000000..944e7c6b
--- /dev/null
+++ b/test/w3c/turtle/nested_collection.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> ((1)) .
diff --git a/test/w3c/turtle/number_sign_following_PNAME_NS.nt b/test/w3c/turtle/number_sign_following_PNAME_NS.nt
new file mode 100644
index 00000000..82d9629a
--- /dev/null
+++ b/test/w3c/turtle/number_sign_following_PNAME_NS.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/#numbersign> .
diff --git a/test/w3c/turtle/number_sign_following_PNAME_NS.ttl b/test/w3c/turtle/number_sign_following_PNAME_NS.ttl
new file mode 100644
index 00000000..2003fa4d
--- /dev/null
+++ b/test/w3c/turtle/number_sign_following_PNAME_NS.ttl
@@ -0,0 +1,3 @@
+@prefix p: <http://a.example/>.
+<http://a.example/s> <http://a.example/p> p:\#numbersign
+.
diff --git a/test/w3c/turtle/number_sign_following_localName.nt b/test/w3c/turtle/number_sign_following_localName.nt
new file mode 100644
index 00000000..5ae57b8d
--- /dev/null
+++ b/test/w3c/turtle/number_sign_following_localName.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/o#numbersign> .
diff --git a/test/w3c/turtle/number_sign_following_localName.ttl b/test/w3c/turtle/number_sign_following_localName.ttl
new file mode 100644
index 00000000..a0e39ecd
--- /dev/null
+++ b/test/w3c/turtle/number_sign_following_localName.ttl
@@ -0,0 +1,3 @@
+@prefix p: <http://a.example/> .
+<http://a.example/s> <http://a.example/p> p:o\#numbersign
+.
diff --git a/test/w3c/turtle/numeric_with_leading_0.nt b/test/w3c/turtle/numeric_with_leading_0.nt
new file mode 100644
index 00000000..1df5c472
--- /dev/null
+++ b/test/w3c/turtle/numeric_with_leading_0.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "01"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/test/w3c/turtle/numeric_with_leading_0.ttl b/test/w3c/turtle/numeric_with_leading_0.ttl
new file mode 100644
index 00000000..a5eac209
--- /dev/null
+++ b/test/w3c/turtle/numeric_with_leading_0.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> 01 .
diff --git a/test/w3c/turtle/objectList_with_two_objects.nt b/test/w3c/turtle/objectList_with_two_objects.nt
new file mode 100644
index 00000000..7f8e9c0f
--- /dev/null
+++ b/test/w3c/turtle/objectList_with_two_objects.nt
@@ -0,0 +1,2 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/o1> .
+<http://a.example/s> <http://a.example/p> <http://a.example/o2> .
diff --git a/test/w3c/turtle/objectList_with_two_objects.ttl b/test/w3c/turtle/objectList_with_two_objects.ttl
new file mode 100644
index 00000000..b12f02d1
--- /dev/null
+++ b/test/w3c/turtle/objectList_with_two_objects.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/o1>, <http://a.example/o2> .
diff --git a/test/w3c/turtle/old_style_base.ttl b/test/w3c/turtle/old_style_base.ttl
new file mode 100644
index 00000000..f0f4c03c
--- /dev/null
+++ b/test/w3c/turtle/old_style_base.ttl
@@ -0,0 +1,2 @@
+@base <http://a.example/>.
+<s> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/old_style_prefix.ttl b/test/w3c/turtle/old_style_prefix.ttl
new file mode 100644
index 00000000..59595672
--- /dev/null
+++ b/test/w3c/turtle/old_style_prefix.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:s <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/percent_escaped_localName.nt b/test/w3c/turtle/percent_escaped_localName.nt
new file mode 100644
index 00000000..e0af4b62
--- /dev/null
+++ b/test/w3c/turtle/percent_escaped_localName.nt
@@ -0,0 +1 @@
+<http://a.example/%25> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/percent_escaped_localName.ttl b/test/w3c/turtle/percent_escaped_localName.ttl
new file mode 100644
index 00000000..0564ccab
--- /dev/null
+++ b/test/w3c/turtle/percent_escaped_localName.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:%25 <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/positive_numeric.nt b/test/w3c/turtle/positive_numeric.nt
new file mode 100644
index 00000000..96e6086a
--- /dev/null
+++ b/test/w3c/turtle/positive_numeric.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "+1"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/test/w3c/turtle/positive_numeric.ttl b/test/w3c/turtle/positive_numeric.ttl
new file mode 100644
index 00000000..606691d9
--- /dev/null
+++ b/test/w3c/turtle/positive_numeric.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> +1 .
diff --git a/test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.nt b/test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.nt
new file mode 100644
index 00000000..4ae67584
--- /dev/null
+++ b/test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.nt
@@ -0,0 +1,5 @@
+<http://a.example/s> <http://a.example/p> _:b1 .
+_:b1 <http://a.example/p2> <http://a.example/o> .
+<http://a.example/s> <http://a.example/p3> _:b2 .
+_:b2 <http://a.example/p4> <http://a.example/o2> .
+_:b2 <http://a.example/p4> <http://a.example/o3> .
diff --git a/test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.ttl b/test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.ttl
new file mode 100644
index 00000000..88de7744
--- /dev/null
+++ b/test/w3c/turtle/predicateObjectList_with_blankNodePropertyList_as_object.ttl
@@ -0,0 +1,3 @@
+<http://a.example/s> <http://a.example/p> [ <http://a.example/p2> <http://a.example/o> ]
+ ; <http://a.example/p3> [ <http://a.example/p4> <http://a.example/o2>
+ , <http://a.example/o3> ] .
diff --git a/test/w3c/turtle/predicateObjectList_with_two_objectLists.nt b/test/w3c/turtle/predicateObjectList_with_two_objectLists.nt
new file mode 100644
index 00000000..274182c7
--- /dev/null
+++ b/test/w3c/turtle/predicateObjectList_with_two_objectLists.nt
@@ -0,0 +1,2 @@
+<http://a.example/s> <http://a.example/p1> <http://a.example/o1> .
+<http://a.example/s> <http://a.example/p2> <http://a.example/o2> .
diff --git a/test/w3c/turtle/predicateObjectList_with_two_objectLists.ttl b/test/w3c/turtle/predicateObjectList_with_two_objectLists.ttl
new file mode 100644
index 00000000..337b132f
--- /dev/null
+++ b/test/w3c/turtle/predicateObjectList_with_two_objectLists.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p1> <http://a.example/o1>; <http://a.example/p2> <http://a.example/o2> .
diff --git a/test/w3c/turtle/prefix_only_IRI.ttl b/test/w3c/turtle/prefix_only_IRI.ttl
new file mode 100644
index 00000000..9ff66603
--- /dev/null
+++ b/test/w3c/turtle/prefix_only_IRI.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/s>.
+p: <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/prefix_reassigned_and_used.nt b/test/w3c/turtle/prefix_reassigned_and_used.nt
new file mode 100644
index 00000000..68bc9efe
--- /dev/null
+++ b/test/w3c/turtle/prefix_reassigned_and_used.nt
@@ -0,0 +1 @@
+<http://b.example/s> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/prefix_reassigned_and_used.ttl b/test/w3c/turtle/prefix_reassigned_and_used.ttl
new file mode 100644
index 00000000..1f948597
--- /dev/null
+++ b/test/w3c/turtle/prefix_reassigned_and_used.ttl
@@ -0,0 +1,3 @@
+@prefix p: <http://a.example/>.
+@prefix p: <http://b.example/>.
+p:s <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/prefix_with_PN_CHARS_BASE_character_boundaries.ttl b/test/w3c/turtle/prefix_with_PN_CHARS_BASE_character_boundaries.ttl
new file mode 100644
index 00000000..bc436bd2
--- /dev/null
+++ b/test/w3c/turtle/prefix_with_PN_CHARS_BASE_character_boundaries.ttl
@@ -0,0 +1,2 @@
+@prefix AZazÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿豈﷏ﷰ�𐀀󯿽: <http://a.example/> .
+<http://a.example/s> <http://a.example/p> AZazÀÖØöø˿ͰͽͿ῿‌‍⁰↏Ⰰ⿯、퟿豈﷏ﷰ�𐀀󯿽:o .
diff --git a/test/w3c/turtle/prefix_with_non_leading_extras.ttl b/test/w3c/turtle/prefix_with_non_leading_extras.ttl
new file mode 100644
index 00000000..193460a8
--- /dev/null
+++ b/test/w3c/turtle/prefix_with_non_leading_extras.ttl
@@ -0,0 +1,2 @@
+@prefix a·̀ͯ‿.⁀: <http://a.example/>.
+a·̀ͯ‿.⁀:s <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/prefixed_IRI_object.ttl b/test/w3c/turtle/prefixed_IRI_object.ttl
new file mode 100644
index 00000000..c2d50362
--- /dev/null
+++ b/test/w3c/turtle/prefixed_IRI_object.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+<http://a.example/s> <http://a.example/p> p:o .
diff --git a/test/w3c/turtle/prefixed_IRI_predicate.ttl b/test/w3c/turtle/prefixed_IRI_predicate.ttl
new file mode 100644
index 00000000..2c1e5cc7
--- /dev/null
+++ b/test/w3c/turtle/prefixed_IRI_predicate.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+<http://a.example/s> p:p <http://a.example/o> .
diff --git a/test/w3c/turtle/prefixed_name_datatype.ttl b/test/w3c/turtle/prefixed_name_datatype.ttl
new file mode 100644
index 00000000..4a526073
--- /dev/null
+++ b/test/w3c/turtle/prefixed_name_datatype.ttl
@@ -0,0 +1,2 @@
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+<http://a.example/s> <http://a.example/p> "1"^^xsd:integer .
diff --git a/test/w3c/turtle/repeated_semis_at_end.ttl b/test/w3c/turtle/repeated_semis_at_end.ttl
new file mode 100644
index 00000000..8a4d9356
--- /dev/null
+++ b/test/w3c/turtle/repeated_semis_at_end.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p1> <http://a.example/o1>;; <http://a.example/p2> <http://a.example/o2> .
diff --git a/test/w3c/turtle/repeated_semis_not_at_end.nt b/test/w3c/turtle/repeated_semis_not_at_end.nt
new file mode 100644
index 00000000..9ac6005f
--- /dev/null
+++ b/test/w3c/turtle/repeated_semis_not_at_end.nt
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p1> <http://a.example/o1> .
diff --git a/test/w3c/turtle/repeated_semis_not_at_end.ttl b/test/w3c/turtle/repeated_semis_not_at_end.ttl
new file mode 100644
index 00000000..3c8144f3
--- /dev/null
+++ b/test/w3c/turtle/repeated_semis_not_at_end.ttl
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p1> <http://a.example/o1>;; .
diff --git a/test/w3c/turtle/reserved_escaped_localName.nt b/test/w3c/turtle/reserved_escaped_localName.nt
new file mode 100644
index 00000000..1ee4f32e
--- /dev/null
+++ b/test/w3c/turtle/reserved_escaped_localName.nt
@@ -0,0 +1 @@
+<http://a.example/_~.-!$&'()*+,;=/?#@%00> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/reserved_escaped_localName.ttl b/test/w3c/turtle/reserved_escaped_localName.ttl
new file mode 100644
index 00000000..ae97f8af
--- /dev/null
+++ b/test/w3c/turtle/reserved_escaped_localName.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:\_\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\%00 <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/sole_blankNodePropertyList.nt b/test/w3c/turtle/sole_blankNodePropertyList.nt
new file mode 100644
index 00000000..b48df9a7
--- /dev/null
+++ b/test/w3c/turtle/sole_blankNodePropertyList.nt
@@ -0,0 +1 @@
+_:b1 <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/sole_blankNodePropertyList.ttl b/test/w3c/turtle/sole_blankNodePropertyList.ttl
new file mode 100644
index 00000000..5cc300f3
--- /dev/null
+++ b/test/w3c/turtle/sole_blankNodePropertyList.ttl
@@ -0,0 +1 @@
+[ <http://a.example/p> <http://a.example/o> ] .
diff --git a/test/w3c/turtle/turtle-eval-bad-01.ttl b/test/w3c/turtle/turtle-eval-bad-01.ttl
new file mode 100644
index 00000000..c9c458e8
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-bad-01.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : good escape, bad charcater
+<http://www.w3.org/2013/TurtleTests/\u0020> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-eval-bad-02.ttl b/test/w3c/turtle/turtle-eval-bad-02.ttl
new file mode 100644
index 00000000..f2be6ea5
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-bad-02.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : hex 3C is <
+<http://www.w3.org/2013/TurtleTests/\u003C> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-eval-bad-03.ttl b/test/w3c/turtle/turtle-eval-bad-03.ttl
new file mode 100644
index 00000000..1aec7ff9
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-bad-03.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : hex 3E is >
+<http://www.w3.org/2013/TurtleTests/\u003E> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-eval-bad-04.ttl b/test/w3c/turtle/turtle-eval-bad-04.ttl
new file mode 100644
index 00000000..4b7601b3
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-bad-04.ttl
@@ -0,0 +1,2 @@
+# Bad IRI
+<http://www.w3.org/2013/TurtleTests/{abc}> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-eval-lists-01.nt b/test/w3c/turtle/turtle-eval-lists-01.nt
new file mode 100644
index 00000000..e4a87b2d
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-01.nt
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/turtle-eval-lists-01.ttl b/test/w3c/turtle/turtle-eval-lists-01.ttl
new file mode 100644
index 00000000..c6ee0fbe
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-01.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p () .
diff --git a/test/w3c/turtle/turtle-eval-lists-02.nt b/test/w3c/turtle/turtle-eval-lists-02.nt
new file mode 100644
index 00000000..f2d81d46
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-02.nt
@@ -0,0 +1,7 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> _:b1 .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2" .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/2013/TurtleTests/o> .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/turtle-eval-lists-02.ttl b/test/w3c/turtle/turtle-eval-lists-02.ttl
new file mode 100644
index 00000000..06a0cd1e
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-02.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p (1 "2" :o) .
diff --git a/test/w3c/turtle/turtle-eval-lists-03.nt b/test/w3c/turtle/turtle-eval-lists-03.nt
new file mode 100644
index 00000000..bac62c25
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-03.nt
@@ -0,0 +1,5 @@
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b1 <http://www.w3.org/2013/TurtleTests/p> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/turtle-eval-lists-03.ttl b/test/w3c/turtle/turtle-eval-lists-03.ttl
new file mode 100644
index 00000000..e71f0273
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-03.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+(1) :p (1) .
diff --git a/test/w3c/turtle/turtle-eval-lists-04.nt b/test/w3c/turtle/turtle-eval-lists-04.nt
new file mode 100644
index 00000000..ba577791
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-04.nt
@@ -0,0 +1,5 @@
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b1 <http://www.w3.org/2013/TurtleTests/p> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/turtle-eval-lists-04.ttl b/test/w3c/turtle/turtle-eval-lists-04.ttl
new file mode 100644
index 00000000..a9885389
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-04.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+(()) :p (()) .
diff --git a/test/w3c/turtle/turtle-eval-lists-05.nt b/test/w3c/turtle/turtle-eval-lists-05.nt
new file mode 100644
index 00000000..79225c4a
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-05.nt
@@ -0,0 +1,19 @@
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b4 .
+_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b5 .
+_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b1 <http://www.w3.org/2013/TurtleTests/p> _:b6 .
+_:b6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b7 .
+_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "a" .
+_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:b6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b8 .
+_:b8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "b" .
+_:b8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b9 .
+_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/2013/TurtleTests/o> .
+_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/turtle-eval-lists-05.ttl b/test/w3c/turtle/turtle-eval-lists-05.ttl
new file mode 100644
index 00000000..43e68a44
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-lists-05.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+(1 2 (1 2)) :p (( "a") "b" :o) .
diff --git a/test/w3c/turtle/turtle-eval-struct-01.nt b/test/w3c/turtle/turtle-eval-struct-01.nt
new file mode 100644
index 00000000..2e2d5baf
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-struct-01.nt
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-eval-struct-01.ttl b/test/w3c/turtle/turtle-eval-struct-01.ttl
new file mode 100644
index 00000000..2e2d5baf
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-struct-01.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-eval-struct-02.nt b/test/w3c/turtle/turtle-eval-struct-02.nt
new file mode 100644
index 00000000..6cdc856a
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-struct-02.nt
@@ -0,0 +1,2 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p1> <http://www.w3.org/2013/TurtleTests/o1> .
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p2> <http://www.w3.org/2013/TurtleTests/o2> .
diff --git a/test/w3c/turtle/turtle-eval-struct-02.ttl b/test/w3c/turtle/turtle-eval-struct-02.ttl
new file mode 100644
index 00000000..45b9ea05
--- /dev/null
+++ b/test/w3c/turtle/turtle-eval-struct-02.ttl
@@ -0,0 +1,4 @@
+<http://www.w3.org/2013/TurtleTests/s>
+ <http://www.w3.org/2013/TurtleTests/p1> <http://www.w3.org/2013/TurtleTests/o1> ;
+ <http://www.w3.org/2013/TurtleTests/p2> <http://www.w3.org/2013/TurtleTests/o2> ;
+ .
diff --git a/test/w3c/turtle/turtle-subm-01.nt b/test/w3c/turtle/turtle-subm-01.nt
new file mode 100644
index 00000000..9efa50de
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-01.nt
@@ -0,0 +1 @@
+_:b1 <http://www.w3.org/2013/TurtleTests/turtle-subm-01.ttl#x> <http://www.w3.org/2013/TurtleTests/turtle-subm-01.ttl#y> .
diff --git a/test/w3c/turtle/turtle-subm-01.ttl b/test/w3c/turtle/turtle-subm-01.ttl
new file mode 100644
index 00000000..78da35e6
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-01.ttl
@@ -0,0 +1,2 @@
+@prefix : <#> .
+[] :x :y .
diff --git a/test/w3c/turtle/turtle-subm-02.nt b/test/w3c/turtle/turtle-subm-02.nt
new file mode 100644
index 00000000..5ccb5bd2
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-02.nt
@@ -0,0 +1,3 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-02.ttl b/test/w3c/turtle/turtle-subm-02.ttl
new file mode 100644
index 00000000..9070d2c4
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-02.ttl
@@ -0,0 +1,7 @@
+# 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 .
diff --git a/test/w3c/turtle/turtle-subm-03.nt b/test/w3c/turtle/turtle-subm-03.nt
new file mode 100644
index 00000000..99732ab3
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-03.nt
@@ -0,0 +1,3 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-03.ttl b/test/w3c/turtle/turtle-subm-03.ttl
new file mode 100644
index 00000000..a623f3c1
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-03.ttl
@@ -0,0 +1,5 @@
+# Test , operator
+@prefix : <http://example.org/base#> .
+:a :b :c,
+ :d,
+ :e .
diff --git a/test/w3c/turtle/turtle-subm-04.nt b/test/w3c/turtle/turtle-subm-04.nt
new file mode 100644
index 00000000..d6ce9e8f
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-04.nt
@@ -0,0 +1,3 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-04.ttl b/test/w3c/turtle/turtle-subm-04.ttl
new file mode 100644
index 00000000..9179fa50
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-04.ttl
@@ -0,0 +1,5 @@
+# Test ; operator
+@prefix : <http://example.org/base#> .
+:a :b :c ;
+ :d :e ;
+ :f :g .
diff --git a/test/w3c/turtle/turtle-subm-05.nt b/test/w3c/turtle/turtle-subm-05.nt
new file mode 100644
index 00000000..d5d01526
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-05.nt
@@ -0,0 +1,2 @@
+_:b1 <http://example.org/base#a> <http://example.org/base#b> .
+<http://example.org/base#c> <http://example.org/base#d> _:b2 .
diff --git a/test/w3c/turtle/turtle-subm-05.ttl b/test/w3c/turtle/turtle-subm-05.ttl
new file mode 100644
index 00000000..c5181479
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-05.ttl
@@ -0,0 +1,4 @@
+# Test empty [] operator; not allowed as predicate
+@prefix : <http://example.org/base#> .
+[] :a :b .
+:c :d [] .
diff --git a/test/w3c/turtle/turtle-subm-06.nt b/test/w3c/turtle/turtle-subm-06.nt
new file mode 100644
index 00000000..d440197f
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-06.nt
@@ -0,0 +1,4 @@
+_:b1 <http://example.org/base#a> <http://example.org/base#b> .
+_:b1 <http://example.org/base#c> <http://example.org/base#d> .
+<http://example.org/base#e> <http://example.org/base#f> _:b2 .
+_:b2 <http://example.org/base#g> <http://example.org/base#h> .
diff --git a/test/w3c/turtle/turtle-subm-06.ttl b/test/w3c/turtle/turtle-subm-06.ttl
new file mode 100644
index 00000000..adcbcabd
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-06.ttl
@@ -0,0 +1,4 @@
+# Test non empty [] operator; not allowed as predicate
+@prefix : <http://example.org/base#> .
+[ :a :b ] :c :d .
+:e :f [ :g :h ] .
diff --git a/test/w3c/turtle/turtle-subm-07.nt b/test/w3c/turtle/turtle-subm-07.nt
new file mode 100644
index 00000000..49961ea6
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-07.nt
@@ -0,0 +1 @@
+<http://example.org/base#a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/base#b> .
diff --git a/test/w3c/turtle/turtle-subm-07.ttl b/test/w3c/turtle/turtle-subm-07.ttl
new file mode 100644
index 00000000..9c1005cc
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-07.ttl
@@ -0,0 +1,3 @@
+# 'a' only allowed as a predicate
+@prefix : <http://example.org/base#> .
+:a a :b .
diff --git a/test/w3c/turtle/turtle-subm-08.nt b/test/w3c/turtle/turtle-subm-08.nt
new file mode 100644
index 00000000..e62cede5
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-08.nt
@@ -0,0 +1,5 @@
+<http://example.org/stuff/1.0/a> <http://example.org/stuff/1.0/b> _:b1 .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "apple" .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "banana" .
+_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/test/w3c/turtle/turtle-subm-08.ttl b/test/w3c/turtle/turtle-subm-08.ttl
new file mode 100644
index 00000000..84559403
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-08.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/stuff/1.0/> .
+:a :b ( "apple" "banana" ) .
+
diff --git a/test/w3c/turtle/turtle-subm-09.nt b/test/w3c/turtle/turtle-subm-09.nt
new file mode 100644
index 00000000..a77939cd
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-09.nt
@@ -0,0 +1 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-09.ttl b/test/w3c/turtle/turtle-subm-09.ttl
new file mode 100644
index 00000000..adce0a20
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-09.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/stuff/1.0/> .
+:a :b ( ) .
+
diff --git a/test/w3c/turtle/turtle-subm-10.nt b/test/w3c/turtle/turtle-subm-10.nt
new file mode 100644
index 00000000..c7164085
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-10.nt
@@ -0,0 +1,4 @@
+_:hasParent <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:b1 <http://www.w3.org/2002/07/owl#onProperty> _:hasParent .
+_:b1 <http://www.w3.org/2002/07/owl#maxCardinality> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/test/w3c/turtle/turtle-subm-10.ttl b/test/w3c/turtle/turtle-subm-10.ttl
new file mode 100644
index 00000000..0afe1b0a
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-10.ttl
@@ -0,0 +1,10 @@
+# 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 .
diff --git a/test/w3c/turtle/turtle-subm-11.nt b/test/w3c/turtle/turtle-subm-11.nt
new file mode 100644
index 00000000..ff88aa6f
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-11.nt
@@ -0,0 +1,5 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-11.ttl b/test/w3c/turtle/turtle-subm-11.ttl
new file mode 100644
index 00000000..5d36360e
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-11.ttl
@@ -0,0 +1,5 @@
+<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 .
diff --git a/test/w3c/turtle/turtle-subm-12.nt b/test/w3c/turtle/turtle-subm-12.nt
new file mode 100644
index 00000000..f936a5b6
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-12.nt
@@ -0,0 +1,4 @@
+<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" .
diff --git a/test/w3c/turtle/turtle-subm-12.ttl b/test/w3c/turtle/turtle-subm-12.ttl
new file mode 100644
index 00000000..3de1a43f
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-12.ttl
@@ -0,0 +1,10 @@
+# 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" .
diff --git a/test/w3c/turtle/turtle-subm-13.nt b/test/w3c/turtle/turtle-subm-13.nt
new file mode 100644
index 00000000..67404a59
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-13.nt
@@ -0,0 +1,4 @@
+<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" .
diff --git a/test/w3c/turtle/turtle-subm-13.ttl b/test/w3c/turtle/turtle-subm-13.ttl
new file mode 100644
index 00000000..1fed9f5e
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-13.ttl
@@ -0,0 +1,9 @@
+# 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" .
diff --git a/test/w3c/turtle/turtle-subm-14.nt b/test/w3c/turtle/turtle-subm-14.nt
new file mode 100644
index 00000000..195a1af7
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-14.nt
@@ -0,0 +1,2 @@
+_:b1 <http://example.org/ron> _:b2 .
+<http://example.org/ron> <http://example.org/ron> <http://example.org/ron> .
diff --git a/test/w3c/turtle/turtle-subm-14.ttl b/test/w3c/turtle/turtle-subm-14.ttl
new file mode 100644
index 00000000..a8be95be
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-14.ttl
@@ -0,0 +1,7 @@
+# Test for : allowed
+@prefix : <http://example.org/ron> .
+
+[] : [] .
+
+: : : .
+
diff --git a/test/w3c/turtle/turtle-subm-15.nt b/test/w3c/turtle/turtle-subm-15.nt
new file mode 100644
index 00000000..466edbb2
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-15.nt
@@ -0,0 +1 @@
+<http://example.org/ex#a> <http://example.org/ex#b> "a long\n\tliteral\nwith\nnewlines" .
diff --git a/test/w3c/turtle/turtle-subm-15.ttl b/test/w3c/turtle/turtle-subm-15.ttl
new file mode 100644
index 00000000..86c453bd
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-15.ttl
@@ -0,0 +1,6 @@
+# Test long literal
+@prefix : <http://example.org/ex#> .
+:a :b """a long
+ literal
+with
+newlines""" .
diff --git a/test/w3c/turtle/turtle-subm-16.nt b/test/w3c/turtle/turtle-subm-16.nt
new file mode 100644
index 00000000..7726bbfc
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-16.nt
@@ -0,0 +1,2 @@
+<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" .
diff --git a/test/w3c/turtle/turtle-subm-16.ttl b/test/w3c/turtle/turtle-subm-16.ttl
new file mode 100644
index 00000000..f5482d4a
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-16.ttl
@@ -0,0 +1,20 @@
+@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
+""" .
diff --git a/test/w3c/turtle/turtle-subm-17.nt b/test/w3c/turtle/turtle-subm-17.nt
new file mode 100644
index 00000000..2e2dbe40
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-17.nt
@@ -0,0 +1 @@
+<http://example.org/#a> <http://example.org/#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
diff --git a/test/w3c/turtle/turtle-subm-17.ttl b/test/w3c/turtle/turtle-subm-17.ttl
new file mode 100644
index 00000000..9de0c07b
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-17.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://example.org/#> .
+
+:a :b 1.0 .
+
diff --git a/test/w3c/turtle/turtle-subm-18.nt b/test/w3c/turtle/turtle-subm-18.nt
new file mode 100644
index 00000000..fff2da56
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-18.nt
@@ -0,0 +1,2 @@
+<http://example.org/#a> <http://example.org/#b> "" .
+<http://example.org/#c> <http://example.org/#d> "" .
diff --git a/test/w3c/turtle/turtle-subm-18.ttl b/test/w3c/turtle/turtle-subm-18.ttl
new file mode 100644
index 00000000..37a9a4f3
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-18.ttl
@@ -0,0 +1,6 @@
+@prefix : <http://example.org/#> .
+
+:a :b "" .
+
+:c :d """""" .
+
diff --git a/test/w3c/turtle/turtle-subm-19.nt b/test/w3c/turtle/turtle-subm-19.nt
new file mode 100644
index 00000000..d5dca690
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-19.nt
@@ -0,0 +1,3 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-19.ttl b/test/w3c/turtle/turtle-subm-19.ttl
new file mode 100644
index 00000000..a8e8dc15
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-19.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://example.org#> .
+:a :b 1.0 .
+:c :d 1 .
+:e :f 1.0e0 .
diff --git a/test/w3c/turtle/turtle-subm-20.nt b/test/w3c/turtle/turtle-subm-20.nt
new file mode 100644
index 00000000..3d0f970e
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-20.nt
@@ -0,0 +1,3 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-20.ttl b/test/w3c/turtle/turtle-subm-20.ttl
new file mode 100644
index 00000000..9b1a725a
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-20.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://example.org#> .
+:a :b -1.0 .
+:c :d -1 .
+:e :f -1.0e0 .
diff --git a/test/w3c/turtle/turtle-subm-21.nt b/test/w3c/turtle/turtle-subm-21.nt
new file mode 100644
index 00000000..fde31312
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-21.nt
@@ -0,0 +1 @@
+<http://example.org/ex#a> <http://example.org/ex#b> "John said: \"Hello World!\"" .
diff --git a/test/w3c/turtle/turtle-subm-21.ttl b/test/w3c/turtle/turtle-subm-21.ttl
new file mode 100644
index 00000000..9f5360af
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-21.ttl
@@ -0,0 +1,3 @@
+# Test long literal
+@prefix : <http://example.org/ex#> .
+:a :b """John said: "Hello World!\"""" .
diff --git a/test/w3c/turtle/turtle-subm-22.nt b/test/w3c/turtle/turtle-subm-22.nt
new file mode 100644
index 00000000..5a70bff1
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-22.nt
@@ -0,0 +1,2 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-22.ttl b/test/w3c/turtle/turtle-subm-22.ttl
new file mode 100644
index 00000000..25f3b757
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-22.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org#> .
+:a :b true .
+:c :d false .
diff --git a/test/w3c/turtle/turtle-subm-23.nt b/test/w3c/turtle/turtle-subm-23.nt
new file mode 100644
index 00000000..1a38415f
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-23.nt
@@ -0,0 +1,7 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-23.ttl b/test/w3c/turtle/turtle-subm-23.ttl
new file mode 100644
index 00000000..310349da
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-23.ttl
@@ -0,0 +1,14 @@
+# 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
diff --git a/test/w3c/turtle/turtle-subm-24.nt b/test/w3c/turtle/turtle-subm-24.nt
new file mode 100644
index 00000000..ad105cf4
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-24.nt
@@ -0,0 +1 @@
+<http://example.org/#a> <http://example.org/#b> <http://example.org/#c> .
diff --git a/test/w3c/turtle/turtle-subm-24.ttl b/test/w3c/turtle/turtle-subm-24.ttl
new file mode 100644
index 00000000..0667c6b4
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-24.ttl
@@ -0,0 +1,4 @@
+# comment line with no final newline test
+@prefix : <http://example.org/#> .
+:a :b :c .
+#foo
diff --git a/test/w3c/turtle/turtle-subm-25.nt b/test/w3c/turtle/turtle-subm-25.nt
new file mode 100644
index 00000000..7da0635b
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-25.nt
@@ -0,0 +1 @@
+<http://example.org/bar#blah> <http://example.org/bar#blah> <http://example.org/bar#blah> .
diff --git a/test/w3c/turtle/turtle-subm-25.ttl b/test/w3c/turtle/turtle-subm-25.ttl
new file mode 100644
index 00000000..569023c8
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-25.ttl
@@ -0,0 +1,5 @@
+@prefix foo: <http://example.org/foo#> .
+@prefix foo: <http://example.org/bar#> .
+
+foo:blah foo:blah foo:blah .
+
diff --git a/test/w3c/turtle/turtle-subm-26.nt b/test/w3c/turtle/turtle-subm-26.nt
new file mode 100644
index 00000000..7357dd40
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-26.nt
@@ -0,0 +1,22 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-26.ttl b/test/w3c/turtle/turtle-subm-26.ttl
new file mode 100644
index 00000000..7357dd40
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-26.ttl
@@ -0,0 +1,22 @@
+<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> .
diff --git a/test/w3c/turtle/turtle-subm-27.nt b/test/w3c/turtle/turtle-subm-27.nt
new file mode 100644
index 00000000..f9ebfef1
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-27.nt
@@ -0,0 +1,5 @@
+<http://www.w3.org/2013/TurtleTests/a1> <http://www.w3.org/2013/TurtleTests/b1> <http://www.w3.org/2013/TurtleTests/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> .
diff --git a/test/w3c/turtle/turtle-subm-27.ttl b/test/w3c/turtle/turtle-subm-27.ttl
new file mode 100644
index 00000000..ad39c024
--- /dev/null
+++ b/test/w3c/turtle/turtle-subm-27.ttl
@@ -0,0 +1,12 @@
+# In-scope base URI is <http://www.w3.org/2013/TurtleTests/turtle-subm-27.ttl> 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 .
diff --git a/test/w3c/turtle/turtle-syntax-bad-LITERAL2_with_langtag_and_datatype.ttl b/test/w3c/turtle/turtle-syntax-bad-LITERAL2_with_langtag_and_datatype.ttl
new file mode 100644
index 00000000..56180417
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-LITERAL2_with_langtag_and_datatype.ttl
@@ -0,0 +1 @@
+<http://example.org/resource> <http://example.org#pred> "value"@en^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-base-01.ttl b/test/w3c/turtle/turtle-syntax-bad-base-01.ttl
new file mode 100644
index 00000000..7b0412f8
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-base-01.ttl
@@ -0,0 +1,2 @@
+# @base without URI.
+@base .
diff --git a/test/w3c/turtle/turtle-syntax-bad-base-02.ttl b/test/w3c/turtle/turtle-syntax-bad-base-02.ttl
new file mode 100644
index 00000000..8893b652
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-base-02.ttl
@@ -0,0 +1,2 @@
+# @base in wrong case.
+@BASE <http://www.w3.org/2013/TurtleTests/> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-base-03.ttl b/test/w3c/turtle/turtle-syntax-bad-base-03.ttl
new file mode 100644
index 00000000..013f9f2b
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-base-03.ttl
@@ -0,0 +1,3 @@
+# FULL STOP used after SPARQL BASE
+BASE <http://www.w3.org/2013/TurtleTests/> .
+<s> <p> <o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-blank-label-dot-end.ttl b/test/w3c/turtle/turtle-syntax-bad-blank-label-dot-end.ttl
new file mode 100644
index 00000000..58c0aa20
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-blank-label-dot-end.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+_:b1. :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-bnode-01.ttl b/test/w3c/turtle/turtle-syntax-bad-bnode-01.ttl
new file mode 100644
index 00000000..a776d20d
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-bnode-01.ttl
@@ -0,0 +1 @@
+_::a <http://example/p> <http://example/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-bnode-02.ttl b/test/w3c/turtle/turtle-syntax-bad-bnode-02.ttl
new file mode 100644
index 00000000..093b8700
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-bnode-02.ttl
@@ -0,0 +1 @@
+_:abc:def <http://example/p> <http://example/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-esc-01.ttl b/test/w3c/turtle/turtle-syntax-bad-esc-01.ttl
new file mode 100644
index 00000000..6daa1b58
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-esc-01.ttl
@@ -0,0 +1,2 @@
+# Bad string escape
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "a\zb" .
diff --git a/test/w3c/turtle/turtle-syntax-bad-esc-02.ttl b/test/w3c/turtle/turtle-syntax-bad-esc-02.ttl
new file mode 100644
index 00000000..62457ebf
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-esc-02.ttl
@@ -0,0 +1,2 @@
+# Bad string escape
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "\uWXYZ" .
diff --git a/test/w3c/turtle/turtle-syntax-bad-esc-03.ttl b/test/w3c/turtle/turtle-syntax-bad-esc-03.ttl
new file mode 100644
index 00000000..a9b9f1c0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-esc-03.ttl
@@ -0,0 +1,2 @@
+# Bad string escape
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "\U0000WXYZ" .
diff --git a/test/w3c/turtle/turtle-syntax-bad-esc-04.ttl b/test/w3c/turtle/turtle-syntax-bad-esc-04.ttl
new file mode 100644
index 00000000..a9b9f1c0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-esc-04.ttl
@@ -0,0 +1,2 @@
+# Bad string escape
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "\U0000WXYZ" .
diff --git a/test/w3c/turtle/turtle-syntax-bad-kw-01.ttl b/test/w3c/turtle/turtle-syntax-bad-kw-01.ttl
new file mode 100644
index 00000000..f85448d6
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-kw-01.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s A :C .
diff --git a/test/w3c/turtle/turtle-syntax-bad-kw-02.ttl b/test/w3c/turtle/turtle-syntax-bad-kw-02.ttl
new file mode 100644
index 00000000..d25986cd
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-kw-02.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+a :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-kw-03.ttl b/test/w3c/turtle/turtle-syntax-bad-kw-03.ttl
new file mode 100644
index 00000000..3d54b929
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-kw-03.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p a .
diff --git a/test/w3c/turtle/turtle-syntax-bad-kw-04.ttl b/test/w3c/turtle/turtle-syntax-bad-kw-04.ttl
new file mode 100644
index 00000000..229491ed
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-kw-04.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+true :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-kw-05.ttl b/test/w3c/turtle/turtle-syntax-bad-kw-05.ttl
new file mode 100644
index 00000000..c2420af5
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-kw-05.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s true :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-lang-01.ttl b/test/w3c/turtle/turtle-syntax-bad-lang-01.ttl
new file mode 100644
index 00000000..80685aae
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-lang-01.ttl
@@ -0,0 +1,2 @@
+# Bad lang tag
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "string"@1 .
diff --git a/test/w3c/turtle/turtle-syntax-bad-ln-dash-start.ttl b/test/w3c/turtle/turtle-syntax-bad-ln-dash-start.ttl
new file mode 100644
index 00000000..9af36a1e
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-ln-dash-start.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p :-o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-ln-escape-start.ttl b/test/w3c/turtle/turtle-syntax-bad-ln-escape-start.ttl
new file mode 100644
index 00000000..9c7a4352
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-ln-escape-start.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p :%2o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-ln-escape.ttl b/test/w3c/turtle/turtle-syntax-bad-ln-escape.ttl
new file mode 100644
index 00000000..212d43a0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-ln-escape.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p :o%2 .
diff --git a/test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-end.ttl b/test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-end.ttl
new file mode 100644
index 00000000..d06f4e69
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-end.ttl
@@ -0,0 +1 @@
+valid:s valid:p invalid.:o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-start.ttl b/test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-start.ttl
new file mode 100644
index 00000000..23514bcc
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-missing-ns-dot-start.ttl
@@ -0,0 +1 @@
+.undefined:s .undefined:p .undefined:o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-01.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-01.ttl
new file mode 100644
index 00000000..f7b19b72
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-01.ttl
@@ -0,0 +1,5 @@
+# {} fomulae not in Turtle
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+
+{ :a :q :c . } :p :z .
+
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-02.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-02.ttl
new file mode 100644
index 00000000..e834f15f
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-02.ttl
@@ -0,0 +1,4 @@
+# = is not Turtle
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+
+:a = :b .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-03.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-03.ttl
new file mode 100644
index 00000000..ad5d6ad4
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-03.ttl
@@ -0,0 +1,7 @@
+# N3 paths
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+@prefix ns: <http://www.w3.org/2013/TurtleTests/p#> .
+
+:x.
+ ns:p.
+ ns:q :p :z .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-04.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-04.ttl
new file mode 100644
index 00000000..895f9ec6
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-04.ttl
@@ -0,0 +1,5 @@
+# N3 paths
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+@prefix ns: <http://www.w3.org/2013/TurtleTests/p#> .
+
+:x^ns:p :p :z .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-05.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-05.ttl
new file mode 100644
index 00000000..de879b15
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-05.ttl
@@ -0,0 +1,4 @@
+# N3 is...of
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+
+:z is :p of :x .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-06.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-06.ttl
new file mode 100644
index 00000000..56610f67
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-06.ttl
@@ -0,0 +1,4 @@
+# = is not Turtle
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+
+:a.:b.:c .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-07.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-07.ttl
new file mode 100644
index 00000000..419f7cad
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-07.ttl
@@ -0,0 +1,3 @@
+# @keywords is not Turtle
+@keywords a .
+x a Item .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-08.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-08.ttl
new file mode 100644
index 00000000..419f7cad
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-08.ttl
@@ -0,0 +1,3 @@
+# @keywords is not Turtle
+@keywords a .
+x a Item .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-09.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-09.ttl
new file mode 100644
index 00000000..f093b588
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-09.ttl
@@ -0,0 +1,3 @@
+# => is not Turtle
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s => :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-10.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-10.ttl
new file mode 100644
index 00000000..974252f0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-10.ttl
@@ -0,0 +1,3 @@
+# <= is not Turtle
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s <= :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-11.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-11.ttl
new file mode 100644
index 00000000..b74d74a3
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-11.ttl
@@ -0,0 +1,3 @@
+# @forSome is not Turtle
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+@forSome :x .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-12.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-12.ttl
new file mode 100644
index 00000000..dc2c5b03
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-12.ttl
@@ -0,0 +1,3 @@
+# @forAll is not Turtle
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+@forAll :x .
diff --git a/test/w3c/turtle/turtle-syntax-bad-n3-extras-13.ttl b/test/w3c/turtle/turtle-syntax-bad-n3-extras-13.ttl
new file mode 100644
index 00000000..5f719a24
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-n3-extras-13.ttl
@@ -0,0 +1,3 @@
+# @keywords is not Turtle
+@keywords .
+x @a Item .
diff --git a/test/w3c/turtle/turtle-syntax-bad-ns-dot-end.ttl b/test/w3c/turtle/turtle-syntax-bad-ns-dot-end.ttl
new file mode 100644
index 00000000..fa67031e
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-ns-dot-end.ttl
@@ -0,0 +1,2 @@
+@prefix eg. : <http://www.w3.org/2013/TurtleTests/> .
+eg.:s eg.:p eg.:o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-ns-dot-start.ttl b/test/w3c/turtle/turtle-syntax-bad-ns-dot-start.ttl
new file mode 100644
index 00000000..e09d5954
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-ns-dot-start.ttl
@@ -0,0 +1,2 @@
+@prefix .eg : <http://www.w3.org/2013/TurtleTests/> .
+.eg:s .eg:p .eg:o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-num-01.ttl b/test/w3c/turtle/turtle-syntax-bad-num-01.ttl
new file mode 100644
index 00000000..cb4730cb
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-num-01.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> 123.abc .
diff --git a/test/w3c/turtle/turtle-syntax-bad-num-02.ttl b/test/w3c/turtle/turtle-syntax-bad-num-02.ttl
new file mode 100644
index 00000000..1c8cbb25
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-num-02.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> 123e .
diff --git a/test/w3c/turtle/turtle-syntax-bad-num-03.ttl b/test/w3c/turtle/turtle-syntax-bad-num-03.ttl
new file mode 100644
index 00000000..7c8fa2cf
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-num-03.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> 123abc .
diff --git a/test/w3c/turtle/turtle-syntax-bad-num-04.ttl b/test/w3c/turtle/turtle-syntax-bad-num-04.ttl
new file mode 100644
index 00000000..ad8e0cfd
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-num-04.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> 0x123 .
diff --git a/test/w3c/turtle/turtle-syntax-bad-num-05.ttl b/test/w3c/turtle/turtle-syntax-bad-num-05.ttl
new file mode 100644
index 00000000..2ee461a0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-num-05.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> +-1 .
diff --git a/test/w3c/turtle/turtle-syntax-bad-number-dot-in-anon.ttl b/test/w3c/turtle/turtle-syntax-bad-number-dot-in-anon.ttl
new file mode 100644
index 00000000..779cbece
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-number-dot-in-anon.ttl
@@ -0,0 +1,6 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+
+:s
+ :p [
+ :p1 27.
+ ] .
diff --git a/test/w3c/turtle/turtle-syntax-bad-pname-01.ttl b/test/w3c/turtle/turtle-syntax-bad-pname-01.ttl
new file mode 100644
index 00000000..5f3098da
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-pname-01.ttl
@@ -0,0 +1,3 @@
+# ~ must be escaped.
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:a~b :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-pname-02.ttl b/test/w3c/turtle/turtle-syntax-bad-pname-02.ttl
new file mode 100644
index 00000000..fb30823c
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-pname-02.ttl
@@ -0,0 +1,3 @@
+# Bad %-sequence
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:a%2 :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-pname-03.ttl b/test/w3c/turtle/turtle-syntax-bad-pname-03.ttl
new file mode 100644
index 00000000..b9af59e5
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-pname-03.ttl
@@ -0,0 +1,3 @@
+# No \u (x39 is "9")
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:a\u0039 :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bad-prefix-01.ttl b/test/w3c/turtle/turtle-syntax-bad-prefix-01.ttl
new file mode 100644
index 00000000..b1b80df1
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-prefix-01.ttl
@@ -0,0 +1,2 @@
+# No prefix
+:s <http://www.w3.org/2013/TurtleTests/p> "x" .
diff --git a/test/w3c/turtle/turtle-syntax-bad-prefix-02.ttl b/test/w3c/turtle/turtle-syntax-bad-prefix-02.ttl
new file mode 100644
index 00000000..6e7269f2
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-prefix-02.ttl
@@ -0,0 +1,3 @@
+# No prefix
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/2013/TurtleTests/s> rdf:type :C .
diff --git a/test/w3c/turtle/turtle-syntax-bad-prefix-03.ttl b/test/w3c/turtle/turtle-syntax-bad-prefix-03.ttl
new file mode 100644
index 00000000..1ab01e7b
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-prefix-03.ttl
@@ -0,0 +1,2 @@
+# @prefix without URI.
+@prefix ex: .
diff --git a/test/w3c/turtle/turtle-syntax-bad-prefix-04.ttl b/test/w3c/turtle/turtle-syntax-bad-prefix-04.ttl
new file mode 100644
index 00000000..5f338f33
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-prefix-04.ttl
@@ -0,0 +1,2 @@
+# @prefix without prefix name .
+@prefix <http://www.w3.org/2013/TurtleTests/> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-prefix-05.ttl b/test/w3c/turtle/turtle-syntax-bad-prefix-05.ttl
new file mode 100644
index 00000000..efb86c59
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-prefix-05.ttl
@@ -0,0 +1,2 @@
+# @prefix without :
+@prefix x <http://www.w3.org/2013/TurtleTests/> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-string-01.ttl b/test/w3c/turtle/turtle-syntax-bad-string-01.ttl
new file mode 100644
index 00000000..ef62a6c0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-string-01.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p "abc' .
diff --git a/test/w3c/turtle/turtle-syntax-bad-string-02.ttl b/test/w3c/turtle/turtle-syntax-bad-string-02.ttl
new file mode 100644
index 00000000..2335d529
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-string-02.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p 'abc" .
diff --git a/test/w3c/turtle/turtle-syntax-bad-string-03.ttl b/test/w3c/turtle/turtle-syntax-bad-string-03.ttl
new file mode 100644
index 00000000..8a9e7ffe
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-string-03.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p '''abc' .
diff --git a/test/w3c/turtle/turtle-syntax-bad-string-04.ttl b/test/w3c/turtle/turtle-syntax-bad-string-04.ttl
new file mode 100644
index 00000000..9911defe
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-string-04.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p """abc''' .
diff --git a/test/w3c/turtle/turtle-syntax-bad-string-05.ttl b/test/w3c/turtle/turtle-syntax-bad-string-05.ttl
new file mode 100644
index 00000000..f5de7403
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-string-05.ttl
@@ -0,0 +1,4 @@
+# Long literal with missing end
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p """abc
+def
diff --git a/test/w3c/turtle/turtle-syntax-bad-string-06.ttl b/test/w3c/turtle/turtle-syntax-bad-string-06.ttl
new file mode 100644
index 00000000..6bcbc936
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-string-06.ttl
@@ -0,0 +1,3 @@
+# Long literal with 4"
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p """abc""""@en .
diff --git a/test/w3c/turtle/turtle-syntax-bad-string-07.ttl b/test/w3c/turtle/turtle-syntax-bad-string-07.ttl
new file mode 100644
index 00000000..534614d4
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-string-07.ttl
@@ -0,0 +1,3 @@
+# Long literal with 4'
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p '''abc''''@en .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-01.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-01.ttl
new file mode 100644
index 00000000..7b8b8529
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-01.ttl
@@ -0,0 +1,2 @@
+# Turtle is not TriG
+{ <http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> }
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-02.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-02.ttl
new file mode 100644
index 00000000..cb86b9dd
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-02.ttl
@@ -0,0 +1,2 @@
+# Turtle is not N3
+<http://www.w3.org/2013/TurtleTests/s> = <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-03.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-03.ttl
new file mode 100644
index 00000000..98d9c7ec
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-03.ttl
@@ -0,0 +1,2 @@
+# Turtle is not NQuads
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> <http://www.w3.org/2013/TurtleTests/g> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-04.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-04.ttl
new file mode 100644
index 00000000..40cd7b71
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-04.ttl
@@ -0,0 +1,2 @@
+# Turtle does not allow literals-as-subjects
+"hello" <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-05.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-05.ttl
new file mode 100644
index 00000000..e1a3afbc
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-05.ttl
@@ -0,0 +1,2 @@
+# Turtle does not allow literals-as-predicates
+<http://www.w3.org/2013/TurtleTests/s> "hello" <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-06.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-06.ttl
new file mode 100644
index 00000000..2680229a
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-06.ttl
@@ -0,0 +1,2 @@
+# Turtle does not allow bnodes-as-predicates
+<http://www.w3.org/2013/TurtleTests/s> [] <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-07.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-07.ttl
new file mode 100644
index 00000000..5f74a8b7
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-07.ttl
@@ -0,0 +1,2 @@
+# Turtle does not allow bnodes-as-predicates
+<http://www.w3.org/2013/TurtleTests/s> _:p <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-08.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-08.ttl
new file mode 100644
index 00000000..86aaf4be
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-08.ttl
@@ -0,0 +1,2 @@
+# No DOT
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o>
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-09.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-09.ttl
new file mode 100644
index 00000000..92aae4c2
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-09.ttl
@@ -0,0 +1,2 @@
+# Too many DOT
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> . .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-10.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-10.ttl
new file mode 100644
index 00000000..eb893b24
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-10.ttl
@@ -0,0 +1,3 @@
+# Too many DOT
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> . .
+<http://www.w3.org/2013/TurtleTests/s1> <http://www.w3.org/2013/TurtleTests/p1> <http://www.w3.org/2013/TurtleTests/o1> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-11.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-11.ttl
new file mode 100644
index 00000000..fc6bb993
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-11.ttl
@@ -0,0 +1,2 @@
+# Trailing ;
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> ;
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-12.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-12.ttl
new file mode 100644
index 00000000..1038da86
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-12.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p>
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-13.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-13.ttl
new file mode 100644
index 00000000..1038da86
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-13.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p>
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-14.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-14.ttl
new file mode 100644
index 00000000..44db7be2
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-14.ttl
@@ -0,0 +1,2 @@
+# Literal as subject
+"abc" <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/p> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-15.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-15.ttl
new file mode 100644
index 00000000..788cfd67
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-15.ttl
@@ -0,0 +1,2 @@
+# Literal as predicate
+<http://www.w3.org/2013/TurtleTests/s> "abc" <http://www.w3.org/2013/TurtleTests/p> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-16.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-16.ttl
new file mode 100644
index 00000000..d30a80be
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-16.ttl
@@ -0,0 +1,2 @@
+# BNode as predicate
+<http://www.w3.org/2013/TurtleTests/s> [] <http://www.w3.org/2013/TurtleTests/p> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-struct-17.ttl b/test/w3c/turtle/turtle-syntax-bad-struct-17.ttl
new file mode 100644
index 00000000..50ea2656
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-struct-17.ttl
@@ -0,0 +1,2 @@
+# BNode as predicate
+<http://www.w3.org/2013/TurtleTests/s> _:a <http://www.w3.org/2013/TurtleTests/p> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-uri-01.ttl b/test/w3c/turtle/turtle-syntax-bad-uri-01.ttl
new file mode 100644
index 00000000..ebea3f25
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-uri-01.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : space.
+<http://www.w3.org/2013/TurtleTests/ space> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-uri-02.ttl b/test/w3c/turtle/turtle-syntax-bad-uri-02.ttl
new file mode 100644
index 00000000..e9096bc7
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-uri-02.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : bad escape
+<http://www.w3.org/2013/TurtleTests/\u00ZZ11> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-uri-03.ttl b/test/w3c/turtle/turtle-syntax-bad-uri-03.ttl
new file mode 100644
index 00000000..7fe2bf03
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-uri-03.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : bad escape
+<http://www.w3.org/2013/TurtleTests/\U00ZZ1111> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-uri-04.ttl b/test/w3c/turtle/turtle-syntax-bad-uri-04.ttl
new file mode 100644
index 00000000..258997cb
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-uri-04.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : character escapes not allowed.
+<http://www.w3.org/2013/TurtleTests/\n> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-bad-uri-05.ttl b/test/w3c/turtle/turtle-syntax-bad-uri-05.ttl
new file mode 100644
index 00000000..542b2b64
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bad-uri-05.ttl
@@ -0,0 +1,2 @@
+# Bad IRI : character escapes not allowed.
+<http://www.w3.org/2013/TurtleTests/\/> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-base-01.ttl b/test/w3c/turtle/turtle-syntax-base-01.ttl
new file mode 100644
index 00000000..108ceaf5
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-base-01.ttl
@@ -0,0 +1 @@
+@base <http://www.w3.org/2013/TurtleTests/> .
diff --git a/test/w3c/turtle/turtle-syntax-base-02.ttl b/test/w3c/turtle/turtle-syntax-base-02.ttl
new file mode 100644
index 00000000..7a2724f7
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-base-02.ttl
@@ -0,0 +1 @@
+BASE <http://www.w3.org/2013/TurtleTests/>
diff --git a/test/w3c/turtle/turtle-syntax-base-03.ttl b/test/w3c/turtle/turtle-syntax-base-03.ttl
new file mode 100644
index 00000000..e90dc14a
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-base-03.ttl
@@ -0,0 +1,2 @@
+@base <http://www.w3.org/2013/TurtleTests/> .
+<s> <p> <o> .
diff --git a/test/w3c/turtle/turtle-syntax-base-04.ttl b/test/w3c/turtle/turtle-syntax-base-04.ttl
new file mode 100644
index 00000000..b0bb4226
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-base-04.ttl
@@ -0,0 +1,2 @@
+base <http://www.w3.org/2013/TurtleTests/>
+<s> <p> <o> .
diff --git a/test/w3c/turtle/turtle-syntax-blank-label.ttl b/test/w3c/turtle/turtle-syntax-blank-label.ttl
new file mode 100644
index 00000000..b7fae10d
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-blank-label.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+_:0b :p :o . # Starts with digit
+_:_b :p :o . # Starts with underscore
+_:b.0 :p :o . # Contains dot, ends with digit
diff --git a/test/w3c/turtle/turtle-syntax-bnode-01.ttl b/test/w3c/turtle/turtle-syntax-bnode-01.ttl
new file mode 100644
index 00000000..274a478c
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-01.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+[] :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-02.ttl b/test/w3c/turtle/turtle-syntax-bnode-02.ttl
new file mode 100644
index 00000000..91b9c16e
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-02.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p [] .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-03.ttl b/test/w3c/turtle/turtle-syntax-bnode-03.ttl
new file mode 100644
index 00000000..36c8450f
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-03.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p [ :q :o ] .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-04.ttl b/test/w3c/turtle/turtle-syntax-bnode-04.ttl
new file mode 100644
index 00000000..942dedd7
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-04.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p [ :q1 :o1 ; :q2 :o2 ] .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-05.ttl b/test/w3c/turtle/turtle-syntax-bnode-05.ttl
new file mode 100644
index 00000000..c2f4169c
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-05.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+[ :q1 :o1 ; :q2 :o2 ] :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-06.ttl b/test/w3c/turtle/turtle-syntax-bnode-06.ttl
new file mode 100644
index 00000000..f9ffec8c
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-06.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+_:a :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-07.ttl b/test/w3c/turtle/turtle-syntax-bnode-07.ttl
new file mode 100644
index 00000000..c0dba051
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-07.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p _:a .
+_:a :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-08.ttl b/test/w3c/turtle/turtle-syntax-bnode-08.ttl
new file mode 100644
index 00000000..630843b0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-08.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+[ :p :o ] .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-09.ttl b/test/w3c/turtle/turtle-syntax-bnode-09.ttl
new file mode 100644
index 00000000..cd75e3a3
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-09.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+[ :p :o1,:2 ] .
+:s :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-bnode-10.ttl b/test/w3c/turtle/turtle-syntax-bnode-10.ttl
new file mode 100644
index 00000000..03fa67ca
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-bnode-10.ttl
@@ -0,0 +1,5 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+
+:s1 :p :o .
+[ :p1 :o1 ; :p2 :o2 ] .
+:s2 :p :o .
diff --git a/test/w3c/turtle/turtle-syntax-datatypes-01.ttl b/test/w3c/turtle/turtle-syntax-datatypes-01.ttl
new file mode 100644
index 00000000..9e273c51
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-datatypes-01.ttl
@@ -0,0 +1,2 @@
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+<s> <p> "123"^^xsd:byte .
diff --git a/test/w3c/turtle/turtle-syntax-datatypes-02.ttl b/test/w3c/turtle/turtle-syntax-datatypes-02.ttl
new file mode 100644
index 00000000..477bd73c
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-datatypes-02.ttl
@@ -0,0 +1,3 @@
+@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 .
diff --git a/test/w3c/turtle/turtle-syntax-file-01.ttl b/test/w3c/turtle/turtle-syntax-file-01.ttl
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-file-01.ttl
diff --git a/test/w3c/turtle/turtle-syntax-file-02.ttl b/test/w3c/turtle/turtle-syntax-file-02.ttl
new file mode 100644
index 00000000..e6d327d5
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-file-02.ttl
@@ -0,0 +1 @@
+#Empty file.
diff --git a/test/w3c/turtle/turtle-syntax-file-03.ttl b/test/w3c/turtle/turtle-syntax-file-03.ttl
new file mode 100644
index 00000000..a9ca0358
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-file-03.ttl
@@ -0,0 +1,2 @@
+#One comment, one empty line.
+
diff --git a/test/w3c/turtle/turtle-syntax-kw-01.ttl b/test/w3c/turtle/turtle-syntax-kw-01.ttl
new file mode 100644
index 00000000..854c7568
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-kw-01.ttl
@@ -0,0 +1 @@
+<s> <p> true .
diff --git a/test/w3c/turtle/turtle-syntax-kw-02.ttl b/test/w3c/turtle/turtle-syntax-kw-02.ttl
new file mode 100644
index 00000000..c948160b
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-kw-02.ttl
@@ -0,0 +1 @@
+<s> <p> false .
diff --git a/test/w3c/turtle/turtle-syntax-kw-03.ttl b/test/w3c/turtle/turtle-syntax-kw-03.ttl
new file mode 100644
index 00000000..bb479bfa
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-kw-03.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s a :C .
diff --git a/test/w3c/turtle/turtle-syntax-ln-colons.ttl b/test/w3c/turtle/turtle-syntax-ln-colons.ttl
new file mode 100644
index 00000000..80a2e3df
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-ln-colons.ttl
@@ -0,0 +1,6 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s:1 :p:1 :o:1 .
+:s::2 :p::2 :o::2 .
+:3:s :3:p :3 .
+::s ::p ::o .
+::s: ::p: ::o: .
diff --git a/test/w3c/turtle/turtle-syntax-ln-dots.ttl b/test/w3c/turtle/turtle-syntax-ln-dots.ttl
new file mode 100644
index 00000000..ca5bba97
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-ln-dots.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s.1 :p.1 :o.1 .
+:s..2 :p..2 :o..2.
+:3.s :3.p :3.
diff --git a/test/w3c/turtle/turtle-syntax-ns-dots.ttl b/test/w3c/turtle/turtle-syntax-ns-dots.ttl
new file mode 100644
index 00000000..1059b576
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-ns-dots.ttl
@@ -0,0 +1,2 @@
+@prefix e.g: <http://www.w3.org/2013/TurtleTests/> .
+e.g:s e.g:p e.g:o .
diff --git a/test/w3c/turtle/turtle-syntax-number-01.ttl b/test/w3c/turtle/turtle-syntax-number-01.ttl
new file mode 100644
index 00000000..016fa8f2
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-01.ttl
@@ -0,0 +1 @@
+<s> <p> 123 .
diff --git a/test/w3c/turtle/turtle-syntax-number-02.ttl b/test/w3c/turtle/turtle-syntax-number-02.ttl
new file mode 100644
index 00000000..66d1b389
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-02.ttl
@@ -0,0 +1 @@
+<s> <p> -123 .
diff --git a/test/w3c/turtle/turtle-syntax-number-03.ttl b/test/w3c/turtle/turtle-syntax-number-03.ttl
new file mode 100644
index 00000000..44142857
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-03.ttl
@@ -0,0 +1 @@
+<s> <p> +123 .
diff --git a/test/w3c/turtle/turtle-syntax-number-04.ttl b/test/w3c/turtle/turtle-syntax-number-04.ttl
new file mode 100644
index 00000000..ab48cbc6
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-04.ttl
@@ -0,0 +1,2 @@
+# This is a decimal.
+<s> <p> 123.0 .
diff --git a/test/w3c/turtle/turtle-syntax-number-05.ttl b/test/w3c/turtle/turtle-syntax-number-05.ttl
new file mode 100644
index 00000000..a8d5845a
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-05.ttl
@@ -0,0 +1,2 @@
+# This is a decimal.
+<s> <p> .1 .
diff --git a/test/w3c/turtle/turtle-syntax-number-06.ttl b/test/w3c/turtle/turtle-syntax-number-06.ttl
new file mode 100644
index 00000000..cb3a2b06
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-06.ttl
@@ -0,0 +1,2 @@
+# This is a decimal.
+<s> <p> -123.0 .
diff --git a/test/w3c/turtle/turtle-syntax-number-07.ttl b/test/w3c/turtle/turtle-syntax-number-07.ttl
new file mode 100644
index 00000000..8b0050e6
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-07.ttl
@@ -0,0 +1,2 @@
+# This is a decimal.
+<s> <p> +123.0 .
diff --git a/test/w3c/turtle/turtle-syntax-number-08.ttl b/test/w3c/turtle/turtle-syntax-number-08.ttl
new file mode 100644
index 00000000..70ddeed3
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-08.ttl
@@ -0,0 +1,2 @@
+# This is an integer
+<s> <p> 123.
diff --git a/test/w3c/turtle/turtle-syntax-number-09.ttl b/test/w3c/turtle/turtle-syntax-number-09.ttl
new file mode 100644
index 00000000..386b819f
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-09.ttl
@@ -0,0 +1 @@
+<s> <p> 123.0e1 .
diff --git a/test/w3c/turtle/turtle-syntax-number-10.ttl b/test/w3c/turtle/turtle-syntax-number-10.ttl
new file mode 100644
index 00000000..46875e94
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-10.ttl
@@ -0,0 +1 @@
+<s> <p> -123e-1 .
diff --git a/test/w3c/turtle/turtle-syntax-number-11.ttl b/test/w3c/turtle/turtle-syntax-number-11.ttl
new file mode 100644
index 00000000..1d8c367e
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-number-11.ttl
@@ -0,0 +1 @@
+<s> <p> 123.E+1 .
diff --git a/test/w3c/turtle/turtle-syntax-pname-esc-01.ttl b/test/w3c/turtle/turtle-syntax-pname-esc-01.ttl
new file mode 100644
index 00000000..5a3a5fd7
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-pname-esc-01.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p :\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\_\%AA .
diff --git a/test/w3c/turtle/turtle-syntax-pname-esc-02.ttl b/test/w3c/turtle/turtle-syntax-pname-esc-02.ttl
new file mode 100644
index 00000000..5d806cf4
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-pname-esc-02.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p :0123\~\.\-\!\$\&\'\(\)\*\+\,\;\=\/\?\#\@\_\%AA123 .
diff --git a/test/w3c/turtle/turtle-syntax-pname-esc-03.ttl b/test/w3c/turtle/turtle-syntax-pname-esc-03.ttl
new file mode 100644
index 00000000..9949c52b
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-pname-esc-03.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:xyz\~ :abc\.: : .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-01.ttl b/test/w3c/turtle/turtle-syntax-prefix-01.ttl
new file mode 100644
index 00000000..7fd69327
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-01.ttl
@@ -0,0 +1 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-02.ttl b/test/w3c/turtle/turtle-syntax-prefix-02.ttl
new file mode 100644
index 00000000..99d4ae45
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-02.ttl
@@ -0,0 +1 @@
+PreFIX : <http://www.w3.org/2013/TurtleTests/>
diff --git a/test/w3c/turtle/turtle-syntax-prefix-03.ttl b/test/w3c/turtle/turtle-syntax-prefix-03.ttl
new file mode 100644
index 00000000..c834d10f
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-03.ttl
@@ -0,0 +1,2 @@
+PREFIX : <http://www.w3.org/2013/TurtleTests/>
+:s :p :123 .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-04.ttl b/test/w3c/turtle/turtle-syntax-prefix-04.ttl
new file mode 100644
index 00000000..4ff94dc0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-04.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p :%20 .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-05.ttl b/test/w3c/turtle/turtle-syntax-prefix-05.ttl
new file mode 100644
index 00000000..30441026
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-05.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+: : : .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-06.ttl b/test/w3c/turtle/turtle-syntax-prefix-06.ttl
new file mode 100644
index 00000000..7044be5a
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-06.ttl
@@ -0,0 +1,4 @@
+# colon is a legal pname character
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+@prefix x: <http://www.w3.org/2013/TurtleTests/> .
+:a:b:c x:d:e:f :::: .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-07.ttl b/test/w3c/turtle/turtle-syntax-prefix-07.ttl
new file mode 100644
index 00000000..1db61e8a
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-07.ttl
@@ -0,0 +1,3 @@
+# dash is a legal pname character
+@prefix x: <http://www.w3.org/2013/TurtleTests/> .
+x:a-b-c x:p x:o .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-08.ttl b/test/w3c/turtle/turtle-syntax-prefix-08.ttl
new file mode 100644
index 00000000..f969a4af
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-08.ttl
@@ -0,0 +1,3 @@
+# underscore is a legal pname character
+@prefix x: <http://www.w3.org/2013/TurtleTests/> .
+x:_ x:p_1 x:o .
diff --git a/test/w3c/turtle/turtle-syntax-prefix-09.ttl b/test/w3c/turtle/turtle-syntax-prefix-09.ttl
new file mode 100644
index 00000000..5c57ebea
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-prefix-09.ttl
@@ -0,0 +1,4 @@
+# percents
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+@prefix x: <http://www.w3.org/2013/TurtleTests/> .
+:a%3E x:%25 :a%3Eb .
diff --git a/test/w3c/turtle/turtle-syntax-str-esc-01.ttl b/test/w3c/turtle/turtle-syntax-str-esc-01.ttl
new file mode 100644
index 00000000..f11f2827
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-str-esc-01.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "a\n" .
diff --git a/test/w3c/turtle/turtle-syntax-str-esc-02.ttl b/test/w3c/turtle/turtle-syntax-str-esc-02.ttl
new file mode 100644
index 00000000..0b77f95a
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-str-esc-02.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "a\u0020b" .
diff --git a/test/w3c/turtle/turtle-syntax-str-esc-03.ttl b/test/w3c/turtle/turtle-syntax-str-esc-03.ttl
new file mode 100644
index 00000000..af1e3281
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-str-esc-03.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "a\U00000020b" .
diff --git a/test/w3c/turtle/turtle-syntax-string-01.ttl b/test/w3c/turtle/turtle-syntax-string-01.ttl
new file mode 100644
index 00000000..7bf8a6d4
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-01.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "string" .
diff --git a/test/w3c/turtle/turtle-syntax-string-02.ttl b/test/w3c/turtle/turtle-syntax-string-02.ttl
new file mode 100644
index 00000000..8cb89e98
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-02.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "string"@en .
diff --git a/test/w3c/turtle/turtle-syntax-string-03.ttl b/test/w3c/turtle/turtle-syntax-string-03.ttl
new file mode 100644
index 00000000..312d1d67
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-03.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> "string"@en-uk .
diff --git a/test/w3c/turtle/turtle-syntax-string-04.ttl b/test/w3c/turtle/turtle-syntax-string-04.ttl
new file mode 100644
index 00000000..3ecdea3a
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-04.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> 'string' .
diff --git a/test/w3c/turtle/turtle-syntax-string-05.ttl b/test/w3c/turtle/turtle-syntax-string-05.ttl
new file mode 100644
index 00000000..f32b6d02
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-05.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> 'string'@en .
diff --git a/test/w3c/turtle/turtle-syntax-string-06.ttl b/test/w3c/turtle/turtle-syntax-string-06.ttl
new file mode 100644
index 00000000..77399380
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-06.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> 'string'@en-uk .
diff --git a/test/w3c/turtle/turtle-syntax-string-07.ttl b/test/w3c/turtle/turtle-syntax-string-07.ttl
new file mode 100644
index 00000000..6c3e6a44
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-07.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> """abc""def''ghi""" .
diff --git a/test/w3c/turtle/turtle-syntax-string-08.ttl b/test/w3c/turtle/turtle-syntax-string-08.ttl
new file mode 100644
index 00000000..2fb0227b
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-08.ttl
@@ -0,0 +1,2 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> """abc
+def""" .
diff --git a/test/w3c/turtle/turtle-syntax-string-09.ttl b/test/w3c/turtle/turtle-syntax-string-09.ttl
new file mode 100644
index 00000000..390c8af9
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-09.ttl
@@ -0,0 +1,2 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> '''abc
+def''' .
diff --git a/test/w3c/turtle/turtle-syntax-string-10.ttl b/test/w3c/turtle/turtle-syntax-string-10.ttl
new file mode 100644
index 00000000..5b6e5c35
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-10.ttl
@@ -0,0 +1,2 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> """abc
+def"""@en .
diff --git a/test/w3c/turtle/turtle-syntax-string-11.ttl b/test/w3c/turtle/turtle-syntax-string-11.ttl
new file mode 100644
index 00000000..7b78abf1
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-string-11.ttl
@@ -0,0 +1,2 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> '''abc
+def'''@en .
diff --git a/test/w3c/turtle/turtle-syntax-struct-01.ttl b/test/w3c/turtle/turtle-syntax-struct-01.ttl
new file mode 100644
index 00000000..990e5160
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-struct-01.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p :o1 , :o2 .
diff --git a/test/w3c/turtle/turtle-syntax-struct-02.ttl b/test/w3c/turtle/turtle-syntax-struct-02.ttl
new file mode 100644
index 00000000..0684b2fe
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-struct-02.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p1 :o1 ;
+ :p2 :o2 .
diff --git a/test/w3c/turtle/turtle-syntax-struct-03.ttl b/test/w3c/turtle/turtle-syntax-struct-03.ttl
new file mode 100644
index 00000000..1e303515
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-struct-03.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p1 :o1 ;
+ :p2 :o2 ;
+ .
diff --git a/test/w3c/turtle/turtle-syntax-struct-04.ttl b/test/w3c/turtle/turtle-syntax-struct-04.ttl
new file mode 100644
index 00000000..3d1bf3b0
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-struct-04.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p1 :o1 ;;
+ :p2 :o2
+ .
diff --git a/test/w3c/turtle/turtle-syntax-struct-05.ttl b/test/w3c/turtle/turtle-syntax-struct-05.ttl
new file mode 100644
index 00000000..c39e0411
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-struct-05.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://www.w3.org/2013/TurtleTests/> .
+:s :p1 :o1 ;
+ :p2 :o2 ;;
+ .
diff --git a/test/w3c/turtle/turtle-syntax-uri-01.ttl b/test/w3c/turtle/turtle-syntax-uri-01.ttl
new file mode 100644
index 00000000..2e2d5baf
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-uri-01.ttl
@@ -0,0 +1 @@
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-uri-02.ttl b/test/w3c/turtle/turtle-syntax-uri-02.ttl
new file mode 100644
index 00000000..f355d38c
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-uri-02.ttl
@@ -0,0 +1,2 @@
+# x53 is capital S
+<http://www.w3.org/2013/TurtleTests/\u0053> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-uri-03.ttl b/test/w3c/turtle/turtle-syntax-uri-03.ttl
new file mode 100644
index 00000000..0ea581af
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-uri-03.ttl
@@ -0,0 +1,2 @@
+# x53 is capital S
+<http://www.w3.org/2013/TurtleTests/\U00000053> <http://www.w3.org/2013/TurtleTests/p> <http://www.w3.org/2013/TurtleTests/o> .
diff --git a/test/w3c/turtle/turtle-syntax-uri-04.ttl b/test/w3c/turtle/turtle-syntax-uri-04.ttl
new file mode 100644
index 00000000..db805c8f
--- /dev/null
+++ b/test/w3c/turtle/turtle-syntax-uri-04.ttl
@@ -0,0 +1,3 @@
+# IRI with all chars in it.
+<http://www.w3.org/2013/TurtleTests/s> <http://www.w3.org/2013/TurtleTests/p>
+<scheme:!$%25&'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> .
diff --git a/test/w3c/turtle/two_LITERAL_LONG2s.nt b/test/w3c/turtle/two_LITERAL_LONG2s.nt
new file mode 100644
index 00000000..af94fe6a
--- /dev/null
+++ b/test/w3c/turtle/two_LITERAL_LONG2s.nt
@@ -0,0 +1,2 @@
+<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" .
diff --git a/test/w3c/turtle/two_LITERAL_LONG2s.ttl b/test/w3c/turtle/two_LITERAL_LONG2s.ttl
new file mode 100644
index 00000000..ceaad3d4
--- /dev/null
+++ b/test/w3c/turtle/two_LITERAL_LONG2s.ttl
@@ -0,0 +1,4 @@
+# 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""" .
diff --git a/test/w3c/turtle/underscore_in_localName.nt b/test/w3c/turtle/underscore_in_localName.nt
new file mode 100644
index 00000000..f9d0c4f1
--- /dev/null
+++ b/test/w3c/turtle/underscore_in_localName.nt
@@ -0,0 +1 @@
+<http://a.example/s_> <http://a.example/p> <http://a.example/o> .
diff --git a/test/w3c/turtle/underscore_in_localName.ttl b/test/w3c/turtle/underscore_in_localName.ttl
new file mode 100644
index 00000000..34596fdf
--- /dev/null
+++ b/test/w3c/turtle/underscore_in_localName.ttl
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:s_ <http://a.example/p> <http://a.example/o> .