functor (S : Storage->
  sig
    type g = S.g
    val open_graph : ?options:(string * string) list -> Rdf_uri.uri -> g
    val graph_name : g -> Rdf_uri.uri
    val add_triple :
      g ->
      sub:Rdf_node.node -> pred:Rdf_node.node -> obj:Rdf_node.node -> unit
    val rem_triple :
      g ->
      sub:Rdf_node.node -> pred:Rdf_node.node -> obj:Rdf_node.node -> unit
    val add_triple_t : g -> Rdf_node.triple -> unit
    val rem_triple_t : g -> Rdf_node.triple -> unit
    val subjects_of :
      g -> pred:Rdf_node.node -> obj:Rdf_node.node -> Rdf_node.node list
    val predicates_of :
      g -> sub:Rdf_node.node -> obj:Rdf_node.node -> Rdf_node.node list
    val objects_of :
      g -> sub:Rdf_node.node -> pred:Rdf_node.node -> Rdf_node.node list
    val find :
      ?sub:Rdf_node.node ->
      ?pred:Rdf_node.node -> ?obj:Rdf_node.node -> g -> Rdf_node.triple list
    val exists :
      ?sub:Rdf_node.node ->
      ?pred:Rdf_node.node -> ?obj:Rdf_node.node -> g -> bool
    val exists_t : Rdf_node.triple -> g -> bool
    val subjects : g -> Rdf_node.node list
    val predicates : g -> Rdf_node.node list
    val objects : g -> Rdf_node.node list
    val transaction_start : g -> unit
    val transaction_commit : g -> unit
    val transaction_rollback : g -> unit
    val new_blank_id : g -> Rdf_node.blank_id
  end