tripod 0.10.6 → 0.10.7
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.
- 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
|