You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/06/14 20:19:48 UTC

svn commit: r1493193 [1/5] - in /jena/trunk/jena-arq: src/main/java/org/apache/jena/common/ src/main/java/org/apache/jena/riot/ src/main/java/org/apache/jena/riot/lang/ src/main/java/org/apache/jena/riot/system/ src/test/java/com/hp/hpl/jena/sparql/ sr...

Author: andy
Date: Fri Jun 14 18:19:42 2013
New Revision: 1493193

URL: http://svn.apache.org/r1493193
Log:
Update to latest W3C RDF-WG tests for Turtle and TriG

Added:
    jena/trunk/jena-arq/src/main/java/org/apache/jena/common/
    jena/trunk/jena-arq/src/main/java/org/apache/jena/common/IsoMatcher.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/common/
    jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TC_Common.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TS_Common.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TestIsoMatcher.java
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_spo.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_subject.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_eight_digit_numeric_escape.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_four_digit_numeric_escape.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LICENSE
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1_all_controls.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1_all_controls.ttl   (with props)
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1_all_punctuation.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1_all_punctuation.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1_ascii_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1_ascii_boundaries.ttl   (with props)
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL1_with_UTF8_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL2.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL2_ascii_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL2_ascii_boundaries.ttl   (with props)
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL2_with_UTF8_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1_ascii_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1_ascii_boundaries.ttl   (with props)
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1_with_1_squote.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1_with_1_squote.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1_with_2_squotes.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1_with_2_squotes.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG1_with_UTF8_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_ascii_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_ascii_boundaries.ttl   (with props)
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_with_1_squote.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_with_1_squote.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_with_2_squotes.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_with_2_squotes.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_with_REVERSE_SOLIDUS.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_with_REVERSE_SOLIDUS.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_LONG2_with_UTF8_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/LITERAL_with_UTF8_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/SPARQL_style_base.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/SPARQL_style_prefix.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/anonymous_blank_node_object.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/anonymous_blank_node_subject.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/bareword_a_predicate.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/bareword_a_predicate.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/bareword_decimal.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/bareword_decimal.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/bareword_double.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/bareword_double.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/bareword_integer.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_as_object.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_as_object.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_as_subject.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_as_subject.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_containing_collection.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_containing_collection.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_with_multiple_triples.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/blankNodePropertyList_with_multiple_triples.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/collection_object.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/collection_object.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/collection_subject.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/collection_subject.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/default_namespace_IRI.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/double_lower_case_e.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/double_lower_case_e.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/empty_collection.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/empty_collection.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/first.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/first.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_object.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_object.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_subject.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_subject.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_with_PN_CHARS_BASE_character_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_with_leading_digit.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_with_leading_underscore.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/labeled_blank_node_with_non_leading_extras.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/langtagged_LONG.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/langtagged_LONG_with_subtag.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/langtagged_LONG_with_subtag.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/langtagged_non_LONG.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/langtagged_non_LONG.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/lantag_with_subtag.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/lantag_with_subtag.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/last.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/last.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_false.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_false.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_true.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_true.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_BACKSPACE.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_BACKSPACE.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_CARRIAGE_RETURN.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_CARRIAGE_RETURN.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_CHARACTER_TABULATION.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_CHARACTER_TABULATION.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_FORM_FEED.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_FORM_FEED.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_LINE_FEED.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_LINE_FEED.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_REVERSE_SOLIDUS.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_REVERSE_SOLIDUS.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_escaped_BACKSPACE.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_escaped_CARRIAGE_RETURN.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_escaped_CHARACTER_TABULATION.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_escaped_FORM_FEED.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_escaped_LINE_FEED.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_numeric_escape4.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_numeric_escape4.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/literal_with_numeric_escape8.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_leading_digit.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_leading_digit.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_leading_underscore.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_leading_underscore.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_nfc_PN_CHARS_BASE_character_boundaries.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_nfc_PN_CHARS_BASE_character_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_non_leading_extras.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localName_with_non_leading_extras.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localname_with_COLON.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/localname_with_COLON.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/manifest.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/negative_numeric.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/negative_numeric.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/nested_blankNodePropertyLists.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/nested_blankNodePropertyLists.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/nested_collection.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/nested_collection.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/numeric_with_leading_0.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/numeric_with_leading_0.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/objectList_with_two_objects.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/objectList_with_two_objects.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/old_style_base.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/old_style_prefix.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/percent_escaped_localName.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/percent_escaped_localName.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/positive_numeric.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/positive_numeric.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/predicateObjectList_with_two_objectLists.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/predicateObjectList_with_two_objectLists.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefix_only_IRI.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefix_reassigned_and_used.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefix_reassigned_and_used.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefix_with_PN_CHARS_BASE_character_boundaries.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefix_with_non_leading_extras.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefixed_IRI_object.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefixed_IRI_predicate.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/prefixed_name_datatype.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/repeated_semis_at_end.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/repeated_semis_not_at_end.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/repeated_semis_not_at_end.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/reserved_escaped_localName.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/reserved_escaped_localName.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/sole_blankNodePropertyList.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-eval-struct-01.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-eval-struct-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-eval-struct-02.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-eval-struct-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-01.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-02.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-03.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-04.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-05.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-06.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-07.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-08.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-08.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-09.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-09.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-10.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-10.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-11.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-11.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-12.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-12.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-13.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-13.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-14.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-14.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-15.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-15.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-16.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-16.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-17.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-17.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-18.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-18.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-19.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-19.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-20.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-20.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-21.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-21.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-22.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-22.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-23.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-23.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-24.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-24.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-25.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-25.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-26.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-26.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-27.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-subm-27.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-LITERAL2_with_langtag_and_datatype.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-base-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-base-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-base-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-blank-label-dot-end.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-esc-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-esc-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-esc-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-esc-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-kw-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-kw-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-kw-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-kw-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-kw-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-lang-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-ln-dash-start.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-ln-escape-start.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-ln-escape.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-missing-ns-dot-end.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-missing-ns-dot-start.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-08.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-09.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-10.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-11.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-12.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-n3-extras-13.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-ns-dot-end.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-ns-dot-start.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-num-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-num-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-num-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-num-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-num-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-number-dot-in-anon.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-pname-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-pname-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-pname-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-prefix-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-prefix-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-prefix-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-prefix-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-prefix-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-string-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-string-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-string-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-string-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-string-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-string-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-string-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-08.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-09.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-10.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-11.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-12.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-13.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-14.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-15.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-16.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-struct-17.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-uri-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-uri-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-uri-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-uri-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bad-uri-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-base-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-base-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-base-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-base-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-blank-label.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-08.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-09.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-bnode-10.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-datatypes-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-datatypes-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-file-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-file-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-file-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-kw-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-kw-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-kw-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-lists-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-lists-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-lists-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-lists-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-lists-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-ln-colons.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-ln-dots.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-ns-dots.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-08.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-09.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-10.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-number-11.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-pname-esc-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-pname-esc-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-pname-esc-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-08.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-prefix-09.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-str-esc-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-str-esc-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-str-esc-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-06.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-07.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-08.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-09.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-10.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-string-11.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-struct-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-struct-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-struct-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-struct-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-struct-05.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-uri-01.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-uri-02.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-uri-03.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/turtle-syntax-uri-04.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/two_LITERAL_LONG2s.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/two_LITERAL_LONG2s.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/underscore_in_localName.nt
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/underscore_in_localName.ttl
Removed:
    jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/VocabTestRIOT.java
    jena/trunk/jena-arq/testing/RIOT/Lang/Turtle/
