rdf_context 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.4.4
2
+ * Namespace usage cleanup
3
+ * When serializing graph to RDF/XML, create namespaces as necessary.
4
+ * rename bin/reddy to bin/rdf_context
5
+
1
6
  === 0.4.3
2
7
  * Coverage tests
3
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.4
@@ -7,7 +7,7 @@ class Parse
7
7
  def parse(file, base_uri)
8
8
  puts "Parse: #{file}" if $quiet
9
9
  parser = case file
10
- when /\.nt$/ then N3Parser.new
10
+ when /\.(nt|n3)$/ then N3Parser.new
11
11
  when /\.x?html/ then RdfaParser.new
12
12
  else RdfXmlParser.new
13
13
  end
@@ -119,6 +119,17 @@ module RdfContext
119
119
  )
120
120
  rdf_attrs = extended_bindings.values.inject({}) { |hash, ns| hash.merge(ns.xmlns_attr => ns.uri.to_s)}
121
121
  uri_bindings = extended_bindings.values.inject({}) { |hash, ns| hash.merge(ns.uri.to_s => ns.prefix)}
122
+
123
+ # Add bindings for predicates not already having bindings
124
+ tmp_ns = "ns0"
125
+ predicates.each do |p|
126
+ unless uri_bindings.has_key?(p.base)
127
+ uri_bindings[p.base] = tmp_ns
128
+ rdf_attrs["xmlns:#{tmp_ns}"] = p.base
129
+ tmp_ns = tmp_ns.succ
130
+ end
131
+ end
132
+
122
133
  xml.instruct!
123
134
  xml.rdf(:RDF, rdf_attrs) do
124
135
  # Add statements for each subject
@@ -2,7 +2,7 @@ require 'nokogiri'
2
2
  class Nokogiri::XML::Node
3
3
  # URI of namespace + node_name
4
4
  def uri
5
- ns = self.namespace ? self.namespace.href : XML_NS.uri.to_s
5
+ ns = self.namespace ? self.namespace.href : RdfContext::XML_NS.uri.to_s
6
6
  RdfContext::URIRef.new(ns + self.node_name)
7
7
  end
8
8
  end
@@ -484,8 +484,7 @@ module RdfContext
484
484
  raise InvalidPredicate.new(warn) if @strict
485
485
  return false
486
486
  end
487
- !CORE_SYNTAX_TERMS.include?(attr.uri.to_s) &&
488
- attr.namespace.href != XML_NS.uri.to_s
487
+ !CORE_SYNTAX_TERMS.include?(attr.uri.to_s) && attr.namespace && attr.namespace.href != XML_NS.uri.to_s
489
488
  end
490
489
 
491
490
  # Check Node Element name
@@ -36,13 +36,25 @@ module RdfContext
36
36
  return URIRef.new(input_uri, self.to_s)
37
37
  end
38
38
 
39
+ # short_name of URI for creating QNames.
40
+ # "#{base]{#short_name}}" == uri
39
41
  def short_name
40
- if @uri.fragment()
41
- return @uri.fragment()
42
+ @short_name ||= if @uri.fragment()
43
+ @uri.fragment()
42
44
  elsif @uri.path.split("/").last.class == String and @uri.path.split("/").last.length > 0
43
- return @uri.path.split("/").last
45
+ @uri.path.split("/").last
44
46
  else
45
- return false
47
+ false
48
+ end
49
+ end
50
+
51
+ # base of URI for creating QNames.
52
+ # "#{base]{#short_name}}" == uri
53
+ def base
54
+ @base ||= begin
55
+ uri_base = @uri.to_s
56
+ sn = short_name.to_s
57
+ uri_base[0, uri_base.length - sn.length]
46
58
  end
47
59
  end
48
60
 
@@ -64,13 +76,12 @@ module RdfContext
64
76
 
65
77
  # Output URI as QName using URI binding
66
78
  def to_qname(uri_binding = {})
67
- uri_base = @uri.to_s
68
- sn = short_name.to_s
69
- uri_base = uri_base[0, uri_base.length - sn.length]
79
+ sn = self.short_name
80
+ uri_base = self.base
70
81
  if uri_binding.has_key?(uri_base)
71
82
  "#{uri_binding[uri_base]}:#{sn}"
72
83
  else
73
- raise ParserException, "Couldn't find QName for #{@uri}"
84
+ raise ParserException, "Couldn't find QName for #{@uri}, base: #{uri_base}"
74
85
  end
75
86
  end
76
87
 
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.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Kellogg
@@ -9,8 +9,8 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-02 00:00:00 -08:00
13
- default_executable: reddy
12
+ date: 2010-01-03 00:00:00 -08:00
13
+ default_executable: rdf_context
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -85,7 +85,7 @@ dependencies:
85
85
  description: " RdfContext parses RDF/XML, RDFa and N3-rdf into a Graph object. It also serializes RDF/XML and N-Triples from the Graph.\n\n * Fully compliant RDF/XML parser.\n * Fully compliant XHTML/RDFa 1.0 parser.\n * N3-rdf parser\n * N-Triples and RDF/XML serializer\n * Graph serializes into RDF/XML and N-Triples.\n * ConjunctiveGraph, named Graphs and contextual storage modules.\n \n Install with 'gem install rdf_context'\n"
86
86
  email: gregg@kellogg-assoc.com
87
87
  executables:
88
- - reddy
88
+ - rdf_context
89
89
  extensions: []
90
90
 
91
91
  extra_rdoc_files:
@@ -100,7 +100,7 @@ files:
100
100
  - README.rdoc
101
101
  - Rakefile
102
102
  - VERSION
103
- - bin/reddy
103
+ - bin/rdf_context
104
104
  - lib/rdf_context.rb
105
105
  - lib/rdf_context/bnode.rb
106
106
  - lib/rdf_context/conjunctive_graph.rb