Module: RDF::BERT

Defined in:
lib/rdf/bert.rb,
lib/rdf/bert/server.rb,
lib/rdf/bert/client.rb,
lib/rdf/bert/version.rb

Defined Under Namespace

Modules: VERSION Classes: Client, Server

Constant Summary

DEFAULT_PORT =
8000

Class Method Summary (collapse)

Class Method Details

+ (RDF::Value) decode(data)

Parameters:

  • (String) data

Returns:



37
38
39
# File 'lib/rdf/bert.rb', line 37

def self.decode(data)
  unserialize(::BERT.decode(data))
end

+ (String) encode(value, options = {})

Parameters:

  • (String) value
  • (Hash{Symbol => Object}) options (defaults to: {})

Returns:

  • (String)


17
18
19
# File 'lib/rdf/bert.rb', line 17

def self.encode(value, options = {})
  ::BERT.encode(serialize(value, options))
end

+ (Object) serialize(value, options = {})

Parameters:

  • (Object) value
  • (Hash{Symbol => Object}) options (defaults to: {})

Returns:

  • (Object)


25
26
27
28
29
30
31
32
# File 'lib/rdf/bert.rb', line 25

def self.serialize(value, options = {})
  case value
    when nil        then nil
    when Array      then RDF::Statement(*value).to_bert
    when RDF::Value then value.to_bert
    else RDF::Literal(value, options).to_bert
  end
end

+ (RDF::Value) unserialize(value)

Parameters:

  • (Object) value

Returns:



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/rdf/bert.rb', line 44

def self.unserialize(value)
  case value
    when nil then nil
    when :f, :t, FalseClass, TrueClass, Integer, Float
      RDF::Literal(value)
    when Array, ::BERT::Tuple
      case tag = value.first
        when :3' then RDF::Statement(*value[1..3].map { |term| unserialize(term) })
        #when :'4' then RDF::Statement(*value[1..3].map { |term| unserialize(term) }, :context => unserialize(value[4])) # FIXME on Ruby 1.8
        when :?' then RDF::Query::Variable.new(value[1])
        when ::' then RDF::Node(value[1])
        when :<' then RDF::URI(value[1])
        when :"' then RDF::Literal(value[1])
        when :@' then RDF::Literal(value[1], :language => value[2])
        when :^' then RDF::Literal(value[1], :datatype => value[2])
        else value # FIXME
      end
    else
      raise ArgumentError, "invalid RDF/BERT value: #{value.inspect}"
  end
end