iq_rdf 0.1.5 → 0.1.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/README.md +2 -2
- data/Rakefile +2 -0
- data/lib/iq_rdf/document.rb +93 -3
- data/lib/iq_rdf/namespace.rb +5 -1
- data/lib/iq_rdf/version.rb +1 -1
- data/test/ntriples_test.rb +183 -0
- data/test/turtle_test.rb +4 -4
- data/test/xml_test.rb +9 -24
- metadata +14 -12
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# IqRdf - RDF Renderering for Ruby and Rails
|
1
|
+
# IqRdf - RDF Renderering for Ruby and Rails [](http://travis-ci.org/innoq/iq_rdf)
|
2
2
|
IqRdf is a RDF renderer for Ruby and Rails. You can use it in any Ruby
|
3
|
-
environment to render Trurtle-, N-Triple- (not implemented
|
3
|
+
environment to render Trurtle-, N-Triple- (not implemented yet) or XML-RDF.
|
4
4
|
|
5
5
|
IqRdf underlays a [Builder](http://builder.rubyforge.org/)-like approach to specify
|
6
6
|
the RDF-Data by using a internal Ruby DSL. The basic Idea for specifing a triple
|
data/Rakefile
CHANGED
data/lib/iq_rdf/document.rb
CHANGED
@@ -45,9 +45,99 @@ module IqRdf
|
|
45
45
|
@nodes << node
|
46
46
|
end
|
47
47
|
|
48
|
+
def to_ntriples
|
49
|
+
rdf_type = IqRdf::Rdf::build_uri("type")
|
50
|
+
triples = []
|
51
|
+
blank_nodes = {}
|
52
|
+
|
53
|
+
# pre-declarations -- XXX: smelly!
|
54
|
+
render_triple = nil
|
55
|
+
process_subject = nil
|
56
|
+
|
57
|
+
render_blank_node = lambda do |res|
|
58
|
+
node_id = blank_nodes[res]
|
59
|
+
unless node_id
|
60
|
+
node_id = blank_nodes.count + 1
|
61
|
+
blank_nodes[res] = node_id
|
62
|
+
end
|
63
|
+
return "_:b#{node_id}"
|
64
|
+
end
|
65
|
+
|
66
|
+
process_collection = lambda do |res|
|
67
|
+
list = render_blank_node.call(res)
|
68
|
+
# inject list components
|
69
|
+
list = IqRdf::BlankNode.new
|
70
|
+
sublist = list
|
71
|
+
total = res.elements.length
|
72
|
+
res.elements.each_with_index do |current_element, i|
|
73
|
+
sublist::rdf.build_predicate("type", IqRdf::Rdf::build_uri("List")) # _:b* a rdf:List
|
74
|
+
sublist::rdf.first(current_element) # _:b* rdf:first <...>
|
75
|
+
last = i + 1 == total
|
76
|
+
unless last
|
77
|
+
new_sublist = IqRdf::BlankNode.new
|
78
|
+
sublist::rdf.rest(new_sublist) # _:b* rdf:rest _:b*
|
79
|
+
end
|
80
|
+
process_subject.call(sublist)
|
81
|
+
sublist = new_sublist
|
82
|
+
end
|
83
|
+
return render_blank_node.call(list)
|
84
|
+
end
|
85
|
+
|
86
|
+
render_resource = lambda do |res, lang| # XXX: does not belong here
|
87
|
+
if res.is_a?(IqRdf::Literal)
|
88
|
+
return res.to_s(lang)
|
89
|
+
elsif res.is_a?(IqRdf::BlankNode)
|
90
|
+
return render_blank_node.call(res)
|
91
|
+
elsif res.is_a?(IqRdf::Collection)
|
92
|
+
return process_collection.call(res)
|
93
|
+
else
|
94
|
+
return "<#{res.full_uri}>"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
render_triple = lambda do |(sbj, prd, obj), lang| # XXX: language handling is weird!? -- XXX: does not belong here
|
99
|
+
triple = [sbj, prd, obj].map { |res| render_resource.call(res, lang) }
|
100
|
+
return "#{triple.join(" ")} ."
|
101
|
+
end
|
102
|
+
|
103
|
+
process_subject = lambda do |sbj, &block| # XXX: does not belong here
|
104
|
+
if (sbj.rdf_type rescue false) # XXX: `rescue` a hack for blank nodes
|
105
|
+
lang = sbj.lang || @document_language # XXX: cargo-culted
|
106
|
+
triples << render_triple.call([sbj, rdf_type, sbj.rdf_type], lang)
|
107
|
+
end
|
108
|
+
|
109
|
+
sbj.nodes.each do |prd|
|
110
|
+
lang = prd.lang || sbj.lang || @document_language # XXX: cargo-culted
|
111
|
+
prd.nodes.each do |obj|
|
112
|
+
triple = [sbj, prd, obj]
|
113
|
+
triples << render_triple.call(triple, lang)
|
114
|
+
block.call(triple) if block
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
process_blank_node = lambda do |(sbj, prd, obj), current_res|
|
120
|
+
[sbj, obj].
|
121
|
+
select { |res| res.is_a?(IqRdf::BlankNode) && res != current_res }.
|
122
|
+
each do |res|
|
123
|
+
process_subject.call(res) do |(sbj, prd, obj)|
|
124
|
+
process_blank_node.call([sbj, prd, obj], res) # NB: recursion!
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
@nodes.each do |sbj|
|
130
|
+
process_subject.call(sbj) do |(sbj, prd, obj)|
|
131
|
+
process_blank_node.call([sbj, prd, obj], sbj) # XXX: special casing
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
return triples.join("\n")
|
136
|
+
end
|
137
|
+
|
48
138
|
def to_turtle
|
49
139
|
s = ""
|
50
|
-
@namespaces.values.each do |namespace|
|
140
|
+
@namespaces.values.sort{ |n1, n2| n1.turtle_token <=> n2.turtle_token }.each do |namespace|
|
51
141
|
s << "@prefix #{namespace.turtle_token}: <#{namespace.uri_prefix}>.\n"
|
52
142
|
end
|
53
143
|
s << "\n"
|
@@ -70,9 +160,9 @@ module IqRdf
|
|
70
160
|
xml = Builder::XmlMarkup.new(:indent => 2)
|
71
161
|
xml.instruct!
|
72
162
|
opts = {}
|
73
|
-
@namespaces.values.each
|
163
|
+
@namespaces.values.each do |namespace|
|
74
164
|
opts[namespace.token == :default ? "xmlns" : "xmlns:#{namespace.token.to_s}"] = namespace.uri_prefix
|
75
|
-
|
165
|
+
end
|
76
166
|
opts["xml:lang"] = @document_language if @document_language
|
77
167
|
|
78
168
|
xml.rdf(:RDF, opts) do
|
data/lib/iq_rdf/namespace.rb
CHANGED
@@ -49,7 +49,11 @@ module IqRdf
|
|
49
49
|
|
50
50
|
def self.find_namespace_class(token)
|
51
51
|
klass_name = self.class_name(token)
|
52
|
-
IqRdf.
|
52
|
+
if IqRdf.const_defined?(klass_name) && IqRdf.const_get(klass_name) < IqRdf::Namespace # Ruby 1.9 is polluting namespaces
|
53
|
+
IqRdf.const_get(klass_name)
|
54
|
+
else
|
55
|
+
nil
|
56
|
+
end
|
53
57
|
end
|
54
58
|
|
55
59
|
def self.dummy_empty_namespace
|
data/lib/iq_rdf/version.rb
CHANGED
@@ -0,0 +1,183 @@
|
|
1
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
$LOAD_PATH << File.dirname(__FILE__)
|
16
|
+
|
17
|
+
require 'test_helper'
|
18
|
+
|
19
|
+
class NTriplesTest < Test::Unit::TestCase
|
20
|
+
|
21
|
+
def test_basics
|
22
|
+
document = IqRdf::Document.new('http://example.org/')
|
23
|
+
document.namespaces :skos => 'http://www.w3.org/2004/02/skos/core#'
|
24
|
+
document << IqRdf.foo do |node|
|
25
|
+
node.skos.related(IqRdf.bar)
|
26
|
+
end
|
27
|
+
|
28
|
+
assert_equal(<<-rdf.strip, document.to_ntriples)
|
29
|
+
<http://example.org/foo> <http://www.w3.org/2004/02/skos/core#related> <http://example.org/bar> .
|
30
|
+
rdf
|
31
|
+
|
32
|
+
document = IqRdf::Document.new('http://www.test.de/', :lang => :de)
|
33
|
+
document.namespaces :foaf => 'http://xmlns.com/foaf/0.1/'
|
34
|
+
|
35
|
+
document << IqRdf::testemann do |t|
|
36
|
+
t.Foaf::knows(IqRdf::testefrau)
|
37
|
+
t.Foaf.nick("Testy")
|
38
|
+
t.Foaf.lastname("Testemann", :lang => :none)
|
39
|
+
end
|
40
|
+
|
41
|
+
assert_equal(<<-rdf.strip, document.to_ntriples)
|
42
|
+
<http://www.test.de/testemann> <http://xmlns.com/foaf/0.1/knows> <http://www.test.de/testefrau> .
|
43
|
+
<http://www.test.de/testemann> <http://xmlns.com/foaf/0.1/nick> "Testy"@de .
|
44
|
+
<http://www.test.de/testemann> <http://xmlns.com/foaf/0.1/lastname> "Testemann" .
|
45
|
+
rdf
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_full_uri_subject
|
49
|
+
document = IqRdf::Document.new('http://www.test.de/')
|
50
|
+
|
51
|
+
document << IqRdf::build_full_uri_subject(URI.parse('http://www.xyz.de/#test'),
|
52
|
+
IqRdf::build_uri('SomeType')) do |t|
|
53
|
+
t.sometest("testvalue")
|
54
|
+
end
|
55
|
+
|
56
|
+
assert_equal(<<-rdf.strip, document.to_ntriples)
|
57
|
+
<http://www.xyz.de/#test> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.test.de/SomeType> .
|
58
|
+
<http://www.xyz.de/#test> <http://www.test.de/sometest> "testvalue" .
|
59
|
+
rdf
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_full_uri_predicate
|
63
|
+
document = IqRdf::Document.new('http://www.test.de/')
|
64
|
+
|
65
|
+
document << IqRdf::testemann.
|
66
|
+
build_full_uri_predicate(URI.parse("http://www.test.org/hoho"), 42)
|
67
|
+
|
68
|
+
assert_equal(<<-rdf.strip, document.to_ntriples)
|
69
|
+
<http://www.test.de/testemann> <http://www.test.org/hoho> 42 .
|
70
|
+
rdf
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_blank_nodes
|
74
|
+
document = IqRdf::Document.new('http://www.test.de/')
|
75
|
+
|
76
|
+
document << IqRdf::testnode.test32 do |blank_node|
|
77
|
+
blank_node.title("dies ist ein test")
|
78
|
+
blank_node.build_predicate(:test, "Another test")
|
79
|
+
blank_node.sub do |subnode|
|
80
|
+
subnode.title("blubb")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
assert_equal(<<-rdf.strip, document.to_ntriples)
|
85
|
+
<http://www.test.de/testnode> <http://www.test.de/test32> _:b1 .
|
86
|
+
_:b1 <http://www.test.de/title> "dies ist ein test" .
|
87
|
+
_:b1 <http://www.test.de/test> "Another test" .
|
88
|
+
_:b1 <http://www.test.de/sub> _:b2 .
|
89
|
+
_:b2 <http://www.test.de/title> "blubb" .
|
90
|
+
rdf
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_collections
|
94
|
+
document = IqRdf::Document.new('http://test.de/')
|
95
|
+
|
96
|
+
document << IqRdf::testemann.testIt([IqRdf::hello, IqRdf::goodbye, "bla"])
|
97
|
+
|
98
|
+
assert_equal(<<-rdf.strip, document.to_ntriples)
|
99
|
+
_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
|
100
|
+
_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://test.de/hello> .
|
101
|
+
_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 .
|
102
|
+
_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
|
103
|
+
_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://test.de/goodbye> .
|
104
|
+
_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b4 .
|
105
|
+
_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
|
106
|
+
_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "bla" .
|
107
|
+
<http://test.de/testemann> <http://test.de/testIt> _:b2 .
|
108
|
+
rdf
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_complex_features
|
112
|
+
document = IqRdf::Document.new('http://www.umweltprobenbank.de/', :lang => :de)
|
113
|
+
|
114
|
+
document.namespaces :skos => 'http://www.w3.org/2008/05/skos#',
|
115
|
+
:foaf => 'http://xmlns.com/foaf/0.1/', :upb => 'http://www.upb.de/'
|
116
|
+
|
117
|
+
document << IqRdf::testemann.myCustomNote("This is an example", :lang => :en)
|
118
|
+
document << IqRdf::testemann(IqRdf::Foaf::build_uri("Person")).
|
119
|
+
Foaf::name("Heinz Peter Testemann", :lang => :none)
|
120
|
+
document << IqRdf::testemann.Foaf::knows(IqRdf::testefrau)
|
121
|
+
document << IqRdf::testemann.Foaf::nick("Crash test dummy")
|
122
|
+
|
123
|
+
["u1023", "xkfkrl"].each do |id|
|
124
|
+
document << IqRdf::Upb::build_uri(id, IqRdf::Skos::build_uri(:Concept)) do |doc|
|
125
|
+
doc.Skos::prefLabel("Test", :lang => :en)
|
126
|
+
doc.Skos::related(IqRdf::Rdf.anotherThing)
|
127
|
+
|
128
|
+
doc.test1("bla")
|
129
|
+
doc.testIt(:hello, :goodbye, "bla")
|
130
|
+
doc.anotherTest(URI.parse("http://www.test.de/foo"))
|
131
|
+
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
document << IqRdf::Skos::testnode.test32 do |blank_node|
|
136
|
+
blank_node.title("dies ist ein test")
|
137
|
+
blank_node.sub do |subnode|
|
138
|
+
subnode.title("blubb")
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
assert_equal(<<-rdf.strip, document.to_ntriples)
|
143
|
+
<http://www.umweltprobenbank.de/testemann> <http://www.umweltprobenbank.de/myCustomNote> "This is an example"@en .
|
144
|
+
<http://www.umweltprobenbank.de/testemann> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
145
|
+
<http://www.umweltprobenbank.de/testemann> <http://xmlns.com/foaf/0.1/name> "Heinz Peter Testemann" .
|
146
|
+
<http://www.umweltprobenbank.de/testemann> <http://xmlns.com/foaf/0.1/knows> <http://www.umweltprobenbank.de/testefrau> .
|
147
|
+
<http://www.umweltprobenbank.de/testemann> <http://xmlns.com/foaf/0.1/nick> "Crash test dummy"@de .
|
148
|
+
<http://www.upb.de/u1023> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2008/05/skos#Concept> .
|
149
|
+
<http://www.upb.de/u1023> <http://www.w3.org/2008/05/skos#prefLabel> "Test"@en .
|
150
|
+
<http://www.upb.de/u1023> <http://www.w3.org/2008/05/skos#related> <http://www.w3.org/1999/02/22-rdf-syntax-ns#anotherThing> .
|
151
|
+
<http://www.upb.de/u1023> <http://www.umweltprobenbank.de/test1> "bla"@de .
|
152
|
+
<http://www.upb.de/u1023> <http://www.umweltprobenbank.de/testIt> <http://www.umweltprobenbank.de/hello> .
|
153
|
+
<http://www.upb.de/u1023> <http://www.umweltprobenbank.de/testIt> <http://www.umweltprobenbank.de/goodbye> .
|
154
|
+
<http://www.upb.de/u1023> <http://www.umweltprobenbank.de/testIt> "bla"@de .
|
155
|
+
<http://www.upb.de/u1023> <http://www.umweltprobenbank.de/anotherTest> <http://www.test.de/foo> .
|
156
|
+
<http://www.upb.de/xkfkrl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2008/05/skos#Concept> .
|
157
|
+
<http://www.upb.de/xkfkrl> <http://www.w3.org/2008/05/skos#prefLabel> "Test"@en .
|
158
|
+
<http://www.upb.de/xkfkrl> <http://www.w3.org/2008/05/skos#related> <http://www.w3.org/1999/02/22-rdf-syntax-ns#anotherThing> .
|
159
|
+
<http://www.upb.de/xkfkrl> <http://www.umweltprobenbank.de/test1> "bla"@de .
|
160
|
+
<http://www.upb.de/xkfkrl> <http://www.umweltprobenbank.de/testIt> <http://www.umweltprobenbank.de/hello> .
|
161
|
+
<http://www.upb.de/xkfkrl> <http://www.umweltprobenbank.de/testIt> <http://www.umweltprobenbank.de/goodbye> .
|
162
|
+
<http://www.upb.de/xkfkrl> <http://www.umweltprobenbank.de/testIt> "bla"@de .
|
163
|
+
<http://www.upb.de/xkfkrl> <http://www.umweltprobenbank.de/anotherTest> <http://www.test.de/foo> .
|
164
|
+
<http://www.w3.org/2008/05/skos#testnode> <http://www.umweltprobenbank.de/test32> _:b1 .
|
165
|
+
_:b1 <http://www.umweltprobenbank.de/title> "dies ist ein test"@de .
|
166
|
+
_:b1 <http://www.umweltprobenbank.de/sub> _:b2 .
|
167
|
+
_:b2 <http://www.umweltprobenbank.de/title> "blubb"@de .
|
168
|
+
rdf
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_supress_if_empty_option
|
172
|
+
document = IqRdf::Document.new('http://www.test.de/')
|
173
|
+
document.namespaces :foaf => 'http://xmlns.com/foaf/0.1/'
|
174
|
+
|
175
|
+
document << IqRdf::testemann.Foaf::knows(:suppress_if_empty => true)
|
176
|
+
document << IqRdf::testemann.Foaf::knows(nil, :suppress_if_empty => true)
|
177
|
+
document << IqRdf::testemann.Foaf::knows("", :suppress_if_empty => true)
|
178
|
+
document << IqRdf::testemann.Foaf::knows([], :suppress_if_empty => true)
|
179
|
+
|
180
|
+
assert_equal("", document.to_ntriples)
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
data/test/turtle_test.rb
CHANGED
@@ -30,8 +30,8 @@ class TurtleTest < Test::Unit::TestCase
|
|
30
30
|
|
31
31
|
assert_equal(<<rdf, document.to_turtle)
|
32
32
|
@prefix : <http://www.test.de/>.
|
33
|
-
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
34
33
|
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
34
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
35
35
|
|
36
36
|
:testemann foaf:knows :testefrau;
|
37
37
|
foaf:nick "Testy"@de;
|
@@ -92,9 +92,9 @@ rdf
|
|
92
92
|
|
93
93
|
assert_equal(<<rdf, document.to_turtle)
|
94
94
|
@prefix : <http://www.umweltprobenbank.de/>.
|
95
|
+
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
95
96
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
96
97
|
@prefix skos: <http://www.w3.org/2008/05/skos#>.
|
97
|
-
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
98
98
|
@prefix upb: <http://www.upb.de/>.
|
99
99
|
|
100
100
|
:testemann :myCustomNote "This is an example"@en.
|
@@ -146,8 +146,8 @@ rdf
|
|
146
146
|
|
147
147
|
assert_equal(<<rdf, document.to_turtle)
|
148
148
|
@prefix : <http://www.test.de/>.
|
149
|
-
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
150
149
|
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
150
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
151
151
|
|
152
152
|
:testemann foaf:knows :testefrau;
|
153
153
|
foaf:nick "Testy"@de;
|
@@ -175,8 +175,8 @@ rdf
|
|
175
175
|
document << IqRdf::testemann.Foaf::knows([], :suppress_if_empty => true)
|
176
176
|
assert_equal(<<rdf, document.to_turtle)
|
177
177
|
@prefix : <http://www.test.de/>.
|
178
|
-
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
179
178
|
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
179
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
180
180
|
|
181
181
|
rdf
|
182
182
|
end
|
data/test/xml_test.rb
CHANGED
@@ -28,15 +28,12 @@ class XmlTest < Test::Unit::TestCase
|
|
28
28
|
t.Foaf.lastname("Testemann", :lang => :none)
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
33
|
-
<rdf:RDF xmlns="http://www.test.de/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xml:lang="de">
|
31
|
+
assert_match(<<rdf, document.to_xml)
|
34
32
|
<rdf:Description rdf:about="http://www.test.de/testemann">
|
35
33
|
<foaf:knows rdf:resource="http://www.test.de/testefrau"/>
|
36
34
|
<foaf:nick>Testy</foaf:nick>
|
37
35
|
<foaf:lastname xml:lang="">Testemann</foaf:lastname>
|
38
36
|
</rdf:Description>
|
39
|
-
</rdf:RDF>
|
40
37
|
rdf
|
41
38
|
end
|
42
39
|
|
@@ -51,14 +48,11 @@ rdf
|
|
51
48
|
t.sometest("testvalue")
|
52
49
|
end
|
53
50
|
|
54
|
-
|
55
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
56
|
-
<rdf:RDF xmlns="http://www.test.de/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
51
|
+
assert_match(<<rdf, document.to_xml)
|
57
52
|
<rdf:Description rdf:about="http://www.xyz.de/#test">
|
58
53
|
<rdf:type rdf:resource="http://www.test.de/SomeType"/>
|
59
54
|
<sometest>testvalue</sometest>
|
60
55
|
</rdf:Description>
|
61
|
-
</rdf:RDF>
|
62
56
|
rdf
|
63
57
|
end
|
64
58
|
|
@@ -93,9 +87,7 @@ rdf
|
|
93
87
|
end # ]
|
94
88
|
end # ]
|
95
89
|
|
96
|
-
|
97
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
98
|
-
<rdf:RDF xmlns="http://www.umweltprobenbank.de/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:skos="http://www.w3.org/2008/05/skos#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:upb="http://www.upb.de/" xml:lang="de">
|
90
|
+
assert_match(<<rdf, document.to_xml)
|
99
91
|
<rdf:Description rdf:about="http://www.umweltprobenbank.de/testemann">
|
100
92
|
<myCustomNote xml:lang="en">This is an example</myCustomNote>
|
101
93
|
</rdf:Description>
|
@@ -154,7 +146,6 @@ rdf
|
|
154
146
|
</rdf:Description>
|
155
147
|
</test32>
|
156
148
|
</rdf:Description>
|
157
|
-
</rdf:RDF>
|
158
149
|
rdf
|
159
150
|
|
160
151
|
=begin
|
@@ -178,16 +169,14 @@ skos:testnode :test32 [
|
|
178
169
|
t.age(32)
|
179
170
|
t.married(false)
|
180
171
|
t.weight(65.8)
|
181
|
-
t.complex(IqRdf::Literal.new("A very complex type",
|
182
|
-
t.complex2(IqRdf::Literal.new("Shorter form",
|
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))
|
183
174
|
t.quotes("\"I'm \\quoted\"")
|
184
175
|
t.line_breaks("I'm written\nover two lines")
|
185
176
|
t.some_literal(IqRdf::Literal.new("text", :de))
|
186
177
|
end
|
187
178
|
|
188
|
-
|
189
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
190
|
-
<rdf:RDF xmlns="http://www.test.de/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xml:lang="de">
|
179
|
+
assert_match(<<rdf, document.to_xml)
|
191
180
|
<rdf:Description rdf:about="http://www.test.de/testemann">
|
192
181
|
<foaf:knows rdf:resource="http://www.test.de/testefrau"/>
|
193
182
|
<foaf:nick>Testy</foaf:nick>
|
@@ -195,14 +184,13 @@ skos:testnode :test32 [
|
|
195
184
|
<age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">32</age>
|
196
185
|
<married rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</married>
|
197
186
|
<weight rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">65.8</weight>
|
198
|
-
<complex rdf:datatype="http://this.com/is#complex"
|
199
|
-
<complex2 rdf:datatype="http://www.test.de/myDatatype"
|
187
|
+
<complex rdf:datatype="http://this.com/is#complex">A very complex type</complex>
|
188
|
+
<complex2 rdf:datatype="http://www.test.de/myDatatype">Shorter form</complex2>
|
200
189
|
<quotes>"I'm \\quoted"</quotes>
|
201
190
|
<line_breaks>I'm written
|
202
191
|
over two lines</line_breaks>
|
203
192
|
<some_literal xml:lang="de">text</some_literal>
|
204
193
|
</rdf:Description>
|
205
|
-
</rdf:RDF>
|
206
194
|
rdf
|
207
195
|
end
|
208
196
|
|
@@ -216,9 +204,7 @@ rdf
|
|
216
204
|
subnode.title("blubb") # title "blubb"
|
217
205
|
end # ]
|
218
206
|
end # ]
|
219
|
-
|
220
|
-
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
221
|
-
<rdf:RDF xmlns=\"http://www.test.de/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">
|
207
|
+
assert_match(<<rdf, document.to_xml)
|
222
208
|
<rdf:Description rdf:about=\"http://www.test.de/testnode\">
|
223
209
|
<test32>
|
224
210
|
<rdf:Description>
|
@@ -232,7 +218,6 @@ rdf
|
|
232
218
|
</rdf:Description>
|
233
219
|
</test32>
|
234
220
|
</rdf:Description>
|
235
|
-
</rdf:RDF>
|
236
221
|
rdf
|
237
222
|
end
|
238
223
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iq_rdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Till Schulte-Coerne
|
@@ -15,11 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-10-17 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
22
|
none: false
|
24
23
|
requirements:
|
25
24
|
- - ">="
|
@@ -28,12 +27,12 @@ dependencies:
|
|
28
27
|
segments:
|
29
28
|
- 0
|
30
29
|
version: "0"
|
31
|
-
|
32
|
-
name: bundler
|
30
|
+
requirement: *id001
|
33
31
|
type: :runtime
|
34
|
-
|
32
|
+
name: bundler
|
35
33
|
prerelease: false
|
36
|
-
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
36
|
none: false
|
38
37
|
requirements:
|
39
38
|
- - ">="
|
@@ -42,9 +41,10 @@ dependencies:
|
|
42
41
|
segments:
|
43
42
|
- 0
|
44
43
|
version: "0"
|
45
|
-
|
46
|
-
name: builder
|
44
|
+
requirement: *id002
|
47
45
|
type: :runtime
|
46
|
+
name: builder
|
47
|
+
prerelease: false
|
48
48
|
description: IqRdf - A builder like rdf library for ruby and rails
|
49
49
|
email:
|
50
50
|
- till.schulte-coerne@innoq.com
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- lib/iq_rdf.rb
|
80
80
|
- rails/init.rb
|
81
81
|
- test/iq_rdf_test.rb
|
82
|
+
- test/ntriples_test.rb
|
82
83
|
- test/test_helper.rb
|
83
84
|
- test/turtle_test.rb
|
84
85
|
- test/xml_test.rb
|
@@ -117,6 +118,7 @@ specification_version: 3
|
|
117
118
|
summary: IqRdf - A builder like rdf library for ruby and rails
|
118
119
|
test_files:
|
119
120
|
- test/iq_rdf_test.rb
|
121
|
+
- test/ntriples_test.rb
|
120
122
|
- test/test_helper.rb
|
121
123
|
- test/turtle_test.rb
|
122
124
|
- test/xml_test.rb
|