iq_rdf 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/iq_rdf/literal.rb +16 -5
- data/lib/iq_rdf/version.rb +1 -1
- data/test/turtle_test.rb +2 -0
- data/test/xml_test.rb +2 -0
- metadata +3 -3
data/lib/iq_rdf/literal.rb
CHANGED
@@ -16,7 +16,7 @@ module IqRdf
|
|
16
16
|
class Literal
|
17
17
|
|
18
18
|
def initialize(obj, lang = nil, datatype = nil)
|
19
|
-
raise "#{datatype.inspect} is not an URI"
|
19
|
+
raise "#{datatype.inspect} is not an URI" unless datatype.nil? || datatype.is_a?(::URI) || datatype.is_a?(IqRdf::Uri)
|
20
20
|
@obj = obj
|
21
21
|
@datatype = datatype
|
22
22
|
@lang = lang
|
@@ -36,15 +36,26 @@ module IqRdf
|
|
36
36
|
|
37
37
|
def to_s(parent_lang = nil)
|
38
38
|
lang = @lang || parent_lang # Use the Literals lang when given
|
39
|
+
lang = (lang && lang != :none) ? "@#{lang}" : ""
|
39
40
|
quote = @obj.to_s.include?("\n") ? '"""' : '"'
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
datatype = if @datatype.is_a?(::URI)
|
42
|
+
"^^<#{@datatype.to_s}>"
|
43
|
+
elsif @datatype.is_a?(IqRdf::Uri)
|
44
|
+
"^^#{@datatype.to_s}"
|
45
|
+
else
|
46
|
+
""
|
47
|
+
end
|
48
|
+
|
49
|
+
"#{quote}#{@obj.to_s.gsub("\\", "\\\\\\\\").gsub(/"/, "\\\"")}#{quote}#{lang}#{datatype}"
|
43
50
|
end
|
44
51
|
|
45
52
|
def build_xml(xml, &block)
|
46
53
|
opts = {}
|
47
|
-
|
54
|
+
if @datatype.is_a?(::URI)
|
55
|
+
opts["rdf:datatype"] = @datatype.to_s
|
56
|
+
elsif @datatype.is_a?(IqRdf::Uri)
|
57
|
+
opts["rdf:datatype"] = @datatype.full_uri
|
58
|
+
end
|
48
59
|
opts["xml:lang"] = @lang if @lang
|
49
60
|
block.call(@obj.to_s, opts)
|
50
61
|
end
|
data/lib/iq_rdf/version.rb
CHANGED
data/test/turtle_test.rb
CHANGED
@@ -137,6 +137,7 @@ rdf
|
|
137
137
|
t.married(false)
|
138
138
|
t.weight(65.8)
|
139
139
|
t.complex(IqRdf::Literal.new("A very complex type", :none, URI.parse("http://this.com/is#complex")))
|
140
|
+
t.complex2(IqRdf::Literal.new("Shorter form", :none, IqRdf::myDatatype))
|
140
141
|
t.quotes("\"I'm \\quoted\"")
|
141
142
|
t.line_breaks("I'm written\nover two lines")
|
142
143
|
t.some_literal(IqRdf::Literal.new("text", :de))
|
@@ -155,6 +156,7 @@ rdf
|
|
155
156
|
:married false;
|
156
157
|
:weight 65.8;
|
157
158
|
:complex "A very complex type"^^<http://this.com/is#complex>;
|
159
|
+
:complex2 "Shorter form"^^:myDatatype;
|
158
160
|
:quotes "\\"I'm \\\\quoted\\""@de;
|
159
161
|
:line_breaks """I'm written
|
160
162
|
over two lines"""@de;
|
data/test/xml_test.rb
CHANGED
@@ -179,6 +179,7 @@ skos:testnode :test32 [
|
|
179
179
|
t.married(false)
|
180
180
|
t.weight(65.8)
|
181
181
|
t.complex(IqRdf::Literal.new("A very complex type", :none, URI.parse("http://this.com/is#complex")))
|
182
|
+
t.complex2(IqRdf::Literal.new("Shorter form", :none, IqRdf::myDatatype))
|
182
183
|
t.quotes("\"I'm \\quoted\"")
|
183
184
|
t.line_breaks("I'm written\nover two lines")
|
184
185
|
t.some_literal(IqRdf::Literal.new("text", :de))
|
@@ -195,6 +196,7 @@ skos:testnode :test32 [
|
|
195
196
|
<married rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</married>
|
196
197
|
<weight rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">65.8</weight>
|
197
198
|
<complex rdf:datatype="http://this.com/is#complex" xml:lang="none">A very complex type</complex>
|
199
|
+
<complex2 rdf:datatype="http://www.test.de/myDatatype" xml:lang="none">Shorter form</complex2>
|
198
200
|
<quotes>"I'm \\quoted"</quotes>
|
199
201
|
<line_breaks>I'm written
|
200
202
|
over two lines</line_breaks>
|
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: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Till Schulte-Coerne
|