activerdf 1.3 → 1.3.1
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/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:
|