Modified:
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/ARQTestSuite.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/junit/TestItem.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/FactoryTestRiot.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/LangTestCase.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/UnitTestEval.java
    jena/trunk/jena-arq/testing/RIOT/Lang/TurtleSubm/manifest.ttl
    jena/trunk/jena-arq/testing/RIOT/Lang/manifest-all.ttl

Added: jena/trunk/jena-arq/src/main/java/org/apache/jena/common/IsoMatcher.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/common/IsoMatcher.java?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/common/IsoMatcher.java (added)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/common/IsoMatcher.java Fri Jun 14 18:19:42 2013
@@ -0,0 +1,289 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.common ;
+
+import java.util.ArrayList ;
+import java.util.Collection ;
+import java.util.Iterator ;
+import java.util.List ;
+
+import org.apache.jena.atlas.lib.Tuple ;
+
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
+import com.hp.hpl.jena.sparql.util.NodeUtils.EqualityTest ;
+
+// Needs to be back tracking?
+
+/** Simple isomorphism testing
+ * This code is simple and slow.
+ * For graphs, the Graph isomorphism code in Jena is much better (better tested, better performance)
+ * This code can work on any tuples of nodes. 
+ */
+public class IsoMatcher
+{
+    // Possible speed ups 
+    //  A/ Phase 1 - do all non-bNode tuples. / Phase 2 : all tuples with a bNode 
+    //  B/ turn tuples2 into a map, keyed by (1) constants or (2) first term. 
+    
+    static boolean DEBUG = false ;
+    private final List<Tuple<Node>>        tuples1 ;
+    private final List<Tuple<Node>>        tuples2 ;
+    
+//    private final Map<Node, Node>           mapping = new HashMap<>();
+//    private final Queue<Pair<Node, Node>>   causes  = new LinkedList<>() ;  
+    private final EqualityTest nodeTest ;
+
+    static class Mapping
+    {
+        final Node    node1 ;
+        final Node    node2 ;
+        final Mapping parent ;
+
+        static Mapping rootMapping = new Mapping(null, null, null) ;
+        
+        public Mapping(Mapping parent, Node node1, Node node2)
+        {
+            super() ;
+            this.parent = parent ;
+            this.node1 = node1 ;
+            this.node2 = node2 ;
+        }
+
+        public boolean mapped(Node node)    { return map(node) != null ; } 
+        public boolean revmapped(Node node) { return revmap(node) != null ; }
+        
+        public Node map(Node node)
+        {
+            Mapping mapping = this ;
+            while (mapping != rootMapping)
+            {
+                if (mapping.node1.equals(node))
+                    return mapping.node2 ;
+                mapping = mapping.parent ;
+            }
+            return null ;
+        }
+        
+        // Reverse mapping.
+        public Node revmap(Node node)
+        {
+            Mapping mapping = this ;
+            while (mapping != rootMapping)
+            {
+                if (mapping.node2.equals(node))
+                    return mapping.node1 ;
+                mapping = mapping.parent ;
+            }
+            return null ;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sbuff = new StringBuilder() ;
+            Mapping mapping = this ;
+            while (mapping != rootMapping)
+            {
+                sbuff.append("{"+mapping.node1+" => "+mapping.node2+"}") ;
+                mapping = mapping.parent ;
+            }
+            sbuff.append("{}") ;
+            return sbuff.toString() ;
+        }
+    }
+    
+    static class Cause
+    {
+        final Tuple<Node>  tuple ;
+        final Mapping mapping ;
+
+        public Cause(Tuple<Node> tuple, Mapping mapping)
+        {
+            super() ;
+            this.tuple = tuple ;
+            this.mapping = mapping ;
+        }
+    }
+
+    public static boolean isomorphic(Graph g1, Graph g2)
+    {
+        List<Tuple<Node>> x1 = tuplesTriples(g1.find(null, null, null)) ;
+        List<Tuple<Node>> x2 = tuplesTriples(g2.find(null, null, null)) ;
+        
+        IsoMatcher matcher = new IsoMatcher(x1, x2, NodeUtils.sameTerm) ;
+        return matcher.match() ;
+    }
+
+    public static boolean isomorphic(DatasetGraph dsg1, DatasetGraph dsg2)
+    {
+        List<Tuple<Node>> x1 = tuplesQuads(dsg1.find()) ;
+        List<Tuple<Node>> x2 = tuplesQuads(dsg2.find()) ;
+        
+        IsoMatcher matcher = new IsoMatcher(x1, x2, NodeUtils.sameTerm) ;
+        return matcher.match() ;
+    }
+
+    public static boolean isomorphic(List<Tuple<Node>> x1, List<Tuple<Node>> x2) {
+        x1 = new ArrayList<Tuple<Node>>(x1) ;
+        x2 = new ArrayList<Tuple<Node>>(x2) ;
+        IsoMatcher matcher = new IsoMatcher(x1, x2, NodeUtils.sameTerm) ;
+        return matcher.match() ;
+    }
+
+
+    private static List<Tuple<Node>> tuplesTriples(Iterator<Triple> iter) {
+        List<Tuple<Node>> tuples = new ArrayList<Tuple<Node>>() ;
+        for ( ; iter.hasNext() ; ) {
+            Triple t = iter.next() ;
+            Tuple<Node> tuple = Tuple.create(t.getSubject(), t.getPredicate(), t.getObject()) ;
+            tuples.add(tuple) ;
+        }
+        return tuples ;
+    }
+
+    private static List<Tuple<Node>> tuplesQuads(Iterator<Quad> iter) {
+        List<Tuple<Node>> tuples = new ArrayList<Tuple<Node>>() ;
+        for ( ; iter.hasNext() ; ) {
+            Quad q = iter.next() ;
+            Tuple<Node> tuple = Tuple.create(q.getGraph(), q.getSubject(), q.getPredicate(), q.getObject()) ;
+            tuples.add(tuple) ;
+        }
+        return tuples ;
+    }
+
+    private IsoMatcher(List<Tuple<Node>> g1, List<Tuple<Node>> g2, EqualityTest nodeTest)
+    {
+        this.tuples1 = g1 ;
+        this.tuples2 = g2 ;
+        this.nodeTest = nodeTest ;
+    }
+
+    // May MUTATE tuples1 or tuples2 
+    private boolean match()
+    {
+        return match(tuples1, tuples2, Mapping.rootMapping) ;
+    }
+
+    private boolean match(List<Tuple<Node>> tuples1, List<Tuple<Node>> tuples2, Mapping mapping)
+    {
+        if ( DEBUG ) {
+            System.out.println("match: ") ;
+            System.out.println("  "+tuples1) ;
+            System.out.println("  "+tuples2) ;
+            System.out.println("  "+mapping) ; 
+        }
+        if ( tuples1.size() != tuples2.size() )
+            return false;
+        
+        List<Tuple<Node>> tuples = new ArrayList<Tuple<Node>>(tuples1) ;  // Copy, mutate
+        for ( Tuple<Node> t1 : tuples1 ) {
+            if ( DEBUG )
+                System.out.println("  t1 = "+t1) ;
+            tuples.remove(t1) ;
+            List<Cause> causes = match(t1, tuples2, mapping) ;
+            for ( Cause c : causes ) {
+                if ( DEBUG ) 
+                    System.out.println("  Try: "+c.mapping) ;
+                // Try t1 -> t2
+                Tuple<Node> t2 = c.tuple ;
+                tuples2.remove(t2) ;
+                if ( tuples2.isEmpty() )
+                    return true ;
+                if ( match(tuples, tuples2, c.mapping) ) {
+                    if ( DEBUG ) 
+                        System.out.println("Yes") ;
+                    return true ;
+                }
+                if ( DEBUG ) 
+                    System.out.println("No") ;
+                tuples2.add(t2) ;
+            }
+            return false ;
+        }
+        // The empty-empty case
+        return true ;
+    }
+
+    private List<Cause> match(Tuple<Node> t1, Collection<Tuple<Node>> g2, Mapping mapping)
+    {
+        List<Cause> matches = new ArrayList<Cause>() ;
+        for (Tuple<Node> t2 : g2)
+        {
+            // No - multiple bNodes.
+            Mapping step = gen(t1, t2, mapping) ;
+            if (step != null) { 
+                Cause c = new Cause(t2, step) ;
+                matches.add(c) ;
+            }
+        }
+        return matches ;
+    }
+
+    // -------------------------------
+    
+//    private Triple subtitute(Triple t, Mapping mapping) {
+//        if ( mapping == null )
+//            return t ;
+//        Node s = mapping.map(t.getSubject()) ;
+//        Node p = mapping.map(t.getPredicate()) ;
+//        Node o = mapping.map(t.getPredicate()) ;
+//        return Triple.create(s,p,o) ;
+//    }
+
+    // Maybe several mappings!
+    private Mapping gen(Tuple<Node> t1, Tuple<Node> t2, Mapping _mapping)
+    {
+        if ( t1.size() != t2.size() )
+            return null ;
+        
+        Mapping mapping = _mapping ;
+        for ( int i = 0 ; i < t1.size() ; i++ ) {
+            Node n1 = t1.get(i) ;
+            Node n2 = t2.get(i) ;
+            if ( ! nodeTest.equal(n1, n2) )
+            {
+                mapping = gen(n1, n2, mapping) ;
+                if ( mapping == null )
+                    return null ;
+            }
+        }            
+        return mapping ;
+    }
+
+    private Mapping gen(Node x1, Node x2, Mapping mapping) {
+        if ( x1.isBlank() && x2.isBlank() ) {
+            // Is x1 already mapped?
+            Node z = mapping.map(x1) ;
+            if ( z != null )
+                // Already mapped
+                return (nodeTest.equal(x2, z)) ? mapping : null ;
+            // Check reverse
+            if ( mapping.revmapped(x2) )
+                return null ;
+            return new Mapping(mapping, x1, x2) ;
+            
+        }
+        return null ;
+    }
+    
+}

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java Fri Jun 14 18:19:42 2013
@@ -432,7 +432,7 @@ public class RDFDataMgr
      */
     public static void read(DatasetGraph dataset, String uri)
     {
-        read(dataset, uri, null, null) ;
+        read(dataset, uri, null) ;
     }
 
     /** Read quads or triples into a Dataset from the given location, with hint of language.
@@ -457,6 +457,31 @@ public class RDFDataMgr
         read(dataset, uri, hintLang, null) ;
     }
 
+    /** Read quads or triples into a Dataset from the given location, with hint of language.
+     * @see #read(Dataset, String, String, Lang, Context) 
+     * @param dataset   Destination
+     * @param uri       URI to read from (includes file: and a plain file name).
+     * @param base      Base URI (defaults to uri).
+     * @param hintLang  Language syntax
+     */
+    public static void read(Dataset dataset, String uri, String base, Lang hintLang)
+    {
+        read(dataset.asDatasetGraph(), uri, base, hintLang) ;
+    }
+
+    /** Read quads or triples into a Dataset from the given location, with hint of language.
+     * @see #read(DatasetGraph, String, String, Lang, Context) 
+     * @param dataset   Destination
+     * @param uri       URI to read from (includes file: and a plain file name).
+     * @param base      Base URI (defaults to uri).
+     * @param hintLang  Language syntax
+     */
+    public static void read(DatasetGraph dataset, String uri, String base, Lang hintLang)
+    {
+        read(dataset, uri, base, hintLang, null) ;
+    }
+
+
     /** Read quads or triples into a Dataset from the given location. 
      * @see #read(Dataset, String, String, Lang, Context) 
      * @param dataset   Destination
@@ -483,6 +508,7 @@ public class RDFDataMgr
      * @see #read(Dataset, String, String, Lang, Context) 
      * @param dataset   Destination
      * @param uri       URI to read from (includes file: and a plain file name).
+     * @param base      Base URI (defaults to uri).
      * @param hintLang  Language syntax
 	 * @param context   Context for the reader
 	 * @throws RiotNotFoundException if the location is not found - the dataset is unchanged.
@@ -498,6 +524,7 @@ public class RDFDataMgr
      * @see #read(Dataset, String, String, Lang, Context) 
      * @param dataset   Destination
      * @param uri       URI to read from (includes file: and a plain file name).
+     * @param base      Base URI (defaults to uri).
      * @param hintLang  Language syntax
 	 * @param context   Context for the reader
 	 * @throws RiotNotFoundException if the location is not found - the dataset is unchanged.

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java Fri Jun 14 18:19:42 2013
@@ -83,8 +83,9 @@ public class LangNQuads extends LangNTup
         if ( xToken.getType() != TokenType.DOT )
         {
             // Allow bNodes for graph names.
-            //checkIRIOrBNode(xToken) ;
-            checkIRI(xToken) ;
+            checkIRIOrBNode(xToken) ;
+            // Allow only IRIs
+            //checkIRI(xToken) ;
             c = tokenAsNode(xToken) ;
             xToken = nextToken() ;
             currentGraph = c ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java Fri Jun 14 18:19:42 2013
@@ -151,7 +151,7 @@ public class LangTriG extends LangTurtle
         // It is not in N3 and SPARQL.
         
         // No trailing DOT is allowed by strict TriG.
-        if ( false /*strict*/ )
+        if ( profile.isStrictMode() )
         {
             expect("Triples not terminated by DOT", DOT) ;
             return ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java Fri Jun 14 18:19:42 2013
@@ -31,6 +31,9 @@ public class ErrorHandlerFactory
     /** Standard error handler - logs to stdLogger */
     static public final ErrorHandler errorHandlerStd          = errorHandlerStd(stdLogger) ;
 
+    /** Error handler (no wanrings) - logs to stdLogger */
+    static public final ErrorHandler errorHandlerNoWarnings   = errorHandlerNoWarnings(stdLogger) ;
+
     /** Strict error handler - logs to stdLogger - exceptions for warnings */
     static public final ErrorHandler errorHandlerStrict       = errorHandlerStrict(stdLogger) ;
     
@@ -43,11 +46,12 @@ public class ErrorHandlerFactory
     /** Silent, strict error handler */
     static public final ErrorHandler errorHandlerStrictNoLogging    = errorHandlerStrictSilent() ;
 
-    public static ErrorHandler errorHandlerStrictSilent()       { return new ErrorHandlerStrict(null) ; }
-    public static ErrorHandler errorHandlerStrict(Logger log)   { return new ErrorHandlerStrict(log) ; }
-    public static ErrorHandler errorHandlerStd(Logger log)      { return new ErrorHandlerStd(log) ; }
-    public static ErrorHandler errorHandlerWarning(Logger log)  { return new ErrorHandlerWarning(log) ; }
-    public static ErrorHandler errorHandlerSimple()             { return new ErrorHandlerSimple() ; }
+    public static ErrorHandler errorHandlerStrictSilent()           { return new ErrorHandlerStrict(null) ; }
+    public static ErrorHandler errorHandlerStrict(Logger log)       { return new ErrorHandlerStrict(log) ; }
+    public static ErrorHandler errorHandlerStd(Logger log)          { return new ErrorHandlerStd(log) ; }
+    public static ErrorHandler errorHandlerNoWarnings(Logger log)   { return new ErrorHandlerNoWarnings(log) ; }
+    public static ErrorHandler errorHandlerWarning(Logger log)      { return new ErrorHandlerWarning(log) ; }
+    public static ErrorHandler errorHandlerSimple()                 { return new ErrorHandlerSimple() ; }
     
     private static ErrorHandler defaultErrorHandler = errorHandlerStd ;
     /** Get the current default error handler */ 
@@ -133,6 +137,36 @@ public class ErrorHandlerFactory
         }
     }
     
