I am learning Apache Jena and looking for advice. Please correct me if I am
speaking incorrectly about these components and suggestions for additional
learning resources are VERY welcome.

I am developing a RESTful Java web application that uses Apache Jena as a
data store with custom inference rules. Basically, external applications
will send data to my application, my application will onboard the data,
have Jena do some inference with custom rules, and then provide inferred
data back to the external applications.

I've been very happy with a proof of concept that involves running Jena in
memory only, loading my ontology, adding triples through .addLiteral and
.addProperty calls on Resources. The inference is working well and I am
able to provide basic inferred data back through .listStatements calls.

The time has come to bring persistence and SPARQL into the mix. I'd like to
have a persistent triple store that my RESTful java web app can interface
with and I would also like to expose the nice Fuseki web interface for
power users and my own debugging purposes. From reading the documentation,
it seems like the way to do that is have Fuseki manage the TDB2 store and
both the Fuseki web app and my web app use a single Fuseki instance as the
single point of contact so that there is no problem with multi-threaded
access to the TDB2 store.

Here are some questions:

1. Can I use the Fuseki web application as the interface point for my web
application?

2. How should I connect my web application to the Fuseki instance? Should I
use RDFConnection or ARQ? Or do I need to use a RESTful client in my web
app to connect to Fuseki?

3. If I want to pull the Fuseki web application out in the future, is it a
significant challenge to switch over to Fuseki as a service? Any design
choices I should make to prepare for this potential direction?

Thanks in advance!

Ken

Reply via email to