activerdf 1.3 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == activerdf (1.3.1) Mon, 19 Feb 2007 17:04:57 +0000
2
+ * fixed type-checking bug in query.rb
3
+ * added language support to literals
4
+
1
5
  == activerdf (1.3) Sun, 18 Feb 2007 15:09:35 +0000
2
6
  * added support for datatyped literals in SPARQL queries
3
7
 
@@ -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, type=nil)
13
+ def initialize(value, type_or_language=nil)
14
14
  @value = value
15
- @type = type
16
-
17
- if @type.nil?
15
+
16
+ if type_or_language.nil?
17
+ # deduce type from the given value
18
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
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 [RDFS::Resource, Symbol].include?(s.class)
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 [RDFS::Resource, Symbol].include?(s.class)
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: "1.3"
7
- date: 2007-02-18 00:00:00 +00:00
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: