roadforest 0.0.2 → 0.0.3
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/examples/file-management.rb +7 -1
- data/lib/roadforest/application.rb +0 -2
- data/lib/roadforest/application/dispatcher.rb +20 -1
- data/lib/roadforest/model.rb +4 -4
- data/lib/roadforest/rdf/{context-fascade.rb → access-manager.rb} +96 -42
- data/lib/roadforest/rdf/focus-list.rb +1 -1
- data/lib/roadforest/rdf/graph-copier.rb +10 -5
- data/lib/roadforest/rdf/graph-focus.rb +222 -32
- data/lib/roadforest/rdf/graph-store.rb +1 -12
- data/lib/roadforest/rdf/investigation.rb +3 -1
- data/lib/roadforest/rdf/post-focus.rb +7 -15
- data/lib/roadforest/remote-host.rb +20 -8
- data/lib/roadforest/resource/rdf/read-only.rb +5 -2
- data/lib/roadforest/test-support/matchers.rb +40 -9
- data/lib/roadforest/utility/class-registry.rb +8 -1
- data/spec/focus-list.rb +7 -1
- data/spec/graph-copier.rb +27 -43
- data/spec/graph-store.rb +41 -15
- data/spec/update-focus.rb +10 -8
- metadata +63 -12
- data/lib/roadforest/rdf/graph-reading.rb +0 -200
- data/lib/roadforest/rdf/update-focus.rb +0 -18
- data/lib/roadforest/resource/handlers.rb +0 -43
data/spec/update-focus.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'roadforest/rdf/source-rigor'
|
2
|
-
require 'roadforest/rdf/update-focus'
|
3
2
|
require 'roadforest/rdf/graph-store'
|
4
3
|
require 'roadforest/rdf/document'
|
5
4
|
require 'rdf/rdfa'
|
6
5
|
|
7
|
-
describe RoadForest::RDF::
|
6
|
+
describe RoadForest::RDF::GraphFocus, "with UpdateManager" do
|
8
7
|
class Voc < ::RDF::Vocabulary("http:/pred.org/"); end
|
9
8
|
|
10
9
|
let :context_node do
|
@@ -62,15 +61,18 @@ describe RoadForest::RDF::UpdateFocus do
|
|
62
61
|
end
|
63
62
|
end
|
64
63
|
|
65
|
-
|
66
|
-
RoadForest::RDF::
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
updater.source_rigor = source_rigor
|
64
|
+
let :access do
|
65
|
+
RoadForest::RDF::UpdateManager.new.tap do |access|
|
66
|
+
access.source_graph = source_graph
|
67
|
+
access.target_graph = target_graph
|
68
|
+
access.rigor = source_rigor
|
71
69
|
end
|
72
70
|
end
|
73
71
|
|
72
|
+
subject :updater do
|
73
|
+
RoadForest::RDF::GraphFocus.new(access, context_node)
|
74
|
+
end
|
75
|
+
|
74
76
|
it "should make relevant prefixes available" do
|
75
77
|
updater[[:rdf, :type]] = [:voc, :Thing]
|
76
78
|
updater[[:voc, :a]] = 15
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: roadforest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Judson Lester
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
prerelease: false
|
@@ -17,14 +17,22 @@ dependencies:
|
|
17
17
|
name: rdf
|
18
18
|
version_requirements: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
+
segments:
|
23
|
+
- 1
|
24
|
+
- 0
|
25
|
+
- 6
|
22
26
|
version: 1.0.6
|
23
27
|
none: false
|
24
28
|
requirement: !ruby/object:Gem::Requirement
|
25
29
|
requirements:
|
26
|
-
- -
|
30
|
+
- - ~>
|
27
31
|
- !ruby/object:Gem::Version
|
32
|
+
segments:
|
33
|
+
- 1
|
34
|
+
- 0
|
35
|
+
- 6
|
28
36
|
version: 1.0.6
|
29
37
|
none: false
|
30
38
|
- !ruby/object:Gem::Dependency
|
@@ -35,13 +43,21 @@ dependencies:
|
|
35
43
|
requirements:
|
36
44
|
- - ~>
|
37
45
|
- !ruby/object:Gem::Version
|
38
|
-
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 0
|
49
|
+
- 8
|
50
|
+
version: 1.0.8
|
39
51
|
none: false
|
40
52
|
requirement: !ruby/object:Gem::Requirement
|
41
53
|
requirements:
|
42
54
|
- - ~>
|
43
55
|
- !ruby/object:Gem::Version
|
44
|
-
|
56
|
+
segments:
|
57
|
+
- 1
|
58
|
+
- 0
|
59
|
+
- 8
|
60
|
+
version: 1.0.8
|
45
61
|
none: false
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
prerelease: false
|
@@ -51,12 +67,20 @@ dependencies:
|
|
51
67
|
requirements:
|
52
68
|
- - ! '>='
|
53
69
|
- !ruby/object:Gem::Version
|
70
|
+
segments:
|
71
|
+
- 1
|
72
|
+
- 1
|
73
|
+
- 0
|
54
74
|
version: 1.1.0
|
55
75
|
none: false
|
56
76
|
requirement: !ruby/object:Gem::Requirement
|
57
77
|
requirements:
|
58
78
|
- - ! '>='
|
59
79
|
- !ruby/object:Gem::Version
|
80
|
+
segments:
|
81
|
+
- 1
|
82
|
+
- 1
|
83
|
+
- 0
|
60
84
|
version: 1.1.0
|
61
85
|
none: false
|
62
86
|
- !ruby/object:Gem::Dependency
|
@@ -67,12 +91,20 @@ dependencies:
|
|
67
91
|
requirements:
|
68
92
|
- - ~>
|
69
93
|
- !ruby/object:Gem::Version
|
94
|
+
segments:
|
95
|
+
- 2
|
96
|
+
- 2
|
97
|
+
- 8
|
70
98
|
version: 2.2.8
|
71
99
|
none: false
|
72
100
|
requirement: !ruby/object:Gem::Requirement
|
73
101
|
requirements:
|
74
102
|
- - ~>
|
75
103
|
- !ruby/object:Gem::Version
|
104
|
+
segments:
|
105
|
+
- 2
|
106
|
+
- 2
|
107
|
+
- 8
|
76
108
|
version: 2.2.8
|
77
109
|
none: false
|
78
110
|
- !ruby/object:Gem::Dependency
|
@@ -83,12 +115,18 @@ dependencies:
|
|
83
115
|
requirements:
|
84
116
|
- - ~>
|
85
117
|
- !ruby/object:Gem::Version
|
118
|
+
segments:
|
119
|
+
- 0
|
120
|
+
- 25
|
86
121
|
version: '0.25'
|
87
122
|
none: false
|
88
123
|
requirement: !ruby/object:Gem::Requirement
|
89
124
|
requirements:
|
90
125
|
- - ~>
|
91
126
|
- !ruby/object:Gem::Version
|
127
|
+
segments:
|
128
|
+
- 0
|
129
|
+
- 25
|
92
130
|
version: '0.25'
|
93
131
|
none: false
|
94
132
|
- !ruby/object:Gem::Dependency
|
@@ -99,12 +137,20 @@ dependencies:
|
|
99
137
|
requirements:
|
100
138
|
- - ! '>='
|
101
139
|
- !ruby/object:Gem::Version
|
140
|
+
segments:
|
141
|
+
- 1
|
142
|
+
- 3
|
143
|
+
- 6
|
102
144
|
version: 1.3.6
|
103
145
|
none: false
|
104
146
|
requirement: !ruby/object:Gem::Requirement
|
105
147
|
requirements:
|
106
148
|
- - ! '>='
|
107
149
|
- !ruby/object:Gem::Version
|
150
|
+
segments:
|
151
|
+
- 1
|
152
|
+
- 3
|
153
|
+
- 6
|
108
154
|
version: 1.3.6
|
109
155
|
none: false
|
110
156
|
- !ruby/object:Gem::Dependency
|
@@ -115,12 +161,20 @@ dependencies:
|
|
115
161
|
requirements:
|
116
162
|
- - ! '>='
|
117
163
|
- !ruby/object:Gem::Version
|
164
|
+
segments:
|
165
|
+
- 0
|
166
|
+
- 9
|
167
|
+
- 1
|
118
168
|
version: 0.9.1
|
119
169
|
none: false
|
120
170
|
requirement: !ruby/object:Gem::Requirement
|
121
171
|
requirements:
|
122
172
|
- - ! '>='
|
123
173
|
- !ruby/object:Gem::Version
|
174
|
+
segments:
|
175
|
+
- 0
|
176
|
+
- 9
|
177
|
+
- 1
|
124
178
|
version: 0.9.1
|
125
179
|
none: false
|
126
180
|
description: ! " RoaD FoReST is a web framework designed to use the Resource Description\n
|
@@ -137,9 +191,8 @@ files:
|
|
137
191
|
- lib/roadforest/rdf/graph-store.rb
|
138
192
|
- lib/roadforest/rdf/normalization.rb
|
139
193
|
- lib/roadforest/rdf/focus-list.rb
|
140
|
-
- lib/roadforest/rdf/graph-reading.rb
|
141
194
|
- lib/roadforest/rdf/graph-copier.rb
|
142
|
-
- lib/roadforest/rdf/
|
195
|
+
- lib/roadforest/rdf/access-manager.rb
|
143
196
|
- lib/roadforest/rdf/source-rigor.rb
|
144
197
|
- lib/roadforest/rdf/graph-focus.rb
|
145
198
|
- lib/roadforest/rdf/etagging.rb
|
@@ -153,7 +206,6 @@ files:
|
|
153
206
|
- lib/roadforest/rdf/source-rigor/credence-annealer.rb
|
154
207
|
- lib/roadforest/rdf/post-focus.rb
|
155
208
|
- lib/roadforest/rdf/investigation.rb
|
156
|
-
- lib/roadforest/rdf/update-focus.rb
|
157
209
|
- lib/roadforest/rdf/vocabulary.rb
|
158
210
|
- lib/roadforest/rdf/document.rb
|
159
211
|
- lib/roadforest/rdf/resource-pattern.rb
|
@@ -170,7 +222,6 @@ files:
|
|
170
222
|
- lib/roadforest/resource/http/form-parsing.rb
|
171
223
|
- lib/roadforest/resource/role/writable.rb
|
172
224
|
- lib/roadforest/resource/role/has-children.rb
|
173
|
-
- lib/roadforest/resource/handlers.rb
|
174
225
|
- lib/roadforest/resource/rdf.rb
|
175
226
|
- lib/roadforest/test-support/http-client.rb
|
176
227
|
- lib/roadforest/test-support/trace-formatter.rb
|
@@ -218,7 +269,7 @@ rdoc_options:
|
|
218
269
|
- --main
|
219
270
|
- doc/README
|
220
271
|
- --title
|
221
|
-
- roadforest-0.0.
|
272
|
+
- roadforest-0.0.3 Documentation
|
222
273
|
require_paths:
|
223
274
|
- lib/
|
224
275
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -227,7 +278,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
278
|
- !ruby/object:Gem::Version
|
228
279
|
segments:
|
229
280
|
- 0
|
230
|
-
hash: -
|
281
|
+
hash: -124333677
|
231
282
|
version: '0'
|
232
283
|
none: false
|
233
284
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -1,200 +0,0 @@
|
|
1
|
-
require 'roadforest/rdf/focus-list'
|
2
|
-
require 'roadforest/rdf/normalization'
|
3
|
-
require 'roadforest/rdf/resource-query'
|
4
|
-
require 'rdf/model/node'
|
5
|
-
require 'roadforest/rdf'
|
6
|
-
|
7
|
-
|
8
|
-
module RoadForest::RDF
|
9
|
-
class GraphReading
|
10
|
-
#XXX Any changes to this class heirarchy or to ContextFascade should start
|
11
|
-
#with a refactor like:
|
12
|
-
# Reduce this to the single-node API ([] []=)
|
13
|
-
# Change the ContextFascade into a family of classes (RO, RW, Update)
|
14
|
-
include Normalization
|
15
|
-
|
16
|
-
#attr_accessor :source_graph, :target_graph, :subject, :root_url,
|
17
|
-
#:source_rigor
|
18
|
-
|
19
|
-
attr_accessor :subject, :access_manager
|
20
|
-
|
21
|
-
alias rdf subject
|
22
|
-
|
23
|
-
def initialize(subject = nil, graph = nil, rigor = nil)
|
24
|
-
@access_manager = ContextFascade.new
|
25
|
-
@access_manager.rigor = rigor
|
26
|
-
self.target_graph = graph
|
27
|
-
self.source_graph = graph
|
28
|
-
|
29
|
-
self.subject = subject unless subject.nil?
|
30
|
-
end
|
31
|
-
|
32
|
-
def source_graph
|
33
|
-
@access_manager.source_graph
|
34
|
-
end
|
35
|
-
|
36
|
-
def source_graph=(graph)
|
37
|
-
@access_manager.source_graph = graph
|
38
|
-
end
|
39
|
-
|
40
|
-
def target_graph
|
41
|
-
nil
|
42
|
-
end
|
43
|
-
|
44
|
-
def target_graph=(graph)
|
45
|
-
@access_manager.target_graph = nil
|
46
|
-
end
|
47
|
-
|
48
|
-
def source_rigor
|
49
|
-
@access_manager.rigor
|
50
|
-
end
|
51
|
-
|
52
|
-
def source_rigor=(rigor)
|
53
|
-
@access_manager.rigor = rigor
|
54
|
-
end
|
55
|
-
|
56
|
-
def root_url
|
57
|
-
@access_manager.resource
|
58
|
-
end
|
59
|
-
|
60
|
-
def subject=(*value)
|
61
|
-
@subject = normalize_resource(value)
|
62
|
-
case @subject
|
63
|
-
when ::RDF::URI
|
64
|
-
@access_manager.resource = @subject
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def inspect
|
69
|
-
"#<#{self.class.name}:0x#{"%x" % object_id} (#{subject.to_s}) #{forward_properties.inspect}>"
|
70
|
-
end
|
71
|
-
alias to_s inspect
|
72
|
-
|
73
|
-
def dup
|
74
|
-
other = self.class.new
|
75
|
-
other.access_manager = access_manager.dup
|
76
|
-
other.subject = subject
|
77
|
-
other
|
78
|
-
end
|
79
|
-
|
80
|
-
def wrap_node(value)
|
81
|
-
next_step = dup
|
82
|
-
if ::RDF::Node === value
|
83
|
-
next_step.root_url = self.root_url
|
84
|
-
else
|
85
|
-
next_step.root_url = normalize_context(value)
|
86
|
-
end
|
87
|
-
next_step.subject = value
|
88
|
-
next_step
|
89
|
-
end
|
90
|
-
|
91
|
-
def unwrap_value(value)
|
92
|
-
return nil if value.nil?
|
93
|
-
if value.respond_to? :object
|
94
|
-
value.object
|
95
|
-
else
|
96
|
-
wrap_node(value)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def to_context
|
101
|
-
normalize_context(subject)
|
102
|
-
end
|
103
|
-
|
104
|
-
def root_url=(*value) #XXX curies?
|
105
|
-
@root_url = normalize_resource(value)
|
106
|
-
end
|
107
|
-
|
108
|
-
#XXX This probably wants to be handled completely in the MediaType handler
|
109
|
-
def relevant_prefixes
|
110
|
-
relevant_prefixes_for_graph(source_graph)
|
111
|
-
end
|
112
|
-
|
113
|
-
def get(prefix, property = nil)
|
114
|
-
return single_or_enum(forward_query_value( prefix, property))
|
115
|
-
end
|
116
|
-
alias_method :[], :get
|
117
|
-
|
118
|
-
def first(prefix, property = nil)
|
119
|
-
return forward_query_value( prefix, property ).first
|
120
|
-
end
|
121
|
-
|
122
|
-
def all(prefix, property = nil)
|
123
|
-
return forward_query_value( prefix, property )
|
124
|
-
end
|
125
|
-
|
126
|
-
#XXX Maybe rev should return a decorator, so it looks like:
|
127
|
-
#focus.rev.get(...) or focus.rev.all(...)
|
128
|
-
def rev(prefix, property = nil)
|
129
|
-
return single_or_enum(reverse_query_value( prefix, property))
|
130
|
-
end
|
131
|
-
|
132
|
-
def rev_first(prefix, property = nil)
|
133
|
-
return reverse_query_value(prefix, property).first
|
134
|
-
end
|
135
|
-
|
136
|
-
def rev_all(prefix, property = nil)
|
137
|
-
return reverse_query_value(prefix, property)
|
138
|
-
end
|
139
|
-
|
140
|
-
def as_list
|
141
|
-
list = FocusList.new(subject, access_manager)
|
142
|
-
list.base_node = self
|
143
|
-
list
|
144
|
-
end
|
145
|
-
|
146
|
-
def forward_properties
|
147
|
-
query_properties( build_query{|q| q.pattern([ normalize_resource(subject), :property, :value ])} )
|
148
|
-
end
|
149
|
-
|
150
|
-
def reverse_properties
|
151
|
-
query_properties( build_query{|q| q.pattern([ :value, :property, normalize_resource(subject)])} )
|
152
|
-
end
|
153
|
-
|
154
|
-
protected
|
155
|
-
|
156
|
-
def single_or_enum(values)
|
157
|
-
case values.length
|
158
|
-
when 0
|
159
|
-
return nil
|
160
|
-
when 1
|
161
|
-
return values.first
|
162
|
-
else
|
163
|
-
return values.enum_for(:each)
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
def reverse_query_value(prefix, property=nil)
|
168
|
-
query_value(build_query{|q|
|
169
|
-
q.pattern([ :value, normalize_property(prefix, property), normalize_resource(subject)])
|
170
|
-
})
|
171
|
-
end
|
172
|
-
|
173
|
-
def forward_query_value(prefix, property=nil)
|
174
|
-
query_value(build_query{|q|
|
175
|
-
q.pattern([ normalize_resource(subject), normalize_property(prefix, property), :value])
|
176
|
-
})
|
177
|
-
end
|
178
|
-
|
179
|
-
def build_query(&block)
|
180
|
-
access_manager.build_query(&block)
|
181
|
-
end
|
182
|
-
|
183
|
-
def query_value(query)
|
184
|
-
solutions = query.execute(access_manager)
|
185
|
-
solutions.map do |solution|
|
186
|
-
unwrap_value(solution.value)
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
def query_properties(query)
|
191
|
-
Hash[query.execute(access_manager).map do |solution|
|
192
|
-
prop = solution.property
|
193
|
-
if qname = prop.qname
|
194
|
-
prop = qname
|
195
|
-
end
|
196
|
-
[prop, solution.value]
|
197
|
-
end]
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'roadforest/rdf/graph-focus'
|
2
|
-
require 'roadforest/rdf/parcel'
|
3
|
-
|
4
|
-
module RoadForest::RDF
|
5
|
-
class UpdateFocus < GraphWriting
|
6
|
-
def target_graph
|
7
|
-
@access_manager.target_graph
|
8
|
-
end
|
9
|
-
|
10
|
-
def target_graph=(graph)
|
11
|
-
@access_manager.target_graph = graph
|
12
|
-
end
|
13
|
-
|
14
|
-
def relevant_prefixes
|
15
|
-
super.merge(relevant_prefixes_for_graph(target_graph))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|