RDF.ex v0.7.0 RDF.Datatype behaviour View Source
A behaviour for natively supported literal datatypes.
A RDF.Datatype
implements the foundational functions for the lexical form,
the validation, conversion and canonicalization of typed RDF.Literal
s.
Link to this section Summary
Functions
Returns the RDF.Datatype
for a directly datatype IRI or the datatype IRI of a RDF.Literal
.
The IRIs of all datatypes with a RDF.Datatype
defined.
The mapping of IRIs of datatypes to their RDF.Datatype
.
All defined RDF.Datatype
modules.
Callbacks
Produces the canonical form of a RDF.Literal
.
Produces the lexical form of a value.
Casts a literal of another datatype into a literal of the datatype the function is implemented on.
Compares two RDF.Literal
s.
Converts a value into a proper native value.
Checks if the value of two RDF.Literal
s of this datatype are equal.
The IRI of the datatype.
Produces the lexical form of an invalid value of a typed Literal.
Produces the lexical form of a RDF.Literal
.
Determines if the value of a RDF.Literal
is a member of lexical value space of its datatype.
Link to this section Functions
Returns the RDF.Datatype
for a directly datatype IRI or the datatype IRI of a RDF.Literal
.
The IRIs of all datatypes with a RDF.Datatype
defined.
The mapping of IRIs of datatypes to their RDF.Datatype
.
All defined RDF.Datatype
modules.
Link to this section Callbacks
Produces the canonical form of a RDF.Literal
.
Produces the lexical form of a value.
Casts a literal of another datatype into a literal of the datatype the function is implemented on.
If the given literal is invalid or can not be converted into this datatype
nil
is returned.
compare(literal1, literal2)
View Sourcecompare(literal1 :: RDF.Literal.t(), literal2 :: RDF.Literal.t()) :: :lt | :gt | :eq | :indeterminate | nil
Compares two RDF.Literal
s.
Returns :gt
if first literal is greater than the second in terms of their datatype
and :lt
for vice versa. If the two literals are equal :eq
is returned.
For datatypes with only partial ordering :indeterminate
is returned when the
order of the given literals is not defined.
Returns nil
when the given arguments are not comparable datatypes or if one
them is invalid.
The default implementation of the _using__
macro compares the values of the
canonical/1
forms of the given literals of this datatype.
Converts a value into a proper native value.
If an invalid value is given an implementation should call super
, which
by default currently just returns nil
.
Note: If a value is valid is determined by the lexical space of the implemented
datatype, not by the Elixir semantics. For example, although 42
is a falsy value according to the Elixir semantics, this is not an element
of the lexical value space of an xsd:boolean
, so the RDF.Boolean
implementation of this datatype calls super
.
equal_value?(literal1, literal2)
View Sourceequal_value?(literal1 :: RDF.Literal.t(), literal2 :: RDF.Literal.t()) :: boolean() | nil
Checks if the value of two RDF.Literal
s of this datatype are equal.
Non-RDF terms are tried to be coerced via RDF.Term.coerce/1
before comparison.
Returns nil
when the given arguments are not comparable as literals of this datatype.
The default implementation of the _using__
macro compares the values of the
canonical/1
forms of the given literals of this datatype.
The IRI of the datatype.
Produces the lexical form of an invalid value of a typed Literal.
The default implementation of the _using__
macro just returns to_string
representation of the value.
Produces the lexical form of a RDF.Literal
.
Determines if the value of a RDF.Literal
is a member of lexical value space of its datatype.