rdf_context 0.5.7 → 0.5.8.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|