rdf_context 0.4.8 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (248) hide show
  1. data/History.txt +27 -0
  2. data/README.rdoc +22 -9
  3. data/Rakefile +11 -6
  4. data/VERSION +1 -1
  5. data/bin/rdf_context +12 -4
  6. data/lib/rdf_context.rb +3 -1
  7. data/lib/rdf_context/aggregate_graph.rb +86 -0
  8. data/lib/rdf_context/array_hacks.rb +53 -0
  9. data/lib/rdf_context/conjunctive_graph.rb +1 -1
  10. data/lib/rdf_context/exceptions.rb +9 -7
  11. data/lib/rdf_context/graph.rb +174 -15
  12. data/lib/rdf_context/literal.rb +34 -2
  13. data/lib/rdf_context/n3_grammar.treetop +213 -129
  14. data/lib/rdf_context/n3parser.rb +281 -57
  15. data/lib/rdf_context/namespace.rb +23 -12
  16. data/lib/rdf_context/parser.rb +4 -3
  17. data/lib/rdf_context/quoted_graph.rb +38 -0
  18. data/lib/rdf_context/rdfaparser.rb +2 -1
  19. data/lib/rdf_context/rdfxmlparser.rb +4 -3
  20. data/lib/rdf_context/store/abstract_sql_store.rb +4 -4
  21. data/lib/rdf_context/store/abstract_store.rb +5 -1
  22. data/lib/rdf_context/store/sqlite3_store.rb +10 -8
  23. data/lib/rdf_context/string_hacks.rb +44 -21
  24. data/lib/rdf_context/term_utils.rb +73 -4
  25. data/lib/rdf_context/triple.rb +32 -47
  26. data/lib/rdf_context/uriref.rb +33 -26
  27. data/spec/aggregate_graph_spec.rb +59 -0
  28. data/spec/conjunctive_graph_spec.rb +1 -1
  29. data/spec/cwm_spec.rb +32 -0
  30. data/spec/graph_spec.rb +114 -3
  31. data/spec/literal_spec.rb +107 -5
  32. data/spec/matchers.rb +104 -51
  33. data/spec/n3parser_spec.rb +798 -99
  34. data/spec/namespaces_spec.rb +26 -0
  35. data/spec/quoted_graph_spec.rb +0 -0
  36. data/spec/rdf_helper.rb +197 -0
  37. data/spec/rdfa_helper.rb +15 -11
  38. data/spec/rdfa_parser_spec.rb +6 -8
  39. data/spec/rdfxml_spec.rb +21 -28
  40. data/spec/spec_helper.rb +20 -0
  41. data/spec/sqlite3_store_spec.rb +6 -5
  42. data/spec/store_helper.rb +9 -1
  43. data/spec/string_hacks_spec.rb +14 -0
  44. data/spec/{rdfxml_helper.rb → swap_helper.rb} +8 -9
  45. data/spec/swap_spec.rb +77 -0
  46. data/spec/swap_test/animal.rdf +17 -0
  47. data/spec/swap_test/anon-prop.n3 +14 -0
  48. data/spec/swap_test/anonymous_loop.n3 +2 -0
  49. data/spec/swap_test/contexts.n3 +16 -0
  50. data/spec/swap_test/daml-pref.n3 +10 -0
  51. data/spec/swap_test/i18n/hiragana.n3 +22 -0
  52. data/spec/swap_test/i18n/n3string.n3 +4 -0
  53. data/spec/swap_test/list/itemType.rdf +12 -0
  54. data/spec/swap_test/lists-simple.n3 +40 -0
  55. data/spec/swap_test/lists.n3 +35 -0
  56. data/spec/swap_test/n3/n3parser.tests_n3_10001.nt +3 -0
  57. data/spec/swap_test/n3/n3parser.tests_n3_10002.nt +7 -0
  58. data/spec/swap_test/n3/n3parser.tests_n3_10003.nt +3 -0
  59. data/spec/swap_test/n3/n3parser.tests_n3_10004.nt +119 -0
  60. data/spec/swap_test/n3/n3parser.tests_n3_10005.nt +3 -0
  61. data/spec/swap_test/n3/n3parser.tests_n3_10006.nt +225 -0
  62. data/spec/swap_test/n3/n3parser.tests_n3_10007.nt +79 -0
  63. data/spec/swap_test/n3/n3parser.tests_n3_10008.nt +5 -0
  64. data/spec/swap_test/n3/n3parser.tests_n3_10009.nt +13 -0
  65. data/spec/swap_test/n3/n3parser.tests_n3_10010.nt +21 -0
  66. data/spec/swap_test/n3/n3parser.tests_n3_10011.nt +9 -0
  67. data/spec/swap_test/n3/n3parser.tests_n3_10012.nt +53 -0
  68. data/spec/swap_test/n3/n3parser.tests_n3_10013.nt +19 -0
  69. data/spec/swap_test/n3/n3parser.tests_n3_10014.nt +103 -0
  70. data/spec/swap_test/n3/n3parser.tests_n3_10015.nt +103 -0
  71. data/spec/swap_test/n3/n3parser.tests_n3_10016.nt +3 -0
  72. data/spec/swap_test/n3/n3parser.tests_n3_10017.nt +151 -0
  73. data/spec/swap_test/n3/n3parser.tests_n3_10018.nt +9 -0
  74. data/spec/swap_test/n3/n3parser.tests_n3_10019.nt +3 -0
  75. data/spec/swap_test/n3/n3parser.tests_n3_10020.nt +13 -0
  76. data/spec/swap_test/n3parser.tests +160 -0
  77. data/spec/swap_test/nodeID/classes.n3 +9 -0
  78. data/spec/swap_test/nodeID/classes.ref.rdf +15 -0
  79. data/spec/swap_test/nodeID/ex1.rdf +15 -0
  80. data/spec/swap_test/norm/fix.rdf +33 -0
  81. data/spec/swap_test/owl-ex.rdf +150 -0
  82. data/spec/swap_test/ref/animal.n3 +11 -0
  83. data/spec/swap_test/ref/anon-prop-1.n3 +8 -0
  84. data/spec/swap_test/ref/anonymous_loop.ref +7 -0
  85. data/spec/swap_test/ref/bnode.n3 +6 -0
  86. data/spec/swap_test/ref/bnode.rdf +16 -0
  87. data/spec/swap_test/ref/colon-in-uri.n3 +15 -0
  88. data/spec/swap_test/ref/daml-ex.n3 +103 -0
  89. data/spec/swap_test/ref/daml-ont.n3 +289 -0
  90. data/spec/swap_test/ref/djb1a-out.n3 +4 -0
  91. data/spec/swap_test/ref/dot-dash.n3 +8 -0
  92. data/spec/swap_test/ref/in-xml-t.n3 +4 -0
  93. data/spec/swap_test/ref/itemType.n3 +9 -0
  94. data/spec/swap_test/ref/keywords1.n3 +11 -0
  95. data/spec/swap_test/ref/keywords2.n3 +11 -0
  96. data/spec/swap_test/ref/lists-simple-1.rdf +108 -0
  97. data/spec/swap_test/ref/lists.n3 +43 -0
  98. data/spec/swap_test/ref/lstring-out.n3 +20 -0
  99. data/spec/swap_test/ref/n3string.n3 +13 -0
  100. data/spec/swap_test/ref/no-last-nl.n3 +3 -0
  101. data/spec/swap_test/ref/numbers.n3 +18 -0
  102. data/spec/swap_test/ref/path1.n3 +8 -0
  103. data/spec/swap_test/ref/path2.n3 +39 -0
  104. data/spec/swap_test/ref/prefix1.rdf +31 -0
  105. data/spec/swap_test/ref/prefix3.rdf +31 -0
  106. data/spec/swap_test/ref/rdf-redefine.rdf +11 -0
  107. data/spec/swap_test/ref/reluri-1.rdf +18 -0
  108. data/spec/swap_test/ref/strquot.n3 +23 -0
  109. data/spec/swap_test/ref/strquot_a.n3 +23 -0
  110. data/spec/swap_test/ref/xml-base3.n3 +5 -0
  111. data/spec/swap_test/ref/xml-redefine.rdf +20 -0
  112. data/spec/swap_test/ref/xml-redefine2.rdf +23 -0
  113. data/spec/swap_test/ref/xml-syntax-basic-serialization.rdf +10 -0
  114. data/spec/swap_test/ref/xmllit.nt +3 -0
  115. data/spec/swap_test/regression.n3 +231 -0
  116. data/spec/swap_test/reluri-1.n3 +10 -0
  117. data/spec/swap_test/strquot.n3 +23 -0
  118. data/spec/swap_test/syntax/colon-in-uri.rdf +27 -0
  119. data/spec/swap_test/syntax/djb1a.n3 +3 -0
  120. data/spec/swap_test/syntax/dot-dash.n3 +15 -0
  121. data/spec/swap_test/syntax/equals1.n3 +1 -0
  122. data/spec/swap_test/syntax/equals2.n3 +1 -0
  123. data/spec/swap_test/syntax/keywords1.n3 +17 -0
  124. data/spec/swap_test/syntax/keywords2.n3 +18 -0
  125. data/spec/swap_test/syntax/lstring.n3 +26 -0
  126. data/spec/swap_test/syntax/neg-formula-predicate.n3 +1 -0
  127. data/spec/swap_test/syntax/neg-keywords3.n3 +1 -0
  128. data/spec/swap_test/syntax/neg-literal-predicate.n3 +1 -0
  129. data/spec/swap_test/syntax/neg-single-quote.n3 +1 -0
  130. data/spec/swap_test/syntax/neg-thisadoc.n3 +1 -0
  131. data/spec/swap_test/syntax/no-last-nl.n3 +2 -0
  132. data/spec/swap_test/syntax/numbers.n3 +26 -0
  133. data/spec/swap_test/syntax/path1.n3 +23 -0
  134. data/spec/swap_test/syntax/path2.n3 +31 -0
  135. data/spec/swap_test/syntax/qvars1.n3 +19 -0
  136. data/spec/swap_test/syntax/qvars2.n3 +19 -0
  137. data/spec/swap_test/syntax/this-quantifiers.n3 +164 -0
  138. data/spec/swap_test/syntax/this-rules.n3 +43 -0
  139. data/spec/swap_test/syntax/too-nested.n3 +25 -0
  140. data/spec/swap_test/syntax/trailing-semicolon.n3 +12 -0
  141. data/spec/swap_test/syntax/zero-objects.n3 +1 -0
  142. data/spec/swap_test/syntax/zero-predicates.n3 +3 -0
  143. data/spec/swap_test/tests-work.txt +25 -0
  144. data/spec/swap_test/xml-syntax/basic-serialization.n3 +8 -0
  145. data/spec/swap_test/xml-syntax/in-xml.xml +13 -0
  146. data/spec/swap_test/xml-syntax/non-ascii-pred.rdf +14 -0
  147. data/spec/swap_test/xml-syntax/rdf_prefix.n3 +2 -0
  148. data/spec/swap_test/xml-syntax/xml_prefix.n3 +7 -0
  149. data/spec/swap_test/xml-syntax/xml_prefix2.n3 +9 -0
  150. data/spec/swap_test/xml-syntax/xmlbase3.rdf +10 -0
  151. data/spec/swap_test/xml-syntax/xmllit.rdf +33 -0
  152. data/spec/triple_spec.rb +90 -46
  153. data/spec/turtle/README.txt +20 -0
  154. data/spec/turtle/bad-00.ttl +2 -0
  155. data/spec/turtle/bad-01.ttl +3 -0
  156. data/spec/turtle/bad-02.ttl +3 -0
  157. data/spec/turtle/bad-03.ttl +3 -0
  158. data/spec/turtle/bad-04.ttl +3 -0
  159. data/spec/turtle/bad-05.ttl +4 -0
  160. data/spec/turtle/bad-06.ttl +3 -0
  161. data/spec/turtle/bad-07.ttl +4 -0
  162. data/spec/turtle/bad-08.ttl +2 -0
  163. data/spec/turtle/bad-09.ttl +3 -0
  164. data/spec/turtle/bad-10.ttl +3 -0
  165. data/spec/turtle/bad-11.ttl +3 -0
  166. data/spec/turtle/bad-12.ttl +3 -0
  167. data/spec/turtle/bad-13.ttl +3 -0
  168. data/spec/turtle/bad-14.ttl +6 -0
  169. data/spec/turtle/manifest-bad.ttl +88 -0
  170. data/spec/turtle/manifest.ttl +215 -0
  171. data/spec/turtle/rdf-schema.out +126 -0
  172. data/spec/turtle/rdf-schema.ttl +156 -0
  173. data/spec/turtle/rdfq-results.out +36 -0
  174. data/spec/turtle/rdfq-results.ttl +39 -0
  175. data/spec/turtle/rdfs-namespace.out +131 -0
  176. data/spec/turtle/rdfs-namespace.ttl +160 -0
  177. data/spec/turtle/test-00.out +1 -0
  178. data/spec/turtle/test-00.ttl +2 -0
  179. data/spec/turtle/test-01.out +3 -0
  180. data/spec/turtle/test-01.ttl +7 -0
  181. data/spec/turtle/test-02.out +3 -0
  182. data/spec/turtle/test-02.ttl +5 -0
  183. data/spec/turtle/test-03.out +3 -0
  184. data/spec/turtle/test-03.ttl +5 -0
  185. data/spec/turtle/test-04.out +2 -0
  186. data/spec/turtle/test-04.ttl +4 -0
  187. data/spec/turtle/test-05.out +4 -0
  188. data/spec/turtle/test-05.ttl +4 -0
  189. data/spec/turtle/test-06.out +1 -0
  190. data/spec/turtle/test-06.ttl +3 -0
  191. data/spec/turtle/test-07.out +5 -0
  192. data/spec/turtle/test-07.ttl +3 -0
  193. data/spec/turtle/test-08.out +1 -0
  194. data/spec/turtle/test-08.ttl +3 -0
  195. data/spec/turtle/test-09.out +4 -0
  196. data/spec/turtle/test-09.ttl +10 -0
  197. data/spec/turtle/test-10.out +5 -0
  198. data/spec/turtle/test-10.ttl +5 -0
  199. data/spec/turtle/test-11.out +4 -0
  200. data/spec/turtle/test-11.ttl +10 -0
  201. data/spec/turtle/test-12.out +4 -0
  202. data/spec/turtle/test-12.ttl +9 -0
  203. data/spec/turtle/test-13.out +2 -0
  204. data/spec/turtle/test-13.ttl +7 -0
  205. data/spec/turtle/test-14.out +10000 -0
  206. data/spec/turtle/test-14.ttl +10002 -0
  207. data/spec/turtle/test-15.out +10000 -0
  208. data/spec/turtle/test-15.ttl +3 -0
  209. data/spec/turtle/test-16.out +10000 -0
  210. data/spec/turtle/test-16.ttl +10002 -0
  211. data/spec/turtle/test-17.out +1 -0
  212. data/spec/turtle/test-17.ttl +6 -0
  213. data/spec/turtle/test-18.out +2 -0
  214. data/spec/turtle/test-18.ttl +9 -0
  215. data/spec/turtle/test-19.out +1 -0
  216. data/spec/turtle/test-19.ttl +4 -0
  217. data/spec/turtle/test-20.out +2 -0
  218. data/spec/turtle/test-20.ttl +6 -0
  219. data/spec/turtle/test-21.out +3 -0
  220. data/spec/turtle/test-21.ttl +4 -0
  221. data/spec/turtle/test-22.out +3 -0
  222. data/spec/turtle/test-22.ttl +4 -0
  223. data/spec/turtle/test-23.out +1 -0
  224. data/spec/turtle/test-23.ttl +3 -0
  225. data/spec/turtle/test-24.out +2 -0
  226. data/spec/turtle/test-24.ttl +3 -0
  227. data/spec/turtle/test-25.out +7 -0
  228. data/spec/turtle/test-25.ttl +14 -0
  229. data/spec/turtle/test-26.out +1 -0
  230. data/spec/turtle/test-26.ttl +4 -0
  231. data/spec/turtle/test-27.out +1 -0
  232. data/spec/turtle/test-27.ttl +5 -0
  233. data/spec/turtle/test-28-out.ttl +6 -0
  234. data/spec/turtle/test-28.out +22 -0
  235. data/spec/turtle/test-28.ttl +22 -0
  236. data/spec/turtle/test-29.out +1 -0
  237. data/spec/turtle/test-29.ttl +1 -0
  238. data/spec/turtle/test-30.out +5 -0
  239. data/spec/turtle/test-30.ttl +12 -0
  240. data/spec/turtle_spec.rb +64 -0
  241. data/spec/uriref_spec.rb +74 -34
  242. data/test/n3_tests/rdflib/n3-writer-teset-26.n3 +31 -0
  243. data/test/n3_tests/rdflib/n3-writer-teset-26.nt +14 -0
  244. data/test/rdf_tests/xml-literal-mixed.nt +1 -2
  245. metadata +278 -39
  246. data/lib/rdf_context/n3_grammar.rb +0 -2171
  247. data/test/perf_test/test.rb +0 -11
  248. data/test/perf_test/tommorris.rdf +0 -2267
