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 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