rdf-spec 0.3.2 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.4
data/etc/bendiken.nq ADDED
@@ -0,0 +1,8 @@
1
+ <http://ar.to/#self> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://ar.to/#self> .
2
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/name> "Arto Bendiken" <http://ar.to/#self> .
3
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox> <mailto:arto.bendiken@gmail.com> <http://ar.to/#self> .
4
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d0737cceb55eb7d740578d2db1bc0727e3ed49ce" <http://ar.to/#self> .
5
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "a033f652c84a4d73b8c26d318c2395699dd2bdfb" <http://ar.to/#self> .
6
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/homepage> <http://ar.to/> <http://ar.to/#self> .
7
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/made> <http://rubygems.org/gems/rdf> <http://ar.to/#self> .
8
+ <http://ar.to/#self> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bendiken/foaf> <http://ar.to/#self> .
data/etc/bendiken.nt ADDED
@@ -0,0 +1,8 @@
1
+ <http://ar.to/#self> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
2
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/name> "Arto Bendiken" .
3
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox> <mailto:arto.bendiken@gmail.com> .
4
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d0737cceb55eb7d740578d2db1bc0727e3ed49ce" .
5
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "a033f652c84a4d73b8c26d318c2395699dd2bdfb" .
6
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/homepage> <http://ar.to/> .
7
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/made> <http://rubygems.org/gems/rdf> .
8
+ <http://ar.to/#self> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bendiken/foaf> .
data/etc/bendiken.ttl ADDED
@@ -0,0 +1,17 @@
1
+ @base <http://rubygems.org/gems/rdf> .
2
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
3
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4
+ @prefix dc: <http://purl.org/dc/terms/> .
5
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
6
+ @prefix doap: <http://usefulinc.com/ns/doap#> .
7
+ @prefix ex: <http://example.org/> .
8
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9
+
10
+ <http://ar.to/#self> a foaf:Person ;
11
+ foaf:name "Arto Bendiken" ;
12
+ foaf:mbox <mailto:arto.bendiken@gmail.com> ;
13
+ foaf:mbox_sha1sum "d0737cceb55eb7d740578d2db1bc0727e3ed49ce",
14
+ "a033f652c84a4d73b8c26d318c2395699dd2bdfb" ;
15
+ foaf:homepage <http://ar.to/> ;
16
+ foaf:made <> ;
17
+ rdfs:isDefinedBy <http://datagraph.org/bendiken/foaf> .
data/etc/bhuga.nq ADDED
@@ -0,0 +1,6 @@
1
+ <http://bhuga.net/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://bhuga.net/#ben> .
2
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/name> "Ben Lavender" <http://bhuga.net/#ben> .
3
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox> <mailto:blavender@gmail.com> <http://bhuga.net/#ben> .
4
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" <http://bhuga.net/#ben> .
5
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/homepage> <http://bhuga.net/> <http://bhuga.net/#ben> .
6
+ <http://bhuga.net/#ben> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bhuga/foaf> <http://bhuga.net/#ben> .
data/etc/bhuga.nt ADDED
@@ -0,0 +1,6 @@
1
+ <http://bhuga.net/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
2
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/name> "Ben Lavender" .
3
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox> <mailto:blavender@gmail.com> .
4
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" .
5
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/homepage> <http://bhuga.net/> .
6
+ <http://bhuga.net/#ben> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bhuga/foaf> .
data/etc/bhuga.ttl ADDED
@@ -0,0 +1,15 @@
1
+ @base <http://rubygems.org/gems/rdf> .
2
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
3
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4
+ @prefix dc: <http://purl.org/dc/terms/> .
5
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
6
+ @prefix doap: <http://usefulinc.com/ns/doap#> .
7
+ @prefix ex: <http://example.org/> .
8
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9
+
10
+ <http://bhuga.net/#ben> a foaf:Person ;
11
+ foaf:name "Ben Lavender" ;
12
+ foaf:mbox <mailto:blavender@gmail.com> ;
13
+ foaf:mbox_sha1sum "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" ;
14
+ foaf:homepage <http://bhuga.net/> ;
15
+ rdfs:isDefinedBy <http://datagraph.org/bhuga/foaf> .
data/etc/doap.nq ADDED
@@ -0,0 +1,92 @@
1
+ <http://ar.to/#self> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://ar.to/#self> .
2
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/name> "Arto Bendiken" <http://ar.to/#self> .
3
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox> <mailto:arto.bendiken@gmail.com> <http://ar.to/#self> .
4
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d0737cceb55eb7d740578d2db1bc0727e3ed49ce" <http://ar.to/#self> .
5
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "a033f652c84a4d73b8c26d318c2395699dd2bdfb" <http://ar.to/#self> .
6
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/homepage> <http://ar.to/> <http://ar.to/#self> .
7
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/made> <http://rubygems.org/gems/rdf> <http://ar.to/#self> .
8
+ <http://ar.to/#self> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bendiken/foaf> <http://ar.to/#self> .
9
+ <http://bhuga.net/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://bhuga.net/#ben> .
10
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/name> "Ben Lavender" <http://bhuga.net/#ben> .
11
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox> <mailto:blavender@gmail.com> <http://bhuga.net/#ben> .
12
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" <http://bhuga.net/#ben> .
13
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/homepage> <http://bhuga.net/> <http://bhuga.net/#ben> .
14
+ <http://bhuga.net/#ben> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bhuga/foaf> <http://bhuga.net/#ben> .
15
+ <http://greggkellogg.net/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://greggkellogg.net/#me> .
16
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" <http://greggkellogg.net/#me> .
17
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/mbox> <mailto:gregg@greggkellogg.net> <http://greggkellogg.net/#me> .
18
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "b7a856d39fc3f02573271d9901f1f9107147f657" <http://greggkellogg.net/#me> .
19
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/homepage> <http://greggkellogg.net/> <http://greggkellogg.net/#me> .
20
+ <http://rubygems.org/gems/rdf> <http://purl.org/dc/terms/creator> <http://ar.to/#self> .
21
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <http://ar.to/> .
22
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <http://blog.datagraph.org/> .
23
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#bug-database> <http://github.com/bendiken/rdf/issues> .
24
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Resource_Description_Framework> .
25
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Ruby_(programming_language)> .
26
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#created> "2007-10-23" .
27
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#description> "RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data."@en .
28
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://ar.to/#self> .
29
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://bhuga.net/#ben> .
30
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://greggkellogg.net/#me> .
31
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://ar.to/#self> .
32
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://bhuga.net/#ben> .
33
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://greggkellogg.net/#me> .
34
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#download-page> <http://rubyforge.org/projects/rdf/> .
35
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid1 .
36
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid2 .
37
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid3 .
38
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid4 .
39
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid5 .
40
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid6 .
41
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid7 .
42
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid8 .
43
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid9 .
44
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#homepage> <http://rdf.rubyforge.org/> .
45
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#license> <http://creativecommons.org/licenses/publicdomain/> .
46
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://ar.to/#self> .
47
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://bhuga.net/#ben> .
48
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://greggkellogg.net/#me> .
49
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#name> "RDF.rb" .
50
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#platform> "Ruby" .
51
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#shortdesc> "A Ruby library for working with Resource Description Framework (RDF) data."@en .
52
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#vendor> <http://datagraph.org/> .
53
+ <http://rubygems.org/gems/rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://usefulinc.com/ns/doap#Project> .
54
+ <http://rubygems.org/gems/rdf> <http://xmlns.com/foaf/0.1/maker> <http://ar.to/#self> .
55
+ _:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
56
+ _:genid1 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "274bd18402fc773ffc0606996aa1fb90b603aa29" .
57
+ _:genid1 <http://xmlns.com/foaf/0.1/name> "C\u0103lin Ardelean" .
58
+ _:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
59
+ _:genid2 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "6de43e9cf7de53427fea9765706703e4d957c17b" .
60
+ _:genid2 <http://xmlns.com/foaf/0.1/name> "Danny Gagne" .
61
+ _:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
62
+ _:genid3 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "f412d743150d7b27b8468d56e69ca147917ea6fc" .
63
+ _:genid3 <http://xmlns.com/foaf/0.1/name> "Joey Geiger" .
64
+ _:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
65
+ _:genid4 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d31fdd6af7a279a89bf09fdc9f7c44d9d08bb930" .
66
+ _:genid4 <http://xmlns.com/foaf/0.1/name> "Fumihiro Kato" .
67
+ _:genid5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
68
+ _:genid5 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "5bdcd8e2af4f5952aaeeffbdd371c41525ec761d" .
69
+ _:genid5 <http://xmlns.com/foaf/0.1/name> "Naoki Kawamukai" .
70
+ _:genid6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
71
+ _:genid6 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "c69f3255ff0639543cc5edfd8116eac8df16fab8" .
72
+ _:genid6 <http://xmlns.com/foaf/0.1/name> "Hellekin O. Wolf" .
73
+ _:genid7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
74
+ _:genid7 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "f7653fc1ac0e82ebb32f092389bd5fc728eaae12" .
75
+ _:genid7 <http://xmlns.com/foaf/0.1/name> "John Fieber" .
76
+ _:genid8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
77
+ _:genid8 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "2b4247b6fd5bb4a1383378f325784318680d5ff9" .
78
+ _:genid8 <http://xmlns.com/foaf/0.1/name> "Keita Urashima" .
79
+ _:genid9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
80
+ _:genid9 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "bedbbf2451e5beb38d59687c0460032aff92cd3c" .
81
+ _:genid9 <http://xmlns.com/foaf/0.1/name> "Pius Uzamere" .
82
+ # Test data from SPARQLdata-r2/expr-equals
83
+ <http://example.org/xi1> <http://example.org/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
84
+ <http://example.org/xi2> <http://example.org/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
85
+ <http://example.org/xi3> <http://example.org/p> "01"^^<http://www.w3.org/2001/XMLSchema#integer> .
86
+ <http://example.org/xd1> <http://example.org/p> "1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> .
87
+ <http://example.org/xd2> <http://example.org/p> "1.0"^^<http://www.w3.org/2001/XMLSchema#double> .
88
+ <http://example.org/xd3> <http://example.org/p> "1"^^<http://www.w3.org/2001/XMLSchema#double> .
89
+ <http://example.org/xt1> <http://example.org/p> "zzz"^^<http://example.org/myType> .
90
+ <http://example.org/xp1> <http://example.org/p> "zzz" .
91
+ <http://example.org/xp2> <http://example.org/p> "1" .
92
+ <http://example.org/xu> <http://example.org/p> <http://example.org/z> .
data/etc/doap.nt CHANGED
@@ -1,22 +1,3 @@
1
- <http://ar.to/#self> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
2
- <http://ar.to/#self> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bendiken/foaf> .
3
- <http://ar.to/#self> <http://xmlns.com/foaf/0.1/homepage> <http://ar.to/> .
4
- <http://ar.to/#self> <http://xmlns.com/foaf/0.1/made> <http://rubygems.org/gems/rdf> .
5
- <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox> <mailto:arto.bendiken@gmail.com> .
6
- <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "a033f652c84a4d73b8c26d318c2395699dd2bdfb" .
7
- <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d0737cceb55eb7d740578d2db1bc0727e3ed49ce" .
8
- <http://ar.to/#self> <http://xmlns.com/foaf/0.1/name> "Arto Bendiken" .
9
- <http://bhuga.net/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
10
- <http://bhuga.net/#ben> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bhuga/foaf> .
11
- <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/homepage> <http://bhuga.net/> .
12
- <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox> <mailto:blavender@gmail.com> .
13
- <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" .
14
- <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/name> "Ben Lavender" .
15
- <http://kellogg-assoc.com/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
16
- <http://kellogg-assoc.com/#me> <http://xmlns.com/foaf/0.1/homepage> <http://kellogg-assoc.com/> .
17
- <http://kellogg-assoc.com/#me> <http://xmlns.com/foaf/0.1/mbox> <mailto:gregg@kellogg-assoc.com> .
18
- <http://kellogg-assoc.com/#me> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "35bc44e6d0070e5ad50ccbe0d24403c96af2b9bd" .
19
- <http://kellogg-assoc.com/#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
20
1
  <http://rubygems.org/gems/rdf> <http://purl.org/dc/terms/creator> <http://ar.to/#self> .
