iq_rdf 0.1.13 → 0.1.14

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.
@@ -23,11 +23,19 @@ module IqRdf
23
23
  end
24
24
 
25
25
  def build_xml(xml)
26
- raise "XML Output won't work with full URIs as predicates yet" unless namespace.token # There is a dummy_empty_namespace without token => postfix is a full uri!
27
26
  nodes.each do |node|
28
27
  node.build_xml(xml) do |*args|
29
28
  block = args.pop if args.last.is_a?(Proc)
30
- params = namespace.token == :default ? [self.uri_postfix.to_s] : [namespace.token.to_s, self.uri_postfix.to_sym]
29
+ params = if namespace.token.nil? # Full uri
30
+ nameStartChar = "[A-Z]|_|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}]"
31
+ name = Regexp.new("^(.*?)((#{nameStartChar})(#{nameStartChar}|-|[0-9]|\u{00B7}|[\u{0300}-\u{036F}]|[\u{203F}-\u{2040}])*)$")
32
+ unless matches = name.match(self.uri_postfix.to_s)
33
+ raise "Coudln't extract namespace and postfix from URI '#{self.uri_postfix}'"
34
+ end
35
+ ["ns0", matches[2].to_sym, {"xmlns:ns0" => matches[1]}]
36
+ else
37
+ namespace.token == :default ? [self.uri_postfix.to_s] : [namespace.token.to_s, self.uri_postfix.to_sym]
38
+ end
31
39
  params += args
32
40
  params << {"xml:lang" => xml_lang} if xml_lang
33
41
  if block
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module IqRdf
16
- VERSION = "0.1.13"
16
+ VERSION = "0.1.14"
17
17
  end
data/test/xml_test.rb CHANGED
@@ -54,40 +54,40 @@ rdf
54
54
  <sometest>testvalue</sometest>
55
55
  </rdf:Description>
56
56
  rdf
57
- end
57
+ end
58
58
 
59
- def test_complex_features
60
- document = IqRdf::Document.new('http://www.umweltprobenbank.de/', :lang => :de)
59
+ def test_complex_features
60
+ document = IqRdf::Document.new('http://www.umweltprobenbank.de/', :lang => :de)
61
61
 
62
- document.namespaces :skos => 'http://www.w3.org/2008/05/skos#', :foaf => 'http://xmlns.com/foaf/0.1/', :upb => 'http://www.upb.de/'
62
+ document.namespaces :skos => 'http://www.w3.org/2008/05/skos#', :foaf => 'http://xmlns.com/foaf/0.1/', :upb => 'http://www.upb.de/'
63
63
 
64
- document << IqRdf::testemann.myCustomNote("This is an example", :lang => :en) # :testemann :myCustomNote "This is an example"@en.
64
+ document << IqRdf::testemann.myCustomNote("This is an example", :lang => :en) # :testemann :myCustomNote "This is an example"@en.
65
65
 
66
- document << IqRdf::testemann(IqRdf::Foaf::build_uri("Person")).Foaf::name("Heinz Peter Testemann", :lang => :none) # :testemann a foaf:Person; foaf:name "Heinz Peter Testemann" .
67
- document << IqRdf::testemann.Foaf::knows(IqRdf::testefrau) # :testemann foaf:knows :testefrau .
68
- document << IqRdf::testemann.Foaf::nick("Crash test dummy") # :testemann foaf:nick "Crash test dummy"@de .
66
+ document << IqRdf::testemann(IqRdf::Foaf::build_uri("Person")).Foaf::name("Heinz Peter Testemann", :lang => :none) # :testemann a foaf:Person; foaf:name "Heinz Peter Testemann" .
67
+ document << IqRdf::testemann.Foaf::knows(IqRdf::testefrau) # :testemann foaf:knows :testefrau .
68
+ document << IqRdf::testemann.Foaf::nick("Crash test dummy") # :testemann foaf:nick "Crash test dummy"@de .
69
69
 
