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 CHANGED
@@ -1,3 +1,6 @@
1
+ == activerdf (1.3) Sun, 18 Feb 2007 15:09:35 +0000
2
+ * added support for datatyped literals in SPARQL queries
3
+
1
4
  == activerdf (1.2.3) Wed, 14 Feb 2007 16:07:41 +0000
2
5
  * namespaced properties are first-class citizens: FOAF::name or RDFS::domain
3
6
 
@@ -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 s.respond_to?(:uri) or s.class == Symbol
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 p.respond_to?(:uri) or p.class == Symbol
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.2.3
7
- date: 2007-02-14 00:00:00 +00:00
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