21
2
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <http://ar.to/> .
22
3
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <http://blog.datagraph.org/> .
@@ -27,10 +8,10 @@
27
8
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#description> "RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data."@en .
28
9
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://ar.to/#self> .
29
10
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://bhuga.net/#ben> .
30
- <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://kellogg-assoc.com/#me> .
11
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://greggkellogg.net/#me> .
31
12
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://ar.to/#self> .
32
13
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://bhuga.net/#ben> .
33
- <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://kellogg-assoc.com/#me> .
14
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://greggkellogg.net/#me> .
34
15
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#download-page> <http://rubyforge.org/projects/rdf/> .
35
16
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid1 .
36
17
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid2 .
@@ -45,7 +26,7 @@
45
26
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#license> <http://creativecommons.org/licenses/publicdomain/> .
46
27
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://ar.to/#self> .
47
28
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://bhuga.net/#ben> .
48
- <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://kellogg-assoc.com/#me> .
29
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://greggkellogg.net/#me> .
49
30
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#name> "RDF.rb" .
50
31
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#platform> "Ruby" .
51
32
  <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#shortdesc> "A Ruby library for working with Resource Description Framework (RDF) data."@en .
data/etc/doap.ttl ADDED
@@ -0,0 +1,53 @@
1
+ @base <http://rubygems.org/gems/rdf> .
2
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
3
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4
+ @prefix dc: <http://purl.org/dc/terms/> .
5
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
6
+ @prefix doap: <http://usefulinc.com/ns/doap#> .
7
+
8
+ <> a doap:Project ;
9
+ doap:name "RDF.rb" ;
10
+ doap:homepage <http://rdf.rubyforge.org/> ;
11
+ doap:license <http://creativecommons.org/licenses/publicdomain/> ;
12
+ doap:shortdesc "A Ruby library for working with Resource Description Framework (RDF) data."@en ;
13
+ doap:description "RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data."@en ;
14
+ doap:created "2007-10-23" ;
15
+ doap:platform "Ruby" ;
16
+ doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
17
+ <http://dbpedia.org/resource/Ruby_(programming_language)> ;
18
+ doap:download-page <http://rubyforge.org/projects/rdf/> ;
19
+ doap:bug-database <http://github.com/bendiken/rdf/issues> ;
20
+ doap:blog <http://ar.to/>, <http://blog.datagraph.org/> ;
21
+ doap:vendor <http://datagraph.org/> ;
22
+ doap:developer <http://ar.to/#self>, <http://bhuga.net/#ben>, <http://greggkellogg.net/#me> ;
23
+ doap:maintainer <http://ar.to/#self>, <http://bhuga.net/#ben>, <http://greggkellogg.net/#me> ;
24
+ doap:documenter <http://ar.to/#self>, <http://bhuga.net/#ben>, <http://greggkellogg.net/#me> ;
25
+ doap:helper [a foaf:Person ;
26
+ foaf:name "Călin Ardelean" ;
27
+ foaf:mbox_sha1sum "274bd18402fc773ffc0606996aa1fb90b603aa29"] ;
28
+ doap:helper [a foaf:Person ;
29
+ foaf:name "Danny Gagne" ;
30
+ foaf:mbox_sha1sum "6de43e9cf7de53427fea9765706703e4d957c17b"] ;
31
+ doap:helper [a foaf:Person ;
32
+ foaf:name "Joey Geiger" ;
33
+ foaf:mbox_sha1sum "f412d743150d7b27b8468d56e69ca147917ea6fc"] ;
34
+ doap:helper [a foaf:Person ;
35
+ foaf:name "Fumihiro Kato" ;
36
+ foaf:mbox_sha1sum "d31fdd6af7a279a89bf09fdc9f7c44d9d08bb930"] ;
37
+ doap:helper [a foaf:Person ;
38
+ foaf:name "Naoki Kawamukai" ;
39
+ foaf:mbox_sha1sum "5bdcd8e2af4f5952aaeeffbdd371c41525ec761d"] ;
40
+ doap:helper [a foaf:Person ;
41
+ foaf:name "Hellekin O. Wolf" ;
42
+ foaf:mbox_sha1sum "c69f3255ff0639543cc5edfd8116eac8df16fab8"] ;
43
+ doap:helper [a foaf:Person ;
44
+ foaf:name "John Fieber" ;
45
+ foaf:mbox_sha1sum "f7653fc1ac0e82ebb32f092389bd5fc728eaae12"] ;
46
+ doap:helper [a foaf:Person ;
47
+ foaf:name "Keita Urashima" ;
48
+ foaf:mbox_sha1sum "2b4247b6fd5bb4a1383378f325784318680d5ff9"] ;
49
+ doap:helper [a foaf:Person ;
50
+ foaf:name "Pius Uzamere" ;
51
+ foaf:mbox_sha1sum "bedbbf2451e5beb38d59687c0460032aff92cd3c"] ;
52
+ foaf:maker <http://ar.to/#self> ;
53
+ dc:creator <http://ar.to/#self> .
data/etc/gkellogg.nq ADDED
@@ -0,0 +1,5 @@
1
+ <http://greggkellogg.net/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://greggkellogg.net/#me> .
2
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" <http://greggkellogg.net/#me> .
3
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/mbox> <mailto:gregg@greggkellogg.net> <http://greggkellogg.net/#me> .
4
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "b7a856d39fc3f02573271d9901f1f9107147f657" <http://greggkellogg.net/#me> .
5
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/homepage> <http://greggkellogg.net/> <http://greggkellogg.net/#me> .
data/etc/gkellogg.nt ADDED
@@ -0,0 +1,5 @@
1
+ <http://greggkellogg.net/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
2
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
3
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/mbox> <mailto:gregg@greggkellogg.net> .
4
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "b7a856d39fc3f02573271d9901f1f9107147f657" .
5
+ <http://greggkellogg.net/#me> <http://xmlns.com/foaf/0.1/homepage> <http://greggkellogg.net/> .
data/etc/gkellogg.ttl ADDED
@@ -0,0 +1,14 @@
1
+ @base <http://rubygems.org/gems/rdf> .
2
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
3
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4
+ @prefix dc: <http://purl.org/dc/terms/> .
5
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
6
+ @prefix doap: <http://usefulinc.com/ns/doap#> .
7
+ @prefix ex: <http://example.org/> .
8
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9
+
10
+ <http://greggkellogg.net/#me> a foaf:Person ;
11
+ foaf:name "Gregg Kellogg" ;
12
+ foaf:mbox <mailto:gregg@greggkellogg.net> ;
13
+ foaf:mbox_sha1sum "b7a856d39fc3f02573271d9901f1f9107147f657" ;
14
+ foaf:homepage <http://greggkellogg.net/> .
data/etc/test-data.nt ADDED
@@ -0,0 +1,11 @@
1
+ # Test data from SPARQLdata-r2/expr-equals
2
+ <http://example.org/xi1> <http://example.org/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
3
+ <http://example.org/xi2> <http://example.org/p> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
4
+ <http://example.org/xi3> <http://example.org/p> "01"^^<http://www.w3.org/2001/XMLSchema#integer> .
5
+ <http://example.org/xd1> <http://example.org/p> "1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> .
6
+ <http://example.org/xd2> <http://example.org/p> "1.0"^^<http://www.w3.org/2001/XMLSchema#double> .
7
+ <http://example.org/xd3> <http://example.org/p> "1"^^<http://www.w3.org/2001/XMLSchema#double> .
8
+ <http://example.org/xt1> <http://example.org/p> "zzz"^^<http://example.org/myType> .
9
+ <http://example.org/xp1> <http://example.org/p> "zzz" .
10
+ <http://example.org/xp2> <http://example.org/p> "1" .
11
+ <http://example.org/xu> <http://example.org/p> <http://example.org/z> .
@@ -3,5 +3,26 @@ require 'rdf/spec'
3
3
  share_as :RDF_Format do
