rdf_context 0.5.7 → 0.5.8.1
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/History.rdoc +15 -1
- data/README.rdoc +2 -0
- data/Rakefile +2 -4
- data/VERSION +1 -1
- data/bin/rdf_context +5 -54
- data/lib/rdf_context.rb +5 -0
- data/lib/rdf_context/graph.rb +68 -49
- data/lib/rdf_context/n3parser.rb +2 -2
- data/lib/rdf_context/namespace.rb +1 -1
- data/lib/rdf_context/nokogiri_hacks.rb +7 -0
- data/lib/rdf_context/parser.rb +57 -13
- data/lib/rdf_context/rdfaparser.rb +200 -130
- data/lib/rdf_context/rdfxmlparser.rb +8 -8
- data/lib/rdf_context/serializer/recursive_serializer.rb +1 -1
- data/lib/rdf_context/serializer/turtle_serializer.rb +15 -15
- data/lib/rdf_context/serializer/xml_serializer.rb +8 -8
- data/lib/rdf_context/store/memory_store.rb +14 -14
- data/lib/rdf_context/store/sqlite3_store.rb +4 -4
- data/lib/rdf_context/uriref.rb +11 -4
- data/script/console +1 -3
- data/script/tc +44 -0
- data/spec/.gitignore +1 -0
- data/spec/aggregate_graph_spec.rb +1 -0
- data/spec/bnode_spec.rb +2 -1
- data/spec/conjunctive_graph_spec.rb +1 -0
- data/spec/cwm_spec.rb +1 -0
- data/spec/duration_spec.rb +1 -0
- data/spec/graph_spec.rb +27 -0
- data/spec/list_store_spec.rb +1 -0
- data/spec/literal_spec.rb +1 -0
- data/spec/matchers.rb +1 -1
- data/spec/memory_store_spec.rb +1 -0
- data/spec/n3parser_spec.rb +1 -0
- data/spec/namespaces_spec.rb +1 -0
- data/spec/parser_spec.rb +1 -0
- data/spec/rdf_helper.rb +4 -4
- data/spec/rdfa_helper.rb +24 -0
- data/spec/rdfa_parser_spec.rb +6 -36
- data/spec/rdfcore/.gitignore +1 -0
- data/spec/rdfxml_spec.rb +1 -0
- data/spec/sqlite3_store_spec.rb +1 -0
- data/spec/string_hacks_spec.rb +2 -0
- data/spec/swap_test/.gitignore +1 -0
- data/spec/triple_spec.rb +1 -0
- data/spec/turtle/.gitignore +1 -0
- data/spec/turtle_serializer_spec.rb +3 -2
- data/spec/turtle_spec.rb +1 -0
- data/spec/uriref_spec.rb +13 -12
- data/spec/xml_serializer_spec.rb +7 -6
- metadata +26 -61
- data/spec/html4-manifest.yml +0 -4937
- data/spec/html5-manifest.yml +0 -4937
- data/spec/rdfcore/Manifest.yml +0 -6242
- data/spec/swap_test/n3parser.yml +0 -773
- data/spec/swap_test/regression.yml +0 -902
- data/spec/turtle/manifest-bad.yml +0 -807
- data/spec/turtle/manifest.yml +0 -807
- data/spec/xhtml-manifest.yml +0 -3901
- data/spec/xhtml11-manifest.yml +0 -4405
@@ -83,7 +83,7 @@ module RdfContext
|
|
83
83
|
def extract_from_element(element)
|
84
84
|
b = element.attribute_with_ns("base", XML_NS.uri.to_s)
|
85
85
|
lang = element.attribute_with_ns("lang", XML_NS.uri.to_s)
|
86
|
-
self.base = URIRef.
|
86
|
+
self.base = URIRef.intern(b.to_s.rdf_unescape, self.base, :normalize => false) if b
|
87
87
|
self.language = lang if lang
|
88
88
|
self.uri_mappings.merge!(extract_mappings(element))
|
89
89
|
end
|
@@ -98,7 +98,7 @@ module RdfContext
|
|
98
98
|
element.namespaces.each do |attr_name,attr_value|
|
99
99
|
abbr, suffix = attr_name.to_s.split(":")
|
100
100
|
if abbr == "xmlns"
|
101
|
-
attr_value = URIRef.
|
101
|
+
attr_value = URIRef.intern(attr_value.rdf_unescape, self.base, :normalize => false) if attr_value.match(/^\#/)
|
102
102
|
mappings[suffix] = Namespace.new(attr_value, suffix)
|
103
103
|
@graph.bind(mappings[suffix])
|
104
104
|
end
|
@@ -113,7 +113,7 @@ module RdfContext
|
|
113
113
|
@li_counter += 1
|
114
114
|
predicate = Addressable::URI.parse(predicate.to_s)
|
115
115
|
predicate.fragment = "_#{@li_counter}"
|
116
|
-
predicate = URIRef.
|
116
|
+
predicate = URIRef.intern(predicate, :normalize => false)
|
117
117
|
end
|
118
118
|
|
119
119
|
# Set XML base. Ignore any fragment
|
@@ -215,7 +215,7 @@ module RdfContext
|
|
215
215
|
# If there is an attribute a in propertyAttr with a.URI == rdf:type
|
216
216
|
# then u:=uri(identifier:=resolve(a.string-value))
|
217
217
|
# and the following triple is added to the graph:
|
218
|
-
u = URIRef.
|
218
|
+
u = URIRef.intern(attr.value.rdf_unescape, ec.base, :normalize => false)
|
219
219
|
add_triple(attr, subject, RDF_TYPE, u)
|
220
220
|
elsif is_propertyAttr?(attr)
|
221
221
|
# Attributes not RDF_TYPE
|
@@ -404,7 +404,7 @@ module RdfContext
|
|
404
404
|
reify(id, child, subject, predicate, literal, child_ec) if id
|
405
405
|
else
|
406
406
|
if resourceAttr
|
407
|
-
resource = URIRef.
|
407
|
+
resource = URIRef.intern(resourceAttr.rdf_unescape, ec.base, :normalize => false)
|
408
408
|
elsif nodeID
|
409
409
|
resource = BNode.new(nodeID, @named_bnodes)
|
410
410
|
else
|
@@ -442,7 +442,7 @@ module RdfContext
|
|
442
442
|
# Reify subject, predicate, and object given the EvaluationContext (ec) and current XMl element (el)
|
443
443
|
def reify(id, el, subject, predicate, object, ec)
|
444
444
|
add_debug(el, "reify, id: #{id}")
|
445
|
-
rsubject = URIRef.
|
445
|
+
rsubject = URIRef.intern("#" + id, ec.base, :normalize => false)
|
446
446
|
add_triple(el, rsubject, RDF_NS.subject, subject)
|
447
447
|
add_triple(el, rsubject, RDF_NS.predicate, predicate)
|
448
448
|
add_triple(el, rsubject, RDF_NS.object, object)
|
@@ -478,7 +478,7 @@ module RdfContext
|
|
478
478
|
when about
|
479
479
|
about = about.value.rdf_unescape
|
480
480
|
add_debug(el, "parse_subject, about: '#{about}'")
|
481
|
-
URIRef.
|
481
|
+
URIRef.intern(about, ec.base, :normalize => false)
|
482
482
|
else
|
483
483
|
add_debug(el, "parse_subject, BNode")
|
484
484
|
BNode.new
|
@@ -490,7 +490,7 @@ module RdfContext
|
|
490
490
|
if NC_REGEXP.match(id)
|
491
491
|
# ID may only be specified once for the same URI
|
492
492
|
if base
|
493
|
-
uri = URIRef.
|
493
|
+
uri = URIRef.intern("##{id}", base, :normalize => false)
|
494
494
|
if @id_mapping[id] && @id_mapping[id] == uri
|
495
495
|
warn = "ID addtribute '#{id}' may only be defined once for the same URI"
|
496
496
|
add_debug(el, warn)
|
@@ -13,7 +13,7 @@ module RdfContext
|
|
13
13
|
# @option options [URIRef, String] :base (nil) Base URI of graph, used to shorting URI references
|
14
14
|
# @return [void]
|
15
15
|
def serialize(stream, options = {})
|
16
|
-
puts "\nserialize: #{@graph.inspect}" if
|
16
|
+
puts "\nserialize: #{@graph.inspect}" if ::RdfContext::debug?
|
17
17
|
reset
|
18
18
|
@stream = stream
|
19
19
|
@base = options[:base]
|
@@ -84,23 +84,23 @@ module RdfContext
|
|
84
84
|
# Checks if l is a valid RDF list, i.e. no nodes have other properties.
|
85
85
|
def is_valid_list(l)
|
86
86
|
props = @graph.properties(l)
|
87
|
-
#puts "is_valid_list: #{props.inspect}" if
|
87
|
+
#puts "is_valid_list: #{props.inspect}" if ::RdfContext::debug?
|
88
88
|
return false unless props.has_key?(RDF_NS.first.to_s) || l == RDF_NS.nil
|
89
89
|
while l && l != RDF_NS.nil do
|
90
|
-
#puts "is_valid_list(length): #{props.length}" if
|
90
|
+
#puts "is_valid_list(length): #{props.length}" if ::RdfContext::debug?
|
91
91
|
return false unless props.has_key?(RDF_NS.first.to_s) && props.has_key?(RDF_NS.rest.to_s)
|
92
92
|
n = props[RDF_NS.rest.to_s]
|
93
|
-
#puts "is_valid_list(n): #{n.inspect}" if
|
93
|
+
#puts "is_valid_list(n): #{n.inspect}" if ::RdfContext::debug?
|
94
94
|
return false unless n.is_a?(Array) && n.length == 1
|
95
95
|
l = n.first
|
96
96
|
props = @graph.properties(l)
|
97
97
|
end
|
98
|
-
#puts "is_valid_list: valid" if
|
98
|
+
#puts "is_valid_list: valid" if ::RdfContext::debug?
|
99
99
|
true
|
100
100
|
end
|
101
101
|
|
102
102
|
def do_list(l)
|
103
|
-
puts "do_list: #{l.inspect}" if
|
103
|
+
puts "do_list: #{l.inspect}" if ::RdfContext::debug?
|
104
104
|
position = SUBJECT
|
105
105
|
while l do
|
106
106
|
p = @graph.properties(l)
|
@@ -116,7 +116,7 @@ module RdfContext
|
|
116
116
|
|
117
117
|
def p_list(node, position)
|
118
118
|
return false if !is_valid_list(node)
|
119
|
-
#puts "p_list: #{node.inspect}, #{position}" if
|
119
|
+
#puts "p_list: #{node.inspect}, #{position}" if ::RdfContext::debug?
|
120
120
|
|
121
121
|
write(position == SUBJECT ? "(" : " (")
|
122
122
|
@depth += 2
|
@@ -134,7 +134,7 @@ module RdfContext
|
|
134
134
|
def p_squared(node, position)
|
135
135
|
return false unless p_squared?(node, position)
|
136
136
|
|
137
|
-
#puts "p_squared: #{node.inspect}, #{position}" if
|
137
|
+
#puts "p_squared: #{node.inspect}, #{position}" if ::RdfContext::debug?
|
138
138
|
subject_done(node)
|
139
139
|
write(position == SUBJECT ? '[' : ' [')
|
140
140
|
@depth += 2
|
@@ -146,18 +146,18 @@ module RdfContext
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def p_default(node, position)
|
149
|
-
#puts "p_default: #{node.inspect}, #{position}" if
|
149
|
+
#puts "p_default: #{node.inspect}, #{position}" if ::RdfContext::debug?
|
150
150
|
l = (position == SUBJECT ? "" : " ") + label(node)
|
151
151
|
write(l)
|
152
152
|
end
|
153
153
|
|
154
154
|
def path(node, position)
|
155
|
-
puts "path: #{node.inspect}, pos: #{position}, []: #{is_valid_list(node)}, p2?: #{p_squared?(node, position)}, rc: #{ref_count(node)}" if
|
155
|
+
puts "path: #{node.inspect}, pos: #{position}, []: #{is_valid_list(node)}, p2?: #{p_squared?(node, position)}, rc: #{ref_count(node)}" if ::RdfContext::debug?
|
156
156
|
raise RdfException, "Cannot serialize node '#{node}'" unless p_list(node, position) || p_squared(node, position) || p_default(node, position)
|
157
157
|
end
|
158
158
|
|
159
159
|
def verb(node)
|
160
|
-
puts "verb: #{node.inspect}" if
|
160
|
+
puts "verb: #{node.inspect}" if ::RdfContext::debug?
|
161
161
|
if node == RDF_TYPE
|
162
162
|
write(" a")
|
163
163
|
else
|
@@ -166,11 +166,11 @@ module RdfContext
|
|
166
166
|
end
|
167
167
|
|
168
168
|
def object_list(objects)
|
169
|
-
puts "object_list: #{objects.inspect}" if
|
169
|
+
puts "object_list: #{objects.inspect}" if ::RdfContext::debug?
|
170
170
|
return if objects.empty?
|
171
171
|
|
172
172
|
objects.each_with_index do |obj, i|
|
173
|
-
write(",\n#{indent(
|
173
|
+
write(",\n#{indent(4)}") if i > 0
|
174
174
|
path(obj, OBJECT)
|
175
175
|
end
|
176
176
|
end
|
@@ -178,7 +178,7 @@ module RdfContext
|
|
178
178
|
def predicate_list(subject)
|
179
179
|
properties = @graph.properties(subject)
|
180
180
|
prop_list = sort_properties(properties) - [RDF_NS.first.to_s, RDF_NS.rest.to_s]
|
181
|
-
puts "predicate_list: #{prop_list.inspect}" if
|
181
|
+
puts "predicate_list: #{prop_list.inspect}" if ::RdfContext::debug?
|
182
182
|
return if prop_list.empty?
|
183
183
|
|
184
184
|
prop_list.each_with_index do |prop, i|
|
@@ -212,7 +212,7 @@ module RdfContext
|
|
212
212
|
end
|
213
213
|
|
214
214
|
def statement(subject)
|
215
|
-
puts "statement: #{subject.inspect}, s2?: #{s_squared(subject)}" if
|
215
|
+
puts "statement: #{subject.inspect}, s2?: #{s_squared(subject)}" if ::RdfContext::debug?
|
216
216
|
subject_done(subject)
|
217
217
|
s_squared(subject) || s_default(subject)
|
218
218
|
end
|
@@ -34,7 +34,7 @@ module RdfContext
|
|
34
34
|
|
35
35
|
doc = Nokogiri::XML::Document.new
|
36
36
|
|
37
|
-
puts "\nserialize: graph namespaces: #{@graph.nsbinding.inspect}" if
|
37
|
+
puts "\nserialize: graph namespaces: #{@graph.nsbinding.inspect}" if ::RdfContext::debug?
|
38
38
|
|
39
39
|
preprocess
|
40
40
|
|
@@ -67,7 +67,7 @@ module RdfContext
|
|
67
67
|
# Add bindings for predicates not already having bindings
|
68
68
|
tmp_ns = "ns0"
|
69
69
|
required_namespaces.keys.each do |uri|
|
70
|
-
puts "create namespace definition for #{uri}" if
|
70
|
+
puts "create namespace definition for #{uri}" if ::RdfContext::debug?
|
71
71
|
add_namespace(Namespace.new(uri, tmp_ns))
|
72
72
|
tmp_ns = tmp_ns.succ
|
73
73
|
end
|
@@ -100,7 +100,7 @@ module RdfContext
|
|
100
100
|
subject_done(subject)
|
101
101
|
properties = @graph.properties(subject)
|
102
102
|
prop_list = sort_properties(properties)
|
103
|
-
puts "subject: #{subject.to_n3}, props: #{properties.inspect}" if
|
103
|
+
puts "subject: #{subject.to_n3}, props: #{properties.inspect}" if ::RdfContext::debug?
|
104
104
|
|
105
105
|
rdf_type, *rest = properties.fetch(RDF_TYPE.to_s, [])
|
106
106
|
if rdf_type.is_a?(URIRef)
|
@@ -133,7 +133,7 @@ module RdfContext
|
|
133
133
|
end
|
134
134
|
end
|
135
135
|
elsif @force_RDF_about.include?(subject)
|
136
|
-
puts "subject: #{subject.to_n3}, force about" if
|
136
|
+
puts "subject: #{subject.to_n3}, force about" if ::RdfContext::debug?
|
137
137
|
node = Nokogiri::XML::Element.new("rdf:Description", parent_node.document)
|
138
138
|
node["rdf:about"] = relativize(subject)
|
139
139
|
@force_RDF_about.delete(subject)
|
@@ -177,7 +177,7 @@ module RdfContext
|
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
180
|
-
puts "predicate: #{qname}, as_attr: #{as_attr}, object: #{object.inspect}, done: #{is_done?(object)}, sub: #{@subjects.include?(object)}" if
|
180
|
+
puts "predicate: #{qname}, as_attr: #{as_attr}, object: #{object.inspect}, done: #{is_done?(object)}, sub: #{@subjects.include?(object)}" if ::RdfContext::debug?
|
181
181
|
qname = "rdf:li" if qname.match(/rdf:_\d+/)
|
182
182
|
pred_node = Nokogiri::XML::Element.new(qname, node.document)
|
183
183
|
|
@@ -185,7 +185,7 @@ module RdfContext
|
|
185
185
|
# Literals or references to objects that aren't subjects, or that have already been serialized
|
186
186
|
|
187
187
|
args = object.xml_args
|
188
|
-
puts "predicate: args=#{args.inspect}" if
|
188
|
+
puts "predicate: args=#{args.inspect}" if ::RdfContext::debug?
|
189
189
|
attrs = args.pop
|
190
190
|
|
191
191
|
if as_attr
|
@@ -198,10 +198,10 @@ module RdfContext
|
|
198
198
|
attrs.each_pair do |a, av|
|
199
199
|
next if a == "xml:lang" && av == @lang # Lang already specified, don't repeat
|
200
200
|
av = relativize(object) if a == "#{RDF_NS.prefix}:resource"
|
201
|
-
puts " elt attr #{a}=#{av}" if
|
201
|
+
puts " elt attr #{a}=#{av}" if ::RdfContext::debug?
|
202
202
|
pred_node[a] = av.to_s
|
203
203
|
end
|
204
|
-
puts " elt #{'xmllit ' if object.is_a?(Literal) && object.xmlliteral?}content=#{args.first}" if
|
204
|
+
puts " elt #{'xmllit ' if object.is_a?(Literal) && object.xmlliteral?}content=#{args.first}" if ::RdfContext::debug? && !args.empty?
|
205
205
|
if object.is_a?(Literal) && object.xmlliteral?
|
206
206
|
pred_node.add_child(Nokogiri::XML::CharacterData.new(args.first, node.document))
|
207
207
|
elsif args.first
|
@@ -87,7 +87,7 @@ module RdfContext
|
|
87
87
|
oi = resource_to_int(triple.object) || gen_key(triple.object)
|
88
88
|
ci = resource_to_int(context) || gen_key(context)
|
89
89
|
|
90
|
-
puts "add: #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ci}=#{context ? context.identifier : 'none'}" if
|
90
|
+
puts "add: #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ci}=#{context ? context.identifier : 'none'}" if ::RdfContext::debug?
|
91
91
|
set_nested_index(@cspo, ci, si, pi, oi)
|
92
92
|
set_nested_index(@cpos, ci, pi, oi, si)
|
93
93
|
set_nested_index(@cosp, ci, oi, si, pi)
|
@@ -97,7 +97,7 @@ module RdfContext
|
|
97
97
|
set_nested_index(@pos, pi, oi, si, ci)
|
98
98
|
set_nested_index(@osp, oi, si, pi, ci)
|
99
99
|
end
|
100
|
-
#dump if
|
100
|
+
#dump if ::RdfContext::debug?
|
101
101
|
end
|
102
102
|
|
103
103
|
# Remove a triple from the context and store
|
@@ -155,7 +155,7 @@ module RdfContext
|
|
155
155
|
|
156
156
|
results = []
|
157
157
|
si, pi, oi = triple_to_int(triple)
|
158
|
-
puts "triples? #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ci}=#{context ? context.identifier : 'none'}" if
|
158
|
+
puts "triples? #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ci}=#{context ? context.identifier : 'none'}" if ::RdfContext::debug?
|
159
159
|
|
160
160
|
def result(v, si, pi, oi, ctx)
|
161
161
|
triple = int_to_triple(si, pi, oi)
|
@@ -164,22 +164,22 @@ module RdfContext
|
|
164
164
|
# keys are contexts
|
165
165
|
v.keys.each do |ci|
|
166
166
|
context = int_to_resource(ci)
|
167
|
-
puts "triples= #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ci}=#{context ? context.identifier : 'none'}" if
|
167
|
+
puts "triples= #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ci}=#{context ? context.identifier : 'none'}" if ::RdfContext::debug?
|
168
168
|
yield triple, context
|
169
169
|
end
|
170
170
|
else
|
171
|
-
puts "triples= #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ctx ? ctx.identifier : 'none'}" if
|
171
|
+
puts "triples= #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ctx ? ctx.identifier : 'none'}" if ::RdfContext::debug?
|
172
172
|
yield triple, ctx
|
173
173
|
end
|
174
174
|
else
|
175
|
-
puts "triples= #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ctx ? ctx.identifier : 'none'}" if
|
175
|
+
puts "triples= #{si}=#{triple.subject}, #{pi}=#{triple.predicate}, #{oi}=#{triple.object}, #{ctx ? ctx.identifier : 'none'}" if ::RdfContext::debug?
|
176
176
|
end
|
177
177
|
triple
|
178
178
|
end
|
179
179
|
|
180
180
|
if si # subject is given
|
181
181
|
if spo.has_key?(si)
|
182
|
-
#puts "spo[#{si}] = #{spo[si].inspect}" if
|
182
|
+
#puts "spo[#{si}] = #{spo[si].inspect}" if ::RdfContext::debug?
|
183
183
|
if pi # subject+predicate is given
|
184
184
|
if spo[si].has_key?(pi)
|
185
185
|
if oi # subject+predicate+object is given
|
@@ -194,13 +194,13 @@ module RdfContext
|
|
194
194
|
end
|
195
195
|
elsif triple.predicate.nil? # subject given, predicate unbound
|
196
196
|
spo[si].keys.each do |pi|
|
197
|
-
#puts "spo[#{si}][#{pi}] = #{spo[si][pi].inspect}" if
|
197
|
+
#puts "spo[#{si}][#{pi}] = #{spo[si][pi].inspect}" if ::RdfContext::debug?
|
198
198
|
if oi # object is given
|
199
199
|
results << result(spo[si][pi][oi], si, pi, oi, context, &block) if spo[si][pi].has_key?(oi)
|
200
200
|
else # object unbound
|
201
201
|
#puts "spo[#{si}][#{pi}] = #{spo[si][pi].inspect}"
|
202
202
|
spo[si][pi].each_pair do |oi, value|
|
203
|
-
#puts "spo[#{si}][#{pi}][#{oi}] = #{spo[si][pi][oi].inspect}" if
|
203
|
+
#puts "spo[#{si}][#{pi}][#{oi}] = #{spo[si][pi][oi].inspect}" if ::RdfContext::debug?
|
204
204
|
results << result(value, si, pi, oi, context, &block)
|
205
205
|
end
|
206
206
|
oi = nil
|
@@ -240,13 +240,13 @@ module RdfContext
|
|
240
240
|
elsif !triple.object.nil?
|
241
241
|
# Subject+predicate unspecified, object specified but not found, skip
|
242
242
|
else # subject+predicate+object unbound
|
243
|
-
#puts "spo = #{spo.inspect}" if
|
243
|
+
#puts "spo = #{spo.inspect}" if ::RdfContext::debug?
|
244
244
|
spo.keys.each do |si|
|
245
|
-
#puts "spo[#{si}] = #{spo[si].inspect}" if
|
245
|
+
#puts "spo[#{si}] = #{spo[si].inspect}" if ::RdfContext::debug?
|
246
246
|
spo[si].keys.each do |pi|
|
247
|
-
#puts "spo[#{si}][#{pi}] = #{spo[si][pi].inspect}" if
|
247
|
+
#puts "spo[#{si}][#{pi}] = #{spo[si][pi].inspect}" if ::RdfContext::debug?
|
248
248
|
spo[si][pi].each_pair do |oi, value|
|
249
|
-
#puts "spo[#{si}][#{pi}][#{oi}] = #{spo[si][pi][oi].inspect}" if
|
249
|
+
#puts "spo[#{si}][#{pi}][#{oi}] = #{spo[si][pi][oi].inspect}" if ::RdfContext::debug?
|
250
250
|
results << result(value, si, pi, oi, context, &block)
|
251
251
|
end
|
252
252
|
end
|
@@ -317,7 +317,7 @@ module RdfContext
|
|
317
317
|
ndx = ndx[key]
|
318
318
|
end
|
319
319
|
|
320
|
-
#puts("set_nested_index: #{index.inspect}, keys: #{keys.inspect}") if
|
320
|
+
#puts("set_nested_index: #{index.inspect}, keys: #{keys.inspect}") if ::RdfContext::debug?
|
321
321
|
end
|
322
322
|
|
323
323
|
# Remove context from the list of contexts in a nested index.
|
@@ -167,18 +167,18 @@ module RdfContext
|
|
167
167
|
#@statement_cache[qStr] ||= @db.prepare(qStr)
|
168
168
|
@statement_cache[qStr] ||= qStr
|
169
169
|
|
170
|
-
puts "executeSQL: '#{qStr}', '#{params.join("', '")}'" if
|
170
|
+
puts "executeSQL: '#{qStr}', '#{params.join("', '")}'" if ::RdfContext::debug?
|
171
171
|
if block_given?
|
172
172
|
@db.execute(@statement_cache[qStr], *params) do |row|
|
173
|
-
puts "executeSQL res: #{row.inspect}" if
|
173
|
+
puts "executeSQL res: #{row.inspect}" if ::RdfContext::debug?
|
174
174
|
yield(row)
|
175
175
|
end
|
176
176
|
else
|
177
|
-
puts "executeSQL no block given" if
|
177
|
+
puts "executeSQL no block given" if ::RdfContext::debug?
|
178
178
|
@db.execute(@statement_cache[qStr], *params)
|
179
179
|
end
|
180
180
|
rescue SQLite3::SQLException => e
|
181
|
-
puts "SQL Exception (ignored): #{e.message}" if
|
181
|
+
puts "SQL Exception (ignored): #{e.message}" if ::RdfContext::debug?
|
182
182
|
end
|
183
183
|
|
184
184
|
CREATE_ASSERTED_STATEMENTS_TABLE = %(
|
data/lib/rdf_context/uriref.rb
CHANGED
@@ -24,7 +24,7 @@ module RdfContext
|
|
24
24
|
if args.size == 1
|
25
25
|
uri = Addressable::URI.parse(args[0].to_s.rdf_unescape.rdf_escape)
|
26
26
|
else
|
27
|
-
uri = Addressable::URI.join(*args.map{|s| s.to_s.rdf_unescape.rdf_escape}.reverse)
|
27
|
+
uri = Addressable::URI.join(*args.compact.map{|s| s.to_s.rdf_unescape.rdf_escape}.reverse)
|
28
28
|
end
|
29
29
|
|
30
30
|
raise ParserException, "<" + uri.to_s + "> is a relative URI" if uri.relative?
|
@@ -33,18 +33,25 @@ module RdfContext
|
|
33
33
|
@@uri_hash ||= {}
|
34
34
|
@uri = @@uri_hash["#{uri}#{@normalize}"] ||= begin
|
35
35
|
# Special case if URI has no path, and the authority ends with a '#'
|
36
|
-
uri = Addressable::URI.parse($1) if @normalize && uri.to_s.match(/^(.*)\#$/)
|
36
|
+
#uri = Addressable::URI.parse($1) if @normalize && uri.to_s.match(/^(.*)\#$/)
|
37
37
|
|
38
|
-
|
38
|
+
#@normalize ? uri.normalize : uri
|
39
|
+
uri
|
39
40
|
end.freeze
|
40
41
|
end
|
41
42
|
|
43
|
+
# Internalized version of URIRef
|
44
|
+
def self.intern(*args)
|
45
|
+
@@uri_hash ||= {}
|
46
|
+
@@uri_hash[args.to_s] ||= URIRef.new(*args)
|
47
|
+
end
|
48
|
+
|
42
49
|
# Create a URI, either by appending a fragment, or using the input URI
|
43
50
|
# @param [#to_s] input
|
44
51
|
# @return [URIRef]
|
45
52
|
def + (input)
|
46
53
|
input_uri = Addressable::URI.parse(input.to_s)
|
47
|
-
return URIRef.
|
54
|
+
return URIRef.intern(input_uri, self.to_s)
|
48
55
|
end
|
49
56
|
|
50
57
|
# short_name of URI for creating QNames.
|
data/script/console
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
4
|
|
5
5
|
libs = " -r irb/completion"
|
6
|
-
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/rdf_context.rb'}"
|
6
|
+
libs << " -r #{File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib", "rdf_context.rb")}"
|
9
7
|
puts "Loading rdf_context gem"
|
10
8
|
exec "#{irb} #{libs} --simple-prompt"
|
data/script/tc
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby -s
|
2
|
+
require 'rubygems'
|
3
|
+
$:.unshift(File.join(File.expand_path(File.dirname(__FILE__)), "..", 'lib'))
|
4
|
+
require 'rdf_context'
|
5
|
+
require 'spec/rdfa_helper'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
def run_tc(tc)
|
9
|
+
puts "run #{tc.name}"
|
10
|
+
graph = RdfContext::RdfaParser.parse(tc.input, tc.informationResourceInput, :strict => $strict, :version => tc.version)
|
11
|
+
puts graph.serialize(:format => $format.to_sym, :base => tc.informationResourceInput) unless $quiet
|
12
|
+
end
|
13
|
+
|
14
|
+
$verbose = false
|
15
|
+
$format = :ntriples
|
16
|
+
$strict = false
|
17
|
+
suite = "xhtml"
|
18
|
+
opts = GetoptLong.new(
|
19
|
+
["--debug", GetoptLong::NO_ARGUMENT],
|
20
|
+
["--verbose", GetoptLong::NO_ARGUMENT],
|
21
|
+
["--quiet", GetoptLong::NO_ARGUMENT],
|
22
|
+
["--suite", GetoptLong::OPTIONAL_ARGUMENT],
|
23
|
+
["--strict", GetoptLong::NO_ARGUMENT],
|
24
|
+
["--format", GetoptLong::REQUIRED_ARGUMENT]
|
25
|
+
)
|
26
|
+
opts.each do |opt, arg|
|
27
|
+
case opt
|
28
|
+
when '--verbose' then $verbose = true
|
29
|
+
when '--quiet' then $quiet = true
|
30
|
+
when '--debug' then ::RdfContext::debug = true
|
31
|
+
when '--format' then $format = arg
|
32
|
+
when '--suite' then suite = arg
|
33
|
+
when '--strict' then $strict = true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
test_cases = RdfaHelper::TestCase.test_cases(suite)
|
38
|
+
|
39
|
+
puts test_cases.length
|
40
|
+
|
41
|
+
test_cases = test_cases.detect do |tc|
|
42
|
+
next unless ARGV.empty? || ARGV.any? {|n| tc.name.match(/#{n}/)}
|
43
|
+
run_tc(tc)
|
44
|
+
end
|