activerdf 1.2.3 → 1.3
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 +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
|