module Rdf_dt:sig
..end
A value can be an error, and propagated in computations.
type
error =
| |
Type_error of |
(* |
The value has not the given expected "type"
| *) |
| |
Invalid_literal of |
(* |
Invalid literal: bad integer string for an integer, ...
| *) |
| |
Exception of |
(* |
To keep the original exception which resulted in an error.
| *) |
type
value =
| |
Err of |
(* |
Value is an error
| *) |
| |
Blank of |
(* |
A blank node with its label
| *) |
| |
Iri of |
(* |
An URI.
| *) |
| |
String of |
(* |
A string literal.
| *) |
| |
Int of |
(* |
An integer.
| *) |
| |
Float of |
(* |
A decimal, float or double.
| *) |
| |
Bool of |
(* |
A Boolean.
| *) |
| |
Datetime of |
(* |
A datetime.
| *) |
| |
Ltrl of |
(* |
A literal string with an optional language tag.
| *) |
| |
Ltrdt of |
(* |
A literal value with a specified datatype.
| *) |
exception Error of error
val error : error -> 'a
Rdf_dt.Error
exception with the given error.val date_fmt : string
val string_of_value : value -> string
module ValueOrdered:sig
..end
module VMap:Map.S
with type key = value
module VSet:Set.S
with type elt = value
val string_of_error : error -> string
val iri : Rdf_uri.uri -> value -> value
iri base v
returns a Iri
value, ensure the given value is
an URI. If it is a literal string, convert it to an URI, eventually
appending to the base
uri if the string expresses a relative URI.val datatype : value -> value
datatype v
returns the URI of the datatype of the value.
If v is Err
, Blank
or Iri
, return Err
.val string_literal : value -> string * string option
string_literal v
returns a pair (string, optional language tag) if
v
is String
of Ltrl
. Else return Err
.val string : value -> value
string v
returns a String
value, converting any value
to a string, except Err
and Blank
for which Err
is returned.val int : value -> value
int v
returns a Int
value, trying to convert literal values
to an integer. Return Err
if v
is Err
, Blank
or Iri
, or
if the literal value could not be converted to an integer. Floats
are truncated.val float : value -> value
Rdf_dt.int
but for floats.val bool : value -> value
Rdf_dt.int
but for booleans.
Bool true
, String "true"
, String "1"
, Int n
with n<>0
and Float f
when f
is not nan nor zero evaluate
to Bool true
.
Bool false
, String "false"
, String "0"
, Int 0
and Float f
when f
is nan
or zero evaluate to
Bool false
.
Any other value evaluates to Err
.val datetime : value -> value
datetime v
returns a Datetime
, if possible. String literals are converted if
possible; else Err
is returned.val ltrl : value -> value
val numeric : value -> value
Int
or else to a Float
,
if the value is not already Int
or Float
.val of_literal : Rdf_node.literal -> value
of_literal lit
returns a value from a literal node.val of_node : Rdf_node.node -> value
of_node node
returns a value from an RDF node.val to_node : value -> Rdf_node.node
to_node v
converts the given value to an RDF node.
If v
is Error e
, then exception e
is raised.