+    /** An error handler that logs message then throws exceptions for errors but not warnings */ 
+    private static class ErrorHandlerNoWarnings extends ErrorLogger implements ErrorHandler
+    {
+        public ErrorHandlerNoWarnings(Logger log)
+        {
+            super(log) ;
+        }
+        
+        /** report a warning */
+        @Override
+        public void warning(String message, long line, long col)
+        { } //logWarning(message, line, col) ;
+        
+        /** report an error */
+        @Override
+        public void error(String message, long line, long col)
+        { 
+            logError(message, line, col) ;
+            throw new RiotException(fmtMessage(message, line, col)) ;
+        }
+
+        /** report a fatal error - does not return */
+        @Override
+        public void fatal(String message, long line, long col)
+        {
+            logFatal(message, line, col) ;
+            throw new RiotException(fmtMessage(message, line, col)) ;
+        }
+    }
+
     /** An error handler that logs message for errors and warnings and throw exceptions on either */ 
     private static class ErrorHandlerStrict extends ErrorLogger implements ErrorHandler
     {

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/ARQTestSuite.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/ARQTestSuite.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/ARQTestSuite.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/ARQTestSuite.java Fri Jun 14 18:19:42 2013
@@ -22,6 +22,7 @@ import junit.framework.JUnit4TestAdapter
 import junit.framework.TestSuite ;
 import org.apache.jena.atlas.TC_Atlas ;
 import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.common.TC_Common ;
 import org.apache.jena.riot.TC_Riot ;
 import arq.TS_Cmd ;
 
@@ -53,6 +54,7 @@ public class ARQTestSuite extends TestSu
         
         // ARQ dependencies
         ts.addTest(new JUnit4TestAdapter(TC_Atlas.class)) ;
+        ts.addTest(new JUnit4TestAdapter(TC_Common.class)) ;
         ts.addTest(new JUnit4TestAdapter(TC_Riot.class)) ;
 
         ts.addTest(new JUnit4TestAdapter(TS_Cmd.class)) ;

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/junit/TestItem.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/junit/TestItem.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/junit/TestItem.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/junit/TestItem.java Fri Jun 14 18:19:42 2013
@@ -131,29 +131,6 @@ public class TestItem
 
     public String getResultFile() { return resultFile ; }
     
-//    /** Load a model that is the results - need not be a result set */ 
-//    public Model getResultModel()
-//    {
-//        if ( resultFile == null )
-//            return null ;
-//        Model model = GraphFactory.makeJenaDefaultModel() ;
-//        
-//        ResultSetFormat format = ResultSetFormat.guessSyntax(resultFile) ;
-//        
-//        if ( ! format.isRDFGraphSyntax() )
-//            return null ;
-//        
-//        // Like ResultSetFactory.loadAsModel(filename) except we have control of the model type.
-//        try { 
-//            ResultSetFactory.loadAsModel(model, resultFile) ;
-//        } catch (RuntimeException ex)
-//        {
-//            System.err.println("Failed to read results: "+resultFile) ;
-//            ex.printStackTrace(System.err) ;
-//        }
-//        return model ; 
-//    }
-    
     /** Load results as a SPARQLResult.  If the results are a model, 
      * no conversion to a result set is attempted here.  
      */

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TC_Common.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TC_Common.java?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TC_Common.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TC_Common.java Fri Jun 14 18:19:42 2013
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.common;
+
+import org.junit.runner.RunWith ;
+import org.junit.runners.Suite ;
+import org.junit.runners.Suite.SuiteClasses ;
+
+@RunWith(Suite.class)
+@SuiteClasses(
+{
+    TS_Common.class
+})
+
+public class TC_Common
+{
+}
+

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TS_Common.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TS_Common.java?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TS_Common.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TS_Common.java Fri Jun 14 18:19:42 2013
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.common;
+
+import org.junit.runner.RunWith ;
+import org.junit.runners.Suite ;
+import org.junit.runners.Suite.SuiteClasses ;
+
+@RunWith(Suite.class)
+@SuiteClasses(
+{
+    TestIsoMatcher.class
+})
+
+public class TS_Common
+{
+}
+

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TestIsoMatcher.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TestIsoMatcher.java?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TestIsoMatcher.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/common/TestIsoMatcher.java Fri Jun 14 18:19:42 2013
@@ -0,0 +1,256 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.common;
+
+import java.util.ArrayList ;
+import java.util.List ;
+
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.atlas.lib.Tuple ;
+import org.apache.jena.common.IsoMatcher ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.sse.Item ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+import com.hp.hpl.jena.sparql.sse.builders.BuilderNode ;
+
+public class TestIsoMatcher extends BaseTest
+{
+    @Test public void iso_00() { testGraph("",
+                                           "",
+                                           true) ; }
+
+
+    @Test public void iso_01() { testGraph("(<x> <p> 1)",
+                                           "(<x> <p> 1)",
+                                           true) ; }
+
+    @Test public void iso_02() { testGraph("(<x> <p> 1)",
+                                           "(<x> <p> 2)",
+                                           false) ; }
+
+    @Test public void iso_03() { testGraph("(<x> <p> 1) (<x> <p> 2)",
+                                           "(<x> <p> 2)",
+                                           false) ; }
+
+    @Test public void iso_04() { testGraph("(<x> <p> _:a)",
+                                           "(<x> <p> 2)",
+                                           false) ; }
+
+    @Test public void iso_05() { testGraph("(<x> <p> _:a)",
+                                           "(<x> <p> _:b)",
+                                           true) ; }
+
+    @Test public void iso_06() { testGraph("(_:a <p> _:a)",
+                                           "(_:b <p> _:b)",
+                                           true)  ; }
+
+    @Test public void iso_07() { testGraph("(_:a1 <p> _:a2)",
+                                           "(_:bb <p> _:bb)",
+                                           false)  ; }
+
+    @Test public void iso_10() { testGraph("(_:a _:a _:a)",
+                                           "(_:b _:b _:b)",
+                                           true)  ; }
+
+    @Test public void iso_11() { testGraph("(_:a _:a _:a)",
+                                           "(_:z _:b _:b)",
+                                           false)  ; }
+
+    @Test public void iso_12() { testGraph("(_:a _:a _:a)",
+                                           "(_:b _:z _:b)",
+                                           false)  ; }
+
+    @Test public void iso_13() { testGraph("(_:a _:a _:a)",
+                                           "(_:b _:b _:z)",
+                                           false)  ; }
+
+    @Test public void iso_14() { testGraph("(_:a _:a _:b)",
+                                           "(_:b _:b _:z)",
+                                           true)  ; }
+
+    @Test public void iso_15() { testGraph("(_:a _:x _:a)",
+                                           "(_:b _:z _:b)",
+                                           true)  ; }
+
+    @Test public void iso_16() { testGraph("(_:x _:a _:a)",
+                                           "(_:z _:b _:b)",
+                                           true)  ; }
+
+    @Test public void iso_20() { testGraph("(<x> <p> _:a) (<z> <p> _:a)",
+                                           "(<x> <p> _:b) (<z> <p> _:b)",
+                                           true)  ; }
+
+    @Test public void iso_21() { testGraph("(<x> <p> _:a1) (<z> <p> _:a2)",
+                                           "(<x> <p> _:b) (<z> <p> _:b)",
+                                           false)  ; }
+
+    @Test public void iso_22() { testGraph("(_:a <p> _:a) (<s> <q> _:a)",
+                                           "(_:b <p> _:b) (<s> <q> _:b)",
+                                           true)  ; }
+
+    @Test public void iso_23() { testGraph("(_:a <p> _:a) (<s> <q> _:a)",
+                                           "(_:b <p> _:b) (<s> <q> _:c)",
+                                           false)  ; }
+
+    @Test public void iso_24() { testGraph("(_:a <p> _:a) (<s> <q> _:a) (_:b <q> _:b)",
+                                           "(_:b <p> _:b) (<s> <q> _:b) (_:b <q> _:b)",
+                                           false)  ; }
+
+    @Test public void iso_50() { testDSG("(graph (_:a <p> _:a)) (graph <g> (<s> <q> _:a))" ,
+                                         "(graph (_:a <p> _:a)) (graph <g> (<s> <q> _:a))" ,
+                                         true)  ; }
+
+    // Graphs separately isomorphic.
+    @Test public void iso_51() { testDSG("(graph (_:a <p> _:a)) (graph <g> (<s> <q> _:a))" ,
+                                         "(graph (_:a <p> _:a)) (graph <g> (<s> <q> _:b))" ,
+                                         false)  ; }
+    
+    // List based tests
+    @Test public void iso_61() { 
+        String[] x1 = {} ;
+        String[] x2 = {} ;
+        test(x1, x2, true) ;
+        }
+
+    @Test public void iso_62() { 
+        String[] x1 = {"(<x> <p> 1)"} ;
+        String[] x2 = {} ;
+        test(x1, x2, false) ;
+        }
+
+    @Test public void iso_63() { 
+        String[] x1 = {"(_:x <p> 1)"} ;
+        String[] x2 = {"(_:y <p> 1)"} ;
+        test(x1, x2, true) ;
+        }
+    
+    @Test public void iso_64() { 
+        String[] x1 = {"(_:x <p> 1)", "(_:x <p> 1)"} ;
+        String[] x2 = {"(_:y <p> 1)", "(_:x <p> 1)"} ;
+        test(x1, x2, true) ;
+        }
+
+    @Test public void iso_65() { 
+        String[] x1 = {"(_:x <p> 1)","(_:y <p> 1)"} ;
+        String[] x2 = {"(_:y <p> 1)","(_:x <p> 1)"} ;
+        test(x1, x2, true) ;
+        }
+
+    // Backtracking. _:a -> _y needs unwinding.
+    @Test public void iso_66() { 
+        String[] x1 = {"(_:a <p> 1)","(_:b <p> 1)","(_:a <p> 2)"} ;
+        String[] x2 = {"(_:y <p> 1)","(_:z <p> 1)","(_:z <p> 2)"} ;
+        test(x1, x2, true) ;
+        }
+
+    private void test(String[] x1, String[] x2, boolean iso)
+    {
+        List<Tuple<Node>> t1 = tuples(x1) ;
+        List<Tuple<Node>> t2 = tuples(x2) ;
+        test$(t1, t2, iso) ;
+    }
+        
+    private void test$(List<Tuple<Node>> t1, List<Tuple<Node>> t2, boolean iso)
+    {
+        boolean b = IsoMatcher.isomorphic(t1, t2) ;
+        if ( b != iso ) {
+            System.out.println("====") ;
+            System.out.println(t1) ;
+            System.out.println("----") ;
+            System.out.println(t2) ;
+            System.out.println("Expected: "+iso+" ; got: "+b) ;
+        }
+        assertEquals(iso, b) ;
+    }
+
+
+    private static Node[] T = new Node[0] ;
+    private List<Tuple<Node>> tuples(String[] strings)
+    {
+        List<Tuple<Node>> tuples = new ArrayList<Tuple<Node>>() ;
+        for ( String s : strings)
+        {
+            Item item = SSE.parse(s) ;
+            List<Node> list = BuilderNode.buildNodeList(item) ;
+            Tuple<Node> tuple = Tuple.create(list.toArray(T)) ;
+            tuples.add(tuple) ;
+        }
+        return tuples ;
+    }
+
+
+    private void testGraph(String s1, String s2, boolean iso) {
+        testGraph$(s1, s2, iso) ;
+        testGraph$(s2, s1, iso) ;
+    }
+    
+    private void testGraph$(String s1, String s2, boolean iso) {
+        s1 = "(graph "+s1+")" ;
+        s2 = "(graph "+s2+")" ;
+        
+        Graph g1 = SSE.parseGraph(s1) ;
+        Graph g2 = SSE.parseGraph(s2) ;
+        boolean b = IsoMatcher.isomorphic(g1, g2) ;
+            
+        if ( b != iso ) {
+            System.out.println("====") ;
+            SSE.write(g1) ;
+            System.out.println("----") ;
+            SSE.write(g2) ;
+            System.out.println("Expected: "+iso+" ; got: "+b) ;
+        }
+        assertEquals(iso, b) ;
+        // Check with the other code.
+        assertEquals(b, g1.isIsomorphicWith(g2)) ;
+    }
+    
+    private void testDSG(String s1, String s2, boolean iso) {
+        testDSG$(s1, s2, iso) ;
+        testDSG$(s2, s1, iso) ;
+    }
+
+    private void testQuads(String s1, String s2, boolean iso) {
+        //XXX
+//        testDSG$(s1, s2, iso) ;
+//        testDSG$(s2, s1, iso) ;
+    }
+
+    private void testDSG$(String s1, String s2, boolean iso) {
+        s1 = "(dataset "+s1+")" ;
+        s2 = "(dataset "+s2+")" ;
+        
+        DatasetGraph dsg1 = SSE.parseDatasetGraph(s1) ;
+        DatasetGraph dsg2 = SSE.parseDatasetGraph(s2) ;
+        boolean b = IsoMatcher.isomorphic(dsg1, dsg2) ;
+        if ( b != iso ) {
+            System.out.println("====") ;
+            SSE.write(dsg1) ;
+            System.out.println("----") ;
+            SSE.write(dsg2) ;
+            System.out.println("Expected: "+iso+" ; got: "+b) ;
+        }
+        assertEquals(iso, b) ;
+    }
+    
+
+}

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/FactoryTestRiot.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/FactoryTestRiot.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/FactoryTestRiot.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/FactoryTestRiot.java Fri Jun 14 18:19:42 2013
@@ -22,7 +22,6 @@ import junit.framework.Test ;
 import junit.framework.TestSuite ;
 import org.apache.jena.riot.RDFLanguages ;
 import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.VocabTestRIOT ;
 
 import com.hp.hpl.jena.rdf.model.Resource ;
 import com.hp.hpl.jena.sparql.junit.EarlReport ;
@@ -32,6 +31,10 @@ import com.hp.hpl.jena.vocabulary.RDF ;
 
 public class FactoryTestRiot extends TestFactoryManifest
 {
+    public static String assumedRootURIex = "http://example/base/" ;
+    public static String assumedRootURITurtle = "http://www.w3.org/2013/TurtleTests/" ;
+    public static String assumedRootURITriG = "http://www.w3.org/2013/TriGTests/" ;
+    
     public static EarlReport report = null ;
     
     public static TestSuite make(String manifest, Resource dftTestType, String labelPrefix)
@@ -44,8 +47,6 @@ public class FactoryTestRiot extends Tes
 
     public FactoryTestRiot(Resource dftTestType, String labelPrefix)
     {
-        // FileManager? 
-        
         this.dftTestType = dftTestType ;
         this.labelPrefix = labelPrefix ;
     }
@@ -68,23 +69,30 @@ public class FactoryTestRiot extends Tes
             Resource input = action ;
             Resource output = result ; 
             
-            String baseIRI = VocabTestRIOT.assumedBaseURI ;
-            String x = input.getLocalName() ;
-            // Yuk, yuk, yuk.
-            baseIRI = baseIRI+x ;
-
             if ( r.equals(VocabLangRDF.TestPositiveSyntaxTTL) )
                 return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TURTLE, report) ;
             
             if ( r.equals(VocabLangRDF.TestNegativeSyntaxTTL) )
                 return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TURTLE, report) ;
 
