tripod 0.7.18 → 0.7.19

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.
@@ -12,7 +12,7 @@ module Tripod
12
12
  # @option options [ String ] return_graph Indicates whether to return the graph as one of the variables.
13
13
  def resources(opts={})
14
14
  Tripod::ResourceCollection.new(
15
- self.resource_class._resources_from_sparql(build_select_query(opts)),
15
+ self.resource_class._resources_from_sparql(self.as_query(opts)),
16
16
  # pass in the criteria that was used to generate this collection, as well as whether the user specified return graph
17
17
  :return_graph => (opts.has_key?(:return_graph) ? opts[:return_graph] : true),
18
18
  :criteria => self
@@ -24,7 +24,7 @@ module Tripod
24
24
  # @option options [ String ] return_graph Indicates whether to return the graph as one of the variables.
25
25
  # @option options [ String ] accept_header The accept header to use for serializing (defaults to application/n-triples)
26
26
  def serialize(opts={})
27
- select_sparql = build_select_query(:return_graph => opts[:return_graph])
27
+ select_sparql = self.as_query(:return_graph => opts[:return_graph])
28
28
  self.resource_class._raw_describe_select_results(select_sparql, :accept_header => opts[:accept_header]) # note that this method defaults to using application/n-triples.
29
29
  end
30
30
 
@@ -32,7 +32,7 @@ module Tripod
32
32
  #
33
33
  # @option options [ String ] return_graph Indicates whether to return the graph as one of the variables.
34
34
  def first(opts={})
35
- sq = Tripod::SparqlQuery.new(build_select_query(opts))
35
+ sq = Tripod::SparqlQuery.new(self.as_query(opts))
36
36
  first_sparql = sq.as_first_query_str
37
37
  self.resource_class._resources_from_sparql(first_sparql).first
38
38
  end
@@ -41,52 +41,43 @@ module Tripod
41
41
  #
42
42
  # @option options [ String ] return_graph Indicates whether to return the graph as one of the variables.
43
43
  def count(opts={})
44
- sq = Tripod::SparqlQuery.new(build_select_query(opts))
44
+ sq = Tripod::SparqlQuery.new(self.as_query(opts))
45
45
  count_sparql = sq.as_count_query_str
46
46
  result = Tripod::SparqlClient::Query.select(count_sparql)
47
47
  result[0]["tripod_count_var"]["value"].to_i
48
48
  end
49
49
 
50
- # PRIVATE:
50
+ # turn this criteria into a query
51
+ def as_query(opts={})
52
+ Tripod.logger.debug("TRIPOD: building select query for criteria...")
51
53
 
52
- included do
54
+ return_graph = opts.has_key?(:return_graph) ? opts[:return_graph] : true
53
55
 
54
- private
56
+ Tripod.logger.debug("TRIPOD: with return_graph: #{return_graph.inspect}")
55
57
 
56
- # @option options [ String ] return_graph Indicates whether to return the graph as one of the variables.
57
- def build_select_query(opts={})
58
+ select_query = "SELECT DISTINCT ?uri "
58
59
 
59
- Tripod.logger.debug("TRIPOD: building select query for criteria...")
60
-
61
- return_graph = opts.has_key?(:return_graph) ? opts[:return_graph] : true
62
-
63
- Tripod.logger.debug("TRIPOD: with return_graph: #{return_graph.inspect}")
64
-
65
- select_query = "SELECT DISTINCT ?uri "
66
-
67
- if return_graph
68
- # if we are returing the graph, select it as a variable, and include either the <graph> or ?graph in the where clause
69
- if graph_uri
70
- select_query += "(<#{graph_uri}> as ?graph) WHERE { GRAPH <#{graph_uri}> { "
71
- else
72
- select_query += "?graph WHERE { GRAPH ?graph { "
73
- end
60
+ if return_graph
61
+ # if we are returing the graph, select it as a variable, and include either the <graph> or ?graph in the where clause
62
+ if graph_uri
63
+ select_query += "(<#{graph_uri}> as ?graph) WHERE { GRAPH <#{graph_uri}> { "
74
64
  else
75
- select_query += "WHERE { "
76
- # if we're not returning the graph, only restrict by the <graph> if there's one set at class level
77
- select_query += "GRAPH <#{graph_uri}> { " if graph_uri
65
+ select_query += "?graph WHERE { GRAPH ?graph { "
78
66
  end
67
+ else
68
+ select_query += "WHERE { "
69
+ # if we're not returning the graph, only restrict by the <graph> if there's one set at class level
70
+ select_query += "GRAPH <#{graph_uri}> { " if graph_uri
71
+ end
79
72
 
80
- select_query += self.where_clauses.join(" . ")
81
- select_query += " } "
82
- select_query += "} " if return_graph || graph_uri # close the graph clause
83
- select_query += self.extra_clauses.join(" ")
84
-
85
- select_query += [order_clause, limit_clause, offset_clause].join(" ")
73
+ select_query += self.where_clauses.join(" . ")
74
+ select_query += " } "
75
+ select_query += "} " if return_graph || graph_uri # close the graph clause
76
+ select_query += self.extra_clauses.join(" ")
86
77
 
87
- select_query.strip
88
- end
78
+ select_query += [order_clause, limit_clause, offset_clause].join(" ")
89
79
 
80
+ select_query.strip
90
81
  end
91
82
 
92
83
  end
@@ -33,7 +33,7 @@ module Tripod
33
33
 
34
34
  # they're equal if they return the same query
35
35
  def ==(other)
36
- build_select_query == other.send(:build_select_query)
36
+ as_query == other.send(:as_query)
37
37
  end
38
38
 
39
39
  # Takes a string and adds a where clause to this criteria.
@@ -9,13 +9,17 @@ module Tripod
9
9
 
10
10
  attr_reader :resources
11
11
  attr_reader :criteria # the criteria used to generate this collection
12
+ attr_reader :sparql_query_str # the sparql query used to generate this collection
12
13
 
13
14
  # options:
14
15
  # :criteria - the criteria used to create this collection
16
+ # :sparql_query_str - the sparql used to create this collection
15
17
  # :return_graph - whether the original query returned the graphs or not.
16
18
  def initialize(resources, opts={})
17
19
  @resources = resources
18
20
  @criteria = opts[:criteria]
21
+ @sparql_query_str = opts[:sparql_query_str]
22
+ @resource_class = opts[:resource_class]
19
23
  @return_graph = opts[:return_graph]
20
24
  end
21
25
 
@@ -50,6 +54,9 @@ module Tripod
50
54
  time_serialization('nt') do
51
55
  if @criteria
52
56
  @criteria.serialize(:return_graph => @return_graph, :accept_header => "application/n-triples")
57
+ elsif @sparql_query_str && @resource_class
58
+ # run the query as a describe.
59
+ @resource_class._raw_describe_select_results(@sparql_query_str, :accept_header => "application/n-triples")
53
60
  else
54
61
  # for n-triples we can just concatenate them
55
62
  nt = ""
@@ -72,6 +79,9 @@ module Tripod
72
79
  time_serialization('rdf') do
73
80
  if @criteria
74
81
  @criteria.serialize(:return_graph => @return_graph, :accept_header => "application/rdf+xml")
82
+ elsif @sparql_query_str && @resource_class
83
+ # run the query as a describe.
84
+ @resource_class._raw_describe_select_results(@sparql_query_str, :accept_header => "application/rdf+xml")
75
85
  else
76
86
  get_graph.dump(:rdf)
77
87
  end
@@ -82,6 +92,9 @@ module Tripod
82
92
  time_serialization('ttl') do
83
93
  if @criteria
84
94
  @criteria.serialize(:return_graph => @return_graph, :accept_header => "text/turtle")
95
+ elsif @sparql_query_str && @resource_class
96
+ # run the query as a describe.
97
+ @resource_class._raw_describe_select_results(@sparql_query_str, :accept_header =>"text/turtle")
85
98
  else
86
99
  get_graph.dump(:turtle)
87
100
  end
@@ -1,3 +1,3 @@
1
1
  module Tripod
2
- VERSION = "0.7.18"
2
+ VERSION = "0.7.19"
3
3
  end
@@ -24,16 +24,16 @@ describe Tripod::Criteria do
24
24
  p
25
25
  end
26
26
 
27
- describe "#build_select_query" do
27
+ describe "#as_query" do
28
28
 
29
29
  context "for a class with an rdf_type and graph" do
30
30
  it "should return a SELECT query based with an rdf type restriction" do
31
- person_criteria.send(:build_select_query).should == "SELECT DISTINCT ?uri (<http://example.com/graph> as ?graph) WHERE { GRAPH <http://example.com/graph> { ?uri a <http://example.com/person> . ?uri ?p ?o } }"
31
+ person_criteria.as_query.should == "SELECT DISTINCT ?uri (<http://example.com/graph> as ?graph) WHERE { GRAPH <http://example.com/graph> { ?uri a <http://example.com/person> . ?uri ?p ?o } }"
32
32
  end
33
33
 
34
34
  context "with include_graph option set to false" do
35
35
  it "should not select graphs, but restrict to graph" do
36
- person_criteria.send(:build_select_query, :return_graph => false).should == "SELECT DISTINCT ?uri WHERE { GRAPH <http://example.com/graph> { ?uri a <http://example.com/person> . ?uri ?p ?o } }"
36
+ person_criteria.as_query(:return_graph => false).should == "SELECT DISTINCT ?uri WHERE { GRAPH <http://example.com/graph> { ?uri a <http://example.com/person> . ?uri ?p ?o } }"
37
37
  end
38
38
  end
39
39
 
@@ -41,7 +41,7 @@ describe Tripod::Criteria do
41
41
  before { person_criteria.where("[pattern]") }
42
42
 
43
43
  it "should return a SELECT query with the extra restriction" do
44
- person_criteria.send(:build_select_query).should == "SELECT DISTINCT ?uri (<http://example.com/graph> as ?graph) WHERE { GRAPH <http://example.com/graph> { ?uri a <http://example.com/person> . ?uri ?p ?o . [pattern] } }"
44
+ person_criteria.as_query.should == "SELECT DISTINCT ?uri (<http://example.com/graph> as ?graph) WHERE { GRAPH <http://example.com/graph> { ?uri a <http://example.com/person> . ?uri ?p ?o . [pattern] } }"
45
45
  end
46
46
  end
47
47
 
@@ -49,19 +49,19 @@ describe Tripod::Criteria do
49
49
  before { person_criteria.graph("http://example.com/anothergraph") }
50
50
 
51
51
  it "should override the graph in the query" do
52
- person_criteria.send(:build_select_query).should == "SELECT DISTINCT ?uri (<http://example.com/anothergraph> as ?graph) WHERE { GRAPH <http://example.com/anothergraph> { ?uri a <http://example.com/person> . ?uri ?p ?o } }"
52
+ person_criteria.as_query.should == "SELECT DISTINCT ?uri (<http://example.com/anothergraph> as ?graph) WHERE { GRAPH <http://example.com/anothergraph> { ?uri a <http://example.com/person> . ?uri ?p ?o } }"
53
53
  end
54
54
  end
55
55
  end
56
56
 
57
57
  context "for a class without an rdf_type and graph" do
58
58
  it "should return a SELECT query without an rdf_type restriction" do
59
- resource_criteria.send(:build_select_query).should == "SELECT DISTINCT ?uri ?graph WHERE { GRAPH ?graph { ?uri ?p ?o } }"
59
+ resource_criteria.as_query.should == "SELECT DISTINCT ?uri ?graph WHERE { GRAPH ?graph { ?uri ?p ?o } }"
60
60
  end
61
61
 
62
62
  context "with include_graph option set to false" do
63
63
  it "should not select graphs or restrict to graph" do
64
- resource_criteria.send(:build_select_query, :return_graph => false).should == "SELECT DISTINCT ?uri WHERE { ?uri ?p ?o }"
64
+ resource_criteria.as_query(:return_graph => false).should == "SELECT DISTINCT ?uri WHERE { ?uri ?p ?o }"
65
65
  end
66
66
  end
67
67
 
@@ -69,7 +69,7 @@ describe Tripod::Criteria do
69
69
  before { resource_criteria.where("[pattern]") }
70
70
 
71
71
  it "should return a SELECT query with the extra restrictions" do
72
- resource_criteria.send(:build_select_query).should == "SELECT DISTINCT ?uri ?graph WHERE { GRAPH ?graph { ?uri ?p ?o . [pattern] } }"
72
+ resource_criteria.as_query.should == "SELECT DISTINCT ?uri ?graph WHERE { GRAPH ?graph { ?uri ?p ?o . [pattern] } }"
73
73
  end
74
74
  end
75
75
 
@@ -77,7 +77,7 @@ describe Tripod::Criteria do
77
77
  before { resource_criteria.graph("http://example.com/graphy") }
78
78
 
79
79
  it "should override the graph in the query" do
80
- resource_criteria.send(:build_select_query).should == "SELECT DISTINCT ?uri (<http://example.com/graphy> as ?graph) WHERE { GRAPH <http://example.com/graphy> { ?uri ?p ?o } }"
80
+ resource_criteria.as_query.should == "SELECT DISTINCT ?uri (<http://example.com/graphy> as ?graph) WHERE { GRAPH <http://example.com/graphy> { ?uri ?p ?o } }"
81
81
  end
82
82
  end
83
83
  end
@@ -87,7 +87,7 @@ describe Tripod::Criteria do
87
87
  before { resource_criteria.where("[pattern]").extras("LIMIT 10").extras("OFFSET 20") }
88
88
 
89
89
  it "should add the extras on the end" do
90
- resource_criteria.send(:build_select_query).should == "SELECT DISTINCT ?uri ?graph WHERE { GRAPH ?graph { ?uri ?p ?o . [pattern] } } LIMIT 10 OFFSET 20"
90
+ resource_criteria.as_query.should == "SELECT DISTINCT ?uri ?graph WHERE { GRAPH ?graph { ?uri ?p ?o . [pattern] } } LIMIT 10 OFFSET 20"
91
91
  end
92
92
  end
93
93
  end
@@ -95,8 +95,8 @@ describe Tripod::Criteria do
95
95
  describe "#resources" do
96
96
 
97
97
  context "with options passed" do
98
- it "should pass the options to build_select_query" do
99
- person_criteria.should_receive(:build_select_query).with(:return_graph => false).and_call_original
98
+ it "should pass the options to as_query" do
99
+ person_criteria.should_receive(:as_query).with(:return_graph => false).and_call_original
100
100
  person_criteria.resources(:return_graph => false)
101
101
  end
102
102
  end
@@ -136,8 +136,8 @@ describe Tripod::Criteria do
136
136
  describe "#first" do
137
137
 
138
138
  context "with options passed" do
139
- it "should pass the options to build_select_query" do
140
- person_criteria.should_receive(:build_select_query).with(:return_graph => false).and_call_original
139
+ it "should pass the options to as_query" do
140
+ person_criteria.should_receive(:as_query).with(:return_graph => false).and_call_original
141
141
  person_criteria.first(:return_graph => false)
142
142
  end
143
143
  end
@@ -147,7 +147,7 @@ describe Tripod::Criteria do
147
147
  end
148
148
 
149
149
  it "should call Query.select with the 'first sparql'" do
150
- sparql = Tripod::SparqlQuery.new(person_criteria.send(:build_select_query)).as_first_query_str
150
+ sparql = Tripod::SparqlQuery.new(person_criteria.as_query).as_first_query_str
151
151
  Tripod::SparqlClient::Query.should_receive(:select).with(sparql).and_call_original
152
152
  person_criteria.first
153
153
  end
@@ -172,8 +172,8 @@ describe Tripod::Criteria do
172
172
  describe "#count" do
173
173
 
174
174
  context "with options passed" do
175
- it "should pass the options to build_select_query" do
176
- person_criteria.should_receive(:build_select_query).with(:return_graph => false).and_call_original
175
+ it "should pass the options to as_querys" do
176
+ person_criteria.should_receive(:as_query).with(:return_graph => false).and_call_original
177
177
  person_criteria.count(:return_graph => false)
178
178
  end
179
179
  end
@@ -184,7 +184,7 @@ describe Tripod::Criteria do
184
184
  end
185
185
 
186
186
  it "should call Query.select with the 'count sparql'" do
187
- sparql = Tripod::SparqlQuery.new(person_criteria.send(:build_select_query)).as_count_query_str
187
+ sparql = Tripod::SparqlQuery.new(person_criteria.as_query).as_count_query_str
188
188
  Tripod::SparqlClient::Query.should_receive(:select).with(sparql).and_call_original
189
189
  person_criteria.count
190
190
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tripod
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.18
4
+ version: 0.7.19
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-07-04 00:00:00.000000000 Z
14
+ date: 2013-07-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
18
- requirement: &70290660007320 !ruby/object:Gem::Requirement
18
+ requirement: &70230396905700 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70290660007320
26
+ version_requirements: *70230396905700
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
- requirement: &70290660006220 !ruby/object:Gem::Requirement
29
+ requirement: &70230396905160 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '3.2'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70290660006220
37
+ version_requirements: *70230396905160
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: equivalent-xml
40
- requirement: &70290660020540 !ruby/object:Gem::Requirement
40
+ requirement: &70230396904740 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *70290660020540
48
+ version_requirements: *70230396904740
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rdf
51
- requirement: &70290660019200 !ruby/object:Gem::Requirement
51
+ requirement: &70230396904200 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ~>
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '1.0'
57
57
  type: :runtime
58
58
  prerelease: false
59
- version_requirements: *70290660019200
59
+ version_requirements: *70230396904200
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rdf-rdfxml
62
- requirement: &70290660017680 !ruby/object:Gem::Requirement
62
+ requirement: &70230396903780 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: '0'
68
68
  type: :runtime
69
69
  prerelease: false
70
- version_requirements: *70290660017680
70
+ version_requirements: *70230396903780
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rdf-turtle
73
- requirement: &70290660015240 !ruby/object:Gem::Requirement
73
+ requirement: &70230396903320 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '0'
79
79
  type: :runtime
80
80
  prerelease: false
81
- version_requirements: *70290660015240
81
+ version_requirements: *70230396903320
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: rdf-json
84
- requirement: &70290660013600 !ruby/object:Gem::Requirement
84
+ requirement: &70230396902900 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
- version_requirements: *70290660013600
92
+ version_requirements: *70230396902900
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: json-ld
95
- requirement: &70290660026920 !ruby/object:Gem::Requirement
95
+ requirement: &70230396902400 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ~>
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: 0.9.1
101
101
  type: :runtime
102
102
  prerelease: false
103
- version_requirements: *70290660026920
103
+ version_requirements: *70230396902400
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: guid
106
- requirement: &70290660023980 !ruby/object:Gem::Requirement
106
+ requirement: &70230396901980 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: '0'
112
112
  type: :runtime
113
113
  prerelease: false
114
- version_requirements: *70290660023980
114
+ version_requirements: *70230396901980
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: dalli
117
- requirement: &70290660022280 !ruby/object:Gem::Requirement
117
+ requirement: &70230396901440 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ~>
@@ -122,7 +122,7 @@ dependencies:
122
122
  version: '2.6'
123
123
  type: :runtime
124
124
  prerelease: false
125
- version_requirements: *70290660022280
125
+ version_requirements: *70230396901440
126
126
  description: RDF ruby ORM
127
127
  email:
128
128
  - ric@swirrl.com