Class: Literal

Inherits:
Object
  • Object
show all
Defined in:
lib/active_rdf/objectmanager/literal.rb

Overview

Represents an RDF literal, optionally datatyped. TODO: language tags

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, type_or_language = nil) ⇒ Literal

Constructs literal with given datatype. If no datatype is given, automatic conversion from Ruby to XSD datatype is tried.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/active_rdf/objectmanager/literal.rb', line 13

def initialize(value, type_or_language=nil)
  @value = value
  
  if type_or_language.nil?
    # deduce type from the given value
    @type = case value
             when String
               XSD::string
             when Date, Time, DateTime
               XSD::date
             when TrueClass, FalseClass
               XSD::boolean
             when Fixnum
               XSD::integer
      end
  elsif type_or_language[0..0] == "@"
    # a language tag has been given
    @language = type_or_language[1..type_or_language.length]
  else
    # the type_or_language was not empty and did not start with a @ so it must be a data type
    @type = type_or_language
  end  

end

Instance Attribute Details

#languageObject (readonly)

Returns the value of attribute language.



8
9
10
# File 'lib/active_rdf/objectmanager/literal.rb', line 8

def language
  @language
end

#typeObject (readonly)

Returns the value of attribute type.



8
9
10
# File 'lib/active_rdf/objectmanager/literal.rb', line 8

def type
  @type
end

#valueObject (readonly)

Returns the value of attribute value.



8
9
10
# File 'lib/active_rdf/objectmanager/literal.rb', line 8

def value
  @value
end

Instance Method Details

#to_sObject

returns string serialisation of literal, e.g. “test”^^xsd:string



39
40
41
42
43
44
45
46
47
# File 'lib/active_rdf/objectmanager/literal.rb', line 39

def to_s
  if type
    "\"#{value}\"^^#{type.to_s}"
  elsif language
    "\"#{value}\"@#{language}"
  else
    "\"value\""
  end
end