gkellogg-reddy 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (545) hide show
  1. data/.autotest +2 -0
  2. data/.gitignore +9 -0
  3. data/.gitmodules +3 -0
  4. data/History.txt +66 -0
  5. data/README.rdoc +107 -0
  6. data/Rakefile +96 -0
  7. data/VERSION +1 -0
  8. data/bin/reddy +59 -0
  9. data/lib/reddy.rb +62 -0
  10. data/lib/reddy/bnode.rb +101 -0
  11. data/lib/reddy/conjunctive_graph.rb +47 -0
  12. data/lib/reddy/exceptions.rb +11 -0
  13. data/lib/reddy/graph.rb +327 -0
  14. data/lib/reddy/literal.rb +340 -0
  15. data/lib/reddy/n3_grammar.rb +2171 -0
  16. data/lib/reddy/n3_grammar.treetop +143 -0
  17. data/lib/reddy/n3parser.rb +151 -0
  18. data/lib/reddy/namespace.rb +82 -0
  19. data/lib/reddy/nokogiri_hacks.rb +8 -0
  20. data/lib/reddy/parser.rb +127 -0
  21. data/lib/reddy/rdfaparser.rb +398 -0
  22. data/lib/reddy/rdfxmlparser.rb +529 -0
  23. data/lib/reddy/store/abstract_store.rb +64 -0
  24. data/lib/reddy/store/list_store.rb +61 -0
  25. data/lib/reddy/store/memory_store.rb +349 -0
  26. data/lib/reddy/string_hacks.rb +108 -0
  27. data/lib/reddy/triple.rb +144 -0
  28. data/lib/reddy/uriref.rb +95 -0
  29. data/script/console +10 -0
  30. data/spec/bnode_spec.rb +58 -0
  31. data/spec/conjunctive_graph_spec.rb +59 -0
  32. data/spec/graph_spec.rb +390 -0
  33. data/spec/literal_spec.rb +314 -0
  34. data/spec/matchers.rb +148 -0
  35. data/spec/n3parser_spec.rb +229 -0
  36. data/spec/namespaces_spec.rb +66 -0
  37. data/spec/ntriples/test.nt +78 -0
  38. data/spec/parser_spec.rb +29 -0
  39. data/spec/rdfa-triples/0001.nt +1 -0
  40. data/spec/rdfa-triples/0006.nt +2 -0
  41. data/spec/rdfa-triples/0007.nt +3 -0
  42. data/spec/rdfa-triples/0008.nt +1 -0
  43. data/spec/rdfa-triples/0009.nt +1 -0
  44. data/spec/rdfa-triples/0010.nt +2 -0
  45. data/spec/rdfa-triples/0011.nt +3 -0
  46. data/spec/rdfa-triples/0012.nt +1 -0
  47. data/spec/rdfa-triples/0013.nt +1 -0
  48. data/spec/rdfa-triples/0014.nt +1 -0
  49. data/spec/rdfa-triples/0015.nt +2 -0
  50. data/spec/rdfa-triples/0017.nt +3 -0
  51. data/spec/rdfa-triples/0018.nt +1 -0
  52. data/spec/rdfa-triples/0019.nt +1 -0
  53. data/spec/rdfa-triples/0020.nt +1 -0
  54. data/spec/rdfa-triples/0021.nt +1 -0
  55. data/spec/rdfa-triples/0023.nt +1 -0
  56. data/spec/rdfa-triples/0025.nt +2 -0
  57. data/spec/rdfa-triples/0026.nt +1 -0
  58. data/spec/rdfa-triples/0027.nt +1 -0
  59. data/spec/rdfa-triples/0029.nt +1 -0
  60. data/spec/rdfa-triples/0030.nt +1 -0
  61. data/spec/rdfa-triples/0031.nt +1 -0
  62. data/spec/rdfa-triples/0032.nt +1 -0
  63. data/spec/rdfa-triples/0033.nt +2 -0
  64. data/spec/rdfa-triples/0034.nt +1 -0
  65. data/spec/rdfa-triples/0035.nt +1 -0
  66. data/spec/rdfa-triples/0036.nt +1 -0
  67. data/spec/rdfa-triples/0037.nt +1 -0
  68. data/spec/rdfa-triples/0038.nt +1 -0
  69. data/spec/rdfa-triples/0039.nt +1 -0
  70. data/spec/rdfa-triples/0040.nt +1 -0
  71. data/spec/rdfa-triples/0041.nt +1 -0
  72. data/spec/rdfa-triples/0042.nt +0 -0
  73. data/spec/rdfa-triples/0046.nt +3 -0
  74. data/spec/rdfa-triples/0047.nt +3 -0
  75. data/spec/rdfa-triples/0048.nt +3 -0
  76. data/spec/rdfa-triples/0049.nt +2 -0
  77. data/spec/rdfa-triples/0050.nt +2 -0
  78. data/spec/rdfa-triples/0051.nt +2 -0
  79. data/spec/rdfa-triples/0052.nt +1 -0
  80. data/spec/rdfa-triples/0053.nt +2 -0
  81. data/spec/rdfa-triples/0054.nt +2 -0
  82. data/spec/rdfa-triples/0055.nt +2 -0
  83. data/spec/rdfa-triples/0056.nt +3 -0
  84. data/spec/rdfa-triples/0057.nt +4 -0
  85. data/spec/rdfa-triples/0058.nt +6 -0
  86. data/spec/rdfa-triples/0059.nt +6 -0
  87. data/spec/rdfa-triples/0060.nt +2 -0
  88. data/spec/rdfa-triples/0061.nt +1 -0
  89. data/spec/rdfa-triples/0062.nt +1 -0
  90. data/spec/rdfa-triples/0063.nt +1 -0
  91. data/spec/rdfa-triples/0064.nt +1 -0
  92. data/spec/rdfa-triples/0065.nt +3 -0
  93. data/spec/rdfa-triples/0066.nt +1 -0
  94. data/spec/rdfa-triples/0067.nt +1 -0
  95. data/spec/rdfa-triples/0068.nt +1 -0
  96. data/spec/rdfa-triples/0069.nt +1 -0
  97. data/spec/rdfa-triples/0070.nt +1 -0
  98. data/spec/rdfa-triples/0071.nt +1 -0
  99. data/spec/rdfa-triples/0072.nt +1 -0
  100. data/spec/rdfa-triples/0073.nt +1 -0
  101. data/spec/rdfa-triples/0074.nt +1 -0
  102. data/spec/rdfa-triples/0075.nt +1 -0
  103. data/spec/rdfa-triples/0076.nt +23 -0
  104. data/spec/rdfa-triples/0077.nt +23 -0
  105. data/spec/rdfa-triples/0078.nt +6 -0
  106. data/spec/rdfa-triples/0079.nt +3 -0
  107. data/spec/rdfa-triples/0080.nt +1 -0
  108. data/spec/rdfa-triples/0081.nt +6 -0
  109. data/spec/rdfa-triples/0082.nt +8 -0
  110. data/spec/rdfa-triples/0083.nt +6 -0
  111. data/spec/rdfa-triples/0084.nt +8 -0
  112. data/spec/rdfa-triples/0085.nt +4 -0
  113. data/spec/rdfa-triples/0086.nt +0 -0
  114. data/spec/rdfa-triples/0087.nt +23 -0
  115. data/spec/rdfa-triples/0088.nt +3 -0
  116. data/spec/rdfa-triples/0089.nt +1 -0
  117. data/spec/rdfa-triples/0090.nt +1 -0
  118. data/spec/rdfa-triples/0091.nt +3 -0
  119. data/spec/rdfa-triples/0092.nt +3 -0
  120. data/spec/rdfa-triples/0093.nt +2 -0
  121. data/spec/rdfa-triples/0094.nt +3 -0
  122. data/spec/rdfa-triples/0099.nt +1 -0
  123. data/spec/rdfa-triples/0100.nt +3 -0
  124. data/spec/rdfa-triples/0101.nt +3 -0
  125. data/spec/rdfa-triples/0102.nt +1 -0
  126. data/spec/rdfa-triples/0103.nt +1 -0
  127. data/spec/rdfa-triples/0104.nt +3 -0
  128. data/spec/rdfa-triples/0105.nt +1 -0
  129. data/spec/rdfa-triples/0106.nt +1 -0
  130. data/spec/rdfa-triples/0107.nt +0 -0
  131. data/spec/rdfa-triples/0108.nt +1 -0
  132. data/spec/rdfa-triples/0109.nt +1 -0
  133. data/spec/rdfa-triples/0110.nt +1 -0
  134. data/spec/rdfa-triples/0111.nt +2 -0
  135. data/spec/rdfa-triples/0112.nt +1 -0
  136. data/spec/rdfa-triples/0113.nt +2 -0
  137. data/spec/rdfa-triples/0114.nt +3 -0
  138. data/spec/rdfa-triples/0115.nt +4 -0
  139. data/spec/rdfa-triples/0116.nt +2 -0
  140. data/spec/rdfa-triples/0117.nt +2 -0
  141. data/spec/rdfa-triples/0118.nt +1 -0
  142. data/spec/rdfa-triples/0119.nt +1 -0
  143. data/spec/rdfa-triples/0120.nt +1 -0
  144. data/spec/rdfa-triples/0121.nt +2 -0
  145. data/spec/rdfa-triples/0122.nt +1 -0
  146. data/spec/rdfa-triples/0123.nt +3 -0
  147. data/spec/rdfa-triples/0124.nt +4 -0
  148. data/spec/rdfa-triples/0125.nt +1 -0
  149. data/spec/rdfa-triples/0126.nt +3 -0
  150. data/spec/rdfa-triples/1001.nt +6 -0
  151. data/spec/rdfa_helper.rb +189 -0
  152. data/spec/rdfa_parser_spec.rb +130 -0
  153. data/spec/rdfcore/Manifest.rdf +5395 -0
  154. data/spec/rdfcore/amp-in-url/test001.nt +16 -0
  155. data/spec/rdfcore/amp-in-url/test001.rdf +40 -0
  156. data/spec/rdfcore/datatypes-intensional/test001.nt +18 -0
  157. data/spec/rdfcore/datatypes-intensional/test002.nt +18 -0
  158. data/spec/rdfcore/datatypes/test001.nt +15 -0
  159. data/spec/rdfcore/datatypes/test001.rdf +29 -0
  160. data/spec/rdfcore/datatypes/test002.nt +14 -0
  161. data/spec/rdfcore/datatypes/test002.rdf +27 -0
  162. data/spec/rdfcore/datatypes/test002b.nt +17 -0
  163. data/spec/rdfcore/datatypes/test003a.nt +16 -0
  164. data/spec/rdfcore/datatypes/test003b.nt +16 -0
  165. data/spec/rdfcore/datatypes/test005a.nt +16 -0
  166. data/spec/rdfcore/datatypes/test005b.nt +16 -0
  167. data/spec/rdfcore/datatypes/test006.nt +17 -0
  168. data/spec/rdfcore/datatypes/test008a.nt +15 -0
  169. data/spec/rdfcore/datatypes/test008b.nt +15 -0
  170. data/spec/rdfcore/datatypes/test009a.nt +15 -0
  171. data/spec/rdfcore/datatypes/test009b.nt +15 -0
  172. data/spec/rdfcore/datatypes/test010.nt +17 -0
  173. data/spec/rdfcore/datatypes/test011a.nt +17 -0
  174. data/spec/rdfcore/datatypes/test011b.nt +17 -0
  175. data/spec/rdfcore/horst-01/test001.rdf +38 -0
  176. data/spec/rdfcore/horst-01/test002.rdf +39 -0
  177. data/spec/rdfcore/horst-01/test003.rdf +40 -0
  178. data/spec/rdfcore/horst-01/test004.rdf +42 -0
  179. data/spec/rdfcore/pfps-10/test001a.nt +14 -0
  180. data/spec/rdfcore/pfps-10/test001b.nt +15 -0
  181. data/spec/rdfcore/rdf-charmod-literals/test001.nt +15 -0
  182. data/spec/rdfcore/rdf-charmod-literals/test001.rdf +34 -0
  183. data/spec/rdfcore/rdf-charmod-uris/test001.nt +14 -0
  184. data/spec/rdfcore/rdf-charmod-uris/test001.rdf +34 -0
  185. data/spec/rdfcore/rdf-charmod-uris/test002.nt +15 -0
  186. data/spec/rdfcore/rdf-charmod-uris/test002.rdf +33 -0
  187. data/spec/rdfcore/rdf-containers-syntax-vs-schema/error001.rdf +27 -0
  188. data/spec/rdfcore/rdf-containers-syntax-vs-schema/error002.rdf +34 -0
  189. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test001.nt +17 -0
  190. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test001.rdf +27 -0
  191. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test002.nt +19 -0
  192. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test002.rdf +37 -0
  193. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test003.nt +18 -0
  194. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test003.rdf +29 -0
  195. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test004.nt +29 -0
  196. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test004.rdf +33 -0
  197. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test006.nt +40 -0
  198. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test006.rdf +28 -0
  199. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test007.nt +20 -0
  200. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test007.rdf +32 -0
  201. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test008.nt +15 -0
  202. data/spec/rdfcore/rdf-containers-syntax-vs-schema/test008.rdf +28 -0
  203. data/spec/rdfcore/rdf-element-not-mandatory/test001.nt +10 -0
  204. data/spec/rdfcore/rdf-element-not-mandatory/test001.rdf +14 -0
  205. data/spec/rdfcore/rdf-ns-prefix-confusion/test0001.nt +14 -0
  206. data/spec/rdfcore/rdf-ns-prefix-confusion/test0001.rdf +35 -0
  207. data/spec/rdfcore/rdf-ns-prefix-confusion/test0003.nt +14 -0
  208. data/spec/rdfcore/rdf-ns-prefix-confusion/test0003.rdf +35 -0
  209. data/spec/rdfcore/rdf-ns-prefix-confusion/test0004.nt +14 -0
  210. data/spec/rdfcore/rdf-ns-prefix-confusion/test0004.rdf +34 -0
  211. data/spec/rdfcore/rdf-ns-prefix-confusion/test0005.nt +15 -0
  212. data/spec/rdfcore/rdf-ns-prefix-confusion/test0005.rdf +40 -0
  213. data/spec/rdfcore/rdf-ns-prefix-confusion/test0006.nt +14 -0
  214. data/spec/rdfcore/rdf-ns-prefix-confusion/test0006.rdf +32 -0
  215. data/spec/rdfcore/rdf-ns-prefix-confusion/test0009.nt +14 -0
  216. data/spec/rdfcore/rdf-ns-prefix-confusion/test0009.rdf +32 -0
  217. data/spec/rdfcore/rdf-ns-prefix-confusion/test0010.nt +14 -0
  218. data/spec/rdfcore/rdf-ns-prefix-confusion/test0010.rdf +38 -0
  219. data/spec/rdfcore/rdf-ns-prefix-confusion/test0011.nt +15 -0
  220. data/spec/rdfcore/rdf-ns-prefix-confusion/test0011.rdf +40 -0
  221. data/spec/rdfcore/rdf-ns-prefix-confusion/test0012.nt +15 -0
  222. data/spec/rdfcore/rdf-ns-prefix-confusion/test0012.rdf +40 -0
  223. data/spec/rdfcore/rdf-ns-prefix-confusion/test0013.nt +15 -0
  224. data/spec/rdfcore/rdf-ns-prefix-confusion/test0013.rdf +40 -0
  225. data/spec/rdfcore/rdf-ns-prefix-confusion/test0014.nt +15 -0
  226. data/spec/rdfcore/rdf-ns-prefix-confusion/test0014.rdf +42 -0
  227. data/spec/rdfcore/rdfms-abouteach/error001.rdf +35 -0
  228. data/spec/rdfcore/rdfms-abouteach/error002.rdf +35 -0
  229. data/spec/rdfcore/rdfms-difference-between-ID-and-about/error1.rdf +25 -0
  230. data/spec/rdfcore/rdfms-difference-between-ID-and-about/test1.nt +14 -0
  231. data/spec/rdfcore/rdfms-difference-between-ID-and-about/test1.rdf +22 -0
  232. data/spec/rdfcore/rdfms-difference-between-ID-and-about/test2.nt +14 -0
  233. data/spec/rdfcore/rdfms-difference-between-ID-and-about/test2.rdf +22 -0
  234. data/spec/rdfcore/rdfms-difference-between-ID-and-about/test3.nt +14 -0
  235. data/spec/rdfcore/rdfms-difference-between-ID-and-about/test3.rdf +22 -0
  236. data/spec/rdfcore/rdfms-duplicate-member-props/test001.nt +17 -0
  237. data/spec/rdfcore/rdfms-duplicate-member-props/test001.rdf +30 -0
  238. data/spec/rdfcore/rdfms-empty-property-elements/error001.rdf +33 -0
  239. data/spec/rdfcore/rdfms-empty-property-elements/error002.rdf +33 -0
  240. data/spec/rdfcore/rdfms-empty-property-elements/error003.rdf +39 -0
  241. data/spec/rdfcore/rdfms-empty-property-elements/test001.nt +14 -0
  242. data/spec/rdfcore/rdfms-empty-property-elements/test001.rdf +33 -0
  243. data/spec/rdfcore/rdfms-empty-property-elements/test002.nt +14 -0
  244. data/spec/rdfcore/rdfms-empty-property-elements/test002.rdf +31 -0
  245. data/spec/rdfcore/rdfms-empty-property-elements/test003.nt +14 -0
  246. data/spec/rdfcore/rdfms-empty-property-elements/test003.rdf +32 -0
  247. data/spec/rdfcore/rdfms-empty-property-elements/test004.nt +14 -0
  248. data/spec/rdfcore/rdfms-empty-property-elements/test004.rdf +32 -0
  249. data/spec/rdfcore/rdfms-empty-property-elements/test005.nt +18 -0
  250. data/spec/rdfcore/rdfms-empty-property-elements/test005.rdf +32 -0
  251. data/spec/rdfcore/rdfms-empty-property-elements/test006.nt +18 -0
  252. data/spec/rdfcore/rdfms-empty-property-elements/test006.rdf +32 -0
  253. data/spec/rdfcore/rdfms-empty-property-elements/test007.nt +14 -0
  254. data/spec/rdfcore/rdfms-empty-property-elements/test007.rdf +32 -0
  255. data/spec/rdfcore/rdfms-empty-property-elements/test008.nt +14 -0
  256. data/spec/rdfcore/rdfms-empty-property-elements/test008.rdf +31 -0
  257. data/spec/rdfcore/rdfms-empty-property-elements/test009.nt +14 -0
  258. data/spec/rdfcore/rdfms-empty-property-elements/test009.rdf +32 -0
  259. data/spec/rdfcore/rdfms-empty-property-elements/test010.nt +14 -0
  260. data/spec/rdfcore/rdfms-empty-property-elements/test010.rdf +31 -0
  261. data/spec/rdfcore/rdfms-empty-property-elements/test011.nt +18 -0
  262. data/spec/rdfcore/rdfms-empty-property-elements/test011.rdf +30 -0
  263. data/spec/rdfcore/rdfms-empty-property-elements/test012.nt +18 -0
  264. data/spec/rdfcore/rdfms-empty-property-elements/test012.rdf +30 -0
  265. data/spec/rdfcore/rdfms-empty-property-elements/test013.nt +15 -0
  266. data/spec/rdfcore/rdfms-empty-property-elements/test013.rdf +35 -0
  267. data/spec/rdfcore/rdfms-empty-property-elements/test014.nt +15 -0
  268. data/spec/rdfcore/rdfms-empty-property-elements/test014.rdf +34 -0
  269. data/spec/rdfcore/rdfms-empty-property-elements/test015.nt +15 -0
  270. data/spec/rdfcore/rdfms-empty-property-elements/test015.rdf +38 -0
  271. data/spec/rdfcore/rdfms-empty-property-elements/test016.nt +14 -0
  272. data/spec/rdfcore/rdfms-empty-property-elements/test016.rdf +31 -0
  273. data/spec/rdfcore/rdfms-empty-property-elements/test017.nt +14 -0
  274. data/spec/rdfcore/rdfms-empty-property-elements/test017.rdf +38 -0
  275. data/spec/rdfcore/rdfms-identity-anon-resources/test001.nt +14 -0
  276. data/spec/rdfcore/rdfms-identity-anon-resources/test001.rdf +33 -0
  277. data/spec/rdfcore/rdfms-identity-anon-resources/test002.nt +15 -0
  278. data/spec/rdfcore/rdfms-identity-anon-resources/test002.rdf +33 -0
  279. data/spec/rdfcore/rdfms-identity-anon-resources/test003.nt +14 -0
  280. data/spec/rdfcore/rdfms-identity-anon-resources/test003.rdf +31 -0
  281. data/spec/rdfcore/rdfms-identity-anon-resources/test004.nt +15 -0
  282. data/spec/rdfcore/rdfms-identity-anon-resources/test004.rdf +33 -0
  283. data/spec/rdfcore/rdfms-identity-anon-resources/test005.nt +14 -0
  284. data/spec/rdfcore/rdfms-identity-anon-resources/test005.rdf +31 -0
  285. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test001.nt +19 -0
  286. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test001.rdf +29 -0
  287. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test002.nt +15 -0
  288. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test002.rdf +29 -0
  289. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test004.nt +18 -0
  290. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test004.rdf +29 -0
  291. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test005.nt +19 -0
  292. data/spec/rdfcore/rdfms-not-id-and-resource-attr/test005.rdf +29 -0
  293. data/spec/rdfcore/rdfms-para196/test001.nt +17 -0
  294. data/spec/rdfcore/rdfms-para196/test001.rdf +35 -0
  295. data/spec/rdfcore/rdfms-rdf-id/error001.rdf +26 -0
  296. data/spec/rdfcore/rdfms-rdf-id/error002.rdf +26 -0
  297. data/spec/rdfcore/rdfms-rdf-id/error003.rdf +29 -0
  298. data/spec/rdfcore/rdfms-rdf-id/error004.rdf +27 -0
  299. data/spec/rdfcore/rdfms-rdf-id/error005.rdf +31 -0
  300. data/spec/rdfcore/rdfms-rdf-id/error006.rdf +26 -0
  301. data/spec/rdfcore/rdfms-rdf-id/error007.rdf +29 -0
  302. data/spec/rdfcore/rdfms-rdf-names-use/error-001.rdf +23 -0
  303. data/spec/rdfcore/rdfms-rdf-names-use/error-002.rdf +23 -0
  304. data/spec/rdfcore/rdfms-rdf-names-use/error-003.rdf +23 -0
  305. data/spec/rdfcore/rdfms-rdf-names-use/error-004.rdf +23 -0
  306. data/spec/rdfcore/rdfms-rdf-names-use/error-005.rdf +23 -0
  307. data/spec/rdfcore/rdfms-rdf-names-use/error-006.rdf +23 -0
  308. data/spec/rdfcore/rdfms-rdf-names-use/error-007.rdf +23 -0
  309. data/spec/rdfcore/rdfms-rdf-names-use/error-008.rdf +23 -0
  310. data/spec/rdfcore/rdfms-rdf-names-use/error-009.rdf +23 -0
  311. data/spec/rdfcore/rdfms-rdf-names-use/error-010.rdf +23 -0
  312. data/spec/rdfcore/rdfms-rdf-names-use/error-011.rdf +25 -0
  313. data/spec/rdfcore/rdfms-rdf-names-use/error-012.rdf +25 -0
  314. data/spec/rdfcore/rdfms-rdf-names-use/error-013.rdf +25 -0
  315. data/spec/rdfcore/rdfms-rdf-names-use/error-014.rdf +25 -0
  316. data/spec/rdfcore/rdfms-rdf-names-use/error-015.rdf +25 -0
  317. data/spec/rdfcore/rdfms-rdf-names-use/error-016.rdf +25 -0
  318. data/spec/rdfcore/rdfms-rdf-names-use/error-017.rdf +25 -0
  319. data/spec/rdfcore/rdfms-rdf-names-use/error-018.rdf +25 -0
  320. data/spec/rdfcore/rdfms-rdf-names-use/error-019.rdf +25 -0
  321. data/spec/rdfcore/rdfms-rdf-names-use/error-020.rdf +25 -0
  322. data/spec/rdfcore/rdfms-rdf-names-use/test-001.nt +1 -0
  323. data/spec/rdfcore/rdfms-rdf-names-use/test-001.rdf +23 -0
  324. data/spec/rdfcore/rdfms-rdf-names-use/test-002.nt +1 -0
  325. data/spec/rdfcore/rdfms-rdf-names-use/test-002.rdf +23 -0
  326. data/spec/rdfcore/rdfms-rdf-names-use/test-003.nt +1 -0
  327. data/spec/rdfcore/rdfms-rdf-names-use/test-003.rdf +23 -0
  328. data/spec/rdfcore/rdfms-rdf-names-use/test-004.nt +1 -0
  329. data/spec/rdfcore/rdfms-rdf-names-use/test-004.rdf +23 -0
  330. data/spec/rdfcore/rdfms-rdf-names-use/test-005.nt +1 -0
  331. data/spec/rdfcore/rdfms-rdf-names-use/test-005.rdf +23 -0
  332. data/spec/rdfcore/rdfms-rdf-names-use/test-006.nt +1 -0
  333. data/spec/rdfcore/rdfms-rdf-names-use/test-006.rdf +23 -0
  334. data/spec/rdfcore/rdfms-rdf-names-use/test-007.nt +1 -0
  335. data/spec/rdfcore/rdfms-rdf-names-use/test-007.rdf +23 -0
  336. data/spec/rdfcore/rdfms-rdf-names-use/test-008.nt +1 -0
  337. data/spec/rdfcore/rdfms-rdf-names-use/test-008.rdf +23 -0
  338. data/spec/rdfcore/rdfms-rdf-names-use/test-009.nt +1 -0
  339. data/spec/rdfcore/rdfms-rdf-names-use/test-009.rdf +23 -0
  340. data/spec/rdfcore/rdfms-rdf-names-use/test-010.nt +1 -0
  341. data/spec/rdfcore/rdfms-rdf-names-use/test-010.rdf +23 -0
  342. data/spec/rdfcore/rdfms-rdf-names-use/test-011.nt +1 -0
  343. data/spec/rdfcore/rdfms-rdf-names-use/test-011.rdf +23 -0
  344. data/spec/rdfcore/rdfms-rdf-names-use/test-012.nt +1 -0
  345. data/spec/rdfcore/rdfms-rdf-names-use/test-012.rdf +23 -0
  346. data/spec/rdfcore/rdfms-rdf-names-use/test-013.nt +1 -0
  347. data/spec/rdfcore/rdfms-rdf-names-use/test-013.rdf +23 -0
  348. data/spec/rdfcore/rdfms-rdf-names-use/test-014.nt +1 -0
  349. data/spec/rdfcore/rdfms-rdf-names-use/test-014.rdf +23 -0
  350. data/spec/rdfcore/rdfms-rdf-names-use/test-015.nt +1 -0
  351. data/spec/rdfcore/rdfms-rdf-names-use/test-015.rdf +23 -0
  352. data/spec/rdfcore/rdfms-rdf-names-use/test-016.nt +1 -0
  353. data/spec/rdfcore/rdfms-rdf-names-use/test-016.rdf +23 -0
  354. data/spec/rdfcore/rdfms-rdf-names-use/test-017.nt +1 -0
  355. data/spec/rdfcore/rdfms-rdf-names-use/test-017.rdf +25 -0
  356. data/spec/rdfcore/rdfms-rdf-names-use/test-018.nt +1 -0
  357. data/spec/rdfcore/rdfms-rdf-names-use/test-018.rdf +25 -0
  358. data/spec/rdfcore/rdfms-rdf-names-use/test-019.nt +1 -0
  359. data/spec/rdfcore/rdfms-rdf-names-use/test-019.rdf +25 -0
  360. data/spec/rdfcore/rdfms-rdf-names-use/test-020.nt +1 -0
  361. data/spec/rdfcore/rdfms-rdf-names-use/test-020.rdf +25 -0
  362. data/spec/rdfcore/rdfms-rdf-names-use/test-021.nt +1 -0
  363. data/spec/rdfcore/rdfms-rdf-names-use/test-021.rdf +25 -0
  364. data/spec/rdfcore/rdfms-rdf-names-use/test-022.nt +1 -0
  365. data/spec/rdfcore/rdfms-rdf-names-use/test-022.rdf +25 -0
  366. data/spec/rdfcore/rdfms-rdf-names-use/test-023.nt +1 -0
  367. data/spec/rdfcore/rdfms-rdf-names-use/test-023.rdf +25 -0
  368. data/spec/rdfcore/rdfms-rdf-names-use/test-024.nt +1 -0
  369. data/spec/rdfcore/rdfms-rdf-names-use/test-024.rdf +25 -0
  370. data/spec/rdfcore/rdfms-rdf-names-use/test-025.nt +1 -0
  371. data/spec/rdfcore/rdfms-rdf-names-use/test-025.rdf +25 -0
  372. data/spec/rdfcore/rdfms-rdf-names-use/test-026.nt +1 -0
  373. data/spec/rdfcore/rdfms-rdf-names-use/test-026.rdf +25 -0
  374. data/spec/rdfcore/rdfms-rdf-names-use/test-027.nt +1 -0
  375. data/spec/rdfcore/rdfms-rdf-names-use/test-027.rdf +25 -0
  376. data/spec/rdfcore/rdfms-rdf-names-use/test-028.nt +1 -0
  377. data/spec/rdfcore/rdfms-rdf-names-use/test-028.rdf +25 -0
  378. data/spec/rdfcore/rdfms-rdf-names-use/test-029.nt +1 -0
  379. data/spec/rdfcore/rdfms-rdf-names-use/test-029.rdf +25 -0
  380. data/spec/rdfcore/rdfms-rdf-names-use/test-030.nt +1 -0
  381. data/spec/rdfcore/rdfms-rdf-names-use/test-030.rdf +25 -0
  382. data/spec/rdfcore/rdfms-rdf-names-use/test-031.nt +1 -0
  383. data/spec/rdfcore/rdfms-rdf-names-use/test-031.rdf +25 -0
  384. data/spec/rdfcore/rdfms-rdf-names-use/test-032.nt +1 -0
  385. data/spec/rdfcore/rdfms-rdf-names-use/test-032.rdf +24 -0
  386. data/spec/rdfcore/rdfms-rdf-names-use/test-033.nt +1 -0
  387. data/spec/rdfcore/rdfms-rdf-names-use/test-033.rdf +24 -0
  388. data/spec/rdfcore/rdfms-rdf-names-use/test-034.nt +1 -0
  389. data/spec/rdfcore/rdfms-rdf-names-use/test-034.rdf +24 -0
  390. data/spec/rdfcore/rdfms-rdf-names-use/test-035.nt +1 -0
  391. data/spec/rdfcore/rdfms-rdf-names-use/test-035.rdf +24 -0
  392. data/spec/rdfcore/rdfms-rdf-names-use/test-036.nt +1 -0
  393. data/spec/rdfcore/rdfms-rdf-names-use/test-036.rdf +24 -0
  394. data/spec/rdfcore/rdfms-rdf-names-use/test-037.nt +1 -0
  395. data/spec/rdfcore/rdfms-rdf-names-use/test-037.rdf +24 -0
  396. data/spec/rdfcore/rdfms-rdf-names-use/warn-001.nt +1 -0
  397. data/spec/rdfcore/rdfms-rdf-names-use/warn-001.rdf +23 -0
  398. data/spec/rdfcore/rdfms-rdf-names-use/warn-002.nt +1 -0
  399. data/spec/rdfcore/rdfms-rdf-names-use/warn-002.rdf +25 -0
  400. data/spec/rdfcore/rdfms-rdf-names-use/warn-003.nt +1 -0
  401. data/spec/rdfcore/rdfms-rdf-names-use/warn-003.rdf +24 -0
  402. data/spec/rdfcore/rdfms-reification-required/test001.nt +15 -0
  403. data/spec/rdfcore/rdfms-reification-required/test001.rdf +29 -0
  404. data/spec/rdfcore/rdfms-seq-representation/empty.nt +13 -0
  405. data/spec/rdfcore/rdfms-seq-representation/test001.nt +19 -0
  406. data/spec/rdfcore/rdfms-seq-representation/test001.rdf +33 -0
  407. data/spec/rdfcore/rdfms-seq-representation/test002.nt +14 -0
  408. data/spec/rdfcore/rdfms-seq-representation/test003a.nt +14 -0
  409. data/spec/rdfcore/rdfms-seq-representation/test003b.nt +14 -0
  410. data/spec/rdfcore/rdfms-seq-representation/test004.nt +14 -0
  411. data/spec/rdfcore/rdfms-syntax-incomplete/error001.rdf +26 -0
  412. data/spec/rdfcore/rdfms-syntax-incomplete/error002.rdf +26 -0
  413. data/spec/rdfcore/rdfms-syntax-incomplete/error003.rdf +29 -0
  414. data/spec/rdfcore/rdfms-syntax-incomplete/error004.rdf +25 -0
  415. data/spec/rdfcore/rdfms-syntax-incomplete/error005.rdf +25 -0
  416. data/spec/rdfcore/rdfms-syntax-incomplete/error006.rdf +28 -0
  417. data/spec/rdfcore/rdfms-syntax-incomplete/test001.nt +14 -0
  418. data/spec/rdfcore/rdfms-syntax-incomplete/test001.rdf +28 -0
  419. data/spec/rdfcore/rdfms-syntax-incomplete/test002.nt +19 -0
  420. data/spec/rdfcore/rdfms-syntax-incomplete/test002.rdf +38 -0
  421. data/spec/rdfcore/rdfms-syntax-incomplete/test003.nt +17 -0
  422. data/spec/rdfcore/rdfms-syntax-incomplete/test003.rdf +28 -0
  423. data/spec/rdfcore/rdfms-syntax-incomplete/test004.nt +21 -0
  424. data/spec/rdfcore/rdfms-syntax-incomplete/test004.rdf +36 -0
  425. data/spec/rdfcore/rdfms-uri-substructure/error001.nt +18 -0
  426. data/spec/rdfcore/rdfms-uri-substructure/test001.nt +17 -0
  427. data/spec/rdfcore/rdfms-uri-substructure/test001.rdf +29 -0
  428. data/spec/rdfcore/rdfms-xml-literal-namespaces/test001.nt +13 -0
  429. data/spec/rdfcore/rdfms-xml-literal-namespaces/test001.rdf +33 -0
  430. data/spec/rdfcore/rdfms-xml-literal-namespaces/test002.nt +14 -0
  431. data/spec/rdfcore/rdfms-xml-literal-namespaces/test002.rdf +47 -0
  432. data/spec/rdfcore/rdfms-xmllang/test001.nt +14 -0
  433. data/spec/rdfcore/rdfms-xmllang/test001.rdf +30 -0
  434. data/spec/rdfcore/rdfms-xmllang/test002.nt +14 -0
  435. data/spec/rdfcore/rdfms-xmllang/test002.rdf +29 -0
  436. data/spec/rdfcore/rdfms-xmllang/test003.nt +14 -0
  437. data/spec/rdfcore/rdfms-xmllang/test003.rdf +28 -0
  438. data/spec/rdfcore/rdfms-xmllang/test004.nt +14 -0
  439. data/spec/rdfcore/rdfms-xmllang/test004.rdf +28 -0
  440. data/spec/rdfcore/rdfms-xmllang/test005.nt +14 -0
  441. data/spec/rdfcore/rdfms-xmllang/test005.rdf +28 -0
  442. data/spec/rdfcore/rdfms-xmllang/test006.nt +14 -0
  443. data/spec/rdfcore/rdfms-xmllang/test006.rdf +29 -0
  444. data/spec/rdfcore/rdfms-xmllang/test007a.nt +14 -0
  445. data/spec/rdfcore/rdfms-xmllang/test007b.nt +14 -0
  446. data/spec/rdfcore/rdfms-xmllang/test007c.nt +14 -0
  447. data/spec/rdfcore/rdfs-container-membership-superProperty/not1C.rdf +13 -0
  448. data/spec/rdfcore/rdfs-container-membership-superProperty/not1P.rdf +14 -0
  449. data/spec/rdfcore/rdfs-domain-and-range/nonconclusions005.rdf +28 -0
  450. data/spec/rdfcore/rdfs-domain-and-range/nonconclusions006.rdf +28 -0
  451. data/spec/rdfcore/rdfs-domain-and-range/premises005.rdf +32 -0
  452. data/spec/rdfcore/rdfs-domain-and-range/premises006.rdf +32 -0
  453. data/spec/rdfcore/rdfs-domain-and-range/test001.nt +16 -0
  454. data/spec/rdfcore/rdfs-domain-and-range/test001.rdf +29 -0
  455. data/spec/rdfcore/rdfs-domain-and-range/test002.nt +16 -0
  456. data/spec/rdfcore/rdfs-domain-and-range/test002.rdf +29 -0
  457. data/spec/rdfcore/rdfs-entailment/test001.nt +16 -0
  458. data/spec/rdfcore/rdfs-entailment/test002.nt +15 -0
  459. data/spec/rdfcore/rdfs-no-cycles-in-subClassOf/test001.nt +18 -0
  460. data/spec/rdfcore/rdfs-no-cycles-in-subClassOf/test001.rdf +37 -0
  461. data/spec/rdfcore/rdfs-no-cycles-in-subPropertyOf/test001.nt +18 -0
  462. data/spec/rdfcore/rdfs-no-cycles-in-subPropertyOf/test001.rdf +40 -0
  463. data/spec/rdfcore/rdfs-subClassOf-a-Property/test001.nt +15 -0
  464. data/spec/rdfcore/rdfs-subPropertyOf-semantics/test001.nt +24 -0
  465. data/spec/rdfcore/rdfs-subPropertyOf-semantics/test002.nt +21 -0
  466. data/spec/rdfcore/statement-entailment/test001a.nt +12 -0
  467. data/spec/rdfcore/statement-entailment/test001b.nt +2 -0
  468. data/spec/rdfcore/statement-entailment/test002a.nt +2 -0
  469. data/spec/rdfcore/statement-entailment/test002b.nt +5 -0
  470. data/spec/rdfcore/tex-01/test001.rdf +34 -0
  471. data/spec/rdfcore/tex-01/test002.rdf +33 -0
  472. data/spec/rdfcore/unrecognised-xml-attributes/test001.nt +15 -0
  473. data/spec/rdfcore/unrecognised-xml-attributes/test001.rdf +31 -0
  474. data/spec/rdfcore/unrecognised-xml-attributes/test002.nt +14 -0
  475. data/spec/rdfcore/unrecognised-xml-attributes/test002.rdf +32 -0
  476. data/spec/rdfcore/xml-canon/test001.nt +16 -0
  477. data/spec/rdfcore/xml-canon/test001.rdf +28 -0
  478. data/spec/rdfcore/xmlbase/test001.nt +14 -0
  479. data/spec/rdfcore/xmlbase/test001.rdf +27 -0
  480. data/spec/rdfcore/xmlbase/test002.nt +14 -0
  481. data/spec/rdfcore/xmlbase/test002.rdf +28 -0
  482. data/spec/rdfcore/xmlbase/test003.nt +14 -0
  483. data/spec/rdfcore/xmlbase/test003.rdf +25 -0
  484. data/spec/rdfcore/xmlbase/test004.nt +18 -0
  485. data/spec/rdfcore/xmlbase/test004.rdf +27 -0
  486. data/spec/rdfcore/xmlbase/test006.nt +15 -0
  487. data/spec/rdfcore/xmlbase/test006.rdf +26 -0
  488. data/spec/rdfcore/xmlbase/test007.nt +14 -0
  489. data/spec/rdfcore/xmlbase/test007.rdf +25 -0
  490. data/spec/rdfcore/xmlbase/test008.nt +14 -0
  491. data/spec/rdfcore/xmlbase/test008.rdf +25 -0
  492. data/spec/rdfcore/xmlbase/test009.nt +14 -0
  493. data/spec/rdfcore/xmlbase/test009.rdf +26 -0
  494. data/spec/rdfcore/xmlbase/test010.nt +14 -0
  495. data/spec/rdfcore/xmlbase/test010.rdf +26 -0
  496. data/spec/rdfcore/xmlbase/test011.nt +14 -0
  497. data/spec/rdfcore/xmlbase/test011.rdf +27 -0
  498. data/spec/rdfcore/xmlbase/test013.nt +15 -0
  499. data/spec/rdfcore/xmlbase/test013.rdf +28 -0
  500. data/spec/rdfcore/xmlbase/test014.nt +15 -0
  501. data/spec/rdfcore/xmlbase/test014.rdf +28 -0
  502. data/spec/rdfcore/xmlsch-02/test001.rdf +34 -0
  503. data/spec/rdfcore/xmlsch-02/test002.rdf +34 -0
  504. data/spec/rdfcore/xmlsch-02/test003.rdf +37 -0
  505. data/spec/rdfcore_helper.rb +137 -0
  506. data/spec/rdfxml_spec.rb +349 -0
  507. data/spec/spec.opts +1 -0
  508. data/spec/spec_helper.rb +23 -0
  509. data/spec/store_spec.rb +205 -0
  510. data/spec/string_hacks_spec.rb +21 -0
  511. data/spec/triple_spec.rb +172 -0
  512. data/spec/uriref_spec.rb +117 -0
  513. data/test/longtests_spec.rb +25 -0
  514. data/test/n3_tests/lcsh/sh85062913.n3 +41 -0
  515. data/test/n3_tests/lcsh/sh85062913.nt +21 -0
  516. data/test/n3_tests/lcsh/sh85082139.n3 +157 -0
  517. data/test/n3_tests/lcsh/sh85082139.nt +79 -0
  518. data/test/n3_tests/lcsh/sh85118553.n3 +123 -0
  519. data/test/n3_tests/lcsh/sh85118553.nt +63 -0
  520. data/test/n3_tests/misc/on_now-01.n3 +30 -0
  521. data/test/n3_tests/misc/on_now-01.nt +15 -0
  522. data/test/n3_tests/n3p/simple-01.n3 +1 -0
  523. data/test/n3_tests/n3p/simple-01.nt +0 -0
  524. data/test/n3_tests/n3p/simple-02.n3 +4 -0
  525. data/test/n3_tests/n3p/simple-02.nt +0 -0
  526. data/test/n3_tests/n3p/simple-03.n3 +5 -0
  527. data/test/n3_tests/n3p/simple-03.nt +1 -0
  528. data/test/n3_tests/n3p/simple-04.n3 +6 -0
  529. data/test/n3_tests/n3p/simple-04.nt +3 -0
  530. data/test/n3_tests/n3p/simple-05.n3 +7 -0
  531. data/test/n3_tests/n3p/simple-05.nt +2 -0
  532. data/test/n3_tests/n3p/simple-06.n3 +6 -0
  533. data/test/n3_tests/n3p/simple-06.nt +4 -0
  534. data/test/n3_tests/n3p/simple-07.n3 +7 -0
  535. data/test/n3_tests/n3p/simple-07.nt +6 -0
  536. data/test/perf_test/test.rb +11 -0
  537. data/test/perf_test/tommorris.rdf +2267 -0
  538. data/test/rdf_tests/cc197bad-dc9c-440d-a5b5-d52ba2e14234.nt +24 -0
  539. data/test/rdf_tests/cc197bad-dc9c-440d-a5b5-d52ba2e14234.rdf +46 -0
  540. data/test/rdf_tests/tm_001.nt +1 -0
  541. data/test/rdf_tests/tm_001.rdf +7 -0
  542. data/test/rdf_tests/xml-literal-mixed.nt +7 -0
  543. data/test/rdf_tests/xml-literal-mixed.rdf +15 -0
  544. data/test/xml.rdf +6 -0
  545. metadata +698 -0