+            if ( r.equals(VocabLangRDF.TestPositiveSyntaxTriG) )
+                return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TRIG, report) ;
+            
+            if ( r.equals(VocabLangRDF.TestNegativeSyntaxTriG) )
+                return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TRIG, report) ;
+
             if ( r.equals(VocabLangRDF.TestPositiveSyntaxNT) )
                 return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NTRIPLES, report) ;
             
             if ( r.equals(VocabLangRDF.TestNegativeSyntaxNT) )
                 return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NTRIPLES, report) ;
 
+            if ( r.equals(VocabLangRDF.TestPositiveSyntaxNQ) )
+                return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NQUADS, report) ;
+            
+            if ( r.equals(VocabLangRDF.TestNegativeSyntaxNQ) )
+                return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NQUADS, report) ;
+
             if ( r.equals(VocabLangRDF.TestPositiveSyntaxRJ) )
                 return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.RDFJSON, report) ;
             
@@ -96,25 +104,37 @@ public class FactoryTestRiot extends Tes
 
             // Eval.
             
-            if ( r.equals(VocabLangRDF.TestEvalTTL) )
-                return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), baseIRI, RDFLanguages.TURTLE, report) ;
+            if ( r.equals(VocabLangRDF.TestEvalTTL) ) {
+                String base = rebase(input, assumedRootURITurtle) ;
+                return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), base, RDFLanguages.TURTLE, report) ;
+            }
+
+            if ( r.equals(VocabLangRDF.TestEvalTriG) ) {
+                String base = rebase(input, assumedRootURITriG) ;
+                return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), base, RDFLanguages.TRIG, report) ;
+            }
 
             if ( r.equals(VocabLangRDF.TestNegativeEvalTTL) )
                 return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.TURTLE, report) ;
             
