rdf-rdfa 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,15 @@
1
+ === 0.2.2
2
+ * Ruby 1.9.2 compatibility
3
+ * Added script/parse as command-line option for parsing files.
4
+ * Add back support for RDFa 1.0 as well as RDFa 1.1. Parser checks @version to determine which
5
+ * Update RDFa processing to WD-rdfa-core-20100803 semantics
6
+ * Added Processor Graph and required output
7
+ * Reverse order of processing profiles
8
+ * Don't process element if any profile fails
9
+ * XMLLiterals must be explicitly specified as @datatype
10
+ * TERMorCURIEorAbsURI requires an absolute URI, not document relative
11
+ * Extract a new default vocabulary from @profile.
12
+
1
13
  === 0.2.1
2
14
  * Update for RDF 0.2.1
3
15
 
@@ -7,7 +19,7 @@
7
19
  * Change use of Graph#predicates and Graph#objects to use as enumerables
8
20
 
9
21
  === 0.0.3
10
- * Removed interal graph in Reader and implement each_triple & each_statement to perform parsing
22
+ * Removed internal graph in Reader and implement each_triple & each_statement to perform parsing
11
23
 
12
24
  === 0.0.2
13
25
  * Remove dependency on Namespace
data/Rakefile CHANGED
@@ -60,7 +60,7 @@ namespace :spec do
60
60
  require 'spec/rdfa_helper'
61
61
  require 'fileutils'
62
62
 
63
- %w(xhtml html4 html5).each do |suite|
63
+ %w(xhtml xhtml11 html4 html5).each do |suite|
64
64
  yaml = manifest_file = File.join(File.dirname(__FILE__), "spec", "#{suite}-manifest.yml")
65
65
  FileUtils.rm_f(yaml)
66
66
  RdfaHelper::TestCase.to_yaml(suite, yaml)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -20,10 +20,9 @@ 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
- # @option options [Symbol] :library (:nokogiri, :libxml, or :rexml)
25
+ # @option options [:nokogiri, :libxml, or :rexml] :library
27
26
  def initialize(value, options = {})
28
27
  options[:namespaces] ||= {}
29
28
 
@@ -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
@@ -143,5 +154,5 @@ module RDF; class Literal
143
154
  # Fixme
144
155
  end
145
156
 
146
- end unless defined?(::RDF::Literal::XML)# class XML
157
+ end # class XML
147
158
  end; end
@@ -0,0 +1,16 @@
1
+ require 'nokogiri'
2
+ class Nokogiri::XML::Node
3
+ # URI of namespace + node_name
4
+ def uri
5
+ ns = self.namespace ? self.namespace.href : RDF::XML.to_s
6
+ RDF::URI.intern(ns + self.node_name)
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.display_path}@#{name}"
14
+ end
15
+ end
16
+ end
@@ -10,10 +10,15 @@ module RDF
10
10
  def join(*uris)
11
11
  result = @uri
12
12
  uris.each do |uri|
13
- # result.path += '/' unless result.path.match(/[\#\/]$/) || uri.to_s[0..0] == "#"
14
13
  result = result.join(uri)
15
14
  end
16
15
  self.class.new(result)
17
16
  end
17
+
18
+ class NTriples::Writer
19
+ def format_uri(uri, options = {})
20
+ "<%s>" % escaped(uri_for(uri))
21
+ end
22
+ end
18
23
  end
19
24
  end