   grafter-2.rdf.protocols
   "Abstract functions for interacting with RDF & RDF backends, such as
   RDF4j."
-  (:require [grafter.vocabularies.core :as gvc :refer [->uri]]
+  (:require [grafter.vocabularies.core :as gvc]
             [grafter.vocabularies.rdf :as rdf]
             [grafter.vocabularies.xsd :refer [xsd:boolean xsd:byte
                                               xsd:date xsd:dateTime

  [val datatype-uri]
  (->RDFLiteral (str val)
                #?(:clj  (->java-uri datatype-uri)
                   :cljs (->cljs-uri datatype-uri))))

(extend-protocol IRawValue
  #?@(:clj


#?(:cljs
   (defprotocol IURIable
     ;; TODO consider adding this to CLJ side for extra portabiltiy
     (->uri [url] "Convert into a grafter.vocabularies.core/URI")))

#?(:cljs
   (extend-protocol IURIable
     string
     (->uri [uri]
       (gvc/->uri uri))

     gvc/URI
     (->uri [uri]
       uri)

     goog/Uri
     (->uri [uri]
       (->uri (.toString uri)))))

(defprotocol IStatement