70
- document << IqRdf::testemann.testIt([IqRdf::hello, "bla"]) # :testIt (:hallo :goodbye "bla"@de), "blubb"@de; # XML: rdf:list
70
+ document << IqRdf::testemann.testIt([IqRdf::hello, "bla"]) # :testIt (:hallo :goodbye "bla"@de), "blubb"@de; # XML: rdf:list
71
71
 
72
- ["u1023", "xkfkrl"].each do |id|
73
- document << IqRdf::Upb::build_uri(id, IqRdf::Skos::build_uri(:Concept)) do |doc| # upb:#{id} a skos:Concept;
74
- doc.Skos::prefLabel("Test", :lang => :en) # skos:prefLabel "Test"@en;
75
- doc.Skos::related(IqRdf::Rdf.anotherThing) # skos:related test:another_thing;
72
+ ["u1023", "xkfkrl"].each do |id|
73
+ document << IqRdf::Upb::build_uri(id, IqRdf::Skos::build_uri(:Concept)) do |doc| # upb:#{id} a skos:Concept;
74
+ doc.Skos::prefLabel("Test", :lang => :en) # skos:prefLabel "Test"@en;
75
+ doc.Skos::related(IqRdf::Rdf.anotherThing) # skos:related test:another_thing;
76
76
 
77
- doc.test1("bla") # :test1 "bla"@de;
78
- doc.testIt(:hello, :goodbye, "bla") # :testIt :hallo, :goodbye, "bla"@de;
79
- doc.anotherTest(URI.parse("http://www.test.de/foo")) # :anotherTest <http://www.test.de/foo>;
77
+ doc.test1("bla") # :test1 "bla"@de;
78
+ doc.testIt(:hello, :goodbye, "bla") # :testIt :hallo, :goodbye, "bla"@de;
79
+ doc.anotherTest(URI.parse("http://www.test.de/foo")) # :anotherTest <http://www.test.de/foo>;
80
80
 
81
- end # .
82
- end
83
- document << IqRdf::Skos::testnode.test32 do |blank_node| # Blank nodes # skos:testnode :test32 [
84
- blank_node.title("dies ist ein test") # :title "dies ist ein test"@de;
85
- blank_node.sub do |subnode| # sub [
86
- subnode.title("blubb") # title "blubb"
87
- end # ]
81
+ end # .
82
+ end
83
+ document << IqRdf::Skos::testnode.test32 do |blank_node| # Blank nodes # skos:testnode :test32 [
84
+ blank_node.title("dies ist ein test") # :title "dies ist ein test"@de;
85
+ blank_node.sub do |subnode| # sub [
86
+ subnode.title("blubb") # title "blubb"
88
87
  end # ]
88
+ end # ]
89
89
 
90
- assert_match(<<rdf, document.to_xml)
90
+ assert_match(<<rdf, document.to_xml)
91
91
  <rdf:Description rdf:about="http://www.umweltprobenbank.de/testemann">
92
92
  <myCustomNote xml:lang="en">This is an example</myCustomNote>
93
93
  </rdf:Description>
@@ -156,27 +156,27 @@ skos:testnode :test32 [
156
156
  ]
157
157
  ].
158
158
  =end
159
+ end
160
+
161
+ def test_literals
162
+ document = IqRdf::Document.new('http://www.test.de/', :lang => :de)
163
+ document.namespaces :foaf => 'http://xmlns.com/foaf/0.1/'
164
+
165
+ document << IqRdf::testemann do |t|
166
+ t.Foaf::knows(:testefrau)
167
+ t.Foaf.nick("Testy")
168
+ t.Foaf.lastname("Testemann", :lang => :none)
169
+ t.age(32)
170
+ t.married(false)
171
+ t.weight(65.8)
172
+ t.complex(IqRdf::Literal.new("A very complex type", nil, URI.parse("http://this.com/is#complex")))
173
+ t.complex2(IqRdf::Literal.new("Shorter form", nil, IqRdf::myDatatype))
174
+ t.quotes("\"I'm \\quoted\"")
175
+ t.line_breaks("I'm written\nover two lines")
176
+ t.some_literal(IqRdf::Literal.new("text", :de))
159
177
  end
