rdf-rdfxml 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/rdf/rdfxml/patches/nokogiri_hacks.rb +0 -8
- data/lib/rdf/rdfxml/reader/nokogiri.rb +15 -0
- data/lib/rdf/rdfxml/reader/rexml.rb +77 -15
- data/lib/rdf/rdfxml/reader.rb +10 -10
- data/lib/rdf/rdfxml/writer.rb +0 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3ada350c5677d2a143dcbd5af7e789f22786b11
|
4
|
+
data.tar.gz: 5e6a3a327cd63768c241c0f8c576d66846b83d1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f467b070afe52055efc33650615d87af8c73212416c2ec0525833b1516f1d32d40453471aa26d597cde600530cd49e3862c3b2088ce54b63eb62714819eb59e1
|
7
|
+
data.tar.gz: ebfa2248b95722a2702c0b0c2742ec93be999c9846263dd336dadefb10596ac3cd1d57ff2d72b4854cc74820f8e7ea871f538b440791e79b5132fd0b3a161d85
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.3
|
@@ -5,14 +5,6 @@ class Nokogiri::XML::Node
|
|
5
5
|
ns = self.namespace ? self.namespace.href : RDF::XML.to_s
|
6
6
|
RDF::URI.intern(ns + self.node_name)
|
7
7
|
end
|
8
|
-
|
9
|
-
def display_path
|
10
|
-
@display_path ||= case self
|
11
|
-
when Nokogiri::XML::Document then ""
|
12
|
-
when Nokogiri::XML::Element then parent ? "#{parent.display_path}/#{name}" : name
|
13
|
-
when Nokogiri::XML::Attr then "#{parent && parent.display_path}@#{name}"
|
14
|
-
end
|
15
|
-
end
|
16
8
|
|
17
9
|
alias_method :attribute_with_ns_without_ffi_null, :attribute_with_ns
|
18
10
|
##
|
@@ -23,6 +23,15 @@ module RDF::RDFXML
|
|
23
23
|
@parent = parent
|
24
24
|
end
|
25
25
|
|
26
|
+
# Create a new element child of an existing node
|
27
|
+
def create_node(name, children)
|
28
|
+
native = ::Nokogiri::XML::Element.new(name, @node)
|
29
|
+
children.each do |c|
|
30
|
+
native.add_child(c.node)
|
31
|
+
end
|
32
|
+
NodeProxy.new(native, self)
|
33
|
+
end
|
34
|
+
|
26
35
|
##
|
27
36
|
# Element language
|
28
37
|
#
|
@@ -124,6 +133,10 @@ module RDF::RDFXML
|
|
124
133
|
end
|
125
134
|
end
|
126
135
|
|
136
|
+
def at_xpath(*args)
|
137
|
+
xpath(*args).first
|
138
|
+
end
|
139
|
+
|
127
140
|
# For jRuby, there is a bug that prevents the namespace from being set on an element
|
128
141
|
if RUBY_PLATFORM == "java"
|
129
142
|
def add_namespace(prefix, href)
|
@@ -151,6 +164,8 @@ module RDF::RDFXML
|
|
151
164
|
RDF::URI.intern(ns + self.node_name)
|
152
165
|
end
|
153
166
|
|
167
|
+
def to_s; @node.to_s; end
|
168
|
+
|
154
169
|
##
|
155
170
|
# Proxy for everything else to @node
|
156
171
|
def method_missing(method, *args)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'htmlentities'
|
2
|
+
|
1
3
|
module RDF::RDFXML
|
2
4
|
class Reader < RDF::Reader
|
3
5
|
##
|
@@ -13,6 +15,11 @@ module RDF::RDFXML
|
|
13
15
|
:rexml
|
14
16
|
end
|
15
17
|
|
18
|
+
# For Attribute namespaces
|
19
|
+
Namespace = Struct.new(:href, :prefix) do
|
20
|
+
def to_s; href; end
|
21
|
+
end
|
22
|
+
|
16
23
|
# Proxy class to implement uniform element accessors
|
17
24
|
class NodeProxy
|
18
25
|
attr_reader :node
|
@@ -21,6 +28,28 @@ module RDF::RDFXML
|
|
21
28
|
def initialize(node, parent = nil)
|
22
29
|
@node = node
|
23
30
|
@parent = parent
|
31
|
+
@parent = NodeProxy.new(node.parent) if @parent.nil? &&
|
32
|
+
node.respond_to?(:parent) &&
|
33
|
+
node.parent &&
|
34
|
+
!node.parent.is_a?(::REXML::Document)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Create a new element child of an existing node
|
38
|
+
def create_node(name, children)
|
39
|
+
native = ::REXML::Element.new(name, @node)
|
40
|
+
children.each do |c|
|
41
|
+
case c.node
|
42
|
+
when ::REXML::Text
|
43
|
+
native.add_text(c.node)
|
44
|
+
when ::REXML::Element
|
45
|
+
native.add_element(c.node)
|
46
|
+
when ::REXML::Comment
|
47
|
+
# Skip comments
|
48
|
+
else
|
49
|
+
raise "Unexpected child node type: #{c.node.class}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
NodeProxy.new(native, self)
|
24
53
|
end
|
25
54
|
|
26
55
|
##
|
@@ -89,7 +118,15 @@ module RDF::RDFXML
|
|
89
118
|
end
|
90
119
|
ns_decls
|
91
120
|
end
|
92
|
-
|
121
|
+
|
122
|
+
def namespace
|
123
|
+
Namespace.new(@node.namespace, @node.prefix) unless @node.namespace.to_s.empty?
|
124
|
+
end
|
125
|
+
|
126
|
+
def add_namespace(prefix, uri)
|
127
|
+
prefix ? !@node.add_namespace(prefix, uri) : @node.add_namespace(uri)
|
128
|
+
end
|
129
|
+
|
93
130
|
##
|
94
131
|
# Children of this node
|
95
132
|
#
|
@@ -115,33 +152,46 @@ module RDF::RDFXML
|
|
115
152
|
}.join
|
116
153
|
end
|
117
154
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
@node.is_a?(::REXML::Element)
|
155
|
+
def attribute_nodes
|
156
|
+
attrs = @node.attributes.dup.keep_if do |name, attr|
|
157
|
+
!name.start_with?('xmlns')
|
158
|
+
end
|
159
|
+
@attribute_nodes ||= (attrs.empty? ? attrs : NodeSetProxy.new(attrs, self))
|
124
160
|
end
|
125
161
|
|
126
|
-
def
|
127
|
-
@
|
162
|
+
def remove_attribute(key)
|
163
|
+
@node.delete_attribute(key)
|
128
164
|
end
|
129
165
|
|
130
166
|
def xpath(*args)
|
131
167
|
#NodeSetProxy.new(::REXML::XPath.match(@node, path, namespaces), self)
|
132
168
|
::REXML::XPath.match(@node, *args).map do |n|
|
133
|
-
# Get node ancestors
|
134
|
-
parent = n.ancestors.reverse.inject(nil) do |p,node|
|
135
|
-
NodeProxy.new(node, p)
|
136
|
-
end
|
137
169
|
NodeProxy.new(n, parent)
|
138
170
|
end
|
139
171
|
end
|
140
172
|
|
141
|
-
def
|
173
|
+
def at_xpath(*args)
|
174
|
+
xpath(*args).first
|
175
|
+
end
|
176
|
+
|
177
|
+
##
|
178
|
+
# Node type accessors
|
179
|
+
#
|
180
|
+
# @return [Boolean]
|
181
|
+
def text?
|
182
|
+
@node.is_a?(::REXML::Text)
|
183
|
+
end
|
184
|
+
|
185
|
+
def element?
|
142
186
|
@node.is_a?(::REXML::Element)
|
143
187
|
end
|
144
188
|
|
189
|
+
def blank?
|
190
|
+
@node.is_a?(::REXML::Text) && @node.empty?
|
191
|
+
end
|
192
|
+
|
193
|
+
def to_s; @node.to_s; end
|
194
|
+
|
145
195
|
##
|
146
196
|
# Proxy for everything else to @node
|
147
197
|
def method_missing(method, *args)
|
@@ -166,10 +216,22 @@ module RDF::RDFXML
|
|
166
216
|
# @yield child
|
167
217
|
# @yieldparam [NodeProxy]
|
168
218
|
def each
|
169
|
-
@node_set.each do |c|
|
219
|
+
@node_set.to_a.each do |c|
|
170
220
|
yield NodeProxy.new(c, parent)
|
171
221
|
end
|
172
222
|
end
|
223
|
+
|
224
|
+
##
|
225
|
+
# Return selected NodeProxies based on selection
|
226
|
+
#
|
227
|
+
# @yield child
|
228
|
+
# @yieldparam [NodeProxy]
|
229
|
+
# @return [Array[NodeProxy]]
|
230
|
+
def select
|
231
|
+
@node_set.to_a.map {|n| NodeProxy.new(n, parent)}.select do |c|
|
232
|
+
yield c
|
233
|
+
end
|
234
|
+
end
|
173
235
|
|
174
236
|
##
|
175
237
|
# Proxy for everything else to @node_set
|
data/lib/rdf/rdfxml/reader.rb
CHANGED
@@ -188,7 +188,7 @@ module RDF::RDFXML
|
|
188
188
|
add_debug(root, "base_uri: #{base_uri.inspect}")
|
189
189
|
|
190
190
|
rdf_nodes = root.xpath("//rdf:RDF", "rdf" => RDF.to_uri.to_s)
|
191
|
-
if rdf_nodes.
|
191
|
+
if rdf_nodes.size == 0
|
192
192
|
# If none found, root element may be processed as an RDF Node
|
193
193
|
|
194
194
|
ec = EvaluationContext.new(base_uri, root, @graph) do |prefix, value|
|
@@ -207,7 +207,7 @@ module RDF::RDFXML
|
|
207
207
|
prefix(prefix, value)
|
208
208
|
end
|
209
209
|
node.children.each {|el|
|
210
|
-
next unless el.
|
210
|
+
next unless el.element?
|
211
211
|
raise "el must be a proxy not a #{el.class}" unless el.is_a?(@implementation::NodeProxy)
|
212
212
|
new_ec = ec.clone(el) do |prefix, value|
|
213
213
|
prefix(prefix, value)
|
@@ -316,7 +316,7 @@ module RDF::RDFXML
|
|
316
316
|
li_counter = 0 # this will increase for each li we iterate through
|
317
317
|
el.children.each do |child|
|
318
318
|
raise "child must be a proxy not a #{child.class}" unless child.is_a?(@implementation::NodeProxy)
|
319
|
-
next unless child.
|
319
|
+
next unless child.element?
|
320
320
|
child_ec = ec.clone(child) do |prefix, value|
|
321
321
|
prefix(prefix, value)
|
322
322
|
end
|
@@ -338,7 +338,7 @@ module RDF::RDFXML
|
|
338
338
|
raise "element node must be a proxy not a #{node.class}" unless node.is_a?(@implementation::NodeProxy)
|
339
339
|
end
|
340
340
|
|
341
|
-
if element_nodes.
|
341
|
+
if element_nodes.size > 1
|
342
342
|
element_nodes.each do |node|
|
343
343
|
add_debug(child) {" node: #{node.to_s}"}
|
344
344
|
end
|
@@ -399,7 +399,7 @@ module RDF::RDFXML
|
|
399
399
|
add_debug(child) {"nodeID: #{nodeID}"} if nodeID
|
400
400
|
add_debug(child) {"id: #{id}"} if id
|
401
401
|
|
402
|
-
if attrs.empty? && datatype.nil? && parseType.nil? && element_nodes.
|
402
|
+
if attrs.empty? && datatype.nil? && parseType.nil? && element_nodes.size == 1
|
403
403
|
# Production resourcePropertyElt
|
404
404
|
|
405
405
|
new_ec = child_ec.clone(nil) do |prefix, value|
|
@@ -410,7 +410,7 @@ module RDF::RDFXML
|
|
410
410
|
add_debug(child) {"resourcePropertyElt: #{node_path(new_node_element)}"}
|
411
411
|
new_subject = nodeElement(new_node_element, new_ec)
|
412
412
|
add_triple(child, subject, predicate, new_subject)
|
413
|
-
elsif attrs.empty? && parseType.nil? && element_nodes.
|
413
|
+
elsif attrs.empty? && parseType.nil? && element_nodes.size == 0 && text_nodes.size > 0
|
414
414
|
# Production literalPropertyElt
|
415
415
|
add_debug(child, "literalPropertyElt")
|
416
416
|
|
@@ -448,9 +448,9 @@ module RDF::RDFXML
|
|
448
448
|
# c
|
449
449
|
# end-element()
|
450
450
|
add_debug(child, "compose new sequence with rdf:Description")
|
451
|
-
|
452
|
-
node.attributes.keys.each {|a| node.remove_attribute(a)}
|
453
|
-
node
|
451
|
+
#child.clone
|
452
|
+
#node.attributes.keys.each {|a| node.remove_attribute(a)}
|
453
|
+
node = el.create_node("Description", child.children)
|
454
454
|
node.add_namespace(nil, RDF.to_uri.to_s)
|
455
455
|
add_debug(node) { "uri: #{node.uri}, namespace: #{node.namespace.inspect}"}
|
456
456
|
new_ec = child_ec.clone(nil, :subject => n) do |prefix, value|
|
@@ -518,7 +518,7 @@ module RDF::RDFXML
|
|
518
518
|
rescue ArgumentError => e
|
519
519
|
add_error(child, e.message)
|
520
520
|
end
|
521
|
-
elsif text_nodes.
|
521
|
+
elsif text_nodes.size == 0 && element_nodes.size == 0
|
522
522
|
# Production emptyPropertyElt
|
523
523
|
add_debug(child, "emptyPropertyElt")
|
524
524
|
|
data/lib/rdf/rdfxml/writer.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-rdfxml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-10-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdf
|
@@ -66,19 +66,19 @@ dependencies:
|
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '1.1'
|
68
68
|
- !ruby/object:Gem::Dependency
|
69
|
-
name:
|
69
|
+
name: htmlentities
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
75
|
-
type: :
|
74
|
+
version: '4.3'
|
75
|
+
type: :runtime
|
76
76
|
prerelease: false
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '4.3'
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: open-uri-cached
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|