amigo 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.rdoc +12 -0
- data/lib/amigo.rb +2 -0
- data/lib/amigo/solution.rb +2 -3
- data/lib/amigo/uri.rb +8 -0
- data/lib/amigo/version.rb +1 -1
- data/lib/amigo/vocabulary.rb +46 -0
- data/spec/amigo/select/execute_spec.rb +44 -6
- data/spec/amigo/store/hash_spec.rb +28 -0
- data/spec/amigo/uri/to_s_spec.rb +34 -0
- data/spec/amigo/vocabulary/lookup_spec.rb +36 -0
- metadata +19 -4
data/History.rdoc
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 0.1.2 / 2010-05-17
|
2
|
+
|
3
|
+
* Fixed: Inadvertently reported select variables to be bound even if they weren't in the solution.
|
4
|
+
|
5
|
+
* Add vocabulary support along with some standard vocabularies.
|
6
|
+
|
7
|
+
* Implement URI#to_s.
|
8
|
+
|
9
|
+
=== 0.1.1 / 2010-05-16
|
10
|
+
|
11
|
+
* Select should return a list not a set
|
12
|
+
|
1
13
|
=== 0.1.0 / 2010-05-14
|
2
14
|
|
3
15
|
* Initial version
|
data/lib/amigo.rb
CHANGED
data/lib/amigo/solution.rb
CHANGED
@@ -12,7 +12,7 @@ module Amigo
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def include?(name)
|
15
|
-
@variables.include?(name)
|
15
|
+
@variables.include?(name) && @row.has_key?(name)
|
16
16
|
end
|
17
17
|
|
18
18
|
def [](name)
|
@@ -35,8 +35,7 @@ module Amigo
|
|
35
35
|
private
|
36
36
|
|
37
37
|
def method_missing(name, *args, &block)
|
38
|
-
|
39
|
-
super
|
38
|
+
self[name]
|
40
39
|
end
|
41
40
|
|
42
41
|
end
|
data/lib/amigo/uri.rb
CHANGED
data/lib/amigo/version.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'amigo/uri'
|
2
|
+
|
3
|
+
module Amigo
|
4
|
+
|
5
|
+
class Vocabulary
|
6
|
+
|
7
|
+
def initialize(base_uri)
|
8
|
+
@base_uri = base_uri
|
9
|
+
end
|
10
|
+
|
11
|
+
def [](name)
|
12
|
+
respond_to?(name) ? send(name) : self << name
|
13
|
+
end
|
14
|
+
|
15
|
+
def type
|
16
|
+
self << "type"
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
|
21
|
+
def <<(name)
|
22
|
+
URI.new("#{@base_uri}#{name}").tap do |uri|
|
23
|
+
(class << self; self; end).class_eval do
|
24
|
+
define_method(name) { |*args| uri }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def method_missing(name, *args, &block)
|
32
|
+
self[name]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
DC = Vocabulary.new("http://purl.org/dc/terms/")
|
38
|
+
FOAF = Vocabulary.new("http://xmlns.com/foaf/0.1/")
|
39
|
+
RDF = Vocabulary.new("http://www.w3.org/1999/02/22-rdf-syntax-ns#")
|
40
|
+
RDFS = Vocabulary.new("http://www.w3.org/2000/01/rdf-schema#")
|
41
|
+
RSS = Vocabulary.new("http://purl.org/rss/1.0/")
|
42
|
+
OWL = Vocabulary.new("http://www.w3.org/2002/07/owl#")
|
43
|
+
XSD = Vocabulary.new("http://www.w3.org/2001/XMLSchema#")
|
44
|
+
|
45
|
+
end
|
46
|
+
|
@@ -140,11 +140,11 @@ module Amigo
|
|
140
140
|
@solution = @result.first
|
141
141
|
end
|
142
142
|
|
143
|
-
it "correctly
|
143
|
+
it "correctly binds the the selected variables" do
|
144
144
|
@solution[:title].should == "SPARQL Tutorial"
|
145
145
|
end
|
146
146
|
|
147
|
-
it "
|
147
|
+
it "does not bind non-selected variables" do
|
148
148
|
@solution.include?(:x).should == false
|
149
149
|
@solution.include?(:y).should == false
|
150
150
|
end
|
@@ -153,6 +153,44 @@ module Amigo
|
|
153
153
|
|
154
154
|
end
|
155
155
|
|
156
|
+
describe "with selected variables not present in the results" do
|
157
|
+
|
158
|
+
before do
|
159
|
+
@result = Select.new(:title, :flibble).
|
160
|
+
where(:x, :y, :title).
|
161
|
+
execute(Hamster.set(Triple.new(URI.parse("ex_book:book1"), URI.parse("dc:title"), "SPARQL Tutorial")))
|
162
|
+
end
|
163
|
+
|
164
|
+
describe "the result" do
|
165
|
+
|
166
|
+
it "is a list" do
|
167
|
+
@result.class.should include(Hamster::List)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "returns the correct number of solutions" do
|
171
|
+
@result.size.should == 1
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
175
|
+
|
176
|
+
describe "each solution" do
|
177
|
+
|
178
|
+
before do
|
179
|
+
@solution = @result.first
|
180
|
+
end
|
181
|
+
|
182
|
+
it "correctly binds the the selected variables" do
|
183
|
+
@solution[:title].should == "SPARQL Tutorial"
|
184
|
+
end
|
185
|
+
|
186
|
+
it "does not bind variables not present in the results" do
|
187
|
+
@solution.include?(:flibble).should == false
|
188
|
+
end
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
|
156
194
|
describe "with joins" do
|
157
195
|
|
158
196
|
before do
|
@@ -187,12 +225,12 @@ module Amigo
|
|
187
225
|
@solution = @result.first
|
188
226
|
end
|
189
227
|
|
190
|
-
it "correctly
|
228
|
+
it "correctly binds the selected variables" do
|
191
229
|
@solution[:name].should == "Johnny Lee Outlaw"
|
192
230
|
@solution[:mbox].should == URI.parse("mailto:jlow@example.com")
|
193
231
|
end
|
194
232
|
|
195
|
-
it "does not bind
|
233
|
+
it "does not bind un-selected variables" do
|
196
234
|
@solution.include?(:x).should == false
|
197
235
|
end
|
198
236
|
|
@@ -204,12 +242,12 @@ module Amigo
|
|
204
242
|
@solution = @result.last
|
205
243
|
end
|
206
244
|
|
207
|
-
it "correctly
|
245
|
+
it "correctly binds the selected variables" do
|
208
246
|
@solution[:name].should == "Peter Goodguy"
|
209
247
|
@solution[:mbox].should == URI.parse("mailto:peter@example.com")
|
210
248
|
end
|
211
249
|
|
212
|
-
it "does not bind
|
250
|
+
it "does not bind un-selected variables" do
|
213
251
|
@solution.include?(:x).should == false
|
214
252
|
end
|
215
253
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'amigo/store'
|
4
|
+
|
5
|
+
module Amigo
|
6
|
+
|
7
|
+
describe Store do
|
8
|
+
|
9
|
+
describe "#hash" do
|
10
|
+
|
11
|
+
describe "for the same content" do
|
12
|
+
|
13
|
+
before do
|
14
|
+
@a = Amigo.store.add("a", "b", "c").add("d", "e", "f")
|
15
|
+
@b = Amigo.store.add("a", "b", "c").add("d", "e", "f")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns the same value" do
|
19
|
+
@a.hash.should == @b.hash
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'amigo/uri'
|
4
|
+
|
5
|
+
module Amigo
|
6
|
+
|
7
|
+
describe URI do
|
8
|
+
|
9
|
+
describe "#to_s" do
|
10
|
+
|
11
|
+
[
|
12
|
+
["http://www.example.com/", "http://www.example.com/"],
|
13
|
+
["foaf:name", "foaf:name"],
|
14
|
+
].each do |uri, expected|
|
15
|
+
|
16
|
+
describe "given #{uri.inspect}" do
|
17
|
+
|
18
|
+
before do
|
19
|
+
@uri = URI.new(uri)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns #{expected.inspect}" do
|
23
|
+
@uri.to_s.should == expected
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'amigo/uri'
|
4
|
+
require 'amigo/vocabulary'
|
5
|
+
|
6
|
+
module Amigo
|
7
|
+
|
8
|
+
describe Vocabulary do
|
9
|
+
|
10
|
+
before do
|
11
|
+
@vocabulary = Vocabulary.new("http://example.com/")
|
12
|
+
end
|
13
|
+
|
14
|
+
["type", "foo", "bar", "baz"].each do |name|
|
15
|
+
|
16
|
+
describe "##{name}" do
|
17
|
+
|
18
|
+
before do
|
19
|
+
@uri = @vocabulary.send(name)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns a URI" do
|
23
|
+
@uri.should == URI.new("http://example.com/#{name}")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns the same URI each time" do
|
27
|
+
@uri.should equal(@vocabulary.send(name))
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amigo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Simon Harris
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-05-
|
18
|
+
date: 2010-05-17 00:00:00 +10:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: hamster
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 29
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
- 3
|
@@ -35,9 +38,11 @@ dependencies:
|
|
35
38
|
name: rspec
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 27
|
41
46
|
segments:
|
42
47
|
- 1
|
43
48
|
- 3
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: diff-lcs
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 23
|
55
62
|
segments:
|
56
63
|
- 1
|
57
64
|
- 1
|
@@ -83,23 +90,27 @@ files:
|
|
83
90
|
- lib/amigo/variable.rb
|
84
91
|
- lib/amigo/variables.rb
|
85
92
|
- lib/amigo/version.rb
|
93
|
+
- lib/amigo/vocabulary.rb
|
86
94
|
- lib/amigo/where.rb
|
87
95
|
- lib/amigo.rb
|
88
96
|
- spec/amigo/select/execute_spec.rb
|
89
97
|
- spec/amigo/select/immutable_spec.rb
|
90
98
|
- spec/amigo/select/to_sparql_spec.rb
|
91
99
|
- spec/amigo/select/to_sql_spec.rb
|
100
|
+
- spec/amigo/store/hash_spec.rb
|
92
101
|
- spec/amigo/store/to_ntriples_spec.rb
|
93
102
|
- spec/amigo/term/to_sparql_spec.rb
|
94
103
|
- spec/amigo/triple/immutable_spec.rb
|
95
104
|
- spec/amigo/triple/inspect_spec.rb
|
96
105
|
- spec/amigo/triple/to_ntriple_spec.rb
|
97
106
|
- spec/amigo/uri/to_ntriple_spec.rb
|
107
|
+
- spec/amigo/uri/to_s_spec.rb
|
98
108
|
- spec/amigo/uri/to_sparql_spec.rb
|
99
109
|
- spec/amigo/variable/to_sparql_spec.rb
|
100
110
|
- spec/amigo/variables/immutable_spec.rb
|
101
111
|
- spec/amigo/variables/include_spec.rb
|
102
112
|
- spec/amigo/variables/to_sparql_spec.rb
|
113
|
+
- spec/amigo/vocabulary/lookup_spec.rb
|
103
114
|
- spec/amigo/where/to_sparql_spec.rb
|
104
115
|
- spec/spec.opts
|
105
116
|
- spec/spec_helper.rb
|
@@ -118,25 +129,29 @@ rdoc_options: []
|
|
118
129
|
require_paths:
|
119
130
|
- lib
|
120
131
|
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
121
133
|
requirements:
|
122
134
|
- - ">="
|
123
135
|
- !ruby/object:Gem::Version
|
136
|
+
hash: 57
|
124
137
|
segments:
|
125
138
|
- 1
|
126
139
|
- 8
|
127
140
|
- 7
|
128
141
|
version: 1.8.7
|
129
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
130
144
|
requirements:
|
131
145
|
- - ">="
|
132
146
|
- !ruby/object:Gem::Version
|
147
|
+
hash: 3
|
133
148
|
segments:
|
134
149
|
- 0
|
135
150
|
version: "0"
|
136
151
|
requirements: []
|
137
152
|
|
138
153
|
rubyforge_project:
|
139
|
-
rubygems_version: 1.3.
|
154
|
+
rubygems_version: 1.3.7
|
140
155
|
signing_key:
|
141
156
|
specification_version: 3
|
142
157
|
summary: In-memory triple store
|