160
178
 
161
- def test_literals
162
- document = IqRdf::Document.new('http://www.test.de/', :lang => :de)
163
- document.namespaces :foaf => 'http://xmlns.com/foaf/0.1/'
164
-
165
- document << IqRdf::testemann do |t|
166
- t.Foaf::knows(:testefrau)
167
- t.Foaf.nick("Testy")
168
- t.Foaf.lastname("Testemann", :lang => :none)
169
- t.age(32)
170
- t.married(false)
171
- t.weight(65.8)
172
- t.complex(IqRdf::Literal.new("A very complex type", nil, URI.parse("http://this.com/is#complex")))
173
- t.complex2(IqRdf::Literal.new("Shorter form", nil, IqRdf::myDatatype))
174
- t.quotes("\"I'm \\quoted\"")
175
- t.line_breaks("I'm written\nover two lines")
176
- t.some_literal(IqRdf::Literal.new("text", :de))
177
- end
178
-
179
- assert_match(<<rdf, document.to_xml)
179
+ assert_match(<<rdf, document.to_xml)
180
180
  <rdf:Description rdf:about="http://www.test.de/testemann">
181
181
  <foaf:knows rdf:resource="http://www.test.de/testefrau"/>
182
182
  <foaf:nick>Testy</foaf:nick>
@@ -192,8 +192,26 @@ over two lines</line_breaks>
192
192
  <some_literal xml:lang="de">text</some_literal>
193
193
  </rdf:Description>
194
194
  rdf
195
+ end
196
+
197
+ def test_full_uri_predicates
198
+ assert_raise RuntimeError do
199
+ document = IqRdf::Document.new('http://www.test.de/')
200
+ document << IqRdf::testemann.build_full_uri_predicate(URI.parse("http://www.test.org/12"), 42)
201
+ document.to_xml
195
202
  end
196
203
 
204
+ document = IqRdf::Document.new('http://www.test.de/')
205
+
206
+ document << IqRdf::testemann.build_full_uri_predicate(URI.parse("http://www.test.org/hoho"), 42)
207
+
208
+ assert_match(<<-rdf, document.to_xml)
209
+ <rdf:Description rdf:about="http://www.test.de/testemann">
210
+ <ns0:hoho xmlns:ns0="http://www.test.org/" rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">42</ns0:hoho>
211
+ </rdf:Description>
212
+ rdf
213
+ end
214
+
197
215
  def test_blank_nodes
198
216
  document = IqRdf::Document.new('http://www.test.de/')
199
217
 
@@ -204,7 +222,7 @@ rdf
204
222
  subnode.title("blubb") # title "blubb"
205
223
  end # ]
206
224
  end # ]
207
- assert_match(<<rdf, document.to_xml)
225
+ assert_match(<<-rdf, document.to_xml)
208
226
  <rdf:Description rdf:about=\"http://www.test.de/testnode\">
209
227
  <test32>
210
228
  <rdf:Description>
@@ -218,7 +236,7 @@ rdf
218
236
  </rdf:Description>
219
237
  </test32>
220
238
  </rdf:Description>
221
- rdf
239
+ rdf
222
240
  end
223
241
 
224
- end
242
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iq_rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-02 00:00:00.000000000 Z
12
+ date: 2014-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -106,18 +106,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
106
  - - ! '>='
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
- segments:
110
- - 0
111
- hash: -3899584830229943406
112
109
  required_rubygems_version: !ruby/object:Gem::Requirement
113
110
  none: false
114
111
  requirements:
115
112
  - - ! '>='
116
113
  - !ruby/object:Gem::Version
117
114
  version: '0'
118
- segments:
119
- - 0
120
- hash: -3899584830229943406
121
115
  requirements: []
122
116
  rubyforge_project:
123
117
  rubygems_version: 1.8.23
@@ -130,3 +124,4 @@ test_files:
130
124
  - test/test_helper.rb
131
125
  - test/turtle_test.rb
132
126
  - test/xml_test.rb
127
+ has_rdoc: