roadforest 0.1 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/examples/file-management.rb +12 -13
  3. data/lib/roadforest-client.rb +3 -0
  4. data/lib/roadforest-common.rb +2 -0
  5. data/lib/roadforest-server.rb +7 -0
  6. data/lib/roadforest-testing.rb +1 -0
  7. data/lib/roadforest/application.rb +9 -7
  8. data/lib/roadforest/application/dispatcher.rb +39 -63
  9. data/lib/roadforest/application/parameters.rb +1 -1
  10. data/lib/roadforest/application/path-provider.rb +2 -2
  11. data/lib/roadforest/application/route-adapter.rb +130 -18
  12. data/lib/roadforest/application/services-host.rb +0 -4
  13. data/lib/roadforest/augment/affordance.rb +78 -0
  14. data/lib/roadforest/augment/augmentation.rb +97 -0
  15. data/lib/roadforest/augment/augmenter.rb +54 -0
  16. data/lib/roadforest/augmentations.rb +1 -0
  17. data/lib/roadforest/content-handling.rb +1 -0
  18. data/lib/roadforest/content-handling/common-engines.rb +67 -0
  19. data/lib/roadforest/content-handling/engine.rb +2 -14
  20. data/lib/roadforest/content-handling/handler-wrap.rb +29 -31
  21. data/lib/roadforest/content-handling/media-type.rb +6 -0
  22. data/lib/roadforest/{rdf.rb → graph.rb} +1 -1
  23. data/lib/roadforest/{rdf → graph}/access-manager.rb +12 -74
  24. data/lib/roadforest/{rdf → graph}/document.rb +1 -1
  25. data/lib/roadforest/{rdf → graph}/etagging.rb +2 -2
  26. data/lib/roadforest/{rdf → graph}/focus-list.rb +1 -9
  27. data/lib/roadforest/{rdf → graph}/graph-copier.rb +2 -2
  28. data/lib/roadforest/{rdf → graph}/graph-focus.rb +5 -7
  29. data/lib/roadforest/{rdf → graph}/normalization.rb +1 -1
  30. data/lib/roadforest/{rdf → graph}/post-focus.rb +2 -3
  31. data/lib/roadforest/graph/vocabulary.rb +96 -0
  32. data/lib/roadforest/http/graph-transfer.rb +2 -2
  33. data/lib/roadforest/interface/application.rb +145 -0
  34. data/lib/roadforest/interface/blob.rb +38 -0
  35. data/lib/roadforest/interface/rdf.rb +77 -0
  36. data/lib/roadforest/interfaces.rb +2 -0
  37. data/lib/roadforest/remote-host.rb +17 -17
  38. data/lib/roadforest/resource.rb +4 -0
  39. data/lib/roadforest/resource/{rdf/leaf-item.rb → leaf-item.rb} +1 -1
  40. data/lib/roadforest/resource/{rdf/list.rb → list.rb} +1 -1
  41. data/lib/roadforest/resource/{rdf/parent-item.rb → parent-item.rb} +1 -1
  42. data/lib/roadforest/resource/{rdf/read-only.rb → read-only.rb} +18 -18
  43. data/lib/roadforest/resource/role/has-children.rb +1 -1
  44. data/lib/roadforest/resource/role/writable.rb +2 -2
  45. data/lib/roadforest/server.rb +1 -1
  46. data/lib/roadforest/source-rigor.rb +9 -0
  47. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence-annealer.rb +2 -2
  48. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence.rb +5 -5
  49. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/any.rb +1 -1
  50. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/none-if-role-absent.rb +1 -1
  51. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/role-if-available.rb +1 -1
  52. data/lib/roadforest/source-rigor/engine.rb +45 -0
  53. data/lib/roadforest/{rdf → source-rigor}/graph-store.rb +9 -9
  54. data/lib/roadforest/{rdf/source-rigor → source-rigor}/http-investigator.rb +2 -2
  55. data/lib/roadforest/{rdf → source-rigor}/investigation.rb +2 -2
  56. data/lib/roadforest/{rdf/source-rigor → source-rigor}/investigator.rb +3 -3
  57. data/lib/roadforest/{rdf/source-rigor → source-rigor}/null-investigator.rb +3 -2
  58. data/lib/roadforest/{rdf → source-rigor}/parcel.rb +5 -5
  59. data/lib/roadforest/{rdf → source-rigor}/resource-pattern.rb +6 -6
  60. data/lib/roadforest/{rdf → source-rigor}/resource-query.rb +2 -2
  61. data/lib/roadforest/source-rigor/rigorous-access.rb +101 -0
  62. data/lib/roadforest/templates/affordance-doc.haml +23 -0
  63. data/lib/roadforest/templates/affordance-property-values.haml +13 -0
  64. data/lib/roadforest/templates/affordance-subject.haml +9 -0
  65. data/lib/roadforest/templates/affordance-uri-object.haml +2 -0
  66. data/lib/roadforest/templates/base/{property_value.haml → property-value.haml} +0 -0
  67. data/lib/roadforest/templates/base/{property_values.haml → property-values.haml} +0 -0
  68. data/lib/roadforest/templates/distiller/{property_value.haml → property-value.haml} +0 -0
  69. data/lib/roadforest/templates/distiller/{property_values.haml → property-values.haml} +0 -0
  70. data/lib/roadforest/templates/min/{property_values.haml → property-values.haml} +0 -0
  71. data/lib/roadforest/templates/rdfpost-curie.haml +6 -0
  72. data/lib/roadforest/test-support/dispatcher-facade.rb +2 -0
  73. data/lib/roadforest/test-support/matchers.rb +169 -5
  74. data/lib/roadforest/test-support/remote-host.rb +2 -2
  75. data/lib/roadforest/type-handlers/handler.rb +74 -0
  76. data/lib/roadforest/type-handlers/jsonld.rb +34 -0
  77. data/lib/roadforest/type-handlers/rdf-handler.rb +36 -0
  78. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer.rb +2 -2
  79. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/document-environment.rb +9 -8
  80. data/lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb +312 -0
  81. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/object-environment.rb +3 -3
  82. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/property-environment.rb +5 -11
  83. data/lib/roadforest/type-handlers/rdfa-writer/render-engine.rb +427 -0
  84. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/render-environment.rb +33 -26
  85. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/subject-environment.rb +7 -23
  86. data/lib/roadforest/type-handlers/rdfa.rb +73 -0
  87. data/lib/roadforest/type-handlers/rdfpost.rb +301 -0
  88. data/lib/roadforest/utility/class-registry.rb +23 -5
  89. data/spec/.ctrlp-root +0 -0
  90. data/spec/affordance-augmenter.rb +75 -0
  91. data/spec/affordances-flow.rb +438 -0
  92. data/spec/authorization.rb +34 -0
  93. data/spec/client.rb +13 -12
  94. data/spec/credence-annealer.rb +5 -5
  95. data/spec/focus-list.rb +8 -8
  96. data/spec/full-integration.rb +3 -3
  97. data/spec/graph-copier.rb +4 -4
  98. data/spec/graph-store.rb +19 -31
  99. data/spec/keychain.rb +82 -0
  100. data/spec/rdf-normalization.rb +2 -2
  101. data/spec/rdf-parcel.rb +3 -3
  102. data/spec/rdfa-handler.rb +514 -0
  103. data/spec/rdfpost.rb +96 -0
  104. data/spec/source-rigor.rb +57 -0
  105. data/spec/update-focus.rb +11 -10
  106. metadata +91 -66
  107. data/lib/roadforest/blob-model.rb +0 -53
  108. data/lib/roadforest/content-handling/type-handler.rb +0 -76
  109. data/lib/roadforest/content-handling/type-handlers/jsonld.rb +0 -36
  110. data/lib/roadforest/content-handling/type-handlers/rdf-handler.rb +0 -38
  111. data/lib/roadforest/content-handling/type-handlers/rdfa-writer/render-engine.rb +0 -574
  112. data/lib/roadforest/content-handling/type-handlers/rdfa.rb +0 -175
  113. data/lib/roadforest/content-handling/type-handlers/rdfpost.rb +0 -297
  114. data/lib/roadforest/model.rb +0 -209
  115. data/lib/roadforest/models.rb +0 -2
  116. data/lib/roadforest/rdf/source-rigor.rb +0 -44
  117. data/lib/roadforest/rdf/vocabulary.rb +0 -11
  118. data/lib/roadforest/resource/http/form-parsing.rb +0 -81
  119. data/lib/roadforest/resource/rdf.rb +0 -4
  120. data/spec/form-parsing.rb +0 -1
