Is there any free owl reasoner that can reason without load all data into memory?

inference, jena, owl

Solution

If you are prepared to take a subset of OWL, there are things you can do in a stream processing fashion without loading all your RDF data in memory and which will materialise all the inferred triples.

As an example, have a look at RIOT's infer command:

- http://incubator.apache.org/jena/documentation/io/riot.html#inference

Source code here:

- https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/riotcmd/infer.java

- https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/org/openjena/riot/pipeline/inf/InferenceProcessorRDFS.java

- https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/org/openjena/riot/pipeline/inf/InferenceSetupRDFS.java

It is trivial to take RIOT's infer and run it in parallel with something like MapReduce, example is here:

- https://github.com/castagna/tdbloader4/blob/f5363fa49d16a04a362898c1a5084ade620ee81b/src/main/java/org/apache/jena/tdbloader4/InferDriver.java

Another different approach which uses MapReduce to apply the RDFS and OWL ter Horst rules and materialize all the derived statements is here:

- http://www.few.vu.nl/~jui200/webpie.html

Perhaps, you can look at the parts of OWL you are interested in and check if you can do it in a streaming fashion. If so, you can take RIOT's infer and extend it, adding the parts of OWL you are interested in. That would be a nice contribution to Apache Jena (get back in touch on the jena-dev mailing list if you want to do that).

WebPIE is a clever and interesting project, but as you can see, a bit more complex and it's a research project (with all that this implies from a long-term support and maintenance point of view). However, if it is OWL ter Horst you want/need, WebPIE would do. You could even put the effort, fork WebPIE and contribute it to an open source project, if others are interested in using it.

You might be interested to look also at Ymris (but this is currently sleeping... zzzzz):

- https://svn.apache.org/repos/asf/incubator/jena/Import/Jena-SVN/Ymris/trunk/

Problem

I use Jena and TDB to store RDF,and I want to do some inference on it.But the RDF data is big,and Jena's owl reasoner has to load all the data into memory . So I want to find one reasoner that can reason without load all data into memory,is there any one?

Original source