rdf_context 0.4.5 → 0.4.6
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 +7 -0
- data/VERSION +1 -1
- data/lib/rdf_context/bnode.rb +13 -14
- data/lib/rdf_context/graph.rb +18 -4
- data/lib/rdf_context/literal.rb +5 -5
- data/lib/rdf_context/n3parser.rb +3 -3
- data/lib/rdf_context/namespace.rb +2 -2
- data/lib/rdf_context/parser.rb +7 -1
- data/lib/rdf_context/rdfaparser.rb +3 -0
- data/lib/rdf_context/rdfxmlparser.rb +17 -7
- data/lib/rdf_context/store/abstract_sql_store.rb +20 -7
- data/lib/rdf_context/store/abstract_store.rb +9 -6
- data/lib/rdf_context/store/memory_store.rb +1 -1
- data/lib/rdf_context/triple.rb +4 -3
- data/lib/rdf_context/uriref.rb +10 -8
- data/spec/bnode_spec.rb +10 -0
- data/spec/uriref_spec.rb +7 -4
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
=== 0.4.6
|
2
|
+
* Added Graph#uri_mapping and AbstractStore#uri_mapping for uri => Namespace mappings in graph
|
3
|
+
* Fix BNode creation from existing identifier (named or un-named)
|
4
|
+
* Graph#destroy removes graph context from store without configuration, and removes store storage with configuration
|
5
|
+
* Added Triple#to_n3 and URIRef#to_n3
|
6
|
+
* Added AbstractStore#uri_binding to give uri => namespace mapping from all store classes.
|
7
|
+
|
1
8
|
=== 0.4.5
|
2
9
|
* Order includes to remove platform dependencies on load requirements.
|
3
10
|
* Fix XML Comparison matcher
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.6
|
data/lib/rdf_context/bnode.rb
CHANGED
@@ -16,9 +16,11 @@ 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
|
20
|
-
identifier =
|
21
|
-
|
19
|
+
if identifier.nil?
|
20
|
+
@identifier = generate_bn_identifier
|
21
|
+
elsif identifier.match(/n?bn\d+[a-z]+(N\w+)?$/)
|
22
|
+
@identifier = context[identifier] || identifier
|
23
|
+
elsif self.valid_id?(identifier)
|
22
24
|
@identifier = context[identifier] ||= generate_bn_identifier(identifier)
|
23
25
|
else
|
24
26
|
@identifier = generate_bn_identifier
|
@@ -42,14 +44,7 @@ module RdfContext
|
|
42
44
|
def to_n3
|
43
45
|
"_:#{self.identifier}"
|
44
46
|
end
|
45
|
-
|
46
|
-
##
|
47
|
-
# Exports the BNode in N-Triples form.
|
48
|
-
#
|
49
|
-
# Syonym for to_n3
|
50
|
-
def to_ntriples
|
51
|
-
self.to_n3
|
52
|
-
end
|
47
|
+
alias_method :to_ntriples, :to_n3
|
53
48
|
|
54
49
|
# Output URI as resource reference for RDF/XML
|
55
50
|
#
|
@@ -66,8 +61,12 @@ module RdfContext
|
|
66
61
|
|
67
62
|
# Compare BNodes. BNodes are equivalent if they have the same identifier
|
68
63
|
def eql?(other)
|
69
|
-
other
|
70
|
-
|
64
|
+
case other
|
65
|
+
when BNode
|
66
|
+
other.identifier == self.identifier
|
67
|
+
else
|
68
|
+
self.identifier == other.to_s
|
69
|
+
end
|
71
70
|
end
|
72
71
|
alias_method :==, :eql?
|
73
72
|
|
@@ -75,7 +74,7 @@ module RdfContext
|
|
75
74
|
def hash; self.to_s.hash; end
|
76
75
|
|
77
76
|
def inspect
|
78
|
-
"[
|
77
|
+
"#{self.class}[#{self.to_n3}]"
|
79
78
|
end
|
80
79
|
|
81
80
|
protected
|
data/lib/rdf_context/graph.rb
CHANGED
@@ -59,8 +59,14 @@ module RdfContext
|
|
59
59
|
def nsbinding; @store.nsbinding; end
|
60
60
|
|
61
61
|
# Destroy the store identified by _configuration_ if supported
|
62
|
+
# If configuration is nil, remove the graph context
|
62
63
|
def destroy(configuration = nil)
|
63
|
-
|
64
|
+
if configuration
|
65
|
+
@store.destroy(configuration)
|
66
|
+
else
|
67
|
+
@store.remove(Triple.new(nil, nil, nil), self)
|
68
|
+
end
|
69
|
+
|
64
70
|
self.freeze
|
65
71
|
end
|
66
72
|
|
@@ -120,13 +126,18 @@ module RdfContext
|
|
120
126
|
"xml" => XML_NS
|
121
127
|
)
|
122
128
|
rdf_attrs = extended_bindings.values.inject({}) { |hash, ns| hash.merge(ns.xmlns_attr => ns.uri.to_s)}
|
123
|
-
uri_bindings =
|
129
|
+
uri_bindings = self.uri_binding.merge(
|
130
|
+
RDF_NS.uri.to_s => RDF_NS,
|
131
|
+
RDFS_NS.uri.to_s => RDFS_NS,
|
132
|
+
XHV_NS.uri.to_s => XHV_NS,
|
133
|
+
XML_NS.uri.to_s => XML_NS
|
134
|
+
)
|
124
135
|
|
125
136
|
# Add bindings for predicates not already having bindings
|
126
137
|
tmp_ns = "ns0"
|
127
138
|
predicates.each do |p|
|
128
139
|
unless uri_bindings.has_key?(p.base)
|
129
|
-
uri_bindings[p.base] = tmp_ns
|
140
|
+
uri_bindings[p.base] = Namespace.new(p.base, tmp_ns)
|
130
141
|
rdf_attrs["xmlns:#{tmp_ns}"] = p.base
|
131
142
|
tmp_ns = tmp_ns.succ
|
132
143
|
end
|
@@ -171,9 +182,12 @@ module RdfContext
|
|
171
182
|
@store.bind(namespace)
|
172
183
|
end
|
173
184
|
|
174
|
-
#
|
185
|
+
# Hash of prefix => Namespace bindings
|
175
186
|
def nsbinding; @store.nsbinding; end
|
176
187
|
|
188
|
+
# Hash of uri => Namespace bindings
|
189
|
+
def uri_binding; @store.uri_binding; end
|
190
|
+
|
177
191
|
# Namespace for prefix
|
178
192
|
def namespace(prefix); @store.namespace(prefix); end
|
179
193
|
|
data/lib/rdf_context/literal.rb
CHANGED
@@ -35,10 +35,6 @@ module RdfContext
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
def inspect
|
39
|
-
to_s()
|
40
|
-
end
|
41
|
-
|
42
38
|
def self.the_null_encoding
|
43
39
|
@the_null_encoding ||= Null.new(nil)
|
44
40
|
end
|
@@ -314,6 +310,10 @@ module RdfContext
|
|
314
310
|
end
|
315
311
|
alias_method :to_ntriples, :to_n3
|
316
312
|
|
313
|
+
def inspect
|
314
|
+
"#{self.class}[#{self.to_n3}]"
|
315
|
+
end
|
316
|
+
|
317
317
|
# Output literal in TriX format
|
318
318
|
def to_trix
|
319
319
|
encoding.format_as_trix(@contents, @lang)
|
@@ -324,7 +324,7 @@ module RdfContext
|
|
324
324
|
# ==== Example
|
325
325
|
# Encoding.the_null_encoding.xml_args("foo", "en-US") => ["foo", {"xml:lang" => "en-US"}]
|
326
326
|
def xml_args
|
327
|
-
encoding.xml_args(
|
327
|
+
encoding.xml_args(@contents, @lang)
|
328
328
|
end
|
329
329
|
|
330
330
|
# Is this an XMLLiteral?
|
data/lib/rdf_context/n3parser.rb
CHANGED
@@ -9,9 +9,9 @@ module RdfContext
|
|
9
9
|
|
10
10
|
# Parse N3 document from a string or input stream to closure or graph.
|
11
11
|
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
12
|
+
# If the parser is called with a block, triples are passed to the block rather
|
13
|
+
# than added to the graph.
|
14
|
+
#
|
15
15
|
# @param [String] n3_str:: the Notation3/Turtle string
|
16
16
|
# @param [String] uri:: the URI of the document
|
17
17
|
# @param [Hash] options:: Options include the following
|
@@ -18,10 +18,10 @@ module RdfContext
|
|
18
18
|
#
|
19
19
|
# @author Tom Morris, Pius Uzamere
|
20
20
|
def initialize(uri, prefix, fragment = nil)
|
21
|
+
prefix = prefix.to_s
|
21
22
|
@uri = URIRef.new(uri) unless uri.is_a?(URIRef)
|
22
23
|
@fragment = fragment
|
23
24
|
@fragment = uri.to_s.match(/\#$/) ? true : false if fragment.nil?
|
24
|
-
prefix = nil if prefix.to_s.empty?
|
25
25
|
if prefix_valid?(prefix)
|
26
26
|
@prefix = prefix
|
27
27
|
else
|
@@ -61,7 +61,7 @@ module RdfContext
|
|
61
61
|
|
62
62
|
# Output xmlns attribute name
|
63
63
|
def xmlns_attr
|
64
|
-
prefix.
|
64
|
+
prefix.empty? ? "xmlns" : "xmlns:#{prefix}"
|
65
65
|
end
|
66
66
|
|
67
67
|
# Output namespace definition as a hash
|
data/lib/rdf_context/parser.rb
CHANGED
@@ -39,6 +39,9 @@ module RdfContext
|
|
39
39
|
|
40
40
|
# Parse RDF document from a string or input stream to closure or graph.
|
41
41
|
#
|
42
|
+
# If the parser is called with a block, triples are passed to the block rather
|
43
|
+
# than added to the graph.
|
44
|
+
#
|
42
45
|
# Virtual Class, prototype for Parser subclass.
|
43
46
|
#
|
44
47
|
# @param [IO, String] stream:: the RDF IO stream, string, Nokogiri::HTML::Document or Nokogiri::XML::Document
|
@@ -96,7 +99,7 @@ module RdfContext
|
|
96
99
|
when /\.(nt|n3|txt)$/ then :n3
|
97
100
|
else
|
98
101
|
# Got to look into the file to see
|
99
|
-
if stream.is_a?(IO)
|
102
|
+
if stream.is_a?(IO) || stream.is_a?(StringIO)
|
100
103
|
stream.rewind
|
101
104
|
string = stream.read(1000)
|
102
105
|
stream.rewind
|
@@ -133,6 +136,9 @@ module RdfContext
|
|
133
136
|
|
134
137
|
# add a triple, object can be literal or URI or bnode
|
135
138
|
#
|
139
|
+
# If the parser is called with a block, triples are passed to the block rather
|
140
|
+
# than added to the graph.
|
141
|
+
#
|
136
142
|
# @param [Nokogiri::XML::Node, any] node:: XML Node or string for showing context
|
137
143
|
# @param [URIRef, BNode] subject:: the subject of the triple
|
138
144
|
# @param [URIRef] predicate:: the predicate of the triple
|
@@ -49,6 +49,9 @@ module RdfContext
|
|
49
49
|
|
50
50
|
# Parse XHTML+RDFa document from a string or input stream to closure or graph.
|
51
51
|
#
|
52
|
+
# If the parser is called with a block, triples are passed to the block rather
|
53
|
+
# than added to the graph.
|
54
|
+
#
|
52
55
|
# Optionally, the stream may be a Nokogiri::HTML::Document or Nokogiri::XML::Document
|
53
56
|
# With a block, yeilds each statement with URIRef, BNode or Literal elements
|
54
57
|
#
|
@@ -98,8 +98,10 @@ module RdfContext
|
|
98
98
|
|
99
99
|
# Parse RDF/XML document from a string or input stream to closure or graph.
|
100
100
|
#
|
101
|
+
# If the parser is called with a block, triples are passed to the block rather
|
102
|
+
# than added to the graph.
|
103
|
+
#
|
101
104
|
# Optionally, the stream may be a string or Nokogiri::XML::Document
|
102
|
-
# With a block, yeilds each statement with URIRef, BNode or Literal elements
|
103
105
|
#
|
104
106
|
# @param [IO] stream:: the RDF/XML IO stream, string or Nokogiri::XML::Document
|
105
107
|
# @param [String] uri:: the URI of the document
|
@@ -116,6 +118,8 @@ module RdfContext
|
|
116
118
|
else Nokogiri::XML.parse(stream, uri.to_s)
|
117
119
|
end
|
118
120
|
|
121
|
+
raise ParserException, "Synax errors:\n#{@doc.errors}" unless @doc.errors.empty?
|
122
|
+
|
119
123
|
@id_mapping = Hash.new
|
120
124
|
|
121
125
|
raise ParserException, "Empty document" if @doc.nil? || @doc.root.nil?
|
@@ -196,6 +200,12 @@ module RdfContext
|
|
196
200
|
# Determine the content type of this property element
|
197
201
|
text_nodes = child.children.select {|e| e.text? && !e.blank?}
|
198
202
|
element_nodes = child.children.select(&:element?)
|
203
|
+
add_debug(child, "#{text_nodes.length} text nodes, #{element_nodes.length} element nodes")
|
204
|
+
if element_nodes.length > 1
|
205
|
+
element_nodes.each do |node|
|
206
|
+
add_debug(child, " node: #{node.to_s}")
|
207
|
+
end
|
208
|
+
end
|
199
209
|
|
200
210
|
# List expansion
|
201
211
|
predicate = ec.li_next(predicate) if predicate == RDF_NS.li
|
@@ -245,12 +255,12 @@ module RdfContext
|
|
245
255
|
resourceAttr = resourceAttr.rdf_escape if resourceAttr
|
246
256
|
nodeID = nodeID_check(el, nodeID.rdf_escape) if nodeID
|
247
257
|
|
248
|
-
add_debug(
|
249
|
-
add_debug(
|
250
|
-
add_debug(
|
251
|
-
add_debug(
|
252
|
-
add_debug(
|
253
|
-
add_debug(
|
258
|
+
add_debug(child, "attrs: #{attrs.inspect}")
|
259
|
+
add_debug(child, "datatype: #{datatype}") if datatype
|
260
|
+
add_debug(child, "parseType: #{parseType}") if parseType
|
261
|
+
add_debug(child, "resource: #{resourceAttr}") if resourceAttr
|
262
|
+
add_debug(child, "nodeID: #{nodeID}") if nodeID
|
263
|
+
add_debug(child, "id: #{id}") if id
|
254
264
|
|
255
265
|
if attrs.empty? && datatype.nil? && parseType.nil? && element_nodes.length == 1
|
256
266
|
# Production resourcePropertyElt
|
@@ -512,6 +512,7 @@ module RdfContext
|
|
512
512
|
@namespaceCache ||= {}
|
513
513
|
@namespaceUriCache ||= {}
|
514
514
|
@nsbinding = nil
|
515
|
+
@uri_binding = nil
|
515
516
|
@namespaceCache[namespace.prefix] = namespace
|
516
517
|
@namespaceUriCache[namespace.uri.to_s] = namespace.prefix
|
517
518
|
namespace
|
@@ -521,14 +522,14 @@ module RdfContext
|
|
521
522
|
def namespace(prefix)
|
522
523
|
@namespaceCache ||= {}
|
523
524
|
@namespaceUriCache ||= {}
|
524
|
-
unless @namespaceCache.has_key?(prefix)
|
525
|
+
unless @namespaceCache.has_key?(prefix.to_s)
|
525
526
|
@namespaceCache[prefix] = nil
|
526
|
-
executeSQL("SELECT uri FROM #{namespace_binds} WHERE prefix=?", prefix) do |row|
|
527
|
-
@namespaceCache[prefix] = Namespace.new(row[0], prefix)
|
528
|
-
@namespaceUriCache[row[0].to_s] = prefix
|
527
|
+
executeSQL("SELECT uri FROM #{namespace_binds} WHERE prefix=?", prefix.to_s) do |row|
|
528
|
+
@namespaceCache[prefix.to_s] = Namespace.new(row[0], prefix.to_s)
|
529
|
+
@namespaceUriCache[row[0].to_s] = prefix.to_s
|
529
530
|
end
|
530
531
|
end
|
531
|
-
@namespaceCache[prefix]
|
532
|
+
@namespaceCache[prefix.to_s]
|
532
533
|
end
|
533
534
|
|
534
535
|
# Prefix for namespace
|
@@ -546,18 +547,30 @@ module RdfContext
|
|
546
547
|
@namespaceUriCache[uri.to_s]
|
547
548
|
end
|
548
549
|
|
549
|
-
#
|
550
|
+
# Hash of prefix => Namespace bindings
|
550
551
|
def nsbinding
|
551
552
|
unless @nsbinding.is_a?(Hash)
|
552
553
|
@nsbinding = {}
|
554
|
+
@uri_binding = {}
|
553
555
|
executeSQL("SELECT prefix, uri FROM #{namespace_binds}") do |row|
|
554
|
-
|
556
|
+
prefix, uri = row
|
557
|
+
namespace = Namespace.new(uri, prefix)
|
558
|
+
@nsbinding[prefix] = namespace
|
559
|
+
# Over-write an empty prefix
|
560
|
+
@uri_binding[uri] = namespace unless prefix.to_s.empty?
|
561
|
+
@uri_binding[uri] ||= namespace
|
555
562
|
end
|
556
563
|
@nsbinding
|
557
564
|
end
|
558
565
|
@nsbinding
|
559
566
|
end
|
560
567
|
|
568
|
+
# Hash of uri => Namespace bindings
|
569
|
+
def uri_binding
|
570
|
+
nsbinding
|
571
|
+
@uri_binding
|
572
|
+
end
|
573
|
+
|
561
574
|
# Transactional interfaces
|
562
575
|
def commit; @db.commit; end
|
563
576
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module RdfContext
|
2
2
|
# Abstract storage module, superclass of other storage classes
|
3
3
|
class AbstractStore
|
4
|
-
attr_reader :nsbinding, :identifier
|
4
|
+
attr_reader :nsbinding, :uri_binding, :identifier
|
5
5
|
|
6
6
|
def initialize(identifier = nil, configuration = {})
|
7
7
|
@nsbinding = {}
|
8
8
|
# Reverse namespace binding
|
9
|
-
@
|
9
|
+
@uri_binding = {}
|
10
10
|
|
11
11
|
@identifier = identifier || BNode.new
|
12
12
|
end
|
@@ -34,18 +34,21 @@ module RdfContext
|
|
34
34
|
|
35
35
|
# Bind namespace to store, returns bound namespace
|
36
36
|
def bind(namespace)
|
37
|
-
|
38
|
-
|
37
|
+
# Over-write an empty prefix
|
38
|
+
uri = namespace.uri.to_s
|
39
|
+
@uri_binding[uri] = namespace unless namespace.prefix.to_s.empty?
|
40
|
+
@uri_binding[uri] ||= namespace
|
41
|
+
@nsbinding[namespace.prefix.to_s] ||= namespace
|
39
42
|
end
|
40
43
|
|
41
44
|
# Namespace for prefix
|
42
45
|
def namespace(prefix)
|
43
|
-
@nsbinding[prefix]
|
46
|
+
@nsbinding[prefix.to_s]
|
44
47
|
end
|
45
48
|
|
46
49
|
# Prefix for namespace
|
47
50
|
def prefix(namespace)
|
48
|
-
namespace.is_a?(Namespace) ? @
|
51
|
+
namespace.is_a?(Namespace) ? @uri_binding[namespace.uri.to_s].prefix : @uri_binding[namespace].prefix
|
49
52
|
end
|
50
53
|
|
51
54
|
# Get all BNodes with usage count used within graph
|
@@ -74,7 +74,7 @@ module RdfContext
|
|
74
74
|
oi = resource_to_int(triple.object) || gen_key(triple.object)
|
75
75
|
ci = resource_to_int(context) || gen_key(context)
|
76
76
|
|
77
|
-
|
77
|
+
puts "add: #{si}, #{pi}, #{oi}, #{ci}" if $DEBUG
|
78
78
|
set_nested_index(@cspo, ci, si, pi, oi)
|
79
79
|
set_nested_index(@cpos, ci, pi, oi, si)
|
80
80
|
set_nested_index(@cosp, ci, oi, si, pi)
|
data/lib/rdf_context/triple.rb
CHANGED
@@ -36,16 +36,17 @@ module RdfContext
|
|
36
36
|
@patern
|
37
37
|
end
|
38
38
|
|
39
|
-
# Serialize Triple to
|
40
|
-
def
|
39
|
+
# Serialize Triple to N3
|
40
|
+
def to_n3
|
41
41
|
raise RdfException.new("Can't serialize patern triple") if is_patern?
|
42
42
|
@subject.to_ntriples + " " + @predicate.to_ntriples + " " + @object.to_ntriples + " ."
|
43
43
|
end
|
44
|
+
alias_method :to_ntriples, :to_n3
|
44
45
|
|
45
46
|
def to_s; self.to_ntriples; end
|
46
47
|
|
47
48
|
def inspect
|
48
|
-
[
|
49
|
+
"#{self.class}[#{self.to_n3}]"
|
49
50
|
end
|
50
51
|
|
51
52
|
# Is the predicate of this statment rdf:type?
|
data/lib/rdf_context/uriref.rb
CHANGED
@@ -3,6 +3,7 @@ require 'net/http'
|
|
3
3
|
module RdfContext
|
4
4
|
class URIRef
|
5
5
|
attr_accessor :uri
|
6
|
+
attr_reader :namespace
|
6
7
|
|
7
8
|
# Create a URIRef from a URI or a fragment and a URI
|
8
9
|
#
|
@@ -70,19 +71,20 @@ module RdfContext
|
|
70
71
|
@uri.to_s
|
71
72
|
end
|
72
73
|
|
73
|
-
def
|
74
|
+
def to_n3
|
74
75
|
"<" + @uri.to_s + ">"
|
75
76
|
end
|
77
|
+
alias_method :to_ntriples, :to_n3
|
76
78
|
|
77
79
|
# Output URI as QName using URI binding
|
78
80
|
def to_qname(uri_binding = {})
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
81
|
+
@namespace ||= uri_binding[self.base]
|
82
|
+
raise RdfException, "Couldn't find QName for #{@uri}" unless @namespace
|
83
|
+
"#{@namespace.prefix}:#{self.short_name}"
|
84
|
+
end
|
85
|
+
|
86
|
+
def inspect
|
87
|
+
"#{self.class}[#{self.to_n3}]"
|
86
88
|
end
|
87
89
|
|
88
90
|
# Output URI as resource reference for RDF/XML
|
data/spec/bnode_spec.rb
CHANGED
@@ -34,6 +34,16 @@ describe "Blank nodes" do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
it "should accept valid bnode identifier" do
|
38
|
+
bn = BNode.new
|
39
|
+
BNode.new(bn.to_s).should == bn
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should accept valid named bnode identifier" do
|
43
|
+
bn = BNode.new("foo")
|
44
|
+
BNode.new(bn.to_s).should == bn
|
45
|
+
end
|
46
|
+
|
37
47
|
describe "which has a blank identifier" do
|
38
48
|
subject { BNode.new("", @context) }
|
39
49
|
it "should not be the same as an anonymous identifier" do should_not == BNode.new end
|
data/spec/uriref_spec.rb
CHANGED
@@ -72,11 +72,14 @@ describe "URI References" do
|
|
72
72
|
end
|
73
73
|
|
74
74
|
it "should create QName from URI with namespace" do
|
75
|
-
|
76
|
-
|
75
|
+
ex = Namespace.new("http://example.org/foo#", "ex")
|
76
|
+
foaf = Namespace.new("http://xmlns.com/foaf/0.1/", "foaf")
|
77
|
+
|
78
|
+
uri = ex.bar
|
79
|
+
uri.to_qname(ex.uri.to_s => ex).should == "ex:bar"
|
77
80
|
|
78
|
-
uri =
|
79
|
-
uri.to_qname(
|
81
|
+
uri = foaf.knows
|
82
|
+
uri.to_qname(foaf.uri.to_s => foaf).should == "foaf:knows"
|
80
83
|
end
|
81
84
|
|
82
85
|
it "should create resource hash for RDF/XML" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf_context
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-15 00:00:00 -08:00
|
13
13
|
default_executable: rdf_context
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|