   (context [this] (.getContext this)))
 
 (defprotocol ISesameRDFConverter
-  (->sesame-rdf-type [this])
-  (sesame-rdf-type->type [this]))
+  (->sesame-rdf-type [this] "Convert a native type into a Sesame RDF Type")
+  (sesame-rdf-type->type [this] "Convert a Sesaem RDF Type into a Native Type"))
 
 (defn s
-  "Cast a string to an RDF literal"
+  "Cast a string to an RDF literal.  The second optional argument can
+  either be a keyword corresponding to an RDF language tag
+  e.g. :en, :en-gb, or :fr or a string or URI in which case it is
+  assumed to be a URI identifying the RDF type of the literal."
   ([str]
      {:pre [(string? str)]}
      (reify Object

  (evaluate [this]
    (.execute this)))

(defn ->connection [repo]
  (if (instance? RepositoryConnection repo)
    repo
    (.getConnection repo)))

(defn prepare-query
  ([repo sparql-string] (prepare-query repo sparql-string nil))
  ([repo sparql-string dataset]
     (let [conn (->connection repo)]

  (let [dataset (mapply make-restricted-dataset (or options {}))]
    (query-dataset repo sparql dataset)))

(defn ^:no-doc format->parser
  "Convert a format into a sesame parser for that format."
  [format]
  (let [table {RDFFormat/NTRIPLES NTriplesParserFactory
               RDFFormat/TRIX TriXParserFactory
               RDFFormat/TRIG TriGParserFactory