+            if ( r.equals(VocabLangRDF.TestNegativeEvalTriG) )
+                return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.TRIG, report) ;
+
             if ( r.equals(VocabLangRDF.TestEvalNT) )
-                return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), baseIRI, RDFLanguages.NTRIPLES, report) ;
+                return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), null, RDFLanguages.NTRIPLES, report) ;
 
             if ( r.equals(VocabLangRDF.TestNegativeEvalNT) )
                 return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.NTRIPLES, report) ;
             
-            if ( r.equals(VocabLangRDF.TestEvalRJ) )
-                return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), baseIRI, RDFLanguages.RDFJSON, report) ;
+            if ( r.equals(VocabLangRDF.TestEvalRJ) ) {
+                String base = rebase(input, assumedRootURIex) ;
+                return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), base, RDFLanguages.RDFJSON, report) ;
+            }
 
             if ( r.equals(VocabLangRDF.TestNegativeEvalRJ) )
                 return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.RDFJSON, report) ;
 
-            System.err.println("Unrecognized turtle test : " + testName) ;
+            System.err.println("Unrecognized turtle test : ("+r+")" + testName) ;
             return null ;
 
         } catch (Exception ex)
@@ -125,4 +145,11 @@ public class FactoryTestRiot extends Tes
         }
     }
 