4
4
  include RDF::Spec::Matchers
5
5
 
6
- # TODO
6
+ before(:each) do
7
+ raise raise '+@format_class+ must be defined in a before(:each) block' unless instance_variable_get('@format_class')
8
+ end
9
+
10
+ describe ".reader" do
11
+ it "returns a reader" do
12
+ @format_class.each do |f|
13
+ f.reader.should_not be_nil
14
+ end
15
+ end
16
+ end
17
+
18
+ describe ".writer" do
19
+ ##
20
+ # May not return a writer, only does if one is defined by the format
21
+ it "returns a writer" do
22
+ @format_class.each do |f|
23
+ format_namespace = f.name.split('::')[0..-2].inject(Kernel) {|base, const| base.const_get(const)}
24
+ f.writer.should_not be_nil if format_namespace.const_defined?(:Writer)
25
+ end
26
+ end
27
+ end
7
28
  end
@@ -6,14 +6,15 @@ share_as :RDF_Queryable do
6
6
  before :each do
7
7
  raise '+@queryable+ must be defined in a before(:each) block' unless instance_variable_get('@queryable')
8
8
 
9
- @filename = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'etc', 'doap.nt'))
10
- @statements = RDF::NTriples::Reader.new(File.open(@filename)).to_a
9
+ @doap = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'etc', 'doap.nq'))
10
+ @doaps = RDF::NQuads::Reader.new(File.open(@doap)).to_a
11
+ @statements = @doaps
11
12
 