@@ -3,8 +3,9 @@ require File.join(File.dirname(__FILE__), 'store_helper')
3
3
 
4
4
  describe "SQLite3 Store" do
5
5
  before(:all) do
6
- Dir.mkdir(File.dirname(__FILE__) + "/tmp")
7
- @dbfile = File.join(File.dirname(__FILE__), "tmp", "sqlite3.db")
6
+ FileUtils.rm_rf(TMP_DIR)
7
+ Dir.mkdir(TMP_DIR)
8
+ @dbfile = File.join(TMP_DIR, "sqlite3.db")
8
9
  @identifier = URIRef.new("http://identifier")
9
10
  end
10
11
 
@@ -13,11 +14,11 @@ describe "SQLite3 Store" do
13
14
  end
14
15
 
15
16
  after(:all) do
16
- FileUtils.rm_rf(File.dirname(__FILE__) + "/tmp")
17
+ FileUtils.rm_rf(TMP_DIR)
17
18
  end
18
19
 
19
20
  after(:each) do
20
- FileUtils.rm(@dbfile) if File.exists?(@dbfile)
21
+ FileUtils.rm(@dbfile) if File.file?(@dbfile)
21
22
  end
22
23
 
23
24
  subject { @store }
@@ -51,7 +52,7 @@ describe "SQLite3 Store" do
51
52
  subject.contexts(triple).length.should == 1
