activerdf 1.2.3 → 1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/lib/active_rdf/objectmanager/literal.rb +39 -0
- data/lib/active_rdf/queryengine/query.rb +4 -3
- data/lib/active_rdf.rb +1 -0
- data/test/objectmanager/test_literal.rb +35 -0
- metadata +4 -2
data/CHANGELOG
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'active_rdf'
|
2
|
+
|
3
|
+
# Represents an RDF literal, optionally datatyped.
|
4
|
+
# TODO: language tags
|
5
|
+
class Literal
|
6
|
+
Namespace.register :xsd, 'http://www.w3.org/2001/XMLSchema#'
|
7
|
+
|
8
|
+
attr_reader :value, :type
|
9
|
+
@value, @type = nil, nil
|
10
|
+
|
11
|
+
# Constructs literal with given datatype. If no datatype is given, automatic
|
12
|
+
# conversion from Ruby to XSD datatype is tried.
|
13
|
+
def initialize(value, type=nil)
|
14
|
+
@value = value
|
15
|
+
@type = type
|
16
|
+
|
17
|
+
if @type.nil?
|
18
|
+
@type = case value
|
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
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# returns string serialisation of literal, e.g. "test"^^xsd:string
|
32
|
+
def to_s
|
33
|
+
if type
|
34
|
+
"\"#{value}\"^^#{type.to_s}"
|
35
|
+
else
|
36
|
+
"\"value\""
|
37
|
+
end
|
38
|
+
end
|
39
|
+
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 [RDFS::Resource, Symbol].include?(s.class)
|
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 [RDFS::Resource, Symbol].include?(s.class)
|
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
|
|
@@ -157,11 +157,12 @@ class Query
|
|
157
157
|
case s
|
158
158
|
when Symbol
|
159
159
|
s
|
160
|
-
#'?' + s.to_s
|
161
160
|
when RDFS::Resource
|
162
161
|
s
|
163
162
|
when nil
|
164
163
|
nil
|
164
|
+
when Literal
|
165
|
+
s
|
165
166
|
else
|
166
167
|
'"' + s.to_s + '"'
|
167
168
|
end
|
data/lib/active_rdf.rb
CHANGED
@@ -13,6 +13,7 @@ $activerdflog.info "ActiveRDF started, logging level: #{$activerdflog.level}"
|
|
13
13
|
|
14
14
|
# load standard classes that need to be loaded at startup
|
15
15
|
require 'objectmanager/resource'
|
16
|
+
require 'objectmanager/literal'
|
16
17
|
require 'objectmanager/namespace'
|
17
18
|
require 'federation/connection_pool'
|
18
19
|
require 'queryengine/query'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Author:: Eyal Oren
|
2
|
+
# Copyright:: (c) 2005-2006
|
3
|
+
# License:: LGPL
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'active_rdf'
|
7
|
+
require "#{File.dirname(__FILE__)}/../common"
|
8
|
+
|
9
|
+
class TestLiteral < Test::Unit::TestCase
|
10
|
+
def setup
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_xsd_string
|
17
|
+
# test with explicit datatype
|
18
|
+
test = Literal.new('test', XSD::string)
|
19
|
+
assert_equal '"test"^^<http://www.w3.org/2001/XMLSchema#string>', test.to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_automatic_conversion
|
23
|
+
# infer string
|
24
|
+
test = Literal.new('test')
|
25
|
+
assert_equal '"test"^^<http://www.w3.org/2001/XMLSchema#string>', test.to_s
|
26
|
+
|
27
|
+
# infer integer
|
28
|
+
test = Literal.new(18)
|
29
|
+
assert_equal '"18"^^<http://www.w3.org/2001/XMLSchema#integer>', test.to_s
|
30
|
+
|
31
|
+
# infer boolean
|
32
|
+
test = Literal.new(true)
|
33
|
+
assert_equal '"true"^^<http://www.w3.org/2001/XMLSchema#boolean>', test.to_s
|
34
|
+
end
|
35
|
+
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: 1.
|
7
|
-
date: 2007-02-
|
6
|
+
version: "1.3"
|
7
|
+
date: 2007-02-18 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
|
@@ -44,6 +44,7 @@ files:
|
|
44
44
|
- test/objectmanager/test_object_manager.rb
|
45
45
|
- test/objectmanager/test_resource_reading.rb
|
46
46
|
- test/objectmanager/test_resource_writing.rb
|
47
|
+
- test/objectmanager/test_literal.rb
|
47
48
|
- test/queryengine/test_query.rb
|
48
49
|
- test/queryengine/test_query2jars2.rb
|
49
50
|
- test/queryengine/test_query2sparql.rb
|
@@ -62,6 +63,7 @@ files:
|
|
62
63
|
- lib/active_rdf/objectmanager/namespace.rb
|
63
64
|
- lib/active_rdf/objectmanager/object_manager.rb
|
64
65
|
- lib/active_rdf/objectmanager/resource.rb
|
66
|
+
- lib/active_rdf/objectmanager/literal.rb
|
65
67
|
- lib/active_rdf/queryengine/query.rb
|
66
68
|
- lib/active_rdf/queryengine/query2jars2.rb
|
67
69
|
- lib/active_rdf/queryengine/query2sparql.rb
|