12
13
  if @queryable.empty?
13
14
  if @queryable.respond_to?(:<<)
14
- @statements.each { |statement| @queryable << statement }
15
+ @doaps.each { |statement| @queryable << statement }
15
16
  else
16
- raise "@queryable must respond to #<< or be pre-populated with the statements in #{@filename} in a before(:each) block"
17
+ raise "@queryable must respond to #<< or be pre-populated with the statements in #{@doap} in a before(:each) block"
17
18
  end
18
19
  end
19
20
 
@@ -22,150 +23,245 @@ share_as :RDF_Queryable do
22
23
 
23
24
  ##
24
25
  # @see RDF::Queryable#query
25
-
26
- it "should respond to #query" do
27
- @queryable.should respond_to(:query)
28
- end
29
-
30
- context "#query when called" do
31
- it "should require an argument" do
32
- lambda { @queryable.query }.should raise_error(ArgumentError)
26
+ describe "#query" do
27
+ it "should respond to #query" do
28
+ @queryable.should respond_to(:query)
33
29
  end
34
30
 
35
- it "should accept a pattern argument" do
36
- lambda { @queryable.query(RDF::Query::Pattern.new(nil, nil, nil)) }.should_not raise_error(ArgumentError)
37
- lambda { @queryable.query(RDF::Query::Pattern.new(:s, :p, :o)) }.should_not raise_error(ArgumentError)
38
- end
31
+ context "when called" do
32
+ it "requires an argument" do
33
+ lambda { @queryable.query }.should raise_error(ArgumentError)
34
+ end
39
35
 
40
- it "should accept a statement argument" do
41
- lambda { @queryable.query(RDF::Statement.new(nil, nil, nil)) }.should_not raise_error(ArgumentError)
42
- end
36
+ it "accepts a pattern argument" do
37
+ lambda { @queryable.query(RDF::Query::Pattern.new(nil, nil, nil)) }.should_not raise_error(ArgumentError)
38
+ lambda { @queryable.query(RDF::Query::Pattern.new(:s, :p, :o)) }.should_not raise_error(ArgumentError)
39
+ end
43
40
 