@@ -1,175 +0,0 @@
1
- require 'rdf/rdfa' #XXX Otherwise json-ld grabs RDFa documents. Awaiting fix upstream
2
- require 'roadforest/content-handling/type-handlers/rdf-handler'
3
- module RoadForest
4
- module MediaType
5
- module Handlers
6
- class RESTfulRDFaWriter < ::RDF::RDFa::Writer
7
- HAML = ::RDF::RDFa::Writer::BASE_HAML.merge(:property_values => %q{
8
- - objects.each do |object|
9
- /
10
- = object.inspect
11
- %div.property
12
- %span.label
13
- = get_predicate_name(predicate)
14
- %ul
15
- - objects.each do |object|
16
- - if res = yield(object, :inlist => inlist, :element => :li)
17
- != res
18
- - elsif object.node?
19
- %li{:property => get_curie(predicate), :resource => get_curie(object), :inlist => inlist}= get_curie(object)
20
- - elsif object.uri?
21
- %li
22
- %a{:property => get_curie(predicate), :href => object.to_s, :inlist => inlist}= object.to_s
23
- - elsif object.datatype == RDF.XMLLiteral
24
- %li{:property => get_curie(predicate), :lang => get_lang(object), :datatype => get_curie(object.datatype), :inlist => inlist}<!= get_value(object)
25
- - else
26
- %li{:property => get_curie(predicate), :content => get_content(object), :lang => get_lang(object), :datatype => get_dt_curie(object), :inlist => inlist}= escape_entities(get_value(object))
27
- })
28
-
29
- def initialize(output = $stdout, options = nil, &block)
30
- options ||= {}
31
- options = {:haml => HAML}
32
- super(output, options, &block)
33
- end
34
-
35
-
36
- # Write a predicate with one or more values.
37
- #
38
- # Values may be a combination of Literal and Resource (Node or URI).
39
- # @param [RDF::Resource] predicate
40
- # Predicate to serialize
41
- # @param [Array<RDF::Resource>] objects
42
- # Objects to serialize
43
- # @return [String]
44
- def predicate(predicate, objects, options = nil)
45
- add_debug {"predicate: #{predicate.inspect}, objects: #{objects}"}
46
-
47
- return if objects.to_a.empty?
48
-
49
- add_debug {"predicate: #{get_curie(predicate)}"}
50
- render_property(predicate, objects, options || {}) do |o, opts|
51
- # Yields each object, for potential recursive definition.
52
- # If nil is returned, a leaf is produced
53
- opts = {:rel => get_curie(predicate), :element => (:li if objects.length > 1)}.merge(opts||{})
54
-
55
- if !is_done?(o) && @subjects.include?(o)
56
- depth {subject(o, opts)}
57
- end
58
- end
59
- end
60
-
61
-
62
- # Render a single- or multi-valued predicate using
63
- # `haml_template[:property_value]` or
64
- # `haml_template[:property_values]`. Yields each object for optional
65
- # rendering. The block should only render for recursive subject
66
- # definitions (i.e., where the object is also a subject and is rendered
67
- # underneath the first referencing subject).
68
- #
69
- # If a multi-valued property definition is not found within the template, the writer will use the single-valued property definition multiple times.
70
- #
71
- # @param [Array<RDF::Resource>] predicate
72
- # Predicate to render.
73
- # @param [Array<RDF::Resource>] objects
74
- # List of objects to render. If the list contains only a single element, the :property_value template will be used. Otherwise, the :property_values template is used.
75
- # @param [Hash{Symbol => Object}] options Rendering options passed to Haml render.
76
- # @option options [String] haml (haml_template[:property_value], haml_template[:property_values])
77
- # Haml template to render. Otherwise, uses `haml_template[:property_value] or haml_template[:property_values]`
78
- # depending on the cardinality of objects.
79
- # @yield [object]
80
- # Yields object.
81
- # @yieldparam [RDF::Resource] object
82
- # @yieldreturn [String, nil]
83
- # The block should only return a string for recursive object definitions.
84
- # @return String
85
- # The rendered document is returned as a string
86
- def render_property(predicate, objects, options = {}, &block)
87
- add_debug {"render_property(#{predicate}): #{objects.inspect}"}
88
- # If there are multiple objects, and no :property_values is defined, call recursively with
89
- # each object
90
-
91
- template = options[:haml]
92
- template ||= objects.length > 1 ? haml_template[:property_values] : haml_template[:property_value]
93
-
94
- # Separate out the objects which are lists and render separately
95
- list_objects = objects.select {|o| o != ::RDF.nil && ::RDF::List.new(o, @graph).valid?}
96
- unless list_objects.empty?
97
- # Render non-list objects
98
- add_debug {"properties with lists: non-lists: #{objects - list_objects} lists: #{list_objects}"}
99
- nl = render_property(predicate, objects - list_objects, options, &block) unless objects == list_objects
100
- return nl.to_s + list_objects.map do |object|
101
- # Render each list as multiple properties and set :inlist to true
102
- list = ::RDF::List.new(object, @graph)
103
- list.each_statement {|st| subject_done(st.subject)}
104
-
105
- add_debug {"list: #{list.inspect} #{list.to_a}"}
106
- render_property(predicate, list.to_a, options.merge(:inlist => "true"), &block)
107
- end.join(" ")
108
- end
109
-
110
- if objects.length > 1 && template.nil?
111
- # Uf there is no property_values template, render each property using property_value template
112
- objects.map do |object|
113
- render_property(predicate, [object], options, &block)
114
- end.join(" ")
115
- else
116
- raise ::RDF::WriterError, "Missing property template" if template.nil?
117
-
118
- template = options[:haml] || (
119
- objects.to_a.length > 1 &&
120
- haml_template.has_key?(:property_values) ?
121
- :property_values :
122
- :property_value)
123
- options = {
124
- :objects => objects,
125
- :object => objects.first,
126
- :predicate => predicate,
127
- :property => get_curie(predicate),
128
- :rel => get_curie(predicate),
129
- :inlist => nil,
130
- }.merge(options)
131
- hamlify(template, options) do |object, options|
132
- yield(object, options) if block_given?
133
- end
134
- end
135
- end
136
-
137
- end
138
-
139
- #text/html;q=1;rdfa
140
- #image/svg+xml;q=1;rdfa
141
- #application/xhtml+xml;q=1;rdfa
142
- #text/html
143
- #image/svg+xml
144
- #application/xhtml+xml
145
- class RDFa < RDFHandler
146
- include RDF::Normalization
147
-
148
- def local_to_network(base_uri, rdf)
149
- raise "Invalid base uri: #{base_uri}" if base_uri.nil?
150
- prefixes = relevant_prefixes_for_graph(rdf)
151
- prefixes.keys.each do |prefix|
152
- prefixes[prefix.to_sym] = prefixes[prefix]
153
- end
154
- #::RDF::RDFa.debug = true
155
- RESTfulRDFaWriter.buffer(:base_uri => base_uri.to_s,
156
- :prefixes => prefixes) do |writer|
157
- rdf.each_statement do |statement|
158
- writer << statement
159
- end
160
- end
161
- end
162
-
163
- def network_to_local(base_uri, source)
164
- raise "Invalid base uri: #{base_uri.inspect}" if base_uri.nil?
165
- graph = ::RDF::Graph.new
166
- reader = ::RDF::RDFa::Reader.new(source.to_s, :base_uri => base_uri.to_s)
167
- reader.each_statement do |statement|
168
- graph.insert(statement)
169
- end
170
- graph
171
- end
172
- end
173
- end
174
- end
175
- end
@@ -1,297 +0,0 @@
1
- require 'roadforest/content-handling/type-handlers/rdf-handler'
2
-
3
- module RoadForest
4
- module MediaType
5
- module Handlers
6
- #application/x-www-form-urlencoded
7
- class RDFPost < RDFHandler
8
-
9
- #c.f. http://www.lsrn.org/semweb/rdfpost.html
10
- class Reader < ::RDF::Reader
11
- module St
12
- class State
13
- def initialize(reader)
14
- @reader = reader
15
- @accept_hash = cleanup(accept_list)
16
- end
17
-
18
- def cleanup(accept_list)
19
- hash = Hash.new{ accept_list[nil] }
20
- accept_list.each_key do |key|
21
- next if key.nil?
22
- hash[key.to_s] = accept_list[key]
23
- end
24
- hash
25
- end
26
-
27
- def blank_node(name)
28
- ::RDF::Node.new(name)
29
- end
30
-
31
- def base_uri
32
- ::RDF::URI.intern(@reader.options[:base_uri])
33
- end
34
-
35
- def uri(string)
36
- base_uri.join(string)
37
- end
38
-
39
- def prefix_uri(name)
40
- ::RDF::URI.intern(@reader.options[:prefixes][name])
41
- end
42
-
43
- def clear_subject
44
- @reader.subject = nil
45
- @reader.subject_prefix = nil
46
- end
47
-
48
- def clear_predicate
49
- @reader.predicate = nil
50
- @reader.predicate_prefix = nil
51
- end
52
-
53
- def clear_object
54
- @reader.object = nil
55
- @reader.object_prefix = nil
56
- end
57
-
58
- def consume_next(name)
59
- consume
60
- next_state(name)
61
- end
62
-
63
- def consume
64
- @reader.consume_pair
65
- end
66
-
67
- def triple_complete
68
- @reader.new_triple = true
69
- end
70
-
71
- def next_state(name)
72
- @reader.current_state = @reader.states.fetch(name)
73
- end
74
-
75
- def accept(key, value)
76
- #puts "#{[self.class.to_s.sub(/.*:/,''), key,
77
- #value.sub(/\s*\Z/,'')].inspect}"
78
- @accept_hash[key][value.sub(/\s*\Z/,'')]
79
- end
80
- end
81
-
82
- class RDF < State
83
- def accept_list
84
- { rdf: proc{|v| consume_next(:def_ns_decl) },
85
- nil => proc{ consume } }
86
- end
87
- end
88
-
89
- class DefNsDecl < State
90
- def accept_list
91
- { v: proc {|v| consume_next(:ns_decl); @reader.options[:prefixes][nil] = v},
92
- nil => proc{|v| next_state(:ns_decl)}}
93
- end
94
- end
95
-
96
- class NsDecl < State
97
- def accept_list
98
- { n: proc{|v| consume_next(:ns_decl_suffix); @reader.namespace_prefix = v},
99
- nil => proc{|v| next_state(:subject)}}
100
- end
101
- end
102
-
103
- class NsDeclSuffix < State
104
- def accept_list
105
- { v: proc{|v| consume_next(:ns_decl); @reader.options[:prefixes][@reader.namespace_prefix] = v},
106
- nil => proc{ next_state(:ns_decl)}}
107
- end
108
- end
109
-
110
- class SkipToSubject < State
111
- def accept_list
112
- next_is_subject = proc{ next_state(:subject); clear_subject; clear_predicate; clear_object }
113
- {
114
- sb: next_is_subject,
115
- su: next_is_subject,
116
- sv: next_is_subject,
117
- sn: next_is_subject,
118
- nil => proc{ consume }
119
- }
120
- end
121
- end
122
-
123
- class SkipToSubjectOrPred < SkipToSubject
124
- def accept_list
125
- next_is_pred = proc{ next_state(:predicate); clear_predicate; clear_object }
126
- super.merge( pu: next_is_pred, pv: next_is_pred, pn: next_is_pred )
127
- end
128
- end
129
-
130
- class Subject < State
131
- def accept_list
132
- {
133
- sb: proc{|v| consume_next(:predicate); @reader.subject = blank_node(v)},
134
- su: proc{|v| consume_next(:predicate); @reader.subject = uri(v)},
135
- sv: proc{|v| consume_next(:predicate); @reader.subject = prefix_url(nil) / v},
136
- sn: proc{|v| consume_next(:subject_suffix); @reader.subject_prefix = prefix_uri(v)},
137
- nil => proc{ consume }
138
- }
139
- end
140
- end
141
-
142
- class SubjectSuffix < State
143
- def accept_list
144
- {
145
- sv: proc{|v| consume_next(:predicate); @reader.subject = @reader.subject_prefix/v},
146
- nil => proc{ next_state(:skip_to_subject)}
147
- }
148
- end
149
- end
150
-
151
- class Predicate < State
152
- def accept_list
153
- {
154
- pu: proc {|v| @reader.predicate = uri(v); consume_next(:object)},
155
- pv: proc {|v| @reader.predicate = prefix_uri(nil) / v; consume_next(:object)},
156
- pn: proc {|v| @reader.predicate_prefix = prefix_uri(v); consume_next(:predicate_suffix)},
157
- nil => proc { next_state(:skip_to_subject)}
158
- }
159
- end
160
- end
161
-
162
- class PredicateSuffix < State
163
- def accept_list
164
- {
165
- pv: proc{|v| consume_next(:object); @reader.predicate = @reader.predicate_prefix/v},
166
- nil => proc{ next_state(:skip_to_subject)}
167
- }
168
- end
169
- end
170
-
171
- class Object < State
172
- def accept_list
173
- {
174
- ob: proc{|v| consume; triple_complete; @reader.object = blank_node(v)},
175
- ou: proc{|v| consume; triple_complete; @reader.object = uri(v)},
176
- ov: proc{|v| consume; triple_complete; @reader.object = prefix_uri(nil) / v},
177
- on: proc{|v| consume_next(:object_suffix); @reader.object_prefix = prefix_uri(v)},
178
- ol: proc{|v| consume_next(:type_or_lang); @reader.object = v},
179
- ll: proc{|v| consume_next(:object_literal); @reader.object_lang = v},
180
- lt: proc{|v| consume_next(:object_literal); @reader.object_type = v},
181
- nil => proc{ next_state(:skip_to_subj_or_pred) }
182
- }
183
- end
184
- end
185
-
186
- class ObjectSuffix < State
187
- def accept_list
188
- {
189
- ov: proc{|v| consume_next(:object); triple_complete; @reader.object = @reader.object_prefix/v},
190
- nil => proc{ next_state(:skip_to_subj_or_pred)}
191
- }
192
- end
193
- end
194
-
195
- class ObjectLiteral < State
196
- def accept_list
197
- {
198
- ol: proc{|v| consume_next(:type_or_lang); @reader.object = v},
199
- ll: proc{|v| consume; @reader.object_lang = v},
200
- lt: proc{|v| consume; @reader.object_type = v},
201
- nil => proc{ next_state(:skip_to_subj_or_pred)}
202
- }
203
- end
204
- end
205
-
206
- class TypeOrLang < State
207
- def accept_list
208
- {
209
- ll: proc{|v| consume; @reader.object_lang = v},
210
- lt: proc{|v| consume; @reader.object_type = v},
211
- nil => proc{ next_state(:object); triple_complete }
212
- }
213
- end
214
- end
215
- end
216
-
217
- def initialize(input, options=nil, &block)
218
- super(input, options||{}, &block)
219
-
220
- @lineno = 0
221
- @new_triple = false
222
-
223
- @states = {
224
- :rdf => St::RDF.new(self),
225
- :def_ns_decl => St::DefNsDecl.new(self),
226
- :ns_decl => St::NsDecl.new(self),
227
- :ns_decl_suffix => St::NsDeclSuffix.new(self),
228
- :skip_to_subject => St::SkipToSubject.new(self),
229
- :skip_to_subj_or_pred => St::SkipToSubjectOrPred.new(self),
230
- :subject => St::Subject.new(self),
231
- :subject_suffix => St::SubjectSuffix.new(self),
232
- :predicate => St::Predicate.new(self),
233
- :predicate_suffix => St::PredicateSuffix.new(self),
234
- :object => St::Object.new(self),
235
- :object_suffix => St::ObjectSuffix.new(self),
236
- :object_literal => St::ObjectLiteral.new(self),
237
- :type_or_lang => St::TypeOrLang.new(self)
238
- }
239
-
240
- @current_state = @states.fetch(:rdf)
241
- end
242
- attr_reader :lineno, :states
243
- attr_accessor :current_state
244
- attr_accessor :new_triple, :subject, :predicate, :object
245
- attr_accessor :object_type, :object_lang
246
- attr_accessor :namespace_prefix, :subject_prefix, :predicate_prefix, :object_prefix
247
-
248
- def read_triple
249
- if @lineno >= @input.length
250
- raise EOFError
251
- end
252
- while @lineno < @input.length
253
- @current_state.accept(*@input[@lineno])
254
- if @new_triple
255
- @new_triple = false
256
- return build_triple
257
- end
258
- end
259
- return build_triple
260
- end
261
-
262
- def build_triple
263
- object = @object
264
- if object.is_a? String
265
- object = ::RDF::Literal.new(object, :datatype => object_type, :language => object_lang)
266
- end
267
- @object_type = nil
268
- @object_lang = nil
269
-
270
- [@subject, @predicate, object]
271
- end
272
-
273
- def rewind
274
- @lineno = 0
275
- end
276
-
277
- def consume_pair
278
- @lineno += 1
279
- end
280
- end
281
-
282
- def local_to_network(base_uri, graph)
283
- end
284
-
285
- def network_to_local(base_uri, list)
286
- raise "Invalid base uri: #{base_uri.inspect}" if base_uri.nil?
287
- graph = ::RDF::Graph.new
288
- reader = Reader.new(list, :base_uri => base_uri.to_s)
289
- reader.each_statement do |statement|
290
- graph.insert(statement)
291
- end
292
- graph
293
- end
294
- end
295
- end
296
- end
297
- end