Inferencing Stacks

Here are listed a series of tehcnology stacks capable of varying amounts of reasoning or inferencing given RDF data. We have tested these and supply notes on their abilities. Important here are the version numbers of stacsk' components.

Name Languages Storage Manipulation Reasoner Display Requirements to use it Status
Rdflib for python 2 Python 2.7 Memory +SPARQL endpoint rdflib 2.* OWL-RL Untested, Nicholas Car said he had this working in 2012
Rdflib for python 3 Python 3.6 Memory +SPARQL endpoint rdflib 4.2.2 OWL-RL >4 needs modification to upgrade it to use python 3 Not yet looked at
Apache Jena Fuseki 3.4.0 Accessed through web browser or command line tools TDB or Memory Jena 3.4.0 (included) Any one of Openllet 2.6.2, or Jena Rules, or Owl Inferencing Fuseki 2 openllet-distribution-2.6.2.jar is required if want to use/have relativesWithOwlInferencingAndOpenlletReasoner configuration file The following works. Query One: relativesWithOwlInferencingAndOpenlletReasoner, relatives-usingJenaRules, relativesWithOwlInferencing. Query Two: relativesWithOwlInferencingAndOpenlletReasoner, relatives-usingJenaRules. relativesWithOwlInferencing for Query Two does not give any results. This suggests that relativesWithOwlInferencingAndOpenlletReasoner and relatives-usingJenaRules is a fully functioning reasoning system but that relativesWithOwlInferencing is not.
DLEJena 1.0 (emailed to us) Java Memory Jena 2.6.4 Pellet 2.3.6 Does not work using single jar generated using IntelliJ from DLEJena1 Maven Project. Does not work using multiple jars (maven-dependency-plugin) or single jar (maven-assembly-plugin) generated from DLEJena 1.0 Maven Project using Apache Maven Does not work
DLEJena 2.0 Java Memory Jena 2.6.2 Pellet 2.0.1 Works for the examples as well as sparql query 1 and query 2, using the following jars (for DLEJena V2): owlapi-bin.jar, DLEJena.jar, Jena-2.6.2 jars,owlapi-bin-07-06-09 jars, pellet-2.0.1 jars Works for both query one and two
Openllet 2.6.2 Java Memory Jena 3.4.0 Openllet 2.6.2 Does not work using Intellij generated single jar. Apache Maven: Working with examples and sparql query 1 and query 2: output_ApacheMavenMultipleJars (made using maven-dependency-plugin). Not working: output_ApacheMavenSingleJar (made using maven-assembly-plugin) Works for both query one and two
Openllet 2.6.3 on github Galigator Java Memory Jena Openllet 2.6.3 Apache Maven: The pom.xml file in the examples folder does not compile using the maven-dependency-plugin (multiple jars) and maven-assembly-plugin (single jar), you can see the output it gives in _github\ Openllet,DLEJena2\ openllet maven\ openllet-2.6.3\ examples\ runApacheMaven-output.txt. Therefore nothing works. Does not work
Openllet 2.6.3 on mvnrepository Java Memory Jena 3.4.0 Openllet 2.6.3 Apache Maven: Working with examples and sparql query 1 and query 2: output_ApacheMaven_openllet2.6.3_mvnrepository_MultipleJars (made using maven-dependency-plugin). Not working: output_ApacheMaven_openllet2.6.3_mvnrepository_SingleJar (made using maven-assembly-plugin). Not all the examples are working but sparql including query 1 and query 2 work: output_manualJarChoice (openllet 2.6.3), which uses the jars apache-jena-3.4.0.zip openllet-distribution-2.6.3.jar owlapi-distribution-4.1.4.jar Works for both query one and two
Rdflib.js Javascript Memory rdflib 0.16.3 HTML rendered in a browser such as FireFox Does sparql but not inferencing
Python Graphite Python 2.6 and Java Memory Jena 2.6.4 (integrated/ included) Openllet JPype 0.5.4.2 Does sparql but not inferencing
EasyRDF PHP 7.2.1 TDB or Memory Uses Apache Fuseki 3.4.0 Endpoint via HTTP Gives same results as Apache Jena Fuseki
PHP Graphite PHP 7.2.1 TDB or Memory Uses Apache Fuseki 3.4.0 Endpoint via HTTP Gives same results as Apache Jena Fuseki. Does sparql CONSTRUCT queries only
Sparqllib PHP 7.2.1 TDB or Memory Uses Apache Fuseki 3.4.0 Endpoint via HTTP Gives same results as Apache Jena Fuseki
dotNetRDF Visual Studio 2017 Community Edition C#.NET Web Forms (probably also works with others) Memory (if use LeviathanQueryProcessor) or either TDB or Memory (If use an Endpoint) Option for either internal LeviathanQueryProcessor or Apache Fuseki 3.4.0 Endpoint via HTTP If use internal LeviathanQueryProcessor then it does not support OWL2 axioms, OWL ontologies and reasoning, if using endpoint then it gives same results as Apache Jena Fuseki
Ruby Ruby "2.4.1p111 2017-03-22 revision 58053 i386-mingw32" installed using rubyinstaller-2.4.1-2-x86.exe TDB or Memory Uses Apache Fuseki 3.4.0 Endpoint via HTTP Gives same results as Apache Jena Fuseki
RDF4J Java Jdk 9.0.4 If uses Apache Fuseki endpoint then TDB or Memory, if use RDF4J SpinSail ForwardChainingRDFSInferencer then in memory however I am unsure whether it is possible to store the data in a file using setDataDir Uses Apache Fuseki 3.4.0 Endpoint via HTTP, or loads a .ttl file and performs sparql queries on it SpinSail ForwardChainingRDFSInferencer if using it's own inferencing engine, otherwise determined by an Apache Fuseki endpoint Java output in a cmd.exe command prompt window or batch file redirected output commons-io-2.6.jar eclipse-rdf4j-2.2.4-onejar.jar guava-23.0.jar slf4j-api-1.7.25.jar slf4j-simple-1.7.25.jar httpcomponents-client-4.5.5 (all jars for httpcomponents client) If using it's own inferencing engine (SpinSail ForwardChainingRDFSInferencer) then gives four results for query one and no results for query two. Otherwise gives same results as Apache Jena Fuseki when using it's endpoint
Stardog Java jre1.8.0_161 64bit (but any V8 Java 64bit or 32bit should do) Turtle TTL file is converted into a database on the hard disk in the Stardog system prior to use. Unsure how much memory might be used during reasoning Stardog's own system Stardog reasoning type options are RDFS, SL, QL, RL, EL, DL, NONE Queries are done from the command prompt cmd.exe or it is possible to write a batch file to do multiple commands, or can query using a web interface Query1:11 results (DL, QL, RL, SL) with order different for DL, 4 results (EL, NONE, RDFS). Query2:7 results (DL) with two duplicates (James2,Cathy) otherwise same as EL, 5 results (EL, RL, SL) with order different for EL, 0 results (NONE, QL, RDFS)
Protégé Protege uses Java and it runs it's own Java application to do everything, no programming is required. Protege 5.2.0 comes with Java jre version 1.8.0_40 - Java SE Runtime environment build 1.8.0_40-b26 Memory, application has ability to load a .ttl or .owl file Protege has it's own system with the ability to use plugins for various reasoners Options for reasoning are through plugins for ELK 0.4.3, FaCT++ 1.6.5, HermiT 1.3.8.413, Pellet, Pellet (Incremental), None Protege's own Java application Closing "SPARQL query" tab prior to choosing and starting another reasoner. Query1 for reasoners FaCT++ 1.6.5, HermiT 1.3.8.413, Pellet, Pellet (Incremental): 11 results for Snap SPARQL Query plugin, 4 results for SPARQL query window plugin. Query1 for reasoner None: 4 results for Snap SPARQL Query plugin, 4 results for SPARQL query window plugin. Query1 for reasoner ELK 0.4.3: error for Snap SPARQL Query plugin, 4 results for SPARQL query window plugin. Query2 for reasoners FaCT++ 1.6.5, HermiT 1.3.8.413, Pellet, Pellet (Incremental): 7 results for Snap SPARQL Query plugin, 0 results for SPARQL query window plugin. Query2 for reasoner None: 0 results for Snap SPARQL Query plugin, 0 results for SPARQL query window plugin. Query2 for reasoner ELK 0.4.3: error for Snap SPARQL Query plugin, 0 results for SPARQL query window plugin. In summary what works 100% are reasoners FaCT++ 1.6.5, HermiT 1.3.8.413, Pellet, Pellet (Incremental) with Snap SPARQL Query plugin for Query1 and Query2.
NG4J and on Sourceforge Jena 2.6.2 (included) Working examples not yet created. Not working with inferencing