44
- it "should accept a triple argument" do
45
- lambda { @queryable.query([nil, nil, nil]) }.should_not raise_error(ArgumentError)
46
- end
41
+ it "accepts a statement argument" do
42
+ lambda { @queryable.query(RDF::Statement.new(nil, nil, nil)) }.should_not raise_error(ArgumentError)
43
+ end
47
44
 
48
- it "should accept a quad argument" do
49
- lambda { @queryable.query([nil, nil, nil, nil]) }.should_not raise_error(ArgumentError)
50
- end
45
+ it "accepts a triple argument" do
46
+ lambda { @queryable.query([nil, nil, nil]) }.should_not raise_error(ArgumentError)
47
+ end
51
48
 
52
- it "should accept a hash argument" do
53
- lambda { @queryable.query({}) }.should_not raise_error(ArgumentError)
54
- end
49
+ it "accepts a quad argument" do
50
+ lambda { @queryable.query([nil, nil, nil, nil]) }.should_not raise_error(ArgumentError)
51
+ end
55
52
 
56
- it "should not alter a given hash argument" do
57
- query = {:subject => @subject, :predicate => RDF::DOAP.name, :object => RDF::FOAF.Person}
58
- original_query = query.dup
59
- @queryable.query(query)
60
- query.should == original_query
61
- end
53
+ it "accepts a hash argument" do
54
+ lambda { @queryable.query({}) }.should_not raise_error(ArgumentError)
55
+ end
62
56
 
63
- it "should reject other kinds of arguments" do
64
- lambda { @queryable.query(nil) }.should raise_error(ArgumentError)
65
- end
66
- end
57
+ it "does not alter a given hash argument" do
58
+ query = {:subject => @subject, :predicate => RDF::DOAP.name, :object => RDF::FOAF.Person}
59
+ original_query = query.dup
60
+ @queryable.query(query)
61
+ query.should == original_query
62
+ end
67
63
 
68
- context "#query when called with a block" do
69
- it "should yield statements" do
70
- @queryable.query([nil, nil, nil]) do |statement|
71
- statement.should be_a_statement
64
+ it "rejects other kinds of arguments" do
65
+ lambda { @queryable.query(nil) }.should raise_error(ArgumentError)
72
66
  end
73
- end
74
- end
75
67
 
76
- context "#query when called without a block" do
77
- it "should return an enumerator" do
78
- @queryable.query([nil, nil, nil]).should be_an_enumerator
79
- end
68
+ context "with a block" do
69
+ it "yields statements" do
70
+ @queryable.query([nil, nil, nil]) do |statement|
71
+ statement.should be_a_statement
72
+ end
73
+ end
74
+ end
80
75
 
81
- it "should return an enumerable enumerator" do
82
- @queryable.query([nil, nil, nil]).should be_enumerable
83
- end
76
+ context "without a block" do
77
+ it "returns an enumerator" do
78
+ @queryable.query([nil, nil, nil]).should be_an_enumerator
79
+ end
84
80
 
