rdf-rdfxml 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- data/{History.rdoc → History.markdown} +19 -15
- data/{README → README.markdown} +2 -2
- data/VERSION +1 -1
- data/lib/rdf/rdfxml/format.rb +13 -0
- data/lib/rdf/rdfxml/reader.rb +26 -24
- data/lib/rdf/rdfxml/writer.rb +41 -32
- metadata +31 -66
- data/.yardopts +0 -13
- data/README.md +0 -95
- data/Rakefile +0 -59
- data/etc/doap.nt +0 -47
- data/etc/doap.xml +0 -73
- data/example.rb +0 -37
- data/rdf-rdfxml.gemspec +0 -99
- data/script/console +0 -10
- data/script/parse +0 -55
- data/script/tc +0 -50
- data/script/yard-to-rubyforge +0 -2
- data/spec/.gitignore +0 -1
- data/spec/format_spec.rb +0 -28
- data/spec/graph_spec.rb +0 -59
- data/spec/literal_spec.rb +0 -244
- data/spec/matchers.rb +0 -79
- data/spec/rdf_test.rb +0 -69
- data/spec/reader_spec.rb +0 -394
- data/spec/spec.opts +0 -1
- data/spec/spec_helper.rb +0 -53
- data/spec/writer_spec.rb +0 -714
@@ -1,29 +1,33 @@
|
|
1
|
-
|
1
|
+
### 0.3.5
|
2
|
+
* RDF.rb 0.3.4 compatibility.
|
3
|
+
* Added format detection.
|
4
|
+
|
5
|
+
### 0.3.4
|
2
6
|
* Decode XML Entity declarations when parsing.
|
3
7
|
|
4
|
-
|
8
|
+
### 0.3.3.1
|
5
9
|
* JRuby/FFI compatibility updates.
|
6
10
|
* Simplify property value ordering in writer; this was causing unnecessary prefixes to be generated.
|
7
11
|
|
8
|
-
|
12
|
+
### 0.3.3
|
9
13
|
* Change licensing to UNLICENSE.
|
10
14
|
* Only generate prefix definitions for prefixes actually used within a serialization.
|
11
15
|
* Make sure that only valid QNames are generated in writer.
|
12
16
|
|
13
|
-
|
17
|
+
### 0.3.2.1
|
14
18
|
* Fix collection serialization bug
|
15
19
|
* Assert :xml as a format type (by creating RDF::RDFXML::XML as a sub-class of Format that uses RDFXML::Reader/Writer)
|
16
20
|
|
17
|
-
|
21
|
+
### 0.3.2
|
18
22
|
* Refactor rdfcore tests using Spira and open-uri-cached.
|
19
23
|
* Improve detection and reporting of attempts to write illegal values.
|
20
24
|
|
21
|
-
|
25
|
+
### 0.3.1
|
22
26
|
* In writer
|
23
27
|
* fix bug where a serialized subject is output again, when it appears in a collection.
|
24
28
|
* Fix subject ordering.
|
25
29
|
|
26
|
-
|
30
|
+
### 0.3.0
|
27
31
|
* RDF.rb 0.3.0 compatibility updates
|
28
32
|
* Remove literal_normalization and qname_hacks, add back uri_hacks (until 0.3.0)
|
29
33
|
* Use nil for default namespace
|
@@ -44,15 +48,15 @@
|
|
44
48
|
* Add all in-scope namespaces, not just those that seem to be used.
|
45
49
|
* RSpec 2 compatibility
|
46
50
|
|
47
|
-
|
51
|
+
### 0.2.3
|
48
52
|
* Fixed QName generation in Writer based on RDF/XML Processing recommendations
|
49
53
|
|
50
|
-
|
54
|
+
### 0.2.2.1
|
51
55
|
* Ruby 1.9.2 support.
|
52
56
|
* Added script/tc to run test cases
|
53
57
|
* Mark failing XMLLiteral tests as pending
|
54
58
|
|
55
|
-
|
59
|
+
### 0.2.2
|
56
60
|
* Fix bug creating datatyped literal where datatype is a string, not an RDF::URI
|
57
61
|
* Added more XMLLiteral tests (fail, until full canonicalization working)
|
58
62
|
* Added RDF_Reader and RDF_Writer behavior expectations
|
@@ -65,18 +69,18 @@
|
|
65
69
|
* Handle XMLLiteral when value is a Nokogiri node set.
|
66
70
|
* Ensure URIs are properly RDF Escaped (patch to RDF::NTriples::Writer#format_uri)
|
67
71
|
|
68
|
-
|
72
|
+
### 0.2.1
|
69
73
|
* Update for RDF 0.2.1
|
70
74
|
* Writer bug fixes:
|
71
75
|
* RDF::Node#identifier => RDF::Node#id
|
72
76
|
* Vocabulary.new(uri) => Vocabulary(uri)
|
73
77
|
|
74
|
-
|
78
|
+
### 0.2.0
|
75
79
|
* Updates for RDF 0.2.0
|
76
80
|
* Use URI#intern instead of URI#new
|
77
81
|
* Change use of Graph#predicates and Graph#objects to use as enumerables
|
78
82
|
|
79
|
-
|
83
|
+
### 0.0.3
|
80
84
|
* Added patches for the following:
|
81
85
|
* RDF::Graph#properties
|
82
86
|
* RDF::Graph#seq (Output rdf:Seq elements in order)
|
@@ -96,12 +100,12 @@
|
|
96
100
|
* should create <http://foo/bar> from <http://foo/bar#> and ''
|
97
101
|
* Writer test needs Turtle reader
|
98
102
|
|
99
|
-
|
103
|
+
### 0.0.2
|
100
104
|
* Added specs from RdfContext
|
101
105
|
* Added array_hacks, nokogiri_hacks, and rdf_escape
|
102
106
|
* Fixed most bugs that are not related to the underlying framework.
|
103
107
|
* Specific failing testcases for rdf-isomorphic, RDF::Literaland others need to be constructed and added as issues against those gems.
|
104
108
|
* Removed interal graph in Reader and implement each_triple & each_statement to perform parsing
|
105
109
|
|
106
|
-
|
110
|
+
### 0.0.1
|
107
111
|
* First port from RdfContext version 0.5.4
|
data/{README → README.markdown}
RENAMED
@@ -23,11 +23,11 @@ Instantiate a parser and parse source, specifying type and base-URL
|
|
23
23
|
end
|
24
24
|
|
25
25
|
## Dependencies
|
26
|
-
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.3.
|
26
|
+
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.3.4)
|
27
27
|
* [Nokogiri](http://rubygems.org/gems/nokogiri) (>= 1.4.4)
|
28
28
|
|
29
29
|
## Documentation
|
30
|
-
Full documentation available on [RubyForge](http://
|
30
|
+
Full documentation available on [RubyForge](http://rubydoc.info/github/gkellogg/rdf-rdfxml/master/frames)
|
31
31
|
|
32
32
|
### Principle Classes
|
33
33
|
* {RDF::RDFXML}
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.5
|
data/lib/rdf/rdfxml/format.rb
CHANGED
@@ -26,6 +26,19 @@ module RDF::RDFXML
|
|
26
26
|
|
27
27
|
reader { RDF::RDFXML::Reader }
|
28
28
|
writer { RDF::RDFXML::Writer }
|
29
|
+
|
30
|
+
##
|
31
|
+
# Sample detection to see if it matches RDF/XML (not Microdata or RDFa)
|
32
|
+
#
|
33
|
+
# Use a text sample to detect the format of an input file. Sub-classes implement
|
34
|
+
# a matcher sufficient to detect probably format matches, including disambiguating
|
35
|
+
# between other similar formats.
|
36
|
+
#
|
37
|
+
# @param [String] sample Beginning several bytes (~ 1K) of input.
|
38
|
+
# @return [Boolean]
|
39
|
+
def self.detect(sample)
|
40
|
+
sample.match(/<(\w+:)?(RDF)/)
|
41
|
+
end
|
29
42
|
end
|
30
43
|
|
31
44
|
# Aliases for this format
|
data/lib/rdf/rdfxml/reader.rb
CHANGED
@@ -137,7 +137,6 @@ module RDF::RDFXML
|
|
137
137
|
else
|
138
138
|
Nokogiri::XML.parse(input, @base_uri.to_s) do |config|
|
139
139
|
config.noent
|
140
|
-
config.strict if options[:validate]
|
141
140
|
end
|
142
141
|
end
|
143
142
|
|
@@ -229,9 +228,12 @@ module RDF::RDFXML
|
|
229
228
|
|
230
229
|
# Add debug event to debug array, if specified
|
231
230
|
#
|
232
|
-
# @param [XML
|
231
|
+
# @param [Nokogiri::XML::Node, #to_s] node:: XML Node or string for showing context
|
233
232
|
# @param [String] message::
|
234
|
-
|
233
|
+
# @yieldreturn [String] appended to message, to allow for lazy-evaulation of message
|
234
|
+
def add_debug(node, message = "")
|
235
|
+
return unless ::RDF::RDFXML.debug? || @debug
|
236
|
+
message = message + yield if block_given?
|
235
237
|
puts "#{node_path(node)}: #{message}" if ::RDF::RDFXML::debug?
|
236
238
|
@debug << "#{node_path(node)}: #{message}" if @debug.is_a?(Array)
|
237
239
|
end
|
@@ -246,7 +248,7 @@ module RDF::RDFXML
|
|
246
248
|
# @raise [RDF::ReaderError]:: Checks parameter types and raises if they are incorrect if validating.
|
247
249
|
def add_triple(node, subject, predicate, object)
|
248
250
|
statement = RDF::Statement.new(subject, predicate, object)
|
249
|
-
add_debug(node
|
251
|
+
add_debug(node) {"statement: #{statement}"}
|
250
252
|
@callback.call(statement)
|
251
253
|
end
|
252
254
|
|
@@ -260,9 +262,9 @@ module RDF::RDFXML
|
|
260
262
|
# subject
|
261
263
|
subject = ec.subject || parse_subject(el, ec)
|
262
264
|
|
263
|
-
add_debug(el
|
264
|
-
add_debug(el
|
265
|
-
add_debug(el
|
265
|
+
add_debug(el) {"nodeElement, ec: #{ec.inspect}"}
|
266
|
+
add_debug(el) {"nodeElement, el: #{el.uri}"}
|
267
|
+
add_debug(el) {"nodeElement, subject: #{subject.nil? ? 'nil' : subject.to_s}"}
|
266
268
|
|
267
269
|
unless el.uri.to_s == RDF.Description.to_s
|
268
270
|
add_triple(el, subject, RDF.type, el.uri)
|
@@ -270,7 +272,7 @@ module RDF::RDFXML
|
|
270
272
|
|
271
273
|
# produce triples for attributes
|
272
274
|
el.attribute_nodes.each do |attr|
|
273
|
-
add_debug(el
|
275
|
+
add_debug(el) {"propertyAttr: #{attr.uri}='#{attr.value}'"}
|
274
276
|
if attr.uri.to_s == RDF.type.to_s
|
275
277
|
# If there is an attribute a in propertyAttr with a.URI == rdf:type
|
276
278
|
# then u:=uri(identifier:=resolve(a.string-value))
|
@@ -293,16 +295,16 @@ module RDF::RDFXML
|
|
293
295
|
prefix(prefix, value)
|
294
296
|
end
|
295
297
|
predicate = child.uri
|
296
|
-
add_debug(child
|
298
|
+
add_debug(child) {"propertyElt, predicate: #{predicate}"}
|
297
299
|
propertyElementURI_check(child)
|
298
300
|
|
299
301
|
# Determine the content type of this property element
|
300
302
|
text_nodes = child.children.select {|e| e.text? && !e.blank?}
|
301
303
|
element_nodes = child.children.select {|c| c.element? }
|
302
|
-
add_debug(child
|
304
|
+
add_debug(child) {"#{text_nodes.length} text nodes, #{element_nodes.length} element nodes"}
|
303
305
|
if element_nodes.length > 1
|
304
306
|
element_nodes.each do |node|
|
305
|
-
add_debug(child
|
307
|
+
add_debug(child) {" node: #{node.to_s}"}
|
306
308
|
end
|
307
309
|
end
|
308
310
|
|
@@ -326,7 +328,7 @@ module RDF::RDFXML
|
|
326
328
|
# RDF/XML documents specified in [RDF-MS] to remain valid;
|
327
329
|
# new documents SHOULD NOT use these unqualified attributes and applications
|
328
330
|
# MAY choose to warn when the unqualified form is seen in a document.
|
329
|
-
add_debug(el
|
331
|
+
add_debug(el) {"Unqualified attribute '#{attr}'"}
|
330
332
|
#attrs[attr.to_s] = attr.value unless attr.to_s.match?(/^xml/)
|
331
333
|
elsif attr.namespace.href == RDF::XML.to_s
|
332
334
|
# No production. Lang and base elements already extracted
|
@@ -354,12 +356,12 @@ module RDF::RDFXML
|
|
354
356
|
resourceAttr = RDF::NTriples.unescape(resourceAttr) if resourceAttr
|
355
357
|
nodeID = nodeID_check(el, RDF::NTriples.unescape(nodeID)) if nodeID
|
356
358
|
|
357
|
-
add_debug(child
|
358
|
-
add_debug(child
|
359
|
-
add_debug(child
|
360
|
-
add_debug(child
|
361
|
-
add_debug(child
|
362
|
-
add_debug(child
|
359
|
+
add_debug(child) {"attrs: #{attrs.inspect}"}
|
360
|
+
add_debug(child) {"datatype: #{datatype}"} if datatype
|
361
|
+
add_debug(child) {"parseType: #{parseType}"} if parseType
|
362
|
+
add_debug(child) {"resource: #{resourceAttr}"} if resourceAttr
|
363
|
+
add_debug(child) {"nodeID: #{nodeID}"} if nodeID
|
364
|
+
add_debug(child) {"id: #{id}"} if id
|
363
365
|
|
364
366
|
if attrs.empty? && datatype.nil? && parseType.nil? && element_nodes.length == 1
|
365
367
|
# Production resourcePropertyElt
|
@@ -368,7 +370,7 @@ module RDF::RDFXML
|
|
368
370
|
prefix(prefix, value)
|
369
371
|
end
|
370
372
|
new_node_element = element_nodes.first
|
371
|
-
add_debug(child
|
373
|
+
add_debug(child) {"resourcePropertyElt: #{node_path(new_node_element)}"}
|
372
374
|
new_subject = nodeElement(new_node_element, new_ec)
|
373
375
|
add_triple(child, subject, predicate, new_subject)
|
374
376
|
elsif attrs.empty? && parseType.nil? && element_nodes.length == 0 && text_nodes.length > 0
|
@@ -487,7 +489,7 @@ module RDF::RDFXML
|
|
487
489
|
|
488
490
|
# produce triples for attributes
|
489
491
|
attrs.each_pair do |attr, val|
|
490
|
-
add_debug(el
|
492
|
+
add_debug(el) {"attr: #{attr.name}='#{val}'"}
|
491
493
|
|
492
494
|
if attr.uri.to_s == RDF.type.to_s
|
493
495
|
add_triple(child, resource, RDF.type, val)
|
@@ -542,16 +544,16 @@ module RDF::RDFXML
|
|
542
544
|
|
543
545
|
case
|
544
546
|
when id
|
545
|
-
add_debug(el
|
547
|
+
add_debug(el) {"parse_subject, id: #{RDF::NTriples.unescape(id.value).inspect}"}
|
546
548
|
id_check(el, RDF::NTriples.unescape(id.value), ec.base) # Returns URI
|
547
549
|
when nodeID
|
548
550
|
# The value of rdf:nodeID must match the XML Name production
|
549
551
|
nodeID = nodeID_check(el, RDF::NTriples.unescape(nodeID.value))
|
550
|
-
add_debug(el
|
552
|
+
add_debug(el) {"parse_subject, nodeID: #{nodeID.inspect}"}
|
551
553
|
bnode(nodeID)
|
552
554
|
when about
|
553
555
|
about = RDF::NTriples.unescape(about.value)
|
554
|
-
add_debug(el
|
556
|
+
add_debug(el) {"parse_subject, about: #{about.inspect}"}
|
555
557
|
ec.base.join(about)
|
556
558
|
else
|
557
559
|
add_debug(el, "parse_subject, BNode")
|
@@ -627,7 +629,7 @@ module RDF::RDFXML
|
|
627
629
|
def old_property_check(el)
|
628
630
|
el.attribute_nodes.each do |attr|
|
629
631
|
if OLD_TERMS.include?(attr.uri.to_s)
|
630
|
-
add_debug(el
|
632
|
+
add_debug(el) {"Obsolete attribute '#{attr.uri}'"}
|
631
633
|
raise RDF::ReaderError.new("Obsolete attribute '#{attr.uri}'") if validate?
|
632
634
|
end
|
633
635
|
end
|
data/lib/rdf/rdfxml/writer.rb
CHANGED
@@ -138,23 +138,23 @@ module RDF::RDFXML
|
|
138
138
|
|
139
139
|
doc = Nokogiri::XML::Document.new
|
140
140
|
|
141
|
-
add_debug "\nserialize: graph of size #{@graph.size}"
|
142
|
-
add_debug "options: #{@options.inspect}"
|
141
|
+
add_debug {"\nserialize: graph of size #{@graph.size}"}
|
142
|
+
add_debug {"options: #{@options.inspect}"}
|
143
143
|
|
144
144
|
preprocess
|
145
145
|
|
146
146
|
prefix(:rdf, RDF.to_uri)
|
147
|
-
prefix(:xml, RDF::XML) if
|
147
|
+
prefix(:xml, RDF::XML) if base_uri || @lang
|
148
148
|
|
149
|
-
add_debug "\nserialize: graph namespaces: #{prefixes.inspect}"
|
149
|
+
add_debug {"\nserialize: graph namespaces: #{prefixes.inspect}"}
|
150
150
|
|
151
151
|
doc.root = Nokogiri::XML::Element.new("rdf:RDF", doc)
|
152
152
|
doc.root["xml:lang"] = @lang if @lang
|
153
|
-
doc.root["xml:base"] =
|
153
|
+
doc.root["xml:base"] = base_uri if base_uri
|
154
154
|
|
155
155
|
# Add statements for each subject
|
156
156
|
order_subjects.each do |subject|
|
157
|
-
#add_debug "subj: #{subject.inspect}"
|
157
|
+
#add_debug "{subj: #{subject.inspect}"}
|
158
158
|
subject(subject, doc.root)
|
159
159
|
end
|
160
160
|
|
@@ -166,7 +166,7 @@ module RDF::RDFXML
|
|
166
166
|
end
|
167
167
|
end
|
168
168
|
|
169
|
-
add_debug "doc:\n #{doc.to_xml(:encoding => "UTF-8", :indent => 2)}"
|
169
|
+
add_debug {"doc:\n #{doc.to_xml(:encoding => "UTF-8", :indent => 2)}"}
|
170
170
|
doc.write_xml_to(@output, :encoding => "UTF-8", :indent => 2)
|
171
171
|
end
|
172
172
|
|
@@ -178,22 +178,22 @@ module RDF::RDFXML
|
|
178
178
|
def get_qname(resource, options = {})
|
179
179
|
case resource
|
180
180
|
when RDF::Node
|
181
|
-
add_debug "qname(#{resource.inspect}): #{resource}"
|
181
|
+
add_debug {"qname(#{resource.inspect}): #{resource}"}
|
182
182
|
return resource.to_s
|
183
183
|
when RDF::URI
|
184
184
|
uri = resource.to_s
|
185
185
|
else
|
186
|
-
add_debug "qname(#{resource.inspect}): nil"
|
186
|
+
add_debug {"qname(#{resource.inspect}): nil"}
|
187
187
|
return nil
|
188
188
|
end
|
189
189
|
|
190
190
|
qname = case
|
191
191
|
when options[:with_default] && prefix(nil) && uri.index(prefix(nil)) == 0
|
192
192
|
# Don't cache
|
193
|
-
add_debug "qname(#{resource.inspect}): #{uri.sub(prefix(nil), '').inspect} (default)"
|
193
|
+
add_debug {"qname(#{resource.inspect}): #{uri.sub(prefix(nil), '').inspect} (default)"}
|
194
194
|
return uri.sub(prefix(nil), '')
|
195
195
|
when @uri_to_qname.has_key?(uri)
|
196
|
-
add_debug "qname(#{resource.inspect}): #{@uri_to_qname[uri].inspect} (cached)"
|
196
|
+
add_debug {"qname(#{resource.inspect}): #{@uri_to_qname[uri].inspect} (cached)"}
|
197
197
|
return @uri_to_qname[uri]
|
198
198
|
when u = @uri_to_prefix.keys.detect {|u| uri.index(u.to_s) == 0 && NC_REGEXP.match(uri[u.to_s.length..-1])}
|
199
199
|
# Use a defined prefix
|
@@ -225,19 +225,19 @@ module RDF::RDFXML
|
|
225
225
|
"#{@gen_prefix}:#{suffix}"
|
226
226
|
end
|
227
227
|
|
228
|
-
add_debug "qname(#{resource.inspect}): #{qname.inspect}"
|
228
|
+
add_debug {"qname(#{resource.inspect}): #{qname.inspect}"}
|
229
229
|
@uri_to_qname[uri] = qname
|
230
230
|
rescue Addressable::URI::InvalidURIError => e
|
231
231
|
raise RDF::WriterError, "Invalid URI #{uri.inspect}: #{e.message}"
|
232
232
|
end
|
233
233
|
|
234
234
|
protected
|
235
|
-
# If
|
235
|
+
# If base_uri is defined, use it to try to make uri relative
|
236
236
|
# @param [#to_s] uri
|
237
237
|
# @return [String]
|
238
238
|
def relativize(uri)
|
239
239
|
uri = uri.to_s
|
240
|
-
|
240
|
+
base_uri ? uri.sub(base_uri.to_s, "") : uri
|
241
241
|
end
|
242
242
|
|
243
243
|
# Defines rdf:type of subjects to be emitted at the beginning of the graph. Defaults to none
|
@@ -259,7 +259,7 @@ module RDF::RDFXML
|
|
259
259
|
|
260
260
|
top_classes.each do |class_uri|
|
261
261
|
graph.query(:predicate => RDF.type, :object => class_uri).map {|st| st.subject}.sort.uniq.each do |subject|
|
262
|
-
#add_debug "order_subjects: #{subject.inspect}"
|
262
|
+
#add_debug "{order_subjects: #{subject.inspect}"}
|
263
263
|
subjects << subject
|
264
264
|
seen[subject] = @top_levels[subject] = true
|
265
265
|
end
|
@@ -285,7 +285,7 @@ module RDF::RDFXML
|
|
285
285
|
@options[:prefixes] = {} # Will define actual used when matched
|
286
286
|
|
287
287
|
if default_namespace
|
288
|
-
add_debug
|
288
|
+
add_debug {"preprocess: default_namespace: #{default_namespace}"}
|
289
289
|
prefix(nil, default_namespace)
|
290
290
|
end
|
291
291
|
|
@@ -296,7 +296,7 @@ module RDF::RDFXML
|
|
296
296
|
# prefixes.
|
297
297
|
# @param [Statement] statement
|
298
298
|
def preprocess_statement(statement)
|
299
|
-
#add_debug "preprocess: #{statement.inspect}"
|
299
|
+
#add_debug {"preprocess: #{statement.inspect}"}
|
300
300
|
references = ref_count(statement.object) + 1
|
301
301
|
@references[statement.object] = references
|
302
302
|
@subjects[statement.subject] = true
|
@@ -328,7 +328,7 @@ module RDF::RDFXML
|
|
328
328
|
if !is_done?(subject)
|
329
329
|
subject_done(subject)
|
330
330
|
properties = @graph.properties(subject)
|
331
|
-
add_debug "subject: #{subject.inspect}, props: #{properties.inspect}"
|
331
|
+
add_debug {"subject: #{subject.inspect}, props: #{properties.inspect}"}
|
332
332
|
|
333
333
|
@graph.query(:subject => subject).each do |st|
|
334
334
|
raise RDF::WriterError, "Illegal use of predicate #{st.predicate.inspect}, not supported in RDF/XML" unless st.predicate.uri?
|
@@ -345,7 +345,7 @@ module RDF::RDFXML
|
|
345
345
|
properties[RDF.type.to_s] = [rest].flatten.compact
|
346
346
|
end
|
347
347
|
prop_list = order_properties(properties)
|
348
|
-
add_debug "=> property order: #{prop_list.to_sentence}"
|
348
|
+
add_debug {"=> property order: #{prop_list.to_sentence}"}
|
349
349
|
|
350
350
|
if qname
|
351
351
|
rdf_type = nil
|
@@ -381,7 +381,7 @@ module RDF::RDFXML
|
|
381
381
|
end
|
382
382
|
end
|
383
383
|
elsif @force_RDF_about.include?(subject)
|
384
|
-
add_debug "subject: #{subject.inspect}, force about"
|
384
|
+
add_debug {"subject: #{subject.inspect}, force about"}
|
385
385
|
node = Nokogiri::XML::Element.new("rdf:Description", parent_node.document)
|
386
386
|
if subject.is_a?(RDF::Node)
|
387
387
|
node["rdf:nodeID"] = subject.id
|
@@ -403,7 +403,13 @@ module RDF::RDFXML
|
|
403
403
|
qname = get_qname(prop, :with_default => !as_attr)
|
404
404
|
raise RDF::WriterError, "No qname generated for <#{prop}>" unless qname
|
405
405
|
|
406
|
-
add_debug
|
406
|
+
add_debug do
|
407
|
+
"predicate: #{qname}, " +
|
408
|
+
"as_attr: #{as_attr}, " +
|
409
|
+
"object: #{object.inspect}, " +
|
410
|
+
"done: #{is_done?(object)}, " +
|
411
|
+
"subject: #{@subjects.include?(object)}"
|
412
|
+
end
|
407
413
|
#qname = "rdf:li" if qname.match(/rdf:_\d+/)
|
408
414
|
pred_node = Nokogiri::XML::Element.new(qname, node.document)
|
409
415
|
|
@@ -416,7 +422,7 @@ module RDF::RDFXML
|
|
416
422
|
|
417
423
|
# Check to see if it can be serialized as a collection
|
418
424
|
if conformant_list
|
419
|
-
add_debug
|
425
|
+
add_debug {"=> as collection: [#{col.map(&:to_s).join(", ")}]"}
|
420
426
|
# Serialize list as parseType="Collection"
|
421
427
|
pred_node.add_child(Nokogiri::XML::Comment.new(node.document, "Serialization for #{object}")) if RDF::RDFXML::debug?
|
422
428
|
pred_node["rdf:parseType"] = "Collection"
|
@@ -426,7 +432,7 @@ module RDF::RDFXML
|
|
426
432
|
item = o_props[RDF.first.to_s].first
|
427
433
|
object = o_props[RDF.rest.to_s].first
|
428
434
|
o_props = @graph.properties(object)
|
429
|
-
add_debug
|
435
|
+
add_debug {"=> li first: #{item}, rest: #{object}"}
|
430
436
|
@force_RDF_about[item] = true
|
431
437
|
subject(item, pred_node)
|
432
438
|
end
|
@@ -435,16 +441,16 @@ module RDF::RDFXML
|
|
435
441
|
pred_node.unlink
|
436
442
|
pred_node = nil
|
437
443
|
node[qname] = object.is_a?(RDF::URI) ? relativize(object) : object.value
|
438
|
-
add_debug
|
444
|
+
add_debug {"=> as attribute: node[#{qname}]=#{node[qname]}, #{object.class}"}
|
439
445
|
elsif object.literal?
|
440
446
|
# Serialize as element
|
441
|
-
add_debug
|
447
|
+
add_debug {"predicate as element: #{attrs.inspect}"}
|
442
448
|
attrs.each_pair do |a, av|
|
443
449
|
next if a.to_s == "xml:lang" && av.to_s == @lang # Lang already specified, don't repeat
|
444
|
-
add_debug "=> elt attr #{a}=#{av}"
|
450
|
+
add_debug {"=> elt attr #{a}=#{av}"}
|
445
451
|
pred_node[a] = av.to_s
|
446
452
|
end
|
447
|
-
add_debug "=> elt #{'xmllit ' if object.literal? && object.datatype == RDF.XMLLiteral}content=#{args.first}" if !args.empty?
|
453
|
+
add_debug {"=> elt #{'xmllit ' if object.literal? && object.datatype == RDF.XMLLiteral}content=#{args.first}"} if !args.empty?
|
448
454
|
if object.datatype == RDF.XMLLiteral
|
449
455
|
pred_node.inner_html = args.first.to_s
|
450
456
|
elsif args.first
|
@@ -468,7 +474,7 @@ module RDF::RDFXML
|
|
468
474
|
|
469
475
|
# Mark a subject as done.
|
470
476
|
def subject_done(subject)
|
471
|
-
add_debug
|
477
|
+
add_debug {"subject_done: #{subject}"}
|
472
478
|
@serialized[subject] = true
|
473
479
|
end
|
474
480
|
|
@@ -478,7 +484,7 @@ module RDF::RDFXML
|
|
478
484
|
end
|
479
485
|
|
480
486
|
def is_done?(subject)
|
481
|
-
#add_debug
|
487
|
+
#add_debug {"is_done?(#{subject}): #{@serialized.include?(subject)}"}
|
482
488
|
@serialized.include?(subject)
|
483
489
|
end
|
484
490
|
|
@@ -544,9 +550,12 @@ module RDF::RDFXML
|
|
544
550
|
|
545
551
|
# Add debug event to debug array, if specified
|
546
552
|
#
|
547
|
-
# @param [String] message
|
548
|
-
|
549
|
-
|
553
|
+
# @param [String] message
|
554
|
+
# @yieldreturn [String] appended to message, to allow for lazy-evaulation of message
|
555
|
+
def add_debug(message = "")
|
556
|
+
return unless ::RDF::RDFXML.debug? || @debug
|
557
|
+
message = message + yield if block_given?
|
558
|
+
msg = "#{' ' * @depth}#{message}"
|
550
559
|
STDERR.puts msg if ::RDF::RDFXML.debug?
|
551
560
|
@debug << msg if @debug.is_a?(Array)
|
552
561
|
end
|