I am trying to load the Clojure library for RDF clj-plaza in Clojure REPL like so:
user=> (use 'plaza.rdf.core)
nil
I have a folder named plaza, and a subfolder named rdf and the file core.clj available and as far as I can tell, Clojure REPL loads the library as it should.
Now, if I do
user=> (alter-root-rdf-ns “http://www.example.org/”)
"http://www.example.org"
And again, as far as I can tell the core.clj library is reporting as it should. Now I do
(def e (document-to-model “http://www.snee.com/rdf/elvisimp.rdf” :xml))
java.lang.IllegalArgumentException: No implementation of method: :load-stream of protocol: #’plaza.rdf.core/RDFModel found for class: nil (NO_SOURCE_FILE:2)
I get the same result if I try f.ex.
(make-triples [["http://triple1" "http://triple2" "http://triple3"]])
In the source code (core.clj) there is a method called load-stream in the protocol RDFModel
(defprotocol RDFModel
"Operations for the manipulation of RDF"
....
(load-stream [model stream format] "Load triples from a stream")
....
And load-stream is implemented
(defn document-to-model
"Adds a set of triples read from a serialized document into a model"
([stream format]
(load-stream *rdf-model* stream format)))
I can't really seem to pinpoint what is wrong here, in the source code it all seems to add up.
The (defn document-to-model ...)
snippet does not implement load-stream
; it implements a function called document-to-model
which calls load-stream
with a bunch of arguments, the first of which -- *rdf-model*
-- needs to be of a type to which the RDFModel
protocol has been extended (or which implements the protocol or the corresponding interface directly).
clj-plaza
provides two implementations of RDFModel
, in the namespaces plaza.rdf.implementations.sesame
(see (deftype SesameModel ...
, line 218 in the source) and plaza.rdf.implementations.jena
(see (deftype JenaModel ...
, line 167). require
-ing them should be enough to pull in said implementations; then you can use them with *rdf-model*
s of appropriate type.
one more step after (require... is to (init-jena-framework) or (init-sesame-framework).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With