85
- it "should return a queryable enumerator" do
86
- @queryable.query([nil, nil, nil]).should be_queryable
87
- end
81
+ it "returns an enumerable enumerator" do
82
+ @queryable.query([nil, nil, nil]).should be_enumerable
83
+ end
84
+
85
+ it "returns a queryable enumerator" do
86
+ @queryable.query([nil, nil, nil]).should be_queryable
87
+ end
88
+
89
+ it "returns statements" do
90
+ @queryable.query([nil, nil, nil]).each do |statement|
91
+ statement.should be_a_statement
92
+ end
93
+ end
94
+
95
+ it "returns the correct number of results for array queries" do
96
+ @queryable.query([nil, nil, nil]).size.should == @statements.size
97
+ @queryable.query([@subject, nil, nil]).size.should == File.readlines(@doap).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
98
+ @queryable.query([RDF::URI("http://ar.to/#self"), nil, nil]).size.should == File.readlines(@doap).grep(/^<http:\/\/ar.to\/\#self>/).size
99
+ @queryable.query([@subject, RDF::DOAP.name, nil]).size.should == 1
100
+ #@queryable.query([@subject, RDF::DOAP.developer, nil]).size.should == @queryable.query([nil, nil, RDF::FOAF.Person]).size # FIXME: assumes too much about the doap.nt data
101
+ @queryable.query([nil, nil, RDF::DOAP.Project]).size.should == 1
102
+ end
88
103
 
89
- it "should return statements" do
90
- @queryable.query([nil, nil, nil]).each do |statement|
91
- statement.should be_a_statement
104
+ it "returns the correct number of results for hash queries" do
105
+ @queryable.query({}).size.should == @statements.size
106
+ @queryable.query(:subject => @subject) .size.should == File.readlines(@doap).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
107
+ @queryable.query(:subject => @subject, :predicate => RDF::DOAP.name).size.should == 1
108
+ #@queryable.query(:subject => @subject, :predicate => RDF::DOAP.developer).size.should == @queryable.query(:object => RDF::FOAF.Person).size # FIXME: assumes too much about the doap.nt data
109
+ @queryable.query(:object => RDF::DOAP.Project).size.should == 1
110
+ end
92
111
  end
93
- end
94
112
 
95
- it "should return the correct number of results for array queries" do
96
- @queryable.query([nil, nil, nil]).size.should == File.readlines(@filename).size
97
- @queryable.query([@subject, nil, nil]).size.should == File.readlines(@filename).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
98
- @queryable.query([@subject, RDF::DOAP.name, nil]).size.should == 1
99
- #@queryable.query([@subject, RDF::DOAP.developer, nil]).size.should == @queryable.query([nil, nil, RDF::FOAF.Person]).size # FIXME: assumes too much about the doap.nt data
100
- @queryable.query([nil, nil, RDF::DOAP.Project]).size.should == 1
101
- end
113
+ context "with specific patterns from SPARQL", :pending => "SPARQL compatibility" do
114
+ context "triple pattern combinations" do
115
+ it "?s p o" do
116
+ @queryable.query(:predicate => RDF::URI("http://example.org/p"), :object => RDF::Literal.new(1)).to_a.should ==
117
+ [RDF::Statement.new(RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1), RDF::Statement.new(RDF::URI("http://example.org/xi2"), RDF::URI("http://example.org/p"), 1)]
118
+ end
102
119
 
103
- it "should return the correct number of results for hash queries" do
104
- @queryable.query({}).size.should == File.readlines(@filename).size
105
- @queryable.query(:subject => @subject) .size.should == File.readlines(@filename).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
106
- @queryable.query(:subject => @subject, :predicate => RDF::DOAP.name).size.should == 1
107
- #@queryable.query(:subject => @subject, :predicate => RDF::DOAP.developer).size.should == @queryable.query(:object => RDF::FOAF.Person).size # FIXME: assumes too much about the doap.nt data
108
- @queryable.query(:object => RDF::DOAP.Project).size.should == 1
120
+ it "s ?p o" do
121
+ @queryable.query(:subject => RDF::URI("http://example.org/xi2"), :object => RDF::Literal.new(1)).to_a.should ==
122
+ [RDF::Statement.new(RDF::URI("http://example.org/xi2"), RDF::URI("http://example.org/p"), 1)]
123
+ end
124
+ end
125
+
126
+ # From data-r2/expr-equals
127
+ context "data/r2/expr-equals" do
128
+ context "graph-1" do
129
+ before(:each) do
130
+ @solutions = @queryable.query(:predicate => RDF::URI("http://example.org/p"), :object => RDF::Literal::Integer.new(1)).to_a
131
+ end
132
+
133
+ it "has two solutions" do
134
+ @solutions.count.should == 2
135
+ end
136
+
137
+ it "has xi1 as a solution" do
138
+ @solutions.any? {|s| s.subject == RDF::URI("http://example.org/xi1")}.should be_true
139
+ end
140
+
141
+ it "has xi2 as a solution" do
142
+ @solutions.any? {|s| s.subject == RDF::URI("http://example.org/xi2")}.should be_true
143
+ end
144
+ end
145
+
146
+
147
+ context "graph-2" do
148
+ before(:each) do
149
+ @solutions = @queryable.query(:predicate => RDF::URI("http://example.org/p"), :object => RDF::Literal::Double.new("1.0e0")).to_a
150
+ end
151
+
152
+ it "has one solution" do
153
+ @solutions.count.should == 1
154
+ end
155
+
156
+ it "has xd1 as a solution" do
157
+ @solutions.any? {|s| s.subject == RDF::URI("http://example.org/xd1")}.should be_true
158
+ end
159
+ end
160
+ end
161
+ end
109
162
  end
110
163
  end
111
164
 
112
165
  ##
113
166
  # @see RDF::Queryable#query_pattern
167
+ describe "#query_pattern" do
168
+ it "responds to #query_pattern" do
169
+ @queryable.should respond_to(:query_pattern)
170
+ end
114
171
 
115
- it "should respond to #query_pattern" do
116
- @queryable.should respond_to(:query_pattern)
117
- end
172
+ context "when called" do
173
+ it "requires an argument" do
174
+ lambda { @queryable.send(:query_pattern) }.should raise_error(ArgumentError)
175
+ end
118
176
 
119
- context "#query_pattern when called" do
120
- it "should require an argument" do
121
- lambda { @queryable.send(:query_pattern) }.should raise_error(ArgumentError)
122
- end
177
+ it "yields to the given block" do
178
+ called = false
179
+ @queryable.send(:query_pattern, RDF::Query::Pattern.new) do |statement|
180
+ called = true
181
+ break
182
+ end
183
+ called.should be_true
184
+ end
123
185
 
124
- it "should call the given block" do
125
- called = false
126
- @queryable.send(:query_pattern, RDF::Query::Pattern.new) do |statement|
127
- called = true
128
- break
186
+ it "yields statements" do
187
+ @queryable.send(:query_pattern, RDF::Query::Pattern.new) do |statement|
188
+ statement.should be_a_statement
189
+ end
190
+ end
191
+
192
+ context "with specific patterns", :pending => "SPARQL compatibility" do
193
+ # Note that "01" should not match 1, per data-r2/expr-equal/sameTerm
194
+ {
195
+ [RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1])],
196
+ [RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), nil] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1])],
197
+ [RDF::URI("http://example.org/xi1"), nil, 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1])],
198
+ [nil, RDF::URI("http://example.org/p"), 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1]), RDF::Statement.from([RDF::URI("http://example.org/xi2"), RDF::URI("http://example.org/p"), 1])],
199
+ [nil, nil, 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1]), RDF::Statement.from([RDF::URI("http://example.org/xi2"), RDF::URI("http://example.org/p"), 1])],
200
+ [nil, RDF::URI("http://example.org/p"), RDF::Literal::Double.new("1.0e0")] => [RDF::Statement.from([RDF::URI("http://example.org/xd1"), RDF::URI("http://example.org/p"), RDF::Literal::Double.new("1.0e0")])],
201
+ }.each do |pattern, result|
202
+ pattern = RDF::Query::Pattern.from(pattern)
203
+ it "returns #{result.inspect} given #{pattern.inspect}" do
204
+ solutions = []
205
+ @queryable.send(:query_pattern, pattern) {|s| solutions << s}
206
+ solutions.should == result
207
+ end
208
+ end
129
209
  end
130
- called.should be_true
131
- end
132
210
 
