activerdf 1.3 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/lib/active_rdf/objectmanager/literal.rb +25 -16
- data/lib/active_rdf/queryengine/query.rb +2 -2
- data/test/objectmanager/test_literal.rb +18 -0
- metadata +2 -11
data/CHANGELOG
CHANGED
@@ -5,33 +5,42 @@ require 'active_rdf'
|
|
5
5
|
class Literal
|
6
6
|
Namespace.register :xsd, 'http://www.w3.org/2001/XMLSchema#'
|
7
7
|
|
8
|
-
attr_reader :value, :type
|
9
|
-
@value, @type = nil, nil
|
8
|
+
attr_reader :value, :type, :language
|
9
|
+
@value, @type, @language = nil, nil, nil
|
10
10
|
|
11
11
|
# Constructs literal with given datatype. If no datatype is given, automatic
|
12
12
|
# conversion from Ruby to XSD datatype is tried.
|
13
|
-
def initialize(value,
|
13
|
+
def initialize(value, type_or_language=nil)
|
14
14
|
@value = value
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
|
16
|
+
if type_or_language.nil?
|
17
|
+
# deduce type from the given value
|
18
18
|
@type = case value
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
19
|
+
when String
|
20
|
+
XSD::string
|
21
|
+
when Date, Time, DateTime
|
22
|
+
XSD::date
|
23
|
+
when TrueClass, FalseClass
|
24
|
+
XSD::boolean
|
25
|
+
when Fixnum
|
26
|
+
XSD::integer
|
27
|
+
end
|
28
|
+
elsif type_or_language[0..0] == "@"
|
29
|
+
# a language tag has been given
|
30
|
+
@language = type_or_language[1..type_or_language.length]
|
31
|
+
else
|
32
|
+
# the type_or_language was not empty and did not start with a @ so it must be a data type
|
33
|
+
@type = type_or_language
|
34
|
+
end
|
35
|
+
|
29
36
|
end
|
30
37
|
|
31
38
|
# returns string serialisation of literal, e.g. "test"^^xsd:string
|
32
39
|
def to_s
|
33
40
|
if type
|
34
41
|
"\"#{value}\"^^#{type.to_s}"
|
42
|
+
elsif language
|
43
|
+
"\"#{value}\"@#{language}"
|
35
44
|
else
|
36
45
|
"\"value\""
|
37
46
|
end
|
@@ -95,10 +95,10 @@ class Query
|
|
95
95
|
# if you construct this query manually, you shouldn't! if your select
|
96
96
|
# variable happens to be in one of the removed clauses: tough luck.
|
97
97
|
|
98
|
-
unless
|
98
|
+
unless s.is_a?(RDFS::Resource) or s.is_a?(Symbol)
|
99
99
|
raise(ActiveRdfError, "cannot add a where clause with s #{s}: s must be a resource or a variable")
|
100
100
|
end
|
101
|
-
unless
|
101
|
+
unless p.is_a?(RDFS::Resource) or p.is_a?(Symbol)
|
102
102
|
raise(ActiveRdfError, "cannot add a where clause with p #{p}: p must be a resource or a variable")
|
103
103
|
end
|
104
104
|
|
@@ -8,6 +8,8 @@ require "#{File.dirname(__FILE__)}/../common"
|
|
8
8
|
|
9
9
|
class TestLiteral < Test::Unit::TestCase
|
10
10
|
def setup
|
11
|
+
ConnectionPool.clear
|
12
|
+
@adapter = get_read_only_adapter
|
11
13
|
end
|
12
14
|
|
13
15
|
def teardown
|
@@ -32,4 +34,20 @@ class TestLiteral < Test::Unit::TestCase
|
|
32
34
|
test = Literal.new(true)
|
33
35
|
assert_equal '"true"^^<http://www.w3.org/2001/XMLSchema#boolean>', test.to_s
|
34
36
|
end
|
37
|
+
|
38
|
+
def test_equality
|
39
|
+
test1 = Literal.new('test')
|
40
|
+
test2 = Literal.new('test', XSD::string)
|
41
|
+
assert_equal test2.to_s, test1.to_s
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_language_tag
|
45
|
+
cat = Literal.new('cat')
|
46
|
+
cat_en = Literal.new('cat', '@en')
|
47
|
+
assert_equal '"cat"@en', cat_en.to_s
|
48
|
+
assert_not_equal cat.to_s, cat_en.to_s
|
49
|
+
|
50
|
+
assert_equal '"dog"@en-GB', Literal.new('dog', '@en-GB').to_s
|
51
|
+
assert_equal '"dog"@en@test', Literal.new('dog', '@en@test').to_s
|
52
|
+
end
|
35
53
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: activerdf
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version:
|
7
|
-
date: 2007-02-
|
6
|
+
version: 1.3.1
|
7
|
+
date: 2007-02-19 00:00:00 +00:00
|
8
8
|
summary: Offers object-oriented access to RDF (with adapters to several datastores).
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -90,12 +90,3 @@ dependencies:
|
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: 0.2.1
|
92
92
|
version:
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: activerdf_sparql
|
95
|
-
version_requirement:
|
96
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
97
|
-
requirements:
|
98
|
-
- - ">"
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: 0.0.0
|
101
|
-
version:
|