rdf_context 0.5.2 → 0.5.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.
- data/History.txt +5 -0
- data/VERSION +1 -1
- data/bin/rdf_context +1 -1
- data/lib/rdf_context/bnode.rb +1 -1
- data/lib/rdf_context/n3parser.rb +16 -2
- data/lib/rdf_context/serializer/xml_serializer.rb +3 -2
- data/lib/rdf_context/store/abstract_sql_store.rb +1 -1
- data/lib/rdf_context/store/abstract_store.rb +2 -1
- data/spec/bnode_spec.rb +7 -1
- data/spec/xml_serializer_spec.rb +14 -6
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 0.5.3
|
2
|
+
* Fix bug in XML serializer when type is a BNode.
|
3
|
+
* Undo change in 0.5.2 to remove old binding based on equivalent URI to equivalent prefix.
|
4
|
+
* Undo change form 0.5.1 to make BNode.new("") a named identifier. Required for RDFa test 0088.
|
5
|
+
|
1
6
|
=== 0.5.2
|
2
7
|
* Remove old binding for a namespace URI creating a new binding
|
3
8
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.3
|
data/bin/rdf_context
CHANGED
@@ -13,7 +13,7 @@ class Parse
|
|
13
13
|
output = parser.graph.serialize(:format => $format.to_sym, :base => base_uri)
|
14
14
|
puts output unless $quiet
|
15
15
|
|
16
|
-
puts parser.debug.join("\n\t") if $verbose
|
16
|
+
puts parser.debug.to_a.join("\n\t") if $verbose
|
17
17
|
rescue RdfException => e
|
18
18
|
puts "Parse failure: #{e.message}"
|
19
19
|
puts parser.debug if $verbose && parser
|
data/lib/rdf_context/bnode.rb
CHANGED
@@ -16,7 +16,7 @@ module RdfContext
|
|
16
16
|
# @param [String] identifier:: Legal NCName or nil for a named BNode
|
17
17
|
# @param [Hash] context:: Context used to store named BNodes
|
18
18
|
def initialize(identifier = nil, context = {})
|
19
|
-
if identifier.
|
19
|
+
if identifier.nil?
|
20
20
|
@identifier = generate_bn_identifier
|
21
21
|
elsif identifier.match(/n?bn\d+[a-z]+(N\w+)?$/)
|
22
22
|
@identifier = context[identifier] || identifier
|
data/lib/rdf_context/n3parser.rb
CHANGED
@@ -50,6 +50,7 @@ module RdfContext
|
|
50
50
|
add_debug("namesspace", "'#{prefix}' <#{uri}>")
|
51
51
|
uri = @default_ns.uri if uri == '#'
|
52
52
|
@graph.bind(Namespace.new(uri, prefix))
|
53
|
+
add_debug("namesspace", "ns = #{@graph.nsbinding.inspect}")
|
53
54
|
end
|
54
55
|
|
55
56
|
def process_statements(document)
|
@@ -177,20 +178,26 @@ module RdfContext
|
|
177
178
|
end
|
178
179
|
|
179
180
|
def process_expression(expression)
|
180
|
-
add_debug(*expression.info("process_expression"))
|
181
181
|
if expression.respond_to?(:pathitem) && expression.respond_to?(:expression)
|
182
|
+
add_debug(*expression.info("process_expression(pathitem && expression)"))
|
182
183
|
process_path(expression) # Returns last object in chain
|
183
184
|
elsif expression.respond_to?(:uri)
|
185
|
+
add_debug(*expression.info("process_expression(uri)"))
|
184
186
|
process_uri(expression.uri)
|
185
187
|
elsif expression.respond_to?(:localname)
|
188
|
+
add_debug(*expression.info("process_expression(localname)"))
|
186
189
|
build_uri(expression)
|
187
190
|
elsif expression.respond_to?(:anonnode)
|
191
|
+
add_debug(*expression.info("process_expression(anonnode)"))
|
188
192
|
process_anonnode(expression)
|
189
193
|
elsif expression.respond_to?(:literal)
|
194
|
+
add_debug(*expression.info("process_expression(literal)"))
|
190
195
|
process_literal(expression)
|
191
196
|
elsif expression.respond_to?(:numericliteral)
|
197
|
+
add_debug(*expression.info("process_expression(numericliteral)"))
|
192
198
|
process_numeric_literal(expression)
|
193
199
|
elsif expression.respond_to?(:boolean)
|
200
|
+
add_debug(*expression.info("process_expression(boolean)"))
|
194
201
|
barename = expression.text_value.to_s
|
195
202
|
if @keywords && !@keywords.include?(barename)
|
196
203
|
build_uri(barename)
|
@@ -198,6 +205,7 @@ module RdfContext
|
|
198
205
|
Literal.typed(barename.delete("@"), XSD_NS.boolean)
|
199
206
|
end
|
200
207
|
elsif expression.respond_to?(:barename)
|
208
|
+
add_debug(*expression.info("process_expression(barename)"))
|
201
209
|
barename = expression.text_value.to_s
|
202
210
|
|
203
211
|
# Should only happen if @keywords is defined, and text_value is not a defined keyword
|
@@ -210,6 +218,7 @@ module RdfContext
|
|
210
218
|
build_uri(barename)
|
211
219
|
end
|
212
220
|
else
|
221
|
+
add_debug(*expression.info("process_expression(else)"))
|
213
222
|
build_uri(expression)
|
214
223
|
end
|
215
224
|
end
|
@@ -325,8 +334,13 @@ module RdfContext
|
|
325
334
|
prefix = expression.respond_to?(:nprefix) ? expression.nprefix.text_value.to_s : ""
|
326
335
|
localname = expression.localname.text_value if expression.respond_to?(:localname)
|
327
336
|
localname ||= (expression.respond_to?(:text_value) ? expression.text_value : expression).to_s.sub(/^:/, "")
|
337
|
+
localname = nil if localname.empty? # In N3/Turtle "_:" is not named
|
328
338
|
|
329
|
-
|
339
|
+
if expression.respond_to?(:info)
|
340
|
+
add_debug(*expression.info("build_uri(#{prefix.inspect}, #{localname.inspect})"))
|
341
|
+
else
|
342
|
+
add_debug("", "build_uri(#{prefix.inspect}, #{localname.inspect})")
|
343
|
+
end
|
330
344
|
|
331
345
|
uri = if @graph.nsbinding[prefix]
|
332
346
|
@graph.nsbinding[prefix] + localname.to_s.rdf_escape
|
@@ -35,7 +35,7 @@ module RdfContext
|
|
35
35
|
preprocess
|
36
36
|
|
37
37
|
predicates = @graph.predicates.uniq
|
38
|
-
possible = predicates
|
38
|
+
possible = predicates + @graph.objects.uniq
|
39
39
|
namespaces = {}
|
40
40
|
required_namespaces = {}
|
41
41
|
possible.each do |res|
|
@@ -100,10 +100,11 @@ module RdfContext
|
|
100
100
|
puts "subject: #{subject.to_n3}, props: #{properties.inspect}" if $DEBUG
|
101
101
|
|
102
102
|
rdf_type, *rest = properties.fetch(RDF_TYPE.to_s, [])
|
103
|
-
properties[RDF_TYPE.to_s] = rest
|
104
103
|
if rdf_type.is_a?(URIRef)
|
105
104
|
element = get_qname(rdf_type)
|
105
|
+
properties[RDF_TYPE.to_s] = rest
|
106
106
|
if rdf_type.namespace && @default_ns && rdf_type.namespace.uri == @default_ns.uri
|
107
|
+
properties[RDF_TYPE.to_s] = rest
|
107
108
|
element = rdf_type.short_name
|
108
109
|
end
|
109
110
|
end
|
@@ -507,7 +507,7 @@ module RdfContext
|
|
507
507
|
# Bind namespace to store, returns bound namespace
|
508
508
|
def bind(namespace)
|
509
509
|
# Remove existing bindings for the same URI
|
510
|
-
executeSQL("DELETE FROM #{namespace_binds} WHERE
|
510
|
+
executeSQL("DELETE FROM #{namespace_binds} WHERE prefix=?", namespace.prefix)
|
511
511
|
executeSQL("INSERT INTO #{namespace_binds} VALUES (?, ?)", namespace.prefix, namespace.uri)
|
512
512
|
# May throw exception, should be handled in driver-specific class
|
513
513
|
|
@@ -35,10 +35,11 @@ module RdfContext
|
|
35
35
|
|
36
36
|
# Bind namespace to store, returns bound namespace
|
37
37
|
def bind(namespace)
|
38
|
+
puts "bind #{namespace.inspect}"
|
38
39
|
# Over-write an empty prefix
|
39
40
|
uri = namespace.uri.to_s
|
40
41
|
@uri_binding.delete(uri)
|
41
|
-
@nsbinding.delete_if {|prefix, ns|
|
42
|
+
@nsbinding.delete_if {|prefix, ns| namespace.prefix == prefix}
|
42
43
|
|
43
44
|
@uri_binding[uri] = namespace
|
44
45
|
@nsbinding[namespace.prefix.to_s] = namespace
|
data/spec/bnode_spec.rb
CHANGED
@@ -44,10 +44,16 @@ describe "Blank nodes" do
|
|
44
44
|
BNode.new(bn.to_s).should == bn
|
45
45
|
end
|
46
46
|
|
47
|
+
describe "which has a nil identifier" do
|
48
|
+
subject { BNode.new("", @context) }
|
49
|
+
it "should not be the same as an anonymous identifier" do should_not == BNode.new end
|
50
|
+
it "should not be the same as another nil identifier" do should_not == BNode.new(nil, @context) end
|
51
|
+
end
|
52
|
+
|
47
53
|
describe "which has a blank identifier" do
|
48
54
|
subject { BNode.new("", @context) }
|
49
55
|
it "should not be the same as an anonymous identifier" do should_not == BNode.new end
|
50
|
-
it "should
|
56
|
+
it "should be the same as another blank identifier" do should == BNode.new("", @context) end
|
51
57
|
end
|
52
58
|
|
53
59
|
describe "which are anonymous" do
|
data/spec/xml_serializer_spec.rb
CHANGED
@@ -332,12 +332,20 @@ describe "XML Serializer" do
|
|
332
332
|
bn = BNode.new("a")
|
333
333
|
@graph.add_triple(bn, DC_NS.title, "foo")
|
334
334
|
@graph.add_triple(bn, OWL_NS.equals, bn)
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
335
|
+
check_xpaths(
|
336
|
+
serialize(:attributes => :untyped, :base => "http://release/"),
|
337
|
+
"/rdf:RDF/rdf:Description/@dc:title" => "foo",
|
338
|
+
"/rdf:RDF/rdf:Description/@rdf:nodeID" => /Na$/,
|
339
|
+
"/rdf:RDF/rdf:Description/owl:equals/@rdf:nodeID" => /Na$/
|
340
|
+
)
|
341
|
+
end
|
342
|
+
|
343
|
+
it "should replicate rdfcore/rdfms-seq-representation" do
|
344
|
+
@graph.parse(%(
|
345
|
+
<http://example.org/eg#eric> a [ <http://example.org/eg#intersectionOf> (<http://example.org/eg#Person> <http://example.org/eg#Male>)] .
|
346
|
+
))
|
347
|
+
graph2 = Graph.new
|
348
|
+
graph2.parse(serialize(:format => :xml)).should be_equivalent_graph(@graph)
|
341
349
|
end
|
342
350
|
end
|
343
351
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 5
|
8
|
-
-
|
9
|
-
version: 0.5.
|
8
|
+
- 3
|
9
|
+
version: 0.5.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Gregg Kellogg
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-14 00:00:00 -07:00
|
18
18
|
default_executable: rdf_context
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|