133
- it "should yield statements" do
134
- @queryable.send(:query_pattern, RDF::Query::Pattern.new) do |statement|
135
- statement.should be_a_statement
211
+ context "with context" do
212
+ it "returns statements from all contexts with no context" do
213
+ pattern = RDF::Query::Pattern.new(nil, nil, nil, :context => nil)
214
+ solutions = []
215
+ @queryable.send(:query_pattern, pattern) {|s| solutions << s}
216
+ solutions.size.should == @statements.size
217
+ end
218
+
219
+ it "returns statements from named contexts with variable context", :pending => "SPARQL compatibility" do
220
+ pattern = RDF::Query::Pattern.new(nil, nil, nil, :context => :c)
221
+ solutions = []
222
+ @queryable.send(:query_pattern, pattern) {|s| solutions << s}
223
+ context_statements = @queryable.statements.select {|st| st.has_context?}.length
224
+ solutions.size.should == context_statements
225
+ end
226
+
227
+ it "returns statements from specific context with URI context" do
228
+ pattern = RDF::Query::Pattern.new(nil, nil, nil, :context => RDF::URI("http://ar.to/#self"))
229
+ solutions = []
230
+ @queryable.send(:query_pattern, pattern) {|s| solutions << s}
231
+ solutions.size.should == File.readlines(@doap).grep(/^<http:\/\/ar.to\/\#self>/).size
232
+ end
136
233
  end
137
234
  end
138
235
  end
139
236
 
140
237
  ##
141
238
  # @see RDF::Queryable#first
142
-
143
- it "should respond to #first" do
144
- @queryable.should respond_to(:first)
145
- end
146
-
147
- context "#first" do
239
+ describe "#first" do
148
240
  before :all do
149
241
  @failing_pattern = [RDF::Node.new] * 3
150
242
  end
151
243
 
152
- it "should be callable without a pattern" do
244
+ it "should respond to #first" do
245
+ @queryable.should respond_to(:first)
246
+ end
247
+
248
+ it "returns enumerator without a pattern" do
153
249
  lambda { @queryable.first }.should_not raise_error(ArgumentError)
154
250
  @queryable.first.should == @queryable.each.first # uses an Enumerator
155
251
  end
156
252
 
157
- it "should return the correct value when the pattern matches" do
253
+ it "returns the correct value when the pattern matches" do
158
254
  matching_patterns = [[nil, nil, nil], @queryable.each.first]
159
255
  matching_patterns.each do |matching_pattern|
160
256
  @queryable.first(matching_pattern).should == @queryable.query(matching_pattern).each.first
161
257
  end
162
258
  end
163
259
 
164
- it "should return nil when the pattern fails to match anything" do
260
+ it "returns nil when the pattern fails to match anything" do
165
261
  @queryable.first(@failing_pattern).should be_nil
166
262
  end
167
263
 
168
- it "should return nil when self is empty" do
264
+ it "returns nil when self is empty" do
169
265
  queryable = [].extend(RDF::Queryable)
170
266
  queryable.first.should be_nil
171
267
  queryable.first(@failing_pattern).should be_nil
@@ -174,33 +270,32 @@ share_as :RDF_Queryable do
174
270
 
175
271
  ##
176
272
  # @see RDF::Queryable#first_subject
177
-
178
- it "should respond to #first_subject" do
179
- @queryable.should respond_to(:first_subject)
180
- end
181
-
182
- context "#first_subject" do
273
+ describe "#first_subject" do
183
274
  before :all do
184
275
  @failing_pattern = [RDF::Node.new, nil, nil]
185
276
  end
186
277
 
187
- it "should be callable without a pattern" do
278
+ it "should respond to #first_subject" do
279
+ @queryable.should respond_to(:first_subject)
280
+ end
281
+
282
+ it "returns enumerator without a pattern" do
188
283
  lambda { @queryable.first_subject }.should_not raise_error(ArgumentError)
189
284
  @queryable.first_subject.should == @queryable.first.subject
190
285
  end
191
286
 
192
- it "should return the correct value when the pattern matches" do
287
+ it "returns the correct value when the pattern matches" do
193
288
  matching_patterns = [[nil, nil, nil], [@queryable.first.subject, nil, nil]]
194
289
  matching_patterns.each do |matching_pattern|
195
290
  @queryable.first_subject(matching_pattern).should == @queryable.query(matching_pattern).first.subject
196
291
  end
197
292
  end
198
293
 
199
- it "should return nil when the pattern fails to match anything" do
294
+ it "returns nil when the pattern fails to match anything" do
200
295
  @queryable.first_subject(@failing_pattern).should be_nil
201
296
  end
202
297
 
203
- it "should return nil when self is empty" do
298
+ it "returns nil when self is empty" do
204
299
  queryable = [].extend(RDF::Queryable)
205
300
  queryable.first_subject.should be_nil
206
301
  queryable.first_subject(@failing_pattern).should be_nil
@@ -210,32 +305,32 @@ share_as :RDF_Queryable do
210
305
  ##
211
306
  # @see RDF::Queryable#first_predicate
212
307
 
213
- it "should respond to #first_predicate" do
214
- @queryable.should respond_to(:first_predicate)
215
- end
216
-
217
- context "#first_predicate" do
308
+ describe "#first_predicate" do
218
309
  before :all do
219
310
  @failing_pattern = [nil, RDF::Node.new, nil]
220
311
  end
221
312
 
222
- it "should be callable without a pattern" do
313
+ it "should respond to #first_predicate" do
314
+ @queryable.should respond_to(:first_predicate)
315
+ end
316
+
317
+ it "returns enumerator without a pattern" do
223
318
  lambda { @queryable.first_predicate }.should_not raise_error(ArgumentError)
224
319
  @queryable.first_predicate.should == @queryable.first.predicate
225
320
  end
226
321
 
227
- it "should return the correct value when the pattern matches" do
322
+ it "returns the correct value when the pattern matches" do
228
323
  matching_patterns = [[nil, nil, nil], [nil, @queryable.first.predicate, nil]]
229
324
  matching_patterns.each do |matching_pattern|
230
325
  @queryable.first_predicate(matching_pattern).should == @queryable.query(matching_pattern).first.predicate
231
326
  end
232
327
  end
233
328
 
234
- it "should return nil when the pattern fails to match anything" do
329
+ it "returns nil when the pattern fails to match anything" do
235
330
  @queryable.first_predicate(@failing_pattern).should be_nil
236
331
  end
237
332
 
238
- it "should return nil when self is empty" do
333
+ it "returns nil when self is empty" do
239
334
  queryable = [].extend(RDF::Queryable)
240
335
  queryable.first_predicate.should be_nil
241
336
  queryable.first_predicate(@failing_pattern).should be_nil
@@ -245,32 +340,32 @@ share_as :RDF_Queryable do
245
340
  ##
246
341
  # @see RDF::Queryable#first_object
247
342
 
248
- it "should respond to #first_object" do
249
- @queryable.should respond_to(:first_object)
250
- end
251
-
252
- context "#first_object" do
343
+ describe "#first_object" do
253
344
  before :all do
254
345
  @failing_pattern = [nil, nil, RDF::Node.new]
255
346
  end
256
347
 
257
- it "should be callable without a pattern" do
348
+ it "should respond to #first_object" do
349
+ @queryable.should respond_to(:first_object)
350
+ end
351
+
352
+ it "returns enurator without a pattern" do
258
353
  lambda { @queryable.first_object }.should_not raise_error(ArgumentError)
259
354
  @queryable.first_object.should == @queryable.first.object
260
355
  end
261
356
 
262
- it "should return the correct value when the pattern matches" do
357
+ it "returns the correct value when the pattern matches" do
263
358
  matching_patterns = [[nil, nil, nil], [nil, nil, @queryable.first.object]]
264
359
  matching_patterns.each do |matching_pattern|
265
360
  @queryable.first_object(matching_pattern).should == @queryable.query(matching_pattern).first.object
266
361
  end
267
362
  end
268
363
 
269
- it "should return nil when the pattern fails to match anything" do
364
+ it "returns nil when the pattern fails to match anything" do
270
365
  @queryable.first_object(@failing_pattern).should be_nil
271
366
  end
272
367
 
273
- it "should return nil when self is empty" do
368
+ it "returns nil when self is empty" do
274
369
  queryable = [].extend(RDF::Queryable)
275
370
  queryable.first_object.should be_nil
276
371
  queryable.first_object(@failing_pattern).should be_nil
@@ -280,11 +375,11 @@ share_as :RDF_Queryable do
280
375
  ##
281
376
  # @see RDF::Queryable#first_literal
282
377
 
283
- it "should respond to #first_literal" do
378
+ it "returns to #first_literal" do
284
379
  @queryable.should respond_to(:first_literal)
285
380
  end
286
381
 
287
- context "#first_literal" do
382
+ describe "#first_literal" do
288
383
  before :each do
289
384
  # FIXME: these tests should be using the provided @queryable, if possible.
290
385
  @queryable = RDF::Graph.new do |graph|
@@ -296,23 +391,23 @@ share_as :RDF_Queryable do
296
391
  @failing_pattern = [nil, nil, RDF::Node.new]
297
392
  end
298
393
 
299
- it "should be callable without a pattern" do
394
+ it "returns a literal without a pattern" do
300
395
  lambda { @queryable.first_literal }.should_not raise_error(ArgumentError)
301
396
  @queryable.first_literal.should == @literal
302
397
  end
303
398
 
304
- it "should return the correct value when the pattern matches" do
399
+ it "returns the correct value when the pattern matches" do
305
400
  matching_patterns = [[nil, nil, nil], [@subject, nil, nil], [nil, RDF::DC.creator, nil], [nil, nil, @literal]]
306
401
  matching_patterns.each do |matching_pattern|
307
402
  @queryable.first_literal(matching_pattern).should == @literal
308
403
  end
309
404
  end
310
405
 
311
- it "should return nil when the pattern fails to match anything" do
406
+ it "returns nil when the pattern fails to match anything" do
312
407
  @queryable.first_literal(@failing_pattern).should be_nil
313
408
  end
314
409
 
315
- it "should return nil when self is empty" do
410
+ it "returns nil when self is empty" do
316
411
  queryable = [].extend(RDF::Queryable)
317
412
  queryable.first_literal.should be_nil
318
413
  queryable.first_literal(@failing_pattern).should be_nil
@@ -322,21 +417,21 @@ share_as :RDF_Queryable do
322
417
  ##
323
418
  # @see RDF::Queryable#first_value
324
419
 
325
- it "should respond to #first_value" do
326
- @queryable.should respond_to(:first_value)
327
- end
328
-
329
- context "#first_value" do
420
+ describe "#first_value" do
330
421
  before :all do
331
422
  @failing_pattern = [nil, nil, RDF::Node.new]
332
423
  end
333
424
 
334
- it "should be callable without a pattern" do
425
+ it "should respond to #first_value" do
426
+ @queryable.should respond_to(:first_value)
427
+ end
428
+
429
+ it "returns first literal without a pattern" do
335
430
  lambda { @queryable.first_value }.should_not raise_error(ArgumentError)
336
431
  @queryable.first_value.should == @queryable.first_literal.value
337
432
  end
338
433
 
339
- it "should return the correct value when the pattern matches" do
434
+ it "returns the correct value when the pattern matches" do
340
435
  matching_patterns = []
341
436
  @queryable.each do |statement|
342
437
  if statement.object.is_a?(RDF::Literal)
@@ -349,11 +444,11 @@ share_as :RDF_Queryable do
349
444
  end
350
445
  end
351
446
 
352
- it "should return nil when the pattern fails to match anything" do
447
+ it "returns nil when the pattern fails to match anything" do
353
448
  @queryable.first_value(@failing_pattern).should be_nil
354
449
  end
355
450
 
356
- it "should return nil when self is empty" do
451
+ it "returns nil when self is empty" do
357
452
  queryable = [].extend(RDF::Queryable)
358
453
  queryable.first_value.should be_nil
359
454
  queryable.first_value(@failing_pattern).should be_nil