+    private static String rebase(Resource input, String baseIRI) {
+        String x = input.getLocalName() ;
+        // Yuk, yuk, yuk.
+        baseIRI = baseIRI+x ;
+        return baseIRI ;
+    }
+    
 }

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/LangTestCase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/LangTestCase.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/LangTestCase.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/LangTestCase.java Fri Jun 14 18:19:42 2013
@@ -39,10 +39,13 @@ public abstract class LangTestCase exten
     @Override
     final public void setUp()
     {        
-        //BaseTest.setTestLogging(ErrorHandlerFactory.errorHandlerStrictNoLogging) ;
+        // The W3C Turtle and TriG test suites contain IRIs that generate warnings.
+        // They are bad NFC for the version of UTF-8 that Java6 understands.
+        BaseTest.setTestLogging(ErrorHandlerFactory.errorHandlerNoWarnings) ;
+
         // If the test suite is sloppy, with IRIs that are not good practice, you may need
         // to run with warnings as not-errors ....
-        BaseTest.setTestLogging(ErrorHandlerFactory.errorHandlerStd) ;
+        //BaseTest.setTestLogging(ErrorHandlerFactory.errorHandlerStd) ;
         sysRIOT_strictMode = SysRIOT.strictMode ;
         sysRIOT_strictXSDLexicialForms = SysRIOT.StrictXSDLexicialForms ;
         

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/UnitTestEval.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/UnitTestEval.java?rev=1493193&r1=1493192&r2=1493193&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/UnitTestEval.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/langsuite/UnitTestEval.java Fri Jun 14 18:19:42 2013
@@ -18,18 +18,22 @@
 
 package org.apache.jena.riot.langsuite;
 
-import java.io.InputStream ;
+import java.util.List ;
 
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.common.IsoMatcher ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.RDFLanguages ;
 import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.stream.StreamManager ;
 
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.rdf.model.ModelFactory ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
 import com.hp.hpl.jena.sparql.junit.EarlReport ;
-import com.hp.hpl.jena.util.FileUtils ;
 
 public class UnitTestEval extends LangTestCase
 {
@@ -58,6 +62,89 @@ public class UnitTestEval extends LangTe
     @Override
     public void runTestForReal()
     {
+        // Could generalise run4() to cover both cases.
+        // run3() predates dataset reading and is more tested. 
+        if ( RDFLanguages.isTriples(lang) )
+            run3() ;
+        else
+            run4() ;
+    }
+    
+    private void run4() { 
+        DatasetGraph dsg = DatasetGraphFactory.createMem() ;
+        try {
+            if ( baseIRI != null )
+                RDFDataMgr.read(dsg, input, baseIRI, lang) ;
+            else
+                RDFDataMgr.read(dsg, input, lang) ;
+            
+            Lang outLang = RDFLanguages.filenameToLang(output, Lang.NQUADS) ;
+            
+            DatasetGraph results = DatasetGraphFactory.createMem() ;
+            try {
+                RDFDataMgr.read(results, output, outLang) ;
+            } catch (RiotException ex) {
+                fail("Failed to read results: "+ex.getMessage()) ;
+            }
+
+            boolean b = isomorphic(dsg, results) ;
+
+            if ( !b )
+            {
+                System.out.println("---- Parsed");
+                RDFDataMgr.write(System.out, dsg, Lang.TRIG) ;
+                System.out.println("---- Expected");
+                RDFDataMgr.write(System.out, results, Lang.TRIG) ;
+                System.out.println("--------");
+            }
+            
+            assertTrue("Datasets not isomorphic", b) ;
+        } catch (RiotException ex)
+        {
+            // Catch and rethrow - debugging.
+            throw ex ;    
+        }
+        catch (RuntimeException ex) 
+        { 
+            ex.printStackTrace(System.err) ;
+            throw ex ; }
+    }
+
+    // Imperfect.
+    private boolean isomorphic(DatasetGraph dsg1, DatasetGraph dsg2) {
+        boolean b1 = isomorphicX(dsg1, dsg2) ;
+        boolean b2 = IsoMatcher.isomorphic(dsg1, dsg2) ;
+        if ( b1 != b2 )
+             System.out.println("Unequal isomorphisms") ;
+        return b2 ;
+    }
+        
+    private boolean isomorphicX(DatasetGraph dsg1, DatasetGraph dsg2) {
+        {
+            Graph g1 = dsg1.getDefaultGraph() ;
+            Graph g2 = dsg2.getDefaultGraph() ;
+            boolean b = g1.isIsomorphicWith(g2) ;
+            if ( !b ) return false ;
+        }
+        List<Node> names1 = Iter.toList(dsg1.listGraphNodes()) ;
+        List<Node> names2 = Iter.toList(dsg2.listGraphNodes()) ;
+        if ( names1.size() != names2.size() )
+            return false ;
+        
+        for ( Node gn : names1 ) {
+            Graph g1 = dsg1.getGraph(gn) ;
+            Graph g2 = dsg2.getGraph(gn) ;
+            if ( g1 == null || g2 == null )
+                return false ;
+            boolean b = g1.isIsomorphicWith(g2) ;
+            if ( !b ) return false ;
+        }
+        return true ;
+    }
+    
+    
+    // Triples test.
+    private void run3() {     
         Model model = ModelFactory.createDefaultModel() ;
         try {
             if ( baseIRI != null )
@@ -65,18 +152,31 @@ public class UnitTestEval extends LangTe
             else
                 RDFDataMgr.read(model, input, lang) ;
             
-            String syntax = FileUtils.guessLang(output, FileUtils.langNTriple) ;
-            Model results = ModelFactory.createDefaultModel() ;
-            // Directly get an N-triples reader
-            InputStream in = StreamManager.get().open(output) ;
+            Lang outLang = RDFLanguages.filenameToLang(output, Lang.NQUADS) ;
             
+            Model results = ModelFactory.createDefaultModel() ;
             try {
-                RDFDataMgr.read(results, in, null, RDFLanguages.NTRIPLES) ;
+                RDFDataMgr.read(results, output, outLang) ;
             } catch (RiotException ex) {
                 fail("Failed to read results: "+ex.getMessage()) ;
             }
 
             boolean b = model.isIsomorphicWith(results) ;
+
+//            try {
+//                boolean b1 = IsoMatcher.isomorphic(model.getGraph(), results.getGraph()) ;
+//                if ( b1 != b ) {
+//                    System.out.println("---- IsoMatcher mismatch");
+//                }
+//            } catch ( java.lang.StackOverflowError ex) {
+//                System.out.println("STACK") ;
+//                System.out.println("---- Parsed");
+//                model.write(System.out, "TTL") ;
+//                System.out.println("---- Expected");
+//                results.write(System.out, "TTL") ;
+//                System.out.println("--------");
+//            }
+            
             if ( !b )
             {
                 //model.isIsomorphicWith(results) ;

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.nt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.nt?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.nt (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.nt Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<http://a.example/s-> <http://a.example/p> <http://a.example/o> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.ttl?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.ttl (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/HYPHEN_MINUS_in_localName.ttl Fri Jun 14 18:19:42 2013
@@ -0,0 +1,2 @@
+@prefix p: <http://a.example/>.
+p:s- <http://a.example/p> <http://a.example/o> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.nt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.nt?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.nt (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.nt Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.ttl?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.ttl (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRIREF_datatype.ttl Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_spo.nt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_spo.nt?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_spo.nt (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_spo.nt Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/o> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_subject.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_subject.ttl?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_subject.ttl (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_subject.ttl Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<http://a.example/s> <http://a.example/p> <http://a.example/o> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.nt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.nt?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.nt (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.nt Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.ttl?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.ttl (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_all_punctuation.ttl Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<scheme:!$%25&amp;'()*+,-./0123456789:/@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~?#> <http://a.example/p> <http://a.example/o> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_eight_digit_numeric_escape.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_eight_digit_numeric_escape.ttl?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_eight_digit_numeric_escape.ttl (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_eight_digit_numeric_escape.ttl Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<http://a.example/\U00000073> <http://a.example/p> <http://a.example/o> .

Added: jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_four_digit_numeric_escape.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_four_digit_numeric_escape.ttl?rev=1493193&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_four_digit_numeric_escape.ttl (added)
+++ jena/trunk/jena-arq/testing/RIOT/Lang/TurtleStd/IRI_with_four_digit_numeric_escape.ttl Fri Jun 14 18:19:42 2013
@@ -0,0 +1 @@
+<http://a.example/\u0073> <http://a.example/p> <http://a.example/o> .