package rdf

  1. Overview
  2. Docs

Computing values in Sparql, mapping to/from RDF terms.

A value can be an error, and propagated in computations.

type error =
  1. | Type_error of value * string
    (*

    The value has not the given expected "type"

    *)
  2. | Invalid_literal of Term.literal
    (*

    Invalid literal: bad integer string for an integer, ...

    *)
  3. | Exception of exn
    (*

    To keep the original exception which resulted in an error.

    *)
and value =
  1. | Err of error
    (*

    Value is an error

    *)
  2. | Blank of string
    (*

    A blank node with its label

    *)
  3. | Iri of Iri.t
    (*

    An IRI.

    *)
  4. | String of string
    (*

    A string literal.

    *)
  5. | Int of int * Iri.t
    (*

    An integer and the original datatype IRI

    *)
  6. | Float of float
    (*

    A decimal, float or double.

    *)
  7. | Bool of bool
    (*

    A Boolean.

    *)
  8. | HexBinary of string
    (*

    Binary data in hexadecimal, in lowercase

    *)
  9. | Datetime of Term.datetime
    (*

    A datetime.

    *)
  10. | Ltrl of string * string option
    (*

    A literal string with an optional language tag.

    *)
  11. | Ltrdt of string * Iri.t
    (*

    A literal value with a specified datatype.

    *)
exception Error of error
val error : error -> 'a

Raise a Error exception with the given error.

val string_of_value : value -> string

Return a string to show the given value.

module ValueOrdered : sig ... end
module VMap : Stdlib.Map.S with type key = value

Maps over values.

module VSet : Stdlib.Set.S with type elt = value

Sets of values.

val string_of_error : error -> string

Return a human-readable message from the given error.

val iri : Iri.t -> value -> value

iri base v returns a Iri value, ensure the given value is an IRI. If it is a literal string, convert it to an IRI, eventually appending to the base IRI if the string expresses a relative IRI.

val datatype : value -> value

datatype v returns the IRI 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

Same as int but for floats.

val bool : value -> value

Same as 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

Same as string, but languge tag is kept is present (i.e. if the value is a Ltrl).

val numeric : value -> value

Try to convert the given value to an Int or else to a Float, if the value is not already Int or Float.

val of_literal : Term.literal -> value

of_literal lit returns a value from a literal term.

val of_term : Term.term -> value

of_term term returns a value from an RDF term.

val to_term : value -> Term.term

to_term v converts the given value to an RDF term. If v is Error e, then exception e is raised.