rdf-rdfxml 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,16 @@
1
+ === 0.2.2
2
+ * Fix bug creating datatyped literal where datatype is a string, not an RDF::URI
3
+ * Added more XMLLiteral tests (fail, until full canonicalization working)
4
+ * Added RDF_Reader and RDF_Writer behavior expectations
5
+ * Use RDF::Writer#prefix and #prefixes implementation instead of internal version.
6
+ * Added RDF::Reader#rewind and #close, which override default behavior as stream is closed on initialization and rewinding isn't required.
7
+ * In console, load RDF.rb from parent directory, if it exists.
8
+ * Dependencies on RDF 0.2.2
9
+ * Replace String#rdf_escape with RDF::NTriples.escape
10
+ * Fixed bug in Writer where a qname was expected for sorting, but property has no qname
11
+ * Handle XMLLiteral when value is a Nokogiri node set.
12
+ * Ensure URIs are properly RDF Escaped (patch to RDF::NTriples::Writer#format_uri)
13
+
1
14
  === 0.2.1
2
15
  * Update for RDF 0.2.1
3
16
  * Writer bug fixes:
data/Rakefile CHANGED
@@ -13,10 +13,10 @@ begin
13
13
  gemspec.email = "gregg@kellogg-assoc.com"
14
14
  gemspec.homepage = "http://github.com/gkellogg/rdf-rdfxml"
15
15
  gemspec.authors = ["Gregg Kellogg"]
16
- gemspec.add_dependency('rdf', '>= 0.2.1')
16
+ gemspec.add_dependency('rdf', '>= 0.2.2')
17
17
  gemspec.add_dependency('nokogiri', '>= 1.3.3')
18
18
  gemspec.add_development_dependency('rspec')
19
- gemspec.add_development_dependency('rdf-spec', '>= 0.2.1')
19
+ gemspec.add_development_dependency('rdf-spec', '>= 0.2.2')
20
20
  gemspec.add_development_dependency('rdf-isomorphic')
21
21
  gemspec.add_development_dependency('yard')
22
22
  gemspec.extra_rdoc_files = %w(README.rdoc History.txt AUTHORS CONTRIBUTORS)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -0,0 +1,47 @@
1
+ <http://ar.to/#self> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
2
+ <http://ar.to/#self> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bendiken/foaf> .
3
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/homepage> <http://ar.to/> .
4
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/made> <http://rubygems.org/gems/rdf> .
5
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox> <mailto:arto.bendiken@gmail.com> .
6
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "a033f652c84a4d73b8c26d318c2395699dd2bdfb" .
7
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d0737cceb55eb7d740578d2db1bc0727e3ed49ce" .
8
+ <http://ar.to/#self> <http://xmlns.com/foaf/0.1/name> "Arto Bendiken" .
9
+ <http://bhuga.net/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
10
+ <http://bhuga.net/#ben> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bhuga/foaf> .
11
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/homepage> <http://bhuga.net/> .
12
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox> <mailto:blavender@gmail.com> .
13
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" .
14
+ <http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/name> "Ben Lavender" .
15
+ <http://rubygems.org/gems/rdf> <http://purl.org/dc/terms/creator> <http://ar.to/#self> .
16
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <http://ar.to/> .
17
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <http://blog.datagraph.org/> .
18
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#bug-database> <http://github.com/bendiken/rdf/issues> .
19
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Resource_Description_Framework> .
20
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Ruby_(programming_language)> .
21
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#created> "2007-10-23" .
22
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#description> "RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data."@en .
23
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://ar.to/#self> .
24
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <http://bhuga.net/#ben> .
25
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <http://ar.to/#self> .
26
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#download-page> <http://rubyforge.org/projects/rdf/> .
27
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid1 .
28
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid2 .
29
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:genid3 .
30
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#homepage> <http://rdf.rubyforge.org/> .
31
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#license> <http://creativecommons.org/licenses/publicdomain/> .
32
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <http://ar.to/#self> .
33
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#name> "RDF.rb" .
34
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#platform> "Ruby" .
35
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#shortdesc> "A Ruby library for working with Resource Description Framework (RDF) data."@en .
36
+ <http://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#vendor> <http://datagraph.org/> .
37
+ <http://rubygems.org/gems/rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://usefulinc.com/ns/doap#Project> .
38
+ <http://rubygems.org/gems/rdf> <http://xmlns.com/foaf/0.1/maker> <http://ar.to/#self> .
39
+ _:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
40
+ _:genid1 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "c69f3255ff0639543cc5edfd8116eac8df16fab8" .
41
+ _:genid1 <http://xmlns.com/foaf/0.1/name> "Hellekin O. Wolf" .
42
+ _:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
43
+ _:genid2 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "f7653fc1ac0e82ebb32f092389bd5fc728eaae12" .
44
+ _:genid2 <http://xmlns.com/foaf/0.1/name> "John Fieber" .
45
+ _:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
46
+ _:genid3 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "bedbbf2451e5beb38d59687c0460032aff92cd3c" .
47
+ _:genid3 <http://xmlns.com/foaf/0.1/name> "Pius Uzamere" .
@@ -0,0 +1,73 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <rdf:RDF xmlns="http://usefulinc.com/ns/doap#"
3
+ xmlns:log="http://www.w3.org/2000/10/swap/log#"
4
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
5
+
6
+ <Person xmlns="http://xmlns.com/foaf/0.1/"
7
+ rdf:about="#_ggenid1">
8
+ <mbox_sha1sum>c69f3255ff0639543cc5edfd8116eac8df16fab8</mbox_sha1sum>
9
+ <name>Hellekin O. Wolf</name>
10
+ </Person>
11
+
12
+ <Person xmlns="http://xmlns.com/foaf/0.1/"
13
+ rdf:about="#_ggenid3">
14
+ <mbox_sha1sum>bedbbf2451e5beb38d59687c0460032aff92cd3c</mbox_sha1sum>
15
+ <name>Pius Uzamere</name>
16
+ </Person>
17
+
18
+ <Person xmlns="http://xmlns.com/foaf/0.1/"
19
+ rdf:about="#_ggenid2">
20
+ <mbox_sha1sum>f7653fc1ac0e82ebb32f092389bd5fc728eaae12</mbox_sha1sum>
21
+ <name>John Fieber</name>
22
+ </Person>
23
+
24
+ <Person xmlns="http://xmlns.com/foaf/0.1/"
25
+ rdf:about="http://ar.to/#self">
26
+ <isDefinedBy xmlns="http://www.w3.org/2000/01/rdf-schema#"
27
+ rdf:resource="http://datagraph.org/bendiken/foaf"/>
28
+ <homepage rdf:resource="http://ar.to/"/>
29
+ <made rdf:resource="http://rubygems.org/gems/rdf"/>
30
+ <mbox rdf:resource="mailto:arto.bendiken@gmail.com"/>
31
+ <mbox_sha1sum>a033f652c84a4d73b8c26d318c2395699dd2bdfb</mbox_sha1sum>
32
+ <mbox_sha1sum>d0737cceb55eb7d740578d2db1bc0727e3ed49ce</mbox_sha1sum>
33
+ <name>Arto Bendiken</name>
34
+ </Person>
35
+
36
+ <Person xmlns="http://xmlns.com/foaf/0.1/"
37
+ rdf:about="http://bhuga.net/#ben">
38
+ <isDefinedBy xmlns="http://www.w3.org/2000/01/rdf-schema#"
39
+ rdf:resource="http://datagraph.org/bhuga/foaf"/>
40
+ <homepage rdf:resource="http://bhuga.net/"/>
41
+ <mbox rdf:resource="mailto:blavender@gmail.com"/>
42
+ <mbox_sha1sum>dbf45f4ffbd27b67aa84f02a6a31c144727d10af</mbox_sha1sum>
43
+ <name>Ben Lavender</name>
44
+ </Person>
45
+
46
+ <Project rdf:about="http://rubygems.org/gems/rdf">
47
+ <creator xmlns="http://purl.org/dc/terms/"
48
+ rdf:resource="http://ar.to/#self"/>
49
+ <blog rdf:resource="http://ar.to/"/>
50
+ <blog rdf:resource="http://blog.datagraph.org/"/>
51
+ <bug-database rdf:resource="http://github.com/bendiken/rdf/issues"/>
52
+ <category rdf:resource="http://dbpedia.org/resource/Resource_Description_Framework"/>
53
+ <category rdf:resource="http://dbpedia.org/resource/Ruby_(programming_language)"/>
54
+ <created>2007-10-23</created>
55
+ <description xml:lang="en">RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data.</description>
56
+ <developer rdf:resource="http://ar.to/#self"/>
57
+ <developer rdf:resource="http://bhuga.net/#ben"/>
58
+ <documenter rdf:resource="http://ar.to/#self"/>
59
+ <download-page rdf:resource="http://rubyforge.org/projects/rdf/"/>
60
+ <helper rdf:resource="#_ggenid1"/>
61
+ <helper rdf:resource="#_ggenid2"/>
62
+ <helper rdf:resource="#_ggenid3"/>
63
+ <homepage rdf:resource="http://rdf.rubyforge.org/"/>
64
+ <license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
65
+ <maintainer rdf:resource="http://ar.to/#self"/>
66
+ <name>RDF.rb</name>
67
+ <platform>Ruby</platform>
68
+ <shortdesc xml:lang="en">A Ruby library for working with Resource Description Framework (RDF) data.</shortdesc>
69
+ <vendor rdf:resource="http://datagraph.org/"/>
70
+ <maker xmlns="http://xmlns.com/foaf/0.1/"
71
+ rdf:resource="http://ar.to/#self"/>
72
+ </Project>
73
+ </rdf:RDF>
@@ -26,7 +26,6 @@ module RDF
26
26
  require 'rdf/rdfxml/patches/literal_hacks'
27
27
  require 'rdf/rdfxml/patches/nokogiri_hacks'
28
28
  require 'rdf/rdfxml/patches/qname_hacks'
29
- require 'rdf/rdfxml/patches/rdf_escape'
30
29
  require 'rdf/rdfxml/patches/uri_hacks'
31
30
  autoload :Reader, 'rdf/rdfxml/reader'
32
31
  autoload :Writer, 'rdf/rdfxml/writer'
@@ -20,8 +20,7 @@ module RDF; class Literal
20
20
  ##
21
21
  # @param [Object] value
22
22
  # @option options [String] :lexical (nil)
23
- # @option options [Hash] :namespaces (nil)
24
- # @option options [Hash] :namespaces ({})
23
+ # @option options [Hash] :namespaces ({}) Use :__default__ or "" to declare default namespace
25
24
  # @option options [Symbol] :language (nil)
26
25
  # @option options [Symbol] :library (:nokogiri, :libxml, or :rexml)
27
26
  def initialize(value, options = {})
@@ -69,7 +68,8 @@ module RDF; class Literal
69
68
  def parse_value(value, options)
70
69
  ns_hash = {}
71
70
  options[:namespaces].each_pair do |prefix, uri|
72
- attr = prefix.to_s.empty? ? "xmlns" : "xmlns:#{prefix}"
71
+ prefix = prefix == :__default__ ? "" : prefix.to_s
72
+ attr = prefix.empty? ? "xmlns" : "xmlns:#{prefix}"
73
73
  ns_hash[attr] = uri.to_s
74
74
  end
75
75
  ns_strs = []
@@ -94,10 +94,18 @@ module RDF; class Literal
94
94
 
95
95
  # Nokogiri implementations
96
96
  if defined?(::Nokogiri)
97
+ # A somewhat half-hearted attempt at C14N.
98
+ # Main problem is that it promotes all namespaces to top element, instead of demoting them
99
+ # to the required element, and does not properly order either namespaces or attributes.
100
+ #
101
+ # An open-issue in Nokogiri is to add support for C14N from the underlying libxml2 libraries.
97
102
  def parse_value_nokogiri(value, ns_strs, language)
98
- return value if value.is_a?(Nokogiri::XML::NodeSet)
99
- # Add inherited namespaces to created root element so that they're inherited to sub-elements
100
- elements = Nokogiri::XML::Document.parse("<foo #{ns_strs.join(" ")}>#{value.to_s}</foo>").root.children
103
+ elements = if value.is_a?(Nokogiri::XML::NodeSet)
104
+ value
105
+ else
106
+ # Add inherited namespaces to created root element so that they're inherited to sub-elements
107
+ Nokogiri::XML::Document.parse("<foo #{ns_strs.join(" ")}>#{value.to_s}</foo>").root.children
108
+ end
101
109
 
102
110
  elements.map do |c|
103
111
  if c.is_a?(Nokogiri::XML::Element)
@@ -110,9 +118,9 @@ module RDF; class Literal
110
118
  c[prefix] = ns.href.to_s unless c.namespaces[prefix]
111
119
  end
112
120
 
113
- # Add lanuage
121
+ # Add language
114
122
  if language && c["lang"].to_s.empty?
115
- c["xml:lang"] = language
123
+ c["xml:lang"] = language.to_s
116
124
  end
117
125
  end
118
126
  c
@@ -125,6 +133,7 @@ module RDF; class Literal
125
133
  end # Nokogiri
126
134
 
127
135
  if defined?(::LibXML)
136
+ # This should use Document#canonicalize if as and when it is available in libxml-ruby
128
137
  def parse_value_libxml(value, ns_strs, language)
129
138
  # Fixme
130
139
  end
@@ -135,6 +144,8 @@ module RDF; class Literal
135
144
  end # LibXML
136
145
 
137
146
  # REXML
147
+ # This could make use of the XMLCanonicalizer gem (http://rubygems.org/gems/XMLCanonicalizer)
148
+ # But, it hasn't been touched since 2007 and relies on log4r.
138
149
  def parse_value_rexml(value, ns_strs, language)
139
150
  # Fixme
140
151
  end
@@ -8,7 +8,7 @@ module RDF
8
8
 
9
9
  #puts "seq; #{rdf_type} #{rdf_type - [RDF.Seq, RDF.Bag, RDF.Alt]}"
10
10
  if !(rdf_type - [RDF.Seq, RDF.Bag, RDF.Alt]).empty?
11
- props.keys.select {|k| k.match(/#{RDF.to_s}_(\d)$/)}.
11
+ props.keys.select {|k| k.match(/#{RDF._}(\d)$/)}.
12
12
  sort_by {|i| i.sub(RDF._.to_s, "").to_i}.
13
13
  map {|key| props[key]}.
14
14
  flatten
@@ -15,4 +15,10 @@ module RDF
15
15
  self.class.new(result)
16
16
  end
17
17
  end
18
+
19
+ class NTriples::Writer
20
+ def format_uri(uri, options = {})
21
+ "<%s>" % escaped(uri_for(uri))
22
+ end
23
+ end
18
24
  end
@@ -141,6 +141,12 @@ module RDF::RDFXML
141
141
  end
142
142
  end
143
143
 
144
+ # No need to rewind, as parsing is done in initialize
145
+ def rewind; end
146
+
147
+ # Document closed when read in initialize
148
+ def close; end
149
+
144
150
  ##
145
151
  # Iterates the given block for each RDF statement in the input.
146
152
  #
@@ -329,9 +335,9 @@ module RDF::RDFXML
329
335
  end
330
336
 
331
337
  # Apply character transformations
332
- id = id_check(el, id.rdf_escape, nil) if id
333
- resourceAttr = resourceAttr.rdf_escape if resourceAttr
334
- nodeID = nodeID_check(el, nodeID.rdf_escape) if nodeID
338
+ id = id_check(el, RDF::NTriples.escape(id), nil) if id
339
+ resourceAttr = RDF::NTriples.escape(resourceAttr) if resourceAttr
340
+ nodeID = nodeID_check(el, RDF::NTriples.escape(nodeID)) if nodeID
335
341
 
336
342
  add_debug(child, "attrs: #{attrs.inspect}")
337
343
  add_debug(child, "datatype: #{datatype}") if datatype
@@ -354,7 +360,7 @@ module RDF::RDFXML
354
360
 
355
361
  literal_opts = {}
356
362
  if datatype
357
- literal_opts[:datatype] = datatype
363
+ literal_opts[:datatype] = RDF::URI.intern(datatype)
358
364
  else
359
365
  literal_opts[:language] = child_ec.language
360
366
  end
@@ -515,15 +521,15 @@ module RDF::RDFXML
515
521
 
516
522
  case
517
523
  when id
518
- add_debug(el, "parse_subject, id: '#{id.value.rdf_escape}'")
519
- id_check(el, id.value.rdf_escape, ec.base) # Returns URI
524
+ add_debug(el, "parse_subject, id: '#{RDF::NTriples.escape(id.value)}'")
525
+ id_check(el, RDF::NTriples.escape(id.value), ec.base) # Returns URI
520
526
  when nodeID
521
527
  # The value of rdf:nodeID must match the XML Name production
522
- nodeID = nodeID_check(el, nodeID.value.rdf_escape)
528
+ nodeID = nodeID_check(el, RDF::NTriples.escape(nodeID.value))
523
529
  add_debug(el, "parse_subject, nodeID: '#{nodeID}")
524
530
  bnode(nodeID)
525
531
  when about
526
- about = about.value.rdf_escape
532
+ about = RDF::NTriples.escape(about.value)
527
533
  add_debug(el, "parse_subject, about: '#{about}'")
528
534
  ec.base.join(about)
529
535
  else
@@ -1,7 +1,7 @@
1
1
  module RDF::RDFXML::VERSION
2
2
  MAJOR = 0
3
3
  MINOR = 2
4
- TINY = 1
4
+ TINY = 2
5
5
  EXTRA = nil
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
@@ -119,20 +119,20 @@ module RDF::RDFXML
119
119
  # Get QNames and necessary namespaces from predicates and objects
120
120
  @graph.predicates.each {|pred| add_debug("serialize pred: #{pred.inspect}"); get_qname(pred)}
121
121
  @graph.objects.each {|obj| add_debug("serialize obj: #{obj.inspect}"); get_qname(obj)}
122
- add_namespace(:rdf, RDF.to_uri)
123
- add_namespace(:xml, RDF::XML) if @base_uri || @lang
122
+ prefix(:rdf, RDF.to_uri)
123
+ prefix(:xml, RDF::XML) if @base_uri || @lang
124
124
 
125
125
  if @default_namespace
126
- add_namespace("", @default_namespace)
127
- @default_namespace_prefix = @namespaces.invert[@default_namespace]
126
+ prefix(:__default__, @default_namespace)
127
+ @default_namespace_prefix = prefixes.invert[@default_namespace]
128
128
  add_debug("def_namespace: #{@default_namespace}, prefix: #{@default_namespace_prefix}")
129
129
  end
130
130
 
131
- add_debug "\nserialize: graph namespaces: #{@namespaces.inspect}"
131
+ add_debug "\nserialize: graph namespaces: #{prefixes.inspect}"
132
132
 
133
133
  doc.root = Nokogiri::XML::Element.new("rdf:RDF", doc)
134
- @namespaces.each_pair do |p, uri|
135
- if p.to_s.empty?
134
+ prefixes.each_pair do |p, uri|
135
+ if p == :__default__
136
136
  doc.root.default_namespace = uri.to_s
137
137
  else
138
138
  doc.root.add_namespace(p.to_s, uri.to_s)
@@ -376,13 +376,13 @@ module RDF::RDFXML
376
376
  if uri.is_a?(RDF::URI)
377
377
  # Duplicate logic from URI#qname to remember namespace assigned
378
378
  if uri.qname
379
- add_namespace(uri.qname.first, uri.vocab)
379
+ prefix(uri.qname.first, uri.vocab)
380
380
  add_debug "get_qname(uri.qname): #{uri.qname.join(':')}"
381
381
  return uri.qname.join(":")
382
382
  end
383
383
 
384
384
  # No vocabulary assigned, find one from cache of created namespace URIs
385
- @namespaces.each_pair do |prefix, vocab|
385
+ prefixes.each_pair do |prefix, vocab|
386
386
  if uri.to_s.index(vocab.to_s) == 0
387
387
  uri.vocab = vocab
388
388
  local_name = uri.to_s[(vocab.to_s.length)..-1]
@@ -411,21 +411,16 @@ module RDF::RDFXML
411
411
  @tmp_ns = @tmp_ns ? @tmp_ns.succ : "ns0"
412
412
  add_debug "create namespace definition for #{uri}"
413
413
  uri.vocab = RDF::Vocabulary(base_uri)
414
- add_namespace(@tmp_ns.to_sym, uri.vocab)
414
+ prefix(@tmp_ns.to_sym, uri.vocab)
415
415
  add_debug "get_qname(tmp_ns): #{@tmp_ns}:#{local_name}"
416
416
  return "#{@tmp_ns}:#{local_name}"
417
417
  end
418
418
  end
419
419
 
420
- def add_namespace(prefix, ns)
421
- add_debug "add_namespace: '#{prefix}', <#{ns}>"
422
- @namespaces[prefix.to_s] = ns.to_s
423
- end
424
-
425
420
  def reset
426
421
  @depth = 0
427
422
  @lists = {}
428
- @namespaces = {}
423
+ prefixes = {}
429
424
  @references = {}
430
425
  @serialized = {}
431
426
  @subjects = {}
@@ -437,8 +432,8 @@ module RDF::RDFXML
437
432
  def sort_properties(properties)
438
433
  properties.keys.each do |k|
439
434
  properties[k] = properties[k].sort do |a, b|
440
- a_li = a.is_a?(RDF::URI) && a.qname.last =~ /^_\d+$/ ? a.to_i : a.to_s
441
- b_li = b.is_a?(RDF::URI) && b.qname.last =~ /^_\d+$/ ? b.to_i : b.to_s
435
+ a_li = a.is_a?(RDF::URI) && a.qname && a.qname.last =~ /^_\d+$/ ? a.to_i : a.to_s
436
+ b_li = b.is_a?(RDF::URI) && b.qname && b.qname.last =~ /^_\d+$/ ? b.to_i : b.to_s
442
437
 
443
438
  a_li <=> b_li
444
439
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rdf-rdfxml}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gregg Kellogg"]
12
- s.date = %q{2010-06-28}
12
+ s.date = %q{2010-08-03}
13
13
  s.description = %q{ RDF::RDFXML is an RDF/XML reader and writer for Ruby using the RDF.rb library suite.
14
14
  }
15
15
  s.email = %q{gregg@kellogg-assoc.com}
@@ -28,6 +28,8 @@ Gem::Specification.new do |s|
28
28
  "README.rdoc",
29
29
  "Rakefile",
30
30
  "VERSION",
31
+ "etc/doap.nt",
32
+ "etc/doap.xml",
31
33
  "example.rb",
32
34
  "lib/rdf/rdfxml.rb",
33
35
  "lib/rdf/rdfxml/format.rb",
@@ -36,7 +38,6 @@ Gem::Specification.new do |s|
36
38
  "lib/rdf/rdfxml/patches/literal_hacks.rb",
37
39
  "lib/rdf/rdfxml/patches/nokogiri_hacks.rb",
38
40
  "lib/rdf/rdfxml/patches/qname_hacks.rb",
39
- "lib/rdf/rdfxml/patches/rdf_escape.rb",
40
41
  "lib/rdf/rdfxml/patches/seq.rb",
41
42
  "lib/rdf/rdfxml/patches/uri_hacks.rb",
42
43
  "lib/rdf/rdfxml/reader.rb",
@@ -45,11 +46,11 @@ Gem::Specification.new do |s|
45
46
  "lib/rdf/rdfxml/writer.rb",
46
47
  "rdf-rdfxml.gemspec",
47
48
  "script/console",
49
+ "script/parse",
48
50
  "spec/format_spec.rb",
49
51
  "spec/graph_spec.rb",
50
52
  "spec/literal_spec.rb",
51
53
  "spec/matchers.rb",
52
- "spec/rdf_escape_spec.rb",
53
54
  "spec/rdf_helper.rb",
54
55
  "spec/rdf_tests/cc197bad-dc9c-440d-a5b5-d52ba2e14234.nt",
55
56
  "spec/rdf_tests/cc197bad-dc9c-440d-a5b5-d52ba2e14234.rdf",
@@ -419,14 +420,14 @@ Gem::Specification.new do |s|
419
420
  s.homepage = %q{http://github.com/gkellogg/rdf-rdfxml}
420
421
  s.rdoc_options = ["--charset=UTF-8"]
421
422
  s.require_paths = ["lib"]
422
- s.rubygems_version = %q{1.3.6}
423
+ s.rubygems_version = %q{1.3.7}
423
424
  s.summary = %q{RDF/XML reader/writer for RDF.rb.}
424
425
  s.test_files = [
425
426
  "spec/format_spec.rb",
426
427
  "spec/graph_spec.rb",
427
428
  "spec/literal_spec.rb",
428
429
  "spec/matchers.rb",
429
- "spec/rdf_escape_spec.rb",
430
+ "spec/rdf-iso-falure.rb",
430
431
  "spec/rdf_helper.rb",
431
432
  "spec/reader_spec.rb",
432
433
  "spec/spec_helper.rb",
@@ -438,26 +439,26 @@ Gem::Specification.new do |s|
438
439
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
439
440
  s.specification_version = 3
440
441
 
441
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
442
- s.add_runtime_dependency(%q<rdf>, [">= 0.2.1"])
442
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
443
+ s.add_runtime_dependency(%q<rdf>, [">= 0.2.2"])
443
444
  s.add_runtime_dependency(%q<nokogiri>, [">= 1.3.3"])
444
445
  s.add_development_dependency(%q<rspec>, [">= 0"])
445
- s.add_development_dependency(%q<rdf-spec>, [">= 0.2.1"])
446
+ s.add_development_dependency(%q<rdf-spec>, [">= 0.2.2"])
446
447
  s.add_development_dependency(%q<rdf-isomorphic>, [">= 0"])
447
448
  s.add_development_dependency(%q<yard>, [">= 0"])
448
449
  else
449
- s.add_dependency(%q<rdf>, [">= 0.2.1"])
450
+ s.add_dependency(%q<rdf>, [">= 0.2.2"])
450
451
  s.add_dependency(%q<nokogiri>, [">= 1.3.3"])
451
452
  s.add_dependency(%q<rspec>, [">= 0"])
452
- s.add_dependency(%q<rdf-spec>, [">= 0.2.1"])
453
+ s.add_dependency(%q<rdf-spec>, [">= 0.2.2"])
453
454
  s.add_dependency(%q<rdf-isomorphic>, [">= 0"])
454
455
  s.add_dependency(%q<yard>, [">= 0"])
455
456
  end
456
457
  else
457
- s.add_dependency(%q<rdf>, [">= 0.2.1"])
458
+ s.add_dependency(%q<rdf>, [">= 0.2.2"])
458
459
  s.add_dependency(%q<nokogiri>, [">= 1.3.3"])
459
460
  s.add_dependency(%q<rspec>, [">= 0"])
460
- s.add_dependency(%q<rdf-spec>, [">= 0.2.1"])
461
+ s.add_dependency(%q<rdf-spec>, [">= 0.2.2"])
461
462
  s.add_dependency(%q<rdf-isomorphic>, [">= 0"])
462
463
  s.add_dependency(%q<yard>, [">= 0"])
463
464
  end