tripod 0.10.6 → 0.10.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tripod.rb +0 -4
- data/lib/tripod/components.rb +0 -2
- data/lib/tripod/finders.rb +9 -17
- data/lib/tripod/repository.rb +6 -8
- data/lib/tripod/resource.rb +15 -2
- data/lib/tripod/version.rb +1 -1
- data/spec/app/models/dog.rb +1 -3
- data/spec/spec_helper.rb +2 -2
- data/spec/tripod/repository_spec.rb +7 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28357534b22227c55bd266ea70d5ef438876e164
|
4
|
+
data.tar.gz: b1cca62a80cc3d792a78347df41b5291ae79a9ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23a8ac7dfb43dc3350b06f8f14f4b4dfeba832927d6e0a690dec71b1136204919c66d7bd1fdaca18b2bf60b421684363e0120a732fbac41bcd1f4ec82b6437fd
|
7
|
+
data.tar.gz: 464e6b785fbe6522e118cc6874b881474c9ace312b97e0adfc689ae2b56575352a4abffdbec7ddadc857e6b52320f584afddff409aa151572872bfdd906d0bf5
|
data/lib/tripod.rb
CHANGED
@@ -93,7 +93,6 @@ require "tripod/predicates"
|
|
93
93
|
require "tripod/attributes"
|
94
94
|
require "tripod/callbacks"
|
95
95
|
require "tripod/validations/is_url"
|
96
|
-
require "tripod/rdf_type"
|
97
96
|
require "tripod/errors"
|
98
97
|
require "tripod/repository"
|
99
98
|
require "tripod/fields"
|
@@ -105,9 +104,6 @@ require "tripod/eager_loading"
|
|
105
104
|
require "tripod/serialization"
|
106
105
|
require "tripod/state"
|
107
106
|
require "tripod/graphs"
|
108
|
-
require "tripod/embeds"
|
109
|
-
require "tripod/embeds/many"
|
110
|
-
require "tripod/embedded_resource"
|
111
107
|
require "tripod/version"
|
112
108
|
|
113
109
|
# these need to be at the end
|
data/lib/tripod/components.rb
CHANGED
@@ -17,11 +17,9 @@ module Tripod::Components
|
|
17
17
|
include Tripod::Attributes
|
18
18
|
include Tripod::Callbacks
|
19
19
|
include Tripod::Validations
|
20
|
-
include Tripod::RdfType
|
21
20
|
include Tripod::Persistence
|
22
21
|
include Tripod::Fields
|
23
22
|
include Tripod::Links
|
24
|
-
include Tripod::Embeds
|
25
23
|
include Tripod::Finders
|
26
24
|
include Tripod::Repository
|
27
25
|
include Tripod::EagerLoading
|
data/lib/tripod/finders.rb
CHANGED
@@ -109,7 +109,7 @@ module Tripod::Finders
|
|
109
109
|
uris_sparql_str = uris.map{ |u| "<#{u.to_s}>" }.join(" ")
|
110
110
|
|
111
111
|
# Do a big describe statement, and read the results into an in-memory repo
|
112
|
-
ntriples_string = Tripod::SparqlClient::Query.query("CONSTRUCT { ?s ?p ?o } WHERE { VALUES ?s { #{uris_sparql_str} }
|
112
|
+
ntriples_string = Tripod::SparqlClient::Query.query("CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o . VALUES ?s { #{uris_sparql_str} } }", "application/n-triples")
|
113
113
|
graph = _rdf_graph_from_ntriples_string(ntriples_string, graph)
|
114
114
|
end
|
115
115
|
|
@@ -172,20 +172,16 @@ module Tripod::Finders
|
|
172
172
|
def _describe_query_for_select(select_sparql, opts={})
|
173
173
|
uri_variable = opts[:uri_variable] || "uri"
|
174
174
|
"
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
}
|
179
|
-
WHERE {
|
180
|
-
{
|
181
|
-
SELECT (?#{uri_variable} as ?tripod_construct_s)
|
175
|
+
CONSTRUCT { ?tripod_construct_s ?tripod_construct_p ?tripod_construct_o }
|
176
|
+
WHERE {
|
177
|
+
?tripod_construct_s ?tripod_construct_p ?tripod_construct_o .
|
182
178
|
{
|
183
|
-
|
179
|
+
SELECT (?#{uri_variable} as ?tripod_construct_s)
|
180
|
+
{
|
181
|
+
#{select_sparql}
|
182
|
+
}
|
184
183
|
}
|
185
|
-
}
|
186
|
-
?tripod_construct_s ?tripod_construct_p ?tripod_construct_o .
|
187
|
-
# OPTIONAL { ?tripod_construct_o ?tripod_construct_ep ?tripod_construct_eo . }
|
188
|
-
}
|
184
|
+
}
|
189
185
|
"
|
190
186
|
end
|
191
187
|
|
@@ -220,10 +216,6 @@ module Tripod::Finders
|
|
220
216
|
data_graph = RDF::Graph.new
|
221
217
|
repo.query( [RDF::URI.new(u), :predicate, :object] ) do |statement|
|
222
218
|
data_graph << statement
|
223
|
-
|
224
|
-
if statement.object.is_a? RDF::Node
|
225
|
-
repo.query( [statement.object, :predicate, :object] ) {|s| data_graph << s}
|
226
|
-
end
|
227
219
|
end
|
228
220
|
|
229
221
|
# use it to hydrate this resource
|
data/lib/tripod/repository.rb
CHANGED
@@ -56,7 +56,11 @@ module Tripod::Repository
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def retrieve_triples_from_database(accept_header="application/n-triples")
|
59
|
-
|
59
|
+
graph_selector = self.graph_uri.present? ? "<#{graph_uri.to_s}>" : "?g"
|
60
|
+
Tripod::SparqlClient::Query.query(
|
61
|
+
"CONSTRUCT {<#{uri}> ?p ?o} WHERE { GRAPH #{graph_selector} { <#{uri}> ?p ?o } }",
|
62
|
+
accept_header
|
63
|
+
)
|
60
64
|
end
|
61
65
|
|
62
66
|
# returns a graph of triples from the underlying repository where this resource's uri is the subject.
|
@@ -83,12 +87,6 @@ module Tripod::Repository
|
|
83
87
|
repo
|
84
88
|
end
|
85
89
|
|
86
|
-
def all_triples_query(uri, opts={})
|
87
|
-
graph_uri = opts.fetch(:graph_uri, nil)
|
88
|
-
graph_selector = graph_uri.present? ? "<#{graph_uri.to_s}>" : "?g"
|
89
|
-
"CONSTRUCT {<#{uri}> ?p ?o . ?o ?ep ?eo . } WHERE { GRAPH #{graph_selector} { <#{uri}> ?p ?o . OPTIONAL { ?o ?ep ?eo } } }"
|
90
|
-
end
|
91
|
-
|
92
90
|
end
|
93
91
|
|
94
|
-
end
|
92
|
+
end
|
data/lib/tripod/resource.rb
CHANGED
@@ -13,6 +13,8 @@ module Tripod::Resource
|
|
13
13
|
validates_presence_of :graph_uri
|
14
14
|
# uri is a valid linked data url
|
15
15
|
validates :uri, is_url: true
|
16
|
+
# every instance of a resource has an rdf type field, which is set at the class level
|
17
|
+
class_attribute :_RDF_TYPE
|
16
18
|
# the Graph URI is set at the class level by default also, although this can be overridden in the constructor
|
17
19
|
class_attribute :_GRAPH_URI
|
18
20
|
end
|
@@ -50,7 +52,7 @@ module Tripod::Resource
|
|
50
52
|
run_callbacks :initialize do
|
51
53
|
graph_uri ||= self.class.get_graph_uri unless ignore_graph
|
52
54
|
@graph_uri = RDF::URI(graph_uri) if graph_uri
|
53
|
-
|
55
|
+
self.rdf_type = self.class.get_rdf_type if respond_to?(:rdf_type=) && self.class.get_rdf_type
|
54
56
|
end
|
55
57
|
end
|
56
58
|
|
@@ -105,6 +107,17 @@ module Tripod::Resource
|
|
105
107
|
other.class == Class ? self <= other : other.is_a?(self)
|
106
108
|
end
|
107
109
|
|
110
|
+
# makes a "field" on this model called rdf_type
|
111
|
+
# and sets a class level _RDF_TYPE variable with the rdf_type passed in.
|
112
|
+
def rdf_type(new_rdf_type)
|
113
|
+
self._RDF_TYPE = RDF::URI.new(new_rdf_type.to_s)
|
114
|
+
field :rdf_type, RDF.type, :multivalued => true, :is_uri => true # things can have more than 1 type and often do
|
115
|
+
end
|
116
|
+
|
117
|
+
def get_rdf_type
|
118
|
+
self._RDF_TYPE
|
119
|
+
end
|
120
|
+
|
108
121
|
def graph_uri(new_graph_uri)
|
109
122
|
self._GRAPH_URI = new_graph_uri
|
110
123
|
end
|
@@ -117,4 +130,4 @@ module Tripod::Resource
|
|
117
130
|
end
|
118
131
|
|
119
132
|
# causes any hooks to be fired, if they've been setup on_load of :tripod.
|
120
|
-
ActiveSupport.run_load_hooks(:triploid, Tripod::Resource)
|
133
|
+
ActiveSupport.run_load_hooks(:triploid, Tripod::Resource)
|
data/lib/tripod/version.rb
CHANGED
data/spec/app/models/dog.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -31,7 +31,7 @@ Tripod.configure do |config|
|
|
31
31
|
# config.update_endpoint = 'http://127.0.0.1:3030/tripod-test/update'
|
32
32
|
# config.query_endpoint = 'http://127.0.0.1:3030/tripod-test/sparql'
|
33
33
|
# config.data_endpoint = 'http://127.0.0.1:3030/tripod-test/data'
|
34
|
-
|
34
|
+
|
35
35
|
config.update_endpoint = 'http://127.0.0.1:3002/sparql/raw/update'
|
36
36
|
config.query_endpoint = 'http://127.0.0.1:3002/sparql/raw'
|
37
37
|
#config.data_endpoint = 'http://127.0.0.1:3030/tripod-test/data'
|
@@ -41,4 +41,4 @@ end
|
|
41
41
|
Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
|
42
42
|
name = File.basename(file, ".rb")
|
43
43
|
autoload name.camelize.to_sym, name
|
44
|
-
end
|
44
|
+
end
|
@@ -30,7 +30,9 @@ describe Tripod::Repository do
|
|
30
30
|
|
31
31
|
context 'graph_uri set on object' do
|
32
32
|
it 'populates the object with triples, restricted to the graph_uri' do
|
33
|
-
Tripod::SparqlClient::Query.should_receive(:query).with(
|
33
|
+
Tripod::SparqlClient::Query.should_receive(:query).with(
|
34
|
+
"CONSTRUCT {<#{person.uri}> ?p ?o} WHERE { GRAPH <#{person.graph_uri}> { <#{person.uri}> ?p ?o } }",
|
35
|
+
"application/n-triples").and_call_original
|
34
36
|
person.hydrate!
|
35
37
|
person.repository.should_not be_empty
|
36
38
|
end
|
@@ -38,7 +40,9 @@ describe Tripod::Repository do
|
|
38
40
|
|
39
41
|
context 'graph_uri not set on object' do
|
40
42
|
it 'populates the object with triples, not to a graph' do
|
41
|
-
Tripod::SparqlClient::Query.should_receive(:query).with(
|
43
|
+
Tripod::SparqlClient::Query.should_receive(:query).with(
|
44
|
+
"CONSTRUCT {<#{graphless_resource.uri}> ?p ?o} WHERE { GRAPH ?g { <#{graphless_resource.uri}> ?p ?o } }",
|
45
|
+
"application/n-triples").and_call_original
|
42
46
|
graphless_resource.hydrate!
|
43
47
|
graphless_resource.repository.should_not be_empty
|
44
48
|
end
|
@@ -69,4 +73,4 @@ describe Tripod::Repository do
|
|
69
73
|
end
|
70
74
|
|
71
75
|
|
72
|
-
end
|
76
|
+
end
|