module Spira::Type

Spira::Type can be included by classes to create new property types for Spira. These types are responsible for serialization a Ruby value into an `RDF::Value`, and deserialization of an `RDF::Value` into a Ruby value.

A simple example:

class Integer

  include Spira::Type

  def self.unserialize(value)
    value.object
  end

  def self.serialize(value)
    RDF::Literal.new(value)
  end

  register_alias XSD.integer
end

This example will serialize and deserialize integers. It's included with Spira by default. It allows either of the following forms to declare an integer property on a Spira resource:

property :age, predicate: RDF::Vocab::FOAF.age, type: Integer
property :age, predicate: RDF::Vocab::FOAF.age, type: RDF::XSD.integer

`Spira::Type`s include the RDF namespace and thus have all of the base RDF vocabularies available to them without the `RDF::` prefix.

@see rdf.rubyforge.org/RDF/Value.html @see Spira::Resource

Public Class Methods

included(child) click to toggle source

Make the DSL available to a child class.

@private

# File lib/spira/type.rb, line 43
def self.included(child)
  child.extend(ClassMethods)
  Spira.type_alias(child,child)
end