@@ -0,0 +1,148 @@
1
+ require 'rdf/redland'
2
+
3
+ module Matchers
4
+ class BeEquivalentGraph
5
+ def initialize(expected, info)
6
+ @expected = case expected
7
+ when Graph then expected
8
+ when Array then N3Parser.parse(expected.join("\n"), info.about, :strict => true)
9
+ when String then N3Parser.parse(expected, info.about, :strict => true)
10
+ when Parser then expected.graph
11
+ else nil
12
+ end
13
+ @info = info
14
+ end
15
+ def matches?(actual)
16
+ @actual = case actual
17
+ when Graph then actual
18
+ when Array then N3Parser.parse(actual.join("\n"), @info.about, :strict => true)
19
+ when String then N3Parser.parse(actual, @info.about, :strict => true)
20
+ when Parser then actual.graph
21
+ else nil
22
+ end
23
+ @actual == @expected
24
+ end
25
+ def failure_message_for_should
26
+ info = @info.respond_to?(:information) ? @info.information : ""
27
+ if @actual.size != @expected.size
28
+ "Graph entry count differs:\nexpected: #{@expected.size}\nactual: #{@actual.size}"
29
+ else
30
+ "Graph differs\n"
31
+ end +
32
+ "\n\n#{info + "\n" unless info.empty?}" +
33
+ "Unsorted Expected:\n#{@expected.to_ntriples}" +
34
+ "Unsorted Results:\n#{@actual.to_ntriples}" +
35
+ (@info.respond_to?(:trace) ? "\nDebug:\n#{@info.trace}" : "")
36
+ end
37
+ def negative_failure_message
38
+ "Graphs do not differ\n"
39
+ end
40
+ end
41
+
42
+ def be_equivalent_graph(expected, info = "")
43
+ BeEquivalentGraph.new(expected, info)
44
+ end
45
+
46
+ # Run expected SPARQL query against actual
47
+ class PassQuery
48
+ def initialize(expected, info)
49
+ @expected = expected
50
+ @query = Redland::Query.new(expected)
51
+ @info = info
52
+ end
53
+ def matches?(actual)
54
+ @actual = actual
55
+ @expected_results = @info.respond_to?(:expectedResults) ? @info.expectedResults : true
56
+ model = Redland::Model.new
57
+ ntriples_parser = Redland::Parser.ntriples
58
+ ntriples_parser.parse_string_into_model(model, actual.to_ntriples, "http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/")
59
+
60
+ @results = @query.execute(model)
61
+ if @expected_results
62
+ @results.is_boolean? && @results.get_boolean?
63
+ else
64
+ @results.nil? || @results.is_boolean? && !@results.get_boolean?
65
+ end
66
+ end
67
+ def failure_message_for_should
68
+ info = @info.respond_to?(:information) ? @info.information : ""
69
+ "#{info + "\n" unless info.empty?}" +
70
+ if @results.nil?
71
+ "Query failed to return results"
72
+ elsif !@results.is_boolean?
73
+ "Query returned non-boolean results"
74
+ elsif @expected_results
75
+ "Query returned false"
76
+ else
77
+ "Query returned true (expected false)"
78
+ end +
79
+ "\n#{@expected}" +
80
+ "\n#{@info.input}" +
81
+ "\nResults:\n#{@actual.to_ntriples}" +
82
+ "\nDebug:\n#{@info.trace}"
83
+ end
84
+ end
85
+
86
+ def pass_query(expected, info = "")
87
+ PassQuery.new(expected, info)
88
+ end
89
+
90
+ class BeValidXML
91
+ def initialize(info)
92
+ @info = info
93
+ end
94
+ def matches?(actual)
95
+ @actual = actual
96
+ @doc = Nokogiri::XML.parse(actual)
97
+ @results = @doc.validate
98
+ @results.nil?
99
+ rescue
100
+ false
101
+ end
102
+ def failure_message_for_should
103
+ "#{@info + "\n" unless @info.empty?}" +
104
+ if @doc.nil?
105
+ "did not parse"
106
+ else
107
+ "\n#{@results}" +
108
+ "\nParsed:\n#{@doc}"
109
+ end +
110
+ "\nActual:\n#{@actual}"
111
+ end
112
+ end
113
+
114
+ def be_valid_xml(info = "")
115
+ BeValidXML.new(info)
116
+ end
117
+
118
+ class BeEquivalentXML
119
+ def initialize(expected, info)
120
+ @expected = expected
121
+ @info = info
122
+ end
123
+
124
+ def matches?(actual)
125
+ @actual = actual
126
+
127
+ a = "<foo>#{@actual}</foo>" unless @actual.index("<") == 0
128
+ e = "<foo>#{@expected}</foo>" unless @actual.index("<") == 0
129
+ a_hash = ActiveSupport::XmlMini.parse(a)
130
+ e_hash = ActiveSupport::XmlMini.parse(e)
131
+ a_hash == e_hash
132
+ rescue
133
+ @fault = $!.message
134
+ false
135
+ end
136
+
137
+ def failure_message_for_should
138
+ "#{@info + "\n" unless @info.empty?}" +
139
+ "#{@fault + "\n" unless @fault.nil?}" +
140
+ "Expected:\n#{@expected}\n" +
141
+ "Actual:#{@actual}"
142
+ end
143
+ end
144
+
145
+ def be_equivalent_xml(expected, info = "")
146
+ BeEquivalentXML.new(expected, info)
147
+ end
148
+ end
@@ -0,0 +1,229 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ include Reddy
3
+
4
+ describe "N3 parser" do
5
+ before(:each) { @parser = N3Parser.new(:strict => true) }
6
+
7
+ describe "parse simple ntriples" do
8
+ it "should parse simple triple" do
9
+ n3_string = "<http://example.org/> <http://xmlns.com/foaf/0.1/name> \"Tom Morris\" . "
10
+ @parser.parse(n3_string)
11
+ @parser.graph[0].subject.to_s.should == "http://example.org/"
12
+ @parser.graph[0].predicate.to_s.should == "http://xmlns.com/foaf/0.1/name"
13
+ @parser.graph[0].object.to_s.should == "Tom Morris"
14
+ @parser.graph.size.should == 1
15
+ end
16
+
17
+ it "should parse simple triple from class method" do
18
+ n3_string = "<http://example.org/> <http://xmlns.com/foaf/0.1/name> \"Tom Morris\" . "
19
+ graph = N3Parser.new(:strict => true).parse(n3_string)
20
+ graph[0].subject.to_s.should == "http://example.org/"
21
+ graph[0].predicate.to_s.should == "http://xmlns.com/foaf/0.1/name"
22
+ graph[0].object.to_s.should == "Tom Morris"
23
+ graph.size.should == 1
24
+ end
25
+
26
+ # NTriple tests from http://www.w3.org/2000/10/rdf-tests/rdfcore/ntriples/test.nt
27
+ describe "recognize blank lines" do
28
+ {
29
+ "comment" => "# comment lines",
30
+ "comment after whitespace" => " # comment after whitespace",
31
+ "empty line" => "",
32
+ "line with spaces" => " "
33
+ }.each_pair do |name, statement|
34
+ specify "test #{name}" do
35
+ @parser.parse(statement)
36
+ @parser.graph.size.should == 0
37
+ end
38
+ end
39
+ end
40
+
41
+ it "should create named subject bnode" do
42
+ @parser.parse("_:anon <http://example.org/property> <http://example.org/resource2> .")
43
+ @parser.graph.should_not be_nil
44
+ @parser.graph.size.should == 1
45
+ triple = @parser.graph[0]
46
+ triple.subject.should be_a(BNode)
47
+ triple.subject.identifier.should =~ /anon/
48
+ triple.predicate.should == "http://example.org/property"
49
+ triple.object.should == "http://example.org/resource2"
50
+ end
51
+
52
+ it "should create named object bnode" do
53
+ @parser.parse("<http://example.org/resource2> <http://example.org/property> _:anon .")
54
+ @parser.graph.should_not be_nil
55
+ @parser.graph.size.should == 1
56
+ triple = @parser.graph[0]
57
+ triple.subject.should == "http://example.org/resource2"
58
+ triple.predicate.should == "http://example.org/property"
59
+ triple.object.should be_a(BNode)
60
+ triple.object.identifier.should =~ /anon/
61
+ end
62
+
63
+ {
64
+ "three uris" => "<http://example.org/resource1> <http://example.org/property> <http://example.org/resource2> .",
65
+ "spaces and tabs throughout" => " <http://example.org/resource3> <http://example.org/property> <http://example.org/resource2> . ",
66
+ "line ending with CR NL" => "<http://example.org/resource4> <http://example.org/property> <http://example.org/resource2> .\r\n",
67
+ "literal escapes (1)" => '<http://example.org/resource7> <http://example.org/property> "simple literal" .',
68
+ "literal escapes (2)" => '<http://example.org/resource8> <http://example.org/property> "backslash:\\\\" .',
69
+ "literal escapes (3)" => '<http://example.org/resource9> <http://example.org/property> "dquote:\"" .',
70
+ "literal escapes (4)" => '<http://example.org/resource10> <http://example.org/property> "newline:\n" .',
71
+ "literal escapes (5)" => '<http://example.org/resource11> <http://example.org/property> "return:\r" .',
72
+ "literal escapes (6)" => '<http://example.org/resource12> <http://example.org/property> "tab:\t" .',
73
+ "Space is optional before final . (1)" => ['<http://example.org/resource13> <http://example.org/property> <http://example.org/resource2>.', '<http://example.org/resource13> <http://example.org/property> <http://example.org/resource2> .'],
74
+ "Space is optional before final . (2)" => ['<http://example.org/resource14> <http://example.org/property> "x".', '<http://example.org/resource14> <http://example.org/property> "x" .'],
75
+
76
+ "XML Literals as Datatyped Literals (1)" => '<http://example.org/resource21> <http://example.org/property> ""^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
77
+ "XML Literals as Datatyped Literals (2)" => '<http://example.org/resource22> <http://example.org/property> " "^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
78
+ "XML Literals as Datatyped Literals (3)" => '<http://example.org/resource23> <http://example.org/property> "x"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
79
+ "XML Literals as Datatyped Literals (4)" => '<http://example.org/resource23> <http://example.org/property> "\""^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
80
+ "XML Literals as Datatyped Literals (5)" => '<http://example.org/resource24> <http://example.org/property> "<a></a>"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
81
+ "XML Literals as Datatyped Literals (6)" => '<http://example.org/resource25> <http://example.org/property> "a <b></b>"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
82
+ "XML Literals as Datatyped Literals (7)" => '<http://example.org/resource26> <http://example.org/property> "a <b></b> c"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
83
+ "XML Literals as Datatyped Literals (8)" => '<http://example.org/resource26> <http://example.org/property> "a\n<b></b>\nc"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
84
+ "XML Literals as Datatyped Literals (9)" => '<http://example.org/resource27> <http://example.org/property> "chat"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .',
85
+
86
+ "Plain literals with languages (1)" => '<http://example.org/resource30> <http://example.org/property> "chat"@fr .',
87
+ "Plain literals with languages (2)" => '<http://example.org/resource31> <http://example.org/property> "chat"@en .',
88
+
89
+ "Typed Literals" => '<http://example.org/resource32> <http://example.org/property> "abc"^^<http://example.org/datatype1> .',
90
+ }.each_pair do |name, statement|
91
+ specify "test #{name}" do
92
+ @parser.parse([statement].flatten.first)
93
+ @parser.graph.should_not be_nil
94
+ @parser.graph.size.should == 1
95
+ #puts @parser.graph[0].to_ntriples
96
+ @parser.graph[0].to_ntriples.should == [statement].flatten.last.gsub(/\s+/, " ").strip
97
+ end
98
+ end
99
+ end
100
+
101
+ describe "literal encodings" do
102
+ {
103
+ 'Dürst' => '_:a <http://example.org/named> "D\u00FCrst" .',
104
+ 'simple literal' => '<http://example.org/resource7> <http://example.org/property> "simple literal" .',
105
+ 'backslash:\\' => '<http://example.org/resource8> <http://example.org/property> "backslash:\\\\" .',
106
+ 'dquote:"' => '<http://example.org/resource9> <http://example.org/property> "dquote:\"" .',
107
+ "newline:\n" => '<http://example.org/resource10> <http://example.org/property> "newline:\n" .',
108
+ "return\r" => '<http://example.org/resource11> <http://example.org/property> "return\r" .',
109
+ "tab:\t" => '<http://example.org/resource12> <http://example.org/property> "tab:\t" .',
110
+ "é" => '<http://example.org/resource16> <http://example.org/property> "\u00E9" .',
111
+ "€" => '<http://example.org/resource17> <http://example.org/property> "\u20AC" .',
112
+ }.each_pair do |contents, triple|
113
+ specify "test #{contents}" do
114
+ @parser.parse(triple)
115
+ @parser.graph.should_not be_nil
116
+ @parser.graph.size.should == 1
117
+ @parser.graph[0].object.contents.should == contents
118
+ end
119
+ end
120
+ end
121
+
122
+ # n3p tests taken from http://inamidst.com/n3p/test/
123
+ describe "parsing n3p test" do
124
+ dir_name = File.join(File.dirname(__FILE__), '..', 'test', 'n3_tests', 'n3p', '*.n3')
125
+ Dir.glob(dir_name).each do |n3|
126
+ it n3 do
127
+ test_file(n3)
128
+ end
129
+ end
130
+ end
131
+
132
+ describe "parsing real data tests" do
133
+ dirs = [ 'misc', 'lcsh' ]
134
+ dirs.each do |dir|
135
+ dir_name = File.join(File.dirname(__FILE__), '..', 'test', 'n3_tests', dir, '*.n3')
136
+ Dir.glob(dir_name).each do |n3|
137
+ it "#{dir} #{n3}" do
138
+ test_file(n3)
139
+ end
140
+ end
141
+ end
142
+ end
143
+
144
+ it "should throw an exception when presented with a BNode as a predicate" do
145
+ n3doc = "_:a _:b _:c ."
146
+ lambda { @parser.parse(n3doc) }.should raise_error(Reddy::Triple::InvalidPredicate)
147
+ end
148
+
149
+ it "should create BNodes" do
150
+ n3doc = "_:a a _:c ."
151
+ @parser.parse(n3doc)
152
+ @parser.graph[0].subject.class.should == Reddy::BNode
153
+ @parser.graph[0].object.class.should == Reddy::BNode
154
+ end
155
+
156
+ it "should create URIRefs" do
157
+ n3doc = "<http://example.org/joe> <http://xmlns.com/foaf/0.1/knows> <http://example.org/jane> ."
158
+ @parser.parse(n3doc)
159
+ @parser.graph[0].subject.class.should == Reddy::URIRef
160
+ @parser.graph[0].object.class.should == Reddy::URIRef
161
+ end
162
+
163
+ it "should create literals" do
164
+ n3doc = "<http://example.org/joe> <http://xmlns.com/foaf/0.1/name> \"Joe\"."
165
+ @parser.parse(n3doc)
166
+ @parser.graph[0].object.class.should == Reddy::Literal
167
+ end
168
+
169
+ it "should create typed literals" do
170
+ n3doc = "<http://example.org/joe> <http://xmlns.com/foaf/0.1/name> \"Joe\"^^<http://www.w3.org/2001/XMLSchema#string> ."
171
+ @parser.parse(n3doc)
172
+ @parser.graph[0].object.class.should == Reddy::Literal
173
+ end
174
+
175
+ it "should map <#> to document uri" do
176
+ n3doc = "@prefix : <#> ."
177
+ @parser.parse(n3doc, "http://the.document.itself")
178
+ @parser.graph.nsbinding.should == {"__local__", Namespace.new("http://the.document.itself", "__local__")}
179
+ end
180
+
181
+ it "should parse testcase" do
182
+ sampledoc = <<-EOF;
183
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/Manifest.rdf#test001> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#PositiveParserTest> .
184
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/Manifest.rdf#test001> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#approval> <http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2002Mar/0235.html> .
185
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/Manifest.rdf#test001> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#inputDocument> <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.rdf> .
186
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/Manifest.rdf#test001> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#issue> <http://www.w3.org/2000/03/rdf-tracking/#rdfms-xml-base> .
187
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/Manifest.rdf#test001> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#outputDocument> <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.nt> .
188
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/Manifest.rdf#test001> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#status> "APPROVED" .
189
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.nt> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#NT-Document> .
190
+ <http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#RDF-XML-Document> .
191
+ EOF
192
+ @parser.parse(sampledoc, "http://www.w3.org/2000/10/rdf-tests/rdfcore/amp-in-url/Manifest.rdf")
193
+ ntriples = @parser.graph.to_ntriples
194
+ ntriples = sort_ntriples(ntriples)
195
+
196
+ nt_string = sort_ntriples(sampledoc)
197
+ ntriples.should == nt_string
198
+ end
199
+
200
+ def test_file(filepath)
201
+ anon = "a"
202
+ anon_ctx = {}
203
+ n3_string = File.read(filepath)
204
+ @parser.parse(n3_string, "file:#{filepath}")
205
+ ntriples = @parser.graph.to_ntriples
206
+ ntriples.gsub!(/_:nbn\d+[a-z]+N/, "_:") # Normalize named BNodes
207
+ ntriples.gsub!(/_:bn\d+[a-z]+/) do |bn|
208
+ # Normalize anon BNodes
209
+ if anon_ctx[bn]
210
+ anon_ctx[bn]
211
+ else
212
+ anon_ctx[bn] = anon
213
+ anon = anon.succ
214
+ end
215
+ "_:#{anon_ctx[bn]}"
216
+ end
217
+ ntriples = sort_ntriples(ntriples)
218
+
219
+ nt_string = File.read(filepath.sub('.n3', '.nt'))
220
+ nt_string = sort_ntriples(nt_string)
221
+
222
+ ntriples.should == nt_string
223
+ end
224
+
225
+ def sort_ntriples(string)
226
+ string.split("\n").sort.join("\n")
227
+ end
228
+
229
+ end
@@ -0,0 +1,66 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe "Namespace" do
4
+ subject { Namespace.new("http://xmlns.com/foaf/0.1/", "foaf") }
5
+
6
+ describe "method_missing" do
7
+ it "should create URIRef" do
8
+ subject.knows.to_s.should == "http://xmlns.com/foaf/0.1/knows"
9
+ end
10
+
11
+ it "should create URIRef for frag" do
12
+ foaf_frag = Namespace.new("http://xmlns.com/foaf/0.1/", "foaf", true)
13
+ foaf_frag.knows.to_s.should == "http://xmlns.com/foaf/0.1/#knows"
14
+ end
15
+ end
16
+
17
+ it "should have a URI" do
18
+ lambda do
19
+ test = Namespace.new(prefix='foaf')
20
+ end.should raise_error
21
+ end
22
+
23
+ it "should have equality with URIRefs" do
24
+ foaf_name = URIRef.new("http://xmlns.com/foaf/0.1/name")
25
+ subject.name.should == foaf_name
26
+ end
27
+
28
+ it "should have an XML and N3-friendly prefix" do
29
+ lambda do
30
+ test = Namespace.new('http://xmlns.com/foaf/0.1/', '*~{')
31
+ end.should raise_error
32
+ end
33
+
34
+ it "should be able to attach to the graph for substitution" do
35
+ # rdflib does this using graph.bind('prefix', namespace)
36
+ g = Graph.new
37
+ subject.bind(g)
38
+ #puts g.nsbinding.inspect
39
+ should == g.nsbinding["foaf"]
40
+ end
41
+
42
+ it "should not allow you to attach to non-graphs" do
43
+ lambda do
44
+ subject.bind("cheese")
45
+ end.should raise_error
46
+ end
47
+
48
+ it "should construct URI" do
49
+ subject.foo.class.should == URIRef
50
+ subject.foo.should == "http://xmlns.com/foaf/0.1/foo"
51
+ end
52
+
53
+ it "should construct URI with +" do
54
+ (subject + "foo").class.should == URIRef
55
+ (subject + "foo").should == "http://xmlns.com/foaf/0.1/foo"
56
+ end
57
+
58
+ it "will cause method conflict" do
59
+ (subject + "class").should == "http://xmlns.com/foaf/0.1/class"
60
+ subject.class.should == Namespace
61
+ end
62
+
63
+ it "should be be equivalent" do
64
+ Namespace.new("http://a", "aa").should == Namespace.new("http://a", "aa")
65
+ end
66
+ end
@@ -0,0 +1,78 @@
1
+ #
2
+ # Copyright World Wide Web Consortium, (Massachusetts Institute of
3
+ # Technology, Institut National de Recherche en Informatique et en
4
+ # Automatique, Keio University).
5
+ #
6
+ # All Rights Reserved.
7
+ #
8
+ # Please see the full Copyright clause at
9
+ # <http://www.w3.org/Consortium/Legal/copyright-software.html>
10
+ #
11
+ # Test file with a variety of legal N-Triples
12
+ #
13
+ # Dave Beckett - http://purl.org/net/dajobe/
14
+ #
15
+ # $Id: test.nt,v 1.7 2003/10/06 15:52:19 dbeckett2 Exp $
16
+ #
17
+ #####################################################################
18
+
19
+ # comment lines
20
+ # comment line after whitespace
21
+ # empty blank line, then one with spaces and tabs
22
+
23
+
24
+ <http://example.org/resource1> <http://example.org/property> <http://example.org/resource2> .
25
+ _:anon <http://example.org/property> <http://example.org/resource2> .
26
+ <http://example.org/resource2> <http://example.org/property> _:anon .
27
+ # spaces and tabs throughout:
28
+ <http://example.org/resource3> <http://example.org/property> <http://example.org/resource2> .
29
+
30
+ # line ending with CR NL (ASCII 13, ASCII 10)
31
+ <http://example.org/resource4> <http://example.org/property> <http://example.org/resource2> .
32
+
33
+ # 2 statement lines separated by single CR (ASCII 10)
34
+ <http://example.org/resource5> <http://example.org/property> <http://example.org/resource2> .
35
+
36
+
37
+ # All literal escapes
38
+ <http://example.org/resource7> <http://example.org/property> "simple literal" .
39
+ <http://example.org/resource8> <http://example.org/property> "backslash:\\" .
40
+ <http://example.org/resource9> <http://example.org/property> "dquote:\"" .
41
+ <http://example.org/resource10> <http://example.org/property> "newline:\n" .
42
+ <http://example.org/resource11> <http://example.org/property> "return\r" .
43
+ <http://example.org/resource12> <http://example.org/property> "tab:\t" .
44
+
45
+ # Space is optional before final .
46
+ <http://example.org/resource13> <http://example.org/property> <http://example.org/resource2>.
47
+ <http://example.org/resource14> <http://example.org/property> "x".
48
+ <http://example.org/resource15> <http://example.org/property> _:anon.
49
+
50
+ # \u and \U escapes
51
+ # latin small letter e with acute symbol \u00E9 - 3 UTF-8 bytes #xC3 #A9
52
+ <http://example.org/resource16> <http://example.org/property> "\u00E9" .
53
+ # Euro symbol \u20ac - 3 UTF-8 bytes #xE2 #x82 #xAC
54
+ <http://example.org/resource17> <http://example.org/property> "\u20AC" .
55
+ # resource18 test removed
56
+ # resource19 test removed
57
+ # resource20 test removed
58
+
59
+ # XML Literals as Datatyped Literals
60
+ <http://example.org/resource21> <http://example.org/property> ""^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
61
+ <http://example.org/resource22> <http://example.org/property> " "^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
62
+ <http://example.org/resource23> <http://example.org/property> "x"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
63
+ <http://example.org/resource23> <http://example.org/property> "\""^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
64
+ <http://example.org/resource24> <http://example.org/property> "<a></a>"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
65
+ <http://example.org/resource25> <http://example.org/property> "a <b></b>"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
66
+ <http://example.org/resource26> <http://example.org/property> "a <b></b> c"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
67
+ <http://example.org/resource26> <http://example.org/property> "a\n<b></b>\nc"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
68
+ <http://example.org/resource27> <http://example.org/property> "chat"^^<http://www.w3.org/2000/01/rdf-schema#XMLLiteral> .
69
+ # resource28 test removed 2003-08-03
70
+ # resource29 test removed 2003-08-03
71
+
72
+ # Plain literals with languages
73
+ <http://example.org/resource30> <http://example.org/property> "chat"@fr .
74
+ <http://example.org/resource31> <http://example.org/property> "chat"@en .
75
+
76
+ # Typed Literals
77
+ <http://example.org/resource32> <http://example.org/property> "abc"^^<http://example.org/datatype1> .
78
+ # resource33 test removed 2003-08-03