sig
  exception Invalid_rdf of string
  module SMap :
    sig
      type key = string
      type +'a t
      val empty : 'a t
      val is_empty : 'a t -> bool
      val mem : key -> 'a t -> bool
      val add : key -> '-> 'a t -> 'a t
      val singleton : key -> '-> 'a t
      val remove : key -> 'a t -> 'a t
      val merge :
        (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
      val compare : ('-> '-> int) -> 'a t -> 'a t -> int
      val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
      val iter : (key -> '-> unit) -> 'a t -> unit
      val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
      val for_all : (key -> '-> bool) -> 'a t -> bool
      val exists : (key -> '-> bool) -> 'a t -> bool
      val filter : (key -> '-> bool) -> 'a t -> 'a t
      val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
      val cardinal : 'a t -> int
      val bindings : 'a t -> (key * 'a) list
      val min_binding : 'a t -> key * 'a
      val max_binding : 'a t -> key * 'a
      val choose : 'a t -> key * 'a
      val split : key -> 'a t -> 'a t * 'a option * 'a t
      val find : key -> 'a t -> 'a
      val map : ('-> 'b) -> 'a t -> 'b t
      val mapi : (key -> '-> 'b) -> 'a t -> 'b t
    end
  type tree = E of Xmlm.tag * Rdf_xml.tree list | D of string
  type state = {
    subject : Rdf_node.node option;
    predicate : Rdf_uri.uri option;
    xml_base : Rdf_uri.uri;
    xml_lang : string option;
    datatype : Rdf_uri.uri option;
    namespaces : string Rdf_uri.Urimap.t;
  }
  type global_state = {
    blanks : Rdf_node.blank_id Rdf_xml.SMap.t;
    gnamespaces : string Rdf_uri.Urimap.t;
  }
  val get_blank_node :
    Rdf_graph.graph ->
    Rdf_xml.global_state ->
    Rdf_xml.SMap.key -> Rdf_node.node * Rdf_xml.global_state
  val input_node :
    Rdf_graph.graph ->
    Rdf_xml.state ->
    Rdf_xml.global_state -> Rdf_xml.tree -> Rdf_xml.global_state
  val input_prop :
    Rdf_graph.graph ->
    Rdf_xml.state ->
    Rdf_xml.global_state * int -> Rdf_xml.tree -> Rdf_xml.global_state * int
  val from_string : Rdf_graph.graph -> base:Rdf_uri.uri -> string -> unit
  val from_file : Rdf_graph.graph -> base:Rdf_uri.uri -> string -> unit
  val to_string :
    ?namespaces:(Rdf_uri.uri * string) list -> Rdf_graph.graph -> string
  val to_file :
    ?namespaces:(Rdf_uri.uri * string) list ->
    Rdf_graph.graph -> string -> unit
end