aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bad
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bad')
-rw-r--r--tests/bad/bad-00.ttl2
-rw-r--r--tests/bad/bad-01.ttl3
-rw-r--r--tests/bad/bad-02.ttl3
-rw-r--r--tests/bad/bad-03.ttl3
-rw-r--r--tests/bad/bad-04.ttl3
-rw-r--r--tests/bad/bad-05.ttl4
-rw-r--r--tests/bad/bad-06.ttl3
-rw-r--r--tests/bad/bad-07.ttl4
-rw-r--r--tests/bad/bad-08.ttl2
-rw-r--r--tests/bad/bad-09.ttl3
-rw-r--r--tests/bad/bad-10.ttl3
-rw-r--r--tests/bad/bad-11.ttl3
-rw-r--r--tests/bad/bad-12.ttl3
-rw-r--r--tests/bad/bad-13.ttl3
-rw-r--r--tests/bad/bad-14.ttl6
-rw-r--r--tests/bad/bad-base.ttl1
-rw-r--r--tests/bad/bad-blank.ttl3
-rw-r--r--tests/bad/bad-bom.ttl3
-rw-r--r--tests/bad/bad-char-in-local.ttl3
-rw-r--r--tests/bad/bad-char-in-prefix.ttl1
-rw-r--r--tests/bad/bad-char-in-uri.ttl1
-rw-r--r--tests/bad/bad-datatype.ttl1
-rw-r--r--tests/bad/bad-dot-after-subject.ttl1
-rw-r--r--tests/bad/bad-eof-in-blank.ttl3
-rw-r--r--tests/bad/bad-eof-in-escape.ttl3
-rw-r--r--tests/bad/bad-eof-in-lang-suffix.ttl3
-rw-r--r--tests/bad/bad-eof-in-lang.ttl3
-rw-r--r--tests/bad/bad-eof-in-list.ttl3
-rw-r--r--tests/bad/bad-eof-in-object-list.ttl2
-rw-r--r--tests/bad/bad-eof-in-object-list2.ttl2
-rw-r--r--tests/bad/bad-eof-in-predicate-list.ttl2
-rw-r--r--tests/bad/bad-eof-in-string.ttl3
-rw-r--r--tests/bad/bad-eof-in-triple-quote.ttl3
-rw-r--r--tests/bad/bad-eof-in-uri.ttl3
-rw-r--r--tests/bad/bad-escape.ttl1
-rw-r--r--tests/bad/bad-ext-namedblank-op.ttl3
-rw-r--r--tests/bad/bad-hex-digit.ttl1
-rw-r--r--tests/bad/bad-id-clash.ttl2
-rw-r--r--tests/bad/bad-lang.ttl1
-rw-r--r--tests/bad/bad-list.ttl1
-rw-r--r--tests/bad/bad-list2.ttl3
-rw-r--r--tests/bad/bad-long-literal-in-list.ttl1
-rw-r--r--tests/bad/bad-missing-semi.ttl3
-rw-r--r--tests/bad/bad-missing-uri-scheme.nt1
-rw-r--r--tests/bad/bad-namespace.ttl1
-rw-r--r--tests/bad/bad-ns.ttl1
-rw-r--r--tests/bad/bad-num.ttl1
-rw-r--r--tests/bad/bad-object.ttl3
-rw-r--r--tests/bad/bad-object2.ttl3
-rw-r--r--tests/bad/bad-prefix.ttl1
-rw-r--r--tests/bad/bad-semicolon-after-subject.ttl1
-rw-r--r--tests/bad/bad-string.ttl1
-rw-r--r--tests/bad/bad-subject.ttl1
-rw-r--r--tests/bad/bad-uri-escape.ttl1
-rw-r--r--tests/bad/bad-uri-scheme-start.nt1
-rw-r--r--tests/bad/bad-uri-scheme.nt1
-rw-r--r--tests/bad/bad-uri-truncated.nt1
-rw-r--r--tests/bad/bad-verb.ttl2
-rw-r--r--tests/bad/invalid-char-in-local.ttl3
-rw-r--r--tests/bad/invalid-char-in-prefix.ttl1
-rw-r--r--tests/bad/manifest.ttl371
61 files changed, 503 insertions, 0 deletions
diff --git a/tests/bad/bad-00.ttl b/tests/bad/bad-00.ttl
new file mode 100644
index 00000000..b1a1b361
--- /dev/null
+++ b/tests/bad/bad-00.ttl
@@ -0,0 +1,2 @@
+# prefix name must end in a :
+@prefix a <#> .
diff --git a/tests/bad/bad-01.ttl b/tests/bad/bad-01.ttl
new file mode 100644
index 00000000..533bc21d
--- /dev/null
+++ b/tests/bad/bad-01.ttl
@@ -0,0 +1,3 @@
+# Forbidden by RDF - predicate cannot be blank
+@prefix : <http://example.org/base#> .
+:a [ :b :c ] :d .
diff --git a/tests/bad/bad-02.ttl b/tests/bad/bad-02.ttl
new file mode 100644
index 00000000..fd2014d0
--- /dev/null
+++ b/tests/bad/bad-02.ttl
@@ -0,0 +1,3 @@
+# Forbidden by RDF - predicate cannot be blank
+@prefix : <http://example.org/base#> .
+:a [] :b .
diff --git a/tests/bad/bad-03.ttl b/tests/bad/bad-03.ttl
new file mode 100644
index 00000000..07a372f1
--- /dev/null
+++ b/tests/bad/bad-03.ttl
@@ -0,0 +1,3 @@
+# 'a' only allowed as a predicate
+@prefix : <http://example.org/base#> .
+a :a :b .
diff --git a/tests/bad/bad-04.ttl b/tests/bad/bad-04.ttl
new file mode 100644
index 00000000..ee7246c8
--- /dev/null
+++ b/tests/bad/bad-04.ttl
@@ -0,0 +1,3 @@
+# No comma is allowed in collections
+@prefix : <http://example.org/stuff/1.0/> .
+:a :b ( "apple", "banana" ) .
diff --git a/tests/bad/bad-05.ttl b/tests/bad/bad-05.ttl
new file mode 100644
index 00000000..387015fe
--- /dev/null
+++ b/tests/bad/bad-05.ttl
@@ -0,0 +1,4 @@
+# N3 {}s are not in Turtle
+@prefix : <http://example.org/stuff/1.0/> .
+{ :a :b :c . } :d :e .
+
diff --git a/tests/bad/bad-06.ttl b/tests/bad/bad-06.ttl
new file mode 100644
index 00000000..a8f1a0fc
--- /dev/null
+++ b/tests/bad/bad-06.ttl
@@ -0,0 +1,3 @@
+# is and of are not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a is :b of :c .
diff --git a/tests/bad/bad-07.ttl b/tests/bad/bad-07.ttl
new file mode 100644
index 00000000..18ea4fa6
--- /dev/null
+++ b/tests/bad/bad-07.ttl
@@ -0,0 +1,4 @@
+# paths are not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a.:b.:c .
+:a^:b^:c .
diff --git a/tests/bad/bad-08.ttl b/tests/bad/bad-08.ttl
new file mode 100644
index 00000000..07918f9a
--- /dev/null
+++ b/tests/bad/bad-08.ttl
@@ -0,0 +1,2 @@
+@keywords something.
+# @keywords is not in turtle
diff --git a/tests/bad/bad-09.ttl b/tests/bad/bad-09.ttl
new file mode 100644
index 00000000..d2d76c13
--- /dev/null
+++ b/tests/bad/bad-09.ttl
@@ -0,0 +1,3 @@
+# implies is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a => :b .
diff --git a/tests/bad/bad-10.ttl b/tests/bad/bad-10.ttl
new file mode 100644
index 00000000..b5ef1f55
--- /dev/null
+++ b/tests/bad/bad-10.ttl
@@ -0,0 +1,3 @@
+# equivalence is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a = :b .
diff --git a/tests/bad/bad-11.ttl b/tests/bad/bad-11.ttl
new file mode 100644
index 00000000..09e7b6a0
--- /dev/null
+++ b/tests/bad/bad-11.ttl
@@ -0,0 +1,3 @@
+# @forAll is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+@forAll :x .
diff --git a/tests/bad/bad-12.ttl b/tests/bad/bad-12.ttl
new file mode 100644
index 00000000..cef48ff8
--- /dev/null
+++ b/tests/bad/bad-12.ttl
@@ -0,0 +1,3 @@
+# @forSome is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+@forSome :x .
diff --git a/tests/bad/bad-13.ttl b/tests/bad/bad-13.ttl
new file mode 100644
index 00000000..91accf2b
--- /dev/null
+++ b/tests/bad/bad-13.ttl
@@ -0,0 +1,3 @@
+# <= is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a <= :b .
diff --git a/tests/bad/bad-14.ttl b/tests/bad/bad-14.ttl
new file mode 100644
index 00000000..f4a7acf5
--- /dev/null
+++ b/tests/bad/bad-14.ttl
@@ -0,0 +1,6 @@
+# Test long literals with missing end
+@prefix : <http://example.org/ex#> .
+:a :b """a long
+ literal
+with
+newlines
diff --git a/tests/bad/bad-base.ttl b/tests/bad/bad-base.ttl
new file mode 100644
index 00000000..85421999
--- /dev/null
+++ b/tests/bad/bad-base.ttl
@@ -0,0 +1 @@
+@base "I'm quite certain this is not a URI" . \ No newline at end of file
diff --git a/tests/bad/bad-blank.ttl b/tests/bad/bad-blank.ttl
new file mode 100644
index 00000000..a6543f2d
--- /dev/null
+++ b/tests/bad/bad-blank.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org/> .
+
+_:.bad a eg:Thing . \ No newline at end of file
diff --git a/tests/bad/bad-bom.ttl b/tests/bad/bad-bom.ttl
new file mode 100644
index 00000000..67993884
--- /dev/null
+++ b/tests/bad/bad-bom.ttl
@@ -0,0 +1,3 @@
+ï»´# This file starts with the first two bytes of the UTF-8 Byte Order Mark
+
+<http://example.org/thing> a <http://example.org/Thing> .
diff --git a/tests/bad/bad-char-in-local.ttl b/tests/bad/bad-char-in-local.ttl
new file mode 100644
index 00000000..973cc0a2
--- /dev/null
+++ b/tests/bad/bad-char-in-local.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org/> .
+
+eg:†bad <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/bad-char-in-prefix.ttl b/tests/bad/bad-char-in-prefix.ttl
new file mode 100644
index 00000000..b54e0274
--- /dev/null
+++ b/tests/bad/bad-char-in-prefix.ttl
@@ -0,0 +1 @@
+bad†:s <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/bad-char-in-uri.ttl b/tests/bad/bad-char-in-uri.ttl
new file mode 100644
index 00000000..49f9c0d4
--- /dev/null
+++ b/tests/bad/bad-char-in-uri.ttl
@@ -0,0 +1 @@
+<ÿÿÿ://a.example/s> <http://a.eoampl†/p> "\u0006!#[]\u007F" .
diff --git a/tests/bad/bad-datatype.ttl b/tests/bad/bad-datatype.ttl
new file mode 100644
index 00000000..0dd6018f
--- /dev/null
+++ b/tests/bad/bad-datatype.ttl
@@ -0,0 +1 @@
+<> <http://example.org/pred> "hello"^^"not-a-uri" . \ No newline at end of file
diff --git a/tests/bad/bad-dot-after-subject.ttl b/tests/bad/bad-dot-after-subject.ttl
new file mode 100644
index 00000000..e76e0ea2
--- /dev/null
+++ b/tests/bad/bad-dot-after-subject.ttl
@@ -0,0 +1 @@
+<http://example.org/s> . <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/bad-eof-in-blank.ttl b/tests/bad/bad-eof-in-blank.ttl
new file mode 100644
index 00000000..08c13ae9
--- /dev/null
+++ b/tests/bad/bad-eof-in-blank.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:thing [ eg:comment "Thing" \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-escape.ttl b/tests/bad/bad-eof-in-escape.ttl
new file mode 100644
index 00000000..d3af9c93
--- /dev/null
+++ b/tests/bad/bad-eof-in-escape.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:comment """\uA \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-lang-suffix.ttl b/tests/bad/bad-eof-in-lang-suffix.ttl
new file mode 100644
index 00000000..8e3002cb
--- /dev/null
+++ b/tests/bad/bad-eof-in-lang-suffix.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:comment "That ain't no language"@en-x \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-lang.ttl b/tests/bad/bad-eof-in-lang.ttl
new file mode 100644
index 00000000..54db417f
--- /dev/null
+++ b/tests/bad/bad-eof-in-lang.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:comment "That ain't no language"@a \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-list.ttl b/tests/bad/bad-eof-in-list.ttl
new file mode 100644
index 00000000..ca6c352f
--- /dev/null
+++ b/tests/bad/bad-eof-in-list.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:thing ( eg:car eg:cdr \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-object-list.ttl b/tests/bad/bad-eof-in-object-list.ttl
new file mode 100644
index 00000000..9bbcd17a
--- /dev/null
+++ b/tests/bad/bad-eof-in-object-list.ttl
@@ -0,0 +1,2 @@
+@prefix eg: <http://example.org/> .
+<> eg:p eg:o , \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-object-list2.ttl b/tests/bad/bad-eof-in-object-list2.ttl
new file mode 100644
index 00000000..9186fb9f
--- /dev/null
+++ b/tests/bad/bad-eof-in-object-list2.ttl
@@ -0,0 +1,2 @@
+@prefix eg: <http://example.org/> .
+<> eg:p eg:o ; eg:p1 eg:o2 , \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-predicate-list.ttl b/tests/bad/bad-eof-in-predicate-list.ttl
new file mode 100644
index 00000000..eab5b05b
--- /dev/null
+++ b/tests/bad/bad-eof-in-predicate-list.ttl
@@ -0,0 +1,2 @@
+@prefix eg: <http://example.org/> .
+<> eg:p eg:o ; \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-string.ttl b/tests/bad/bad-eof-in-string.ttl
new file mode 100644
index 00000000..d3a1aa55
--- /dev/null
+++ b/tests/bad/bad-eof-in-string.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:comment "This is the string that never ends \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-triple-quote.ttl b/tests/bad/bad-eof-in-triple-quote.ttl
new file mode 100644
index 00000000..d60acd15
--- /dev/null
+++ b/tests/bad/bad-eof-in-triple-quote.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:comment """Hello"" \ No newline at end of file
diff --git a/tests/bad/bad-eof-in-uri.ttl b/tests/bad/bad-eof-in-uri.ttl
new file mode 100644
index 00000000..9bd2a64d
--- /dev/null
+++ b/tests/bad/bad-eof-in-uri.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:uri <http://example.org/dontstop \ No newline at end of file
diff --git a/tests/bad/bad-escape.ttl b/tests/bad/bad-escape.ttl
new file mode 100644
index 00000000..c03f395f
--- /dev/null
+++ b/tests/bad/bad-escape.ttl
@@ -0,0 +1 @@
+<http://example.org/thing> <http://example.org/comment> """\!""" .
diff --git a/tests/bad/bad-ext-namedblank-op.ttl b/tests/bad/bad-ext-namedblank-op.ttl
new file mode 100644
index 00000000..5e648393
--- /dev/null
+++ b/tests/bad/bad-ext-namedblank-op.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org/eg#> .
+
+eg:s eg:p [ =: _:o ; eg:name "o" ] .
diff --git a/tests/bad/bad-hex-digit.ttl b/tests/bad/bad-hex-digit.ttl
new file mode 100644
index 00000000..85816ced
--- /dev/null
+++ b/tests/bad/bad-hex-digit.ttl
@@ -0,0 +1 @@
+<http://example.org/thing> <http://example.org/comment> "\uABCG" .
diff --git a/tests/bad/bad-id-clash.ttl b/tests/bad/bad-id-clash.ttl
new file mode 100644
index 00000000..c1536840
--- /dev/null
+++ b/tests/bad/bad-id-clash.ttl
@@ -0,0 +1,2 @@
+_:b1 a _:b2 .
+_:b2 a _:B1 . \ No newline at end of file
diff --git a/tests/bad/bad-lang.ttl b/tests/bad/bad-lang.ttl
new file mode 100644
index 00000000..01e04328
--- /dev/null
+++ b/tests/bad/bad-lang.ttl
@@ -0,0 +1 @@
+<> <http://example.org/pred> "hello"@\bad . \ No newline at end of file
diff --git a/tests/bad/bad-list.ttl b/tests/bad/bad-list.ttl
new file mode 100644
index 00000000..5606658e
--- /dev/null
+++ b/tests/bad/bad-list.ttl
@@ -0,0 +1 @@
+<> <http://example.org/pred> <http://example.org/valid> , invalid . \ No newline at end of file
diff --git a/tests/bad/bad-list2.ttl b/tests/bad/bad-list2.ttl
new file mode 100644
index 00000000..b5242de2
--- /dev/null
+++ b/tests/bad/bad-list2.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org> .
+
+<> eg:thing ( . \ No newline at end of file
diff --git a/tests/bad/bad-long-literal-in-list.ttl b/tests/bad/bad-long-literal-in-list.ttl
new file mode 100644
index 00000000..f10b4c3d
--- /dev/null
+++ b/tests/bad/bad-long-literal-in-list.ttl
@@ -0,0 +1 @@
+<> <http://example.org/pred> ("""") . \ No newline at end of file
diff --git a/tests/bad/bad-missing-semi.ttl b/tests/bad/bad-missing-semi.ttl
new file mode 100644
index 00000000..f8838805
--- /dev/null
+++ b/tests/bad/bad-missing-semi.ttl
@@ -0,0 +1,3 @@
+@prefix a: <http://example.org/> .
+a:s1 a:p1 a:o1
+a:s2 a:p2 a:o2 .
diff --git a/tests/bad/bad-missing-uri-scheme.nt b/tests/bad/bad-missing-uri-scheme.nt
new file mode 100644
index 00000000..5d7bc724
--- /dev/null
+++ b/tests/bad/bad-missing-uri-scheme.nt
@@ -0,0 +1 @@
+<foo> <bar> <baz> .
diff --git a/tests/bad/bad-namespace.ttl b/tests/bad/bad-namespace.ttl
new file mode 100644
index 00000000..0dd78d33
--- /dev/null
+++ b/tests/bad/bad-namespace.ttl
@@ -0,0 +1 @@
+@prefix eg: "what?" . \ No newline at end of file
diff --git a/tests/bad/bad-ns.ttl b/tests/bad/bad-ns.ttl
new file mode 100644
index 00000000..4410573e
--- /dev/null
+++ b/tests/bad/bad-ns.ttl
@@ -0,0 +1 @@
+<> a badprefix:Thing . \ No newline at end of file
diff --git a/tests/bad/bad-num.ttl b/tests/bad/bad-num.ttl
new file mode 100644
index 00000000..7685f0e0
--- /dev/null
+++ b/tests/bad/bad-num.ttl
@@ -0,0 +1 @@
+<> <http://example.org/pred> .hello . \ No newline at end of file
diff --git a/tests/bad/bad-object.ttl b/tests/bad/bad-object.ttl
new file mode 100644
index 00000000..9fc6da18
--- /dev/null
+++ b/tests/bad/bad-object.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org/> .
+
+eg:thing a four .
diff --git a/tests/bad/bad-object2.ttl b/tests/bad/bad-object2.ttl
new file mode 100644
index 00000000..9293d168
--- /dev/null
+++ b/tests/bad/bad-object2.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org/> .
+
+eg:thing a fives .
diff --git a/tests/bad/bad-prefix.ttl b/tests/bad/bad-prefix.ttl
new file mode 100644
index 00000000..6c286355
--- /dev/null
+++ b/tests/bad/bad-prefix.ttl
@@ -0,0 +1 @@
+@prefix _invalid <http://example.org/> .
diff --git a/tests/bad/bad-semicolon-after-subject.ttl b/tests/bad/bad-semicolon-after-subject.ttl
new file mode 100644
index 00000000..582c6ea0
--- /dev/null
+++ b/tests/bad/bad-semicolon-after-subject.ttl
@@ -0,0 +1 @@
+<http://example.org/s> ; <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/bad-string.ttl b/tests/bad/bad-string.ttl
new file mode 100644
index 00000000..0bdea42c
--- /dev/null
+++ b/tests/bad/bad-string.ttl
@@ -0,0 +1 @@
+<> <http://example.org/pred> "hello \ No newline at end of file
diff --git a/tests/bad/bad-subject.ttl b/tests/bad/bad-subject.ttl
new file mode 100644
index 00000000..b98ea39b
--- /dev/null
+++ b/tests/bad/bad-subject.ttl
@@ -0,0 +1 @@
+invalid.:thing a invalid.Thing .
diff --git a/tests/bad/bad-uri-escape.ttl b/tests/bad/bad-uri-escape.ttl
new file mode 100644
index 00000000..16c63754
--- /dev/null
+++ b/tests/bad/bad-uri-escape.ttl
@@ -0,0 +1 @@
+<http://example.org/thing> <http://example.org/comment> <http://example.org/\!> .
diff --git a/tests/bad/bad-uri-scheme-start.nt b/tests/bad/bad-uri-scheme-start.nt
new file mode 100644
index 00000000..cd3fd70f
--- /dev/null
+++ b/tests/bad/bad-uri-scheme-start.nt
@@ -0,0 +1 @@
+<2http://example.org/s> <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/bad-uri-scheme.nt b/tests/bad/bad-uri-scheme.nt
new file mode 100644
index 00000000..1329edcd
--- /dev/null
+++ b/tests/bad/bad-uri-scheme.nt
@@ -0,0 +1 @@
+<b@d://example.org/s> <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/bad-uri-truncated.nt b/tests/bad/bad-uri-truncated.nt
new file mode 100644
index 00000000..22d29e4b
--- /dev/null
+++ b/tests/bad/bad-uri-truncated.nt
@@ -0,0 +1 @@
+<foo \ No newline at end of file
diff --git a/tests/bad/bad-verb.ttl b/tests/bad/bad-verb.ttl
new file mode 100644
index 00000000..56a134f3
--- /dev/null
+++ b/tests/bad/bad-verb.ttl
@@ -0,0 +1,2 @@
+@prefix a: <http://example.org/> .
+a:thing x a:Thing . \ No newline at end of file
diff --git a/tests/bad/invalid-char-in-local.ttl b/tests/bad/invalid-char-in-local.ttl
new file mode 100644
index 00000000..520c2404
--- /dev/null
+++ b/tests/bad/invalid-char-in-local.ttl
@@ -0,0 +1,3 @@
+@prefix eg: <http://example.org/> .
+
+eg:¿invalid <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/invalid-char-in-prefix.ttl b/tests/bad/invalid-char-in-prefix.ttl
new file mode 100644
index 00000000..79547803
--- /dev/null
+++ b/tests/bad/invalid-char-in-prefix.ttl
@@ -0,0 +1 @@
+invalid¿:s <http://example.org/p> <http://example.org/o> .
diff --git a/tests/bad/manifest.ttl b/tests/bad/manifest.ttl
new file mode 100644
index 00000000..1e21397d
--- /dev/null
+++ b/tests/bad/manifest.ttl
@@ -0,0 +1,371 @@
+@prefix mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix rdft: <http://www.w3.org/ns/rdftest#> .
+
+<>
+ rdf:type mf:Manifest ;
+ rdfs:comment "Serd bad syntax test cases" ;
+ mf:entries (
+ <#bad-00>
+ <#bad-01>
+ <#bad-02>
+ <#bad-03>
+ <#bad-04>
+ <#bad-05>
+ <#bad-06>
+ <#bad-07>
+ <#bad-08>
+ <#bad-09>
+ <#bad-10>
+ <#bad-11>
+ <#bad-12>
+ <#bad-13>
+ <#bad-14>
+ <#bad-base>
+ <#bad-blank>
+ <#bad-bom>
+ <#bad-char-in-local>
+ <#bad-char-in-prefix>
+ <#bad-char-in-uri>
+ <#bad-datatype>
+ <#bad-dot-after-subject>
+ <#bad-eof-in-blank>
+ <#bad-eof-in-escape>
+ <#bad-eof-in-lang-suffix>
+ <#bad-eof-in-lang>
+ <#bad-eof-in-list>
+ <#bad-eof-in-object-list2>
+ <#bad-eof-in-object-list>
+ <#bad-eof-in-predicate-list>
+ <#bad-eof-in-string>
+ <#bad-eof-in-triple-quote>
+ <#bad-eof-in-uri>
+ <#bad-escape>
+ <#bad-ext-namedblank-op>
+ <#bad-hex-digit>
+ <#bad-id-clash>
+ <#bad-lang>
+ <#bad-list2>
+ <#bad-list>
+ <#bad-long-literal-in-list>
+ <#bad-missing-semi>
+ <#bad-namespace>
+ <#bad-ns>
+ <#bad-num>
+ <#bad-object2>
+ <#bad-object>
+ <#bad-prefix>
+ <#bad-semicolon-after-subject>
+ <#bad-string>
+ <#bad-subject>
+ <#bad-uri-escape>
+ <#bad-verb>
+ <#invalid-char-in-local>
+ <#invalid-char-in-prefix>
+ <#bad-missing-uri-scheme.nt>
+ <#bad-uri-scheme.nt>
+ <#bad-uri-scheme-start.nt>
+ <#bad-uri-truncated.nt>
+ ) .
+
+<#bad-00>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-00" ;
+ mf:action <bad-00.ttl> .
+
+<#bad-01>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-01" ;
+ mf:action <bad-01.ttl> .
+
+<#bad-02>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-02" ;
+ mf:action <bad-02.ttl> .
+
+<#bad-03>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-03" ;
+ mf:action <bad-03.ttl> .
+
+<#bad-04>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-04" ;
+ mf:action <bad-04.ttl> .
+
+<#bad-05>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-05" ;
+ mf:action <bad-05.ttl> .
+
+<#bad-06>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-06" ;
+ mf:action <bad-06.ttl> .
+
+<#bad-07>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-07" ;
+ mf:action <bad-07.ttl> .
+
+<#bad-08>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-08" ;
+ mf:action <bad-08.ttl> .
+
+<#bad-09>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-09" ;
+ mf:action <bad-09.ttl> .
+
+<#bad-10>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-10" ;
+ mf:action <bad-10.ttl> .
+
+<#bad-11>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-11" ;
+ mf:action <bad-11.ttl> .
+
+<#bad-12>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-12" ;
+ mf:action <bad-12.ttl> .
+
+<#bad-13>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-13" ;
+ mf:action <bad-13.ttl> .
+
+<#bad-14>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-14" ;
+ mf:action <bad-14.ttl> .
+
+<#bad-base>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-base" ;
+ mf:action <bad-base.ttl> .
+
+<#bad-blank>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-blank" ;
+ mf:action <bad-blank.ttl> .
+
+<#bad-bom>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-bom" ;
+ mf:action <bad-bom.ttl> .
+
+<#bad-char-in-local>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-char-in-local" ;
+ mf:action <bad-char-in-local.ttl> .
+
+<#bad-char-in-prefix>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-char-in-prefix" ;
+ mf:action <bad-char-in-prefix.ttl> .
+
+<#bad-char-in-uri>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-char-in-uri" ;
+ mf:action <bad-char-in-uri.ttl> .
+
+<#bad-datatype>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-datatype" ;
+ mf:action <bad-datatype.ttl> .
+
+<#bad-dot-after-subject>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-dot-after-subject" ;
+ mf:action <bad-dot-after-subject.ttl> .
+
+<#bad-eof-in-blank>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-blank" ;
+ mf:action <bad-eof-in-blank.ttl> .
+
+<#bad-eof-in-escape>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-escape" ;
+ mf:action <bad-eof-in-escape.ttl> .
+
+<#bad-eof-in-lang-suffix>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-lang-suffix" ;
+ mf:action <bad-eof-in-lang-suffix.ttl> .
+
+<#bad-eof-in-lang>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-lang" ;
+ mf:action <bad-eof-in-lang.ttl> .
+
+<#bad-eof-in-list>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-list" ;
+ mf:action <bad-eof-in-list.ttl> .
+
+<#bad-eof-in-object-list2>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-object-list2" ;
+ mf:action <bad-eof-in-object-list2.ttl> .
+
+<#bad-eof-in-object-list>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-object-list" ;
+ mf:action <bad-eof-in-object-list.ttl> .
+
+<#bad-eof-in-predicate-list>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-predicate-list" ;
+ mf:action <bad-eof-in-predicate-list.ttl> .
+
+<#bad-eof-in-string>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-string" ;
+ mf:action <bad-eof-in-string.ttl> .
+
+<#bad-eof-in-triple-quote>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-triple-quote" ;
+ mf:action <bad-eof-in-triple-quote.ttl> .
+
+<#bad-eof-in-uri>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-eof-in-uri" ;
+ mf:action <bad-eof-in-uri.ttl> .
+
+<#bad-escape>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-escape" ;
+ mf:action <bad-escape.ttl> .
+
+<#bad-ext-namedblank-op>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-ext-namedblank-op" ;
+ mf:action <bad-ext-namedblank-op.ttl> .
+
+<#bad-hex-digit>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-hex-digit" ;
+ mf:action <bad-hex-digit.ttl> .
+
+<#bad-id-clash>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-id-clash" ;
+ mf:action <bad-id-clash.ttl> .
+
+<#bad-lang>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-lang" ;
+ mf:action <bad-lang.ttl> .
+
+<#bad-list2>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-list2" ;
+ mf:action <bad-list2.ttl> .
+
+<#bad-list>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-list" ;
+ mf:action <bad-list.ttl> .
+
+<#bad-long-literal-in-list>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-long-literal-in-list" ;
+ mf:action <bad-long-literal-in-list.ttl> .
+
+<#bad-missing-semi>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-missing-semi" ;
+ mf:action <bad-missing-semi.ttl> .
+
+<#bad-namespace>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-namespace" ;
+ mf:action <bad-namespace.ttl> .
+
+<#bad-ns>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-ns" ;
+ mf:action <bad-ns.ttl> .
+
+<#bad-num>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-num" ;
+ mf:action <bad-num.ttl> .
+
+<#bad-object2>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-object2" ;
+ mf:action <bad-object2.ttl> .
+
+<#bad-object>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-object" ;
+ mf:action <bad-object.ttl> .
+
+<#bad-prefix>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-prefix" ;
+ mf:action <bad-prefix.ttl> .
+
+<#bad-semicolon-after-subject>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-semicolon-after-subject" ;
+ mf:action <bad-semicolon-after-subject.ttl> .
+
+<#bad-string>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-string" ;
+ mf:action <bad-string.ttl> .
+
+<#bad-subject>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-subject" ;
+ mf:action <bad-subject.ttl> .
+
+<#bad-uri-escape>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-uri-escape" ;
+ mf:action <bad-uri-escape.ttl> .
+
+<#bad-verb>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "bad-verb" ;
+ mf:action <bad-verb.ttl> .
+
+<#invalid-char-in-local>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "invalid-char-in-local" ;
+ mf:action <invalid-char-in-local.ttl> .
+
+<#invalid-char-in-prefix>
+ rdf:type rdft:TestTurtleNegativeSyntax ;
+ mf:name "invalid-char-in-prefix" ;
+ mf:action <invalid-char-in-prefix.ttl> .
+
+<#bad-missing-uri-scheme.nt>
+ rdf:type rdft:TestNTriplesNegativeSyntax ;
+ mf:name "bad-missing-uri-scheme" ;
+ mf:action <bad-missing-uri-scheme.nt> .
+
+<#bad-uri-scheme.nt>
+ rdf:type rdft:TestNTriplesNegativeSyntax ;
+ mf:name "bad-uri-scheme" ;
+ mf:action <bad-uri-scheme.nt> .
+
+<#bad-uri-scheme-start.nt>
+ rdf:type rdft:TestNTriplesNegativeSyntax ;
+ mf:name "bad-uri-scheme-start" ;
+ mf:action <bad-uri-scheme-start.nt> .
+
+<#bad-uri-truncated.nt>
+ rdf:type rdft:TestNTriplesNegativeSyntax ;
+ mf:name "bad-uri-truncated" ;
+ mf:action <bad-uri-truncated.nt> .
+