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 |