52
53
  end
53
54
 
54
- it "should find contexts patern triple" do
55
+ it "should find contexts pattern triple" do
55
56
  triple = Triple.new("http://foo", RDF_TYPE, "http://baz")
56
57
  subject.add(triple, nil)
57
58
  subject.contexts(Triple.new(nil, nil, nil)).length.should == 1
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  shared_examples_for "Store" do
2
3
  before(:all) do
3
4
  @ex = Namespace.new("http://example.org/", "ex")
@@ -14,6 +15,13 @@ shared_examples_for "Store" do
14
15
  subject.size.should == 2
15
16
  end
16
17
 
18
+ it "should allow you to add triples with bnodes" do
19
+ subject.add(Triple.new(BNode.new, @ex.b, @ex.c), nil)
20
+ subject.add(Triple.new(@ex.a, BNode.new, @ex.c), nil)
21
+ subject.add(Triple.new(@ex.a, @ex.b, BNode.new), nil)
22
+ subject.size.should == 3
23
+ end
24
+
17
25
  it "should allow you to create and bind Namespace objects" do
18
26
  foaf = Namespace.new("http://xmlns.com/foaf/0.1/", "foaf")
19
27
  subject.bind(foaf).should == foaf
@@ -57,7 +65,7 @@ shared_examples_for "Store" do
57
65
  subject.contains?(Triple.new(@ex.john, @foaf.knows, @ex.jane), nil).should be_true
58
66
  end
59
67
 
60
- it "should contain different triple paterns" do
68
+ it "should contain different triple patterns" do
61
69
  [
62
70
  Triple.new(URIRef.new("http://foo"),URIRef.new("http://bar"),URIRef.new("http://baz")),
63
71
  Triple.new(URIRef.new("http://foo"),URIRef.new("http://bar"),Literal.untyped("baz")),
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  require File.join(File.dirname(__FILE__), 'spec_helper')
2
3
  describe "String RDF encoding" do
3
4
  {
@@ -18,4 +19,17 @@ describe "String RDF encoding" do
18
19
  encoded.rdf_unescape.should == raw
19
20
  end
20
21
  end
22
+
23
+ # 16-bit string encodings
24
+ {
25
+ "16-bit:\u{15678}another" => '16-bit:\\U00015678another',
26
+ }.each_pair do |raw, encoded|
27
+ specify "'#{raw}' should escape to '#{encoded}'" do
28
+ raw.rdf_escape.should == encoded
29
+ end
30
+
31
+ specify "'#{encoded}' should unescape to '#{raw}'" do
32
+ encoded.rdf_unescape.should == raw
33
+ end
34
+ end if defined?(::Encoding)
21
35
  end
@@ -1,14 +1,11 @@
1
1
  require 'matchers'
2
2
 
3
- module RdfXMLHelper
3
+ module SWAPHelper
4
4
  # Class representing test cases in format http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#
5
5
  class TestCase
6
6
  include Matchers
7
7
 
8
- TEST_DIR = File.join(File.dirname(__FILE__), 'rdfcore')
9
- NT_DIR = File.join(File.dirname(__FILE__), 'rdfa-triples')
10
- BASE_MANIFEST_URL = "http://rdfa.digitalbazaar.com/test-suite/"
11
- BASE_TEST_CASE_URL = "#{BASE_MANIFEST_URL}test-cases/"
8
+ TEST_DIR = File.join(File.dirname(__FILE__), 'swap_test')
12
9
 
13
10
  attr_accessor :about
14
11
  attr_accessor :approval
@@ -40,7 +37,7 @@ module RdfXMLHelper
40
37
  self.rdf_type = statement.object.short_name
41
38
  elsif statement.predicate.short_name =~ /Document\Z/i
42
39
  #puts "#{statement.predicate.short_name}: #{statement.object.inspect}"
43
- self.send("#{statement.predicate.short_name}=", statement.object.to_s.sub(/^.*rdfcore/, TEST_DIR))
40
+ self.send("#{statement.predicate.short_name}=", statement.object.to_s.sub(/^.*swap\/test/, TEST_DIR))
44
41
  if statement.predicate.short_name == "inputDocument"
45
42
  self.about ||= statement.object
46
43
  self.name ||= statement.object.short_name
@@ -68,6 +65,8 @@ module RdfXMLHelper
68
65
  "]"
69
66
  end
70
67
 
68
+ def compare; :graph; end
69
+
71
70
  # Read in file, and apply modifications reference either .html or .xhtml
72
71
  def input
73
72
  File.read(inputDocument)
@@ -100,10 +99,10 @@ module RdfXMLHelper
100
99
  @@positive_entailment_tests = []
101
100
  @@negative_entailment_tests = []
102
101
 
103
- manifest = File.read(File.join(TEST_DIR, "Manifest.rdf"))
104
- parser = RdfXmlParser.new
102
+ manifest = File.read(File.join(TEST_DIR, "n3parser.tests"))
103
+ parser = Parser.new
105
104
  begin
106
- parser.parse(manifest, "http://www.w3.org/2000/10/rdf-tests/rdfcore/Manifest.rdf")
105
+ parser.parse(manifest, "http://www.w3.org/2000/10/swap/test/n3parser.tests")
107
106
  rescue
108
107
  raise "Parse error: #{$!}\n\t#{parser.debug.join("\t\n")}\n\n"
109
108
  end
@@ -0,0 +1,77 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ include RdfContext
3
+
4
+ describe "N3 parser" do
5
+ # W3C N3 Test suite from http://www.w3.org/2000/10/swap/test/n3parser.tests
6
+ describe "w3c swap tests" do
7
+ require 'rdf_helper'
8
+
9
+ def self.positive_tests
10
+ RdfHelper::TestCase.positive_parser_tests(SWAP_TEST, SWAP_DIR) rescue []
11
+ end
12
+
13
+ def self.negative_tests
14
+ RdfHelper::TestCase.negative_parser_tests(SWAP_TEST, SWAP_DIR) rescue []
15
+ end
16
+
17
+ # Negative parser tests should raise errors.
18
+ describe "positive parser tests" do
19
+ positive_tests.each do |t|
20
+ #next unless t.about.uri.to_s =~ /rdfms-rdf-names-use/
21
+ #next unless t.name =~ /11/
22
+ #puts t.inspect
23
+ specify "#{t.name}: #{t.about.uri.to_s} against #{t.outputDocument}" do
24
+ begin
25
+ t.run_test do |rdf_string, parser|
26
+ t.name.should_not == "n3_10012" # Too many bnodes makes graph compare unfeasable
27
+ parser.parse(rdf_string, t.about.uri.to_s, :strict => true, :debug => [])
28
+ end
29
+ rescue #Spec::Expectations::ExpectationNotMetError => e
30
+ if %w(n3_10003 n3_10004).include?(t.name)
31
+ pending("@forAll/@forEach not yet implemented")
32
+ elsif %w(n3_10007 n3_10014 n3_10015 n3_10017).include?(t.name)
33
+ pending("formulae not yet implemented")
34
+ elsif %w(n3_10012).include?(t.name)
35
+ pending("check visually, graph compare times too long")
36
+ elsif %w(n3_10010).include?(t.name)
37
+ pending("Not supported in Ruby 1.8")
38
+ else
39
+ raise
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ describe "negative parser tests" do
47
+ negative_tests.each do |t|
48
+ #next unless t.about.uri.to_s =~ /rdfms-empty-property-elements/
49
+ #next unless t.name =~ /1/
50
+ #puts t.inspect
51
+ specify "#{t.name}: #{t.about.uri.to_s}" do
52
+ t.run_test do |rdf_string, parser|
53
+ if !defined?(::Encoding) && %w(n3_10019 n3_10020).include?(t.name)
54
+ pending("Not supported in Ruby 1.8")
55
+ return
56
+ end
57
+ begin
58
+ lambda do
59
+ parser.parse(rdf_string, t.about.uri.to_s, :strict => true, :debug => [])
60
+ end.should raise_error(RdfException)
61
+ rescue Spec::Expectations::ExpectationNotMetError => e
62
+ if %w().include?(t.name)
63
+ pending("@forAll/@forEach not yet implemented")
64
+ elsif %w(n3_10019 n3_10020 n3_20005).include?(t.name.to_s)
65
+ pending("formulae not yet implemented")
66
+ elsif %w(n3_20000).include?(t.name)
67
+ pending("figure out how to tell that these are errors")
68
+ else
69
+ raise
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,17 @@
1
+ <!-- A simple RDF file for parser testing -->
2
+ <rdf:RDF
3
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
4
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
5
+ xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
6
+ xmlns="http://www.daml.org/2000/12/daml+oil#">
7
+ <rdfs:Class rdf:ID="Animal">
8
+ <rdfs:label>Animal</rdfs:label>
9
+ <restrictedBy>
10
+ <Restriction>
11
+ <onProperty rdf:resource="#parent"/>
12
+ <cardinality>2</cardinality>
13
+ </Restriction>
14
+ </restrictedBy>
15
+ </rdfs:Class>
16
+ </rdf:RDF>
17
+
@@ -0,0 +1,14 @@
1
+ # $Id: anon-prop.n3,v 1.1 2001-02-26 15:22:30 connolly Exp $
2
+ #
3
+ # I discovered a bug in cwm.py while writing
4
+ # http://www.w3.org/2001/02pd/gv.n3 (rev/date)
5
+ # at or before gv.n3,v 1.3 2001/02/22 06:17:55
6
+ #
7
+ # notation3.py reads it in and spits out just what I'd expect
8
+ # (by naming the anonymous node and using log:forSome)
9
+ # but running it thru cwm.py -think causes the property
10
+ # of the property to get lost altogether, and the anonymous
11
+ # property gets a name without an existential quantifier.
12
+
13
+ <#anySubj> [ <#propProp> "red" ] <#anyObj>.
14
+
@@ -0,0 +1,2 @@
1
+ _:a :z _:b .
2
+ _:b :y _:a .
@@ -0,0 +1,16 @@
1
+ # Test data in notation3 http://www.w3.org/DesignIssues/Notation3.html
2
+ #
3
+ @prefix u: <http://www.example.org/utilities#> .
4
+ @prefix : <#> .
5
+
6
+ :assumption = { :fred u:knows :john .
7
+ :john u:knows :mary .} .
8
+
9
+ :conclusion = { :fred u:knows :mary . } .
10
+
11
+ # The empty context is trivially true.
12
+ # Check that we can input it and output it!
13
+
14
+ :trivialTruth = { }.
15
+
16
+ # ENDS
@@ -0,0 +1,10 @@
1
+ # Suitable prefixes for DAML-ONT etc
2
+
3
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
4
+ @prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
5
+ @prefix daml: <http://www.daml.org/2001/03/daml-ont#> .
6
+ @prefix dpo: <http://www.daml.org/2001/03/daml+oil#> .
7
+ @prefix ex: <http://www.daml.org/2001/03/daml-ex#> .
8
+ @prefix log: <http://www.w3.org/2000/10/swap/log#> .
9
+
10
+
@@ -0,0 +1,22 @@
1
+ #
2
+ # TEST of unicode invariou splaces.
3
+ # Note: D<C3><BC>rst is the utf-8 encodeing
4
+ #
5
+ # Base was: file:/devel/WWW/2000/10/swap/test/i18n/umlaut.rdf
6
+ @prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
7
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8
+ @prefix : <#>.
9
+
10
+ [ s:label "Martin J D\u00fcrst" ; :script "ひらがな" ].
11
+
12
+ [] s:label "A test with a non-ascii qname"; :related :ひらがな.
13
+ [] s:label "A test with a non-ascii fragid"; :related <#Dürst>.
14
+
15
+
16
+ [] s:label "A test with a percent-encoded unicode char in an IRI";
17
+ :related <#D%C3%BCrst>.
18
+
19
+
20
+ <#D%C3%BCrst> a "URI percent ^encoded as C3, BC".
21
+ <#Dürst> a "URI straight in UTF8".
22
+ #ENDS
@@ -0,0 +1,4 @@
1
+ @prefix log: <http://www.w3.org/2000/10/swap/log#>.
2
+
3
+
4
+ {{:㐭 :b :c} log:n3String ?x} => {?x a :interesting}.
@@ -0,0 +1,12 @@
1
+ <rdf:RDF
2
+ xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
3
+ xmlns='http://example/palmagent/danger#'>
4
+ <event rdf:about='#2414'>
5
+ <reminders rdf:parseType='Collection'>
6
+ <reminders_item>
7
+ <seconds_prior rdf:datatype='http://www.w3.org/2001/XMLSchema#integer'>432000</seconds_prior>
8
+ </reminders_item>
9
+ <rdf:Description rdf:about="http://example/foo#"/>
10
+ </reminders>
11
+ </event>
12
+ </rdf:RDF>
@@ -0,0 +1,40 @@
1
+ # Test list syntax
2
+ #
3
+ # With no {} so it can be translated in DAML easily
4
+ #
5
+
6
+ @prefix t: <http://example.com/test#> .
7
+ @prefix : <http://example.com/test#> .
8
+ @prefix log: <http://www.w3.org/2000/10/swap/log#> .
9
+
10
+ # This is cheating a bit - in case output of
11
+ # first and rest or equivalentTo is needed.
12
+
13
+ @prefix dpo: <http://www.daml.org/2001/03/daml+oil#>.
14
+ @prefix owl: <http://www.w3.org/2002/07/owl#>.
15
+
16
+
17
+ :a_threebrackets = ( ( ( :fff ) ) ) .
18
+
19
+ [ :anonVerb12 :anonObj12 ] :verb12 :obj12.
20
+
21
+ :threeItems = ( :b :c :d ) .
22
+
23
+ :nested =( :first :second ( :left3 :right3 ) :fourth ) .
24
+
25
+ :emptyList = ( ) .
26
+
27
+ :listOf2Empties = (()()) .
28
+
29
+ :twoAnons = ([a :mother][a :father]).
30
+
31
+ () :verb0 :object0.
32
+ ( "subj1" ) :verb1 :object1.
33
+ ( "subj2a" "subj2b" ) :verb2 :object2.
34
+
35
+ # Supressed: - see lists.n3 for version with this in
36
+ # :twoFormulae = ({:a a :mother} {:b a :father}).
37
+
38
+
39
+ #ENDS
40
+
@@ -0,0 +1,35 @@
1
+ # Test list syntax
2
+ #
3
+
4
+ @prefix t: <test#> .
5
+ @prefix : <test#> .
6
+ @prefix ont: <http://www.w3.org/2000/10/swap/log#> .
7
+
8
+
9
+
10
+ :threeItems = ( :b :c :d ) .
11
+
12
+ :nested =( :first :second ( :left3 :right3 ) :fourth ) .
13
+
14
+ :emptyList = ( ) .
15
+
16
+ :listOf2Empties = (()()) .
17
+
18
+ :twoAnons = ([a :mother][a :father]).
19
+
20
+ () :verb0 :object0.
21
+ ( "subj1" ) :verb1 :object1.
22
+ ( "subj2a" "subj2b" ) :verb2 :object2.
23
+
24
+
25
+ # N3 only:
26
+
27
+ ( 1 ) <#linksEqualLists> ( 1 ) .
28
+
29
+
30
+
31
+ :twoFormulae = ({:a a :mother} {:b a :father}).
32
+
33
+
34
+ #ENDS
35
+
@@ -0,0 +1,3 @@
1
+
2
+ <http://www.w3.org/2000/10/swap/test/syntax/a> <http://www.w3.org/2000/10/swap/test/syntax/b> <http://www.w3.org/2000/10/swap/test/syntax/c> .
3
+
@@ -0,0 +1,7 @@
1
+
2
+ <http://example.com/foo#a> <http://example.com/foo#b> <http://example.com/foo#c> .
3
+
4
+ <http://example.com/foo#hyphen-ated> <http://example.com/foo#dot.ted> <http://example.com/foo#hyphen-and.dot> .
5
+
6
+ <http://example.com/foo#minus-_underscore> <http://example.com/foo#under_score> <http://example.com/foo#underscore_-minus> .
7
+
@@ -0,0 +1,3 @@
1
+
2
+ _:b _:a _:c .
3
+
@@ -0,0 +1,119 @@
1
+
2
+ _:g39 <http://www.w3.org/2002/07/owl#oneOf> _:li3 .
3
+
4
+ _:li3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#a" .
5
+
6
+ _:li3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li2 .
7
+
8
+ _:li2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#b" .
9
+
10
+ _:li2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li1 .
11
+
12
+ _:li1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#c" .
13
+
14
+ _:li1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
15
+
16
+ _:g40 <http://www.w3.org/2002/07/owl#oneOf> _:li6 .
17
+
18
+ _:li6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#x" .
19
+
20
+ _:li6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li5 .
21
+
22
+ _:li5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#y" .
23
+
24
+ _:li5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li4 .
25
+
26
+ _:li4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#z" .
27
+
28
+ _:li4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
29
+
30
+ _:g41 <http://www.w3.org/2002/07/owl#oneOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
31
+
32
+ _:g42 <http://www.w3.org/2002/07/owl#oneOf> _:li8 .
33
+
34
+ _:li8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g14 .
35
+
36
+ _:li8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li7 .
37
+
38
+ _:li7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g18 .
39
+
40
+ _:li7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
41
+
42
+ _:g43 <http://www.w3.org/2002/07/owl#oneOf> _:li9 .
43
+
44
+ _:li9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g27 .
45
+
46
+ _:li9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
47
+
48
+ _:g44 <http://www.w3.org/2002/07/owl#oneOf> _:li10 .
49
+
50
+ _:li10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g10 .
51
+
52
+ _:li10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
53
+
54
+ _:b _:a _:c .
55
+
56
+ _:g7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/10/swap/log#Truth> .
57
+
58
+ _:g7 <http://www.w3.org/2004/06/rei#existentials> _:g39 .
59
+
60
+ _:g7 <http://www.w3.org/2004/06/rei#statements> _:g44 .
61
+
62
+ _:g7 <http://www.w3.org/2004/06/rei#universals> _:g40 .
63
+
64
+ _:g10 <http://www.w3.org/2004/06/rei#object> _:g24 .
65
+
66
+ _:g10 <http://www.w3.org/2004/06/rei#predicate> _:g23 .
67
+
68
+ _:g10 <http://www.w3.org/2004/06/rei#subject> _:g11 .
69
+
70
+ _:g11 <http://www.w3.org/2004/06/rei#existentials> _:g41 .
71
+
72
+ _:g11 <http://www.w3.org/2004/06/rei#statements> _:g42 .
73
+
74
+ _:g11 <http://www.w3.org/2004/06/rei#universals> _:g41 .
75
+
76
+ _:g14 <http://www.w3.org/2004/06/rei#object> _:g17 .
77
+
78
+ _:g14 <http://www.w3.org/2004/06/rei#predicate> _:g16 .
79
+
80
+ _:g14 <http://www.w3.org/2004/06/rei#subject> _:g15 .
81
+
82
+ _:g15 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#x" .
83
+
84
+ _:g16 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#mother" .
85
+
86
+ _:g17 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#y" .
87
+
88
+ _:g18 <http://www.w3.org/2004/06/rei#object> _:g21 .
89
+
90
+ _:g18 <http://www.w3.org/2004/06/rei#predicate> _:g20 .
91
+
92
+ _:g18 <http://www.w3.org/2004/06/rei#subject> _:g19 .
93
+
94
+ _:g19 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#y" .
95
+
96
+ _:g20 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#sister" .
97
+
98
+ _:g21 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#z" .
99
+
100
+ _:g23 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/log#implies" .
101
+
102
+ _:g24 <http://www.w3.org/2004/06/rei#existentials> _:g41 .
103
+
104
+ _:g24 <http://www.w3.org/2004/06/rei#statements> _:g43 .
105
+
106
+ _:g24 <http://www.w3.org/2004/06/rei#universals> _:g41 .
107
+
108
+ _:g27 <http://www.w3.org/2004/06/rei#object> _:g30 .
109
+
110
+ _:g27 <http://www.w3.org/2004/06/rei#predicate> _:g29 .
111
+
112
+ _:g27 <http://www.w3.org/2004/06/rei#subject> _:g28 .
113
+
114
+ _:g28 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#x" .
115
+
116
+ _:g29 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#aunt" .
117
+
118
+ _:g30 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#z" .
119
+