semantalytics / awesome-semantic-web

A curated list of various semantic web and linked data resources.
Creative Commons Zero v1.0 Universal
1.42k stars 239 forks source link

RDF reasoner #269

Closed supreme-core closed 1 month ago

supreme-core commented 1 month ago

Hello,

Love what you've done to compile the resources together on semantic web.

I am interested in finding a reasoner that works well for implicit inferences. I am not particularly impressed with RDFLib. Do you know if you came across any solid choices?

RichDijk commented 1 month ago

What is implicit reasoning? You might try Reasonable.

zacharywhitley commented 1 month ago

I was going to say the same thing, "What is implicit reasoning?" but now I have a question for you, what is Reasonable? (Terrible name if that's a reasoner. How the heck do you search for that?)

zacharywhitley commented 1 month ago

Ok, maybe that wasn't so bad https://github.com/gtfierro/reasonable

supreme-core commented 1 month ago

@RichDijk I am not sure what's the agreed technical term in the industry to describe reasoning deriving new knowledge from existing data using logical rules without having explicit facts.

Several different source was using derived, inferred and 'implicit' interchangeably.

CC @zacharywhitley

Consider the following:

:Jon rdf:type :Person .
:Mark rdf:type :Person .
:Jon :hasParent :Mark .

OWL statement

:hasParent rdfs:subPropertyOf :hasAncestor .

I want to be able to infer

:Jon :hasAncestor :Mark

The OWL statement :hasParent rdfs:subPropertyOf :hasAncestor indicates hasParent is a subproperty of hasAncestor, when referring hasParent it also means it is referring hasAncestor.

Since RDF triples did not explicit states Jon :hasAncestor :Mark, many of the RDF packages/database is not able to infer hasAncestor when there aren't explicitly stored.

This is just a simple example, it can get very complex very quickly when you are dealing with hundreds of relationships.

I am hoping to find a solid reasoner. Please recommend

Thanks

vid commented 1 month ago

@supreme-core I think the term you are looking for is 'entailment.' Here is a list summarized by chatgpt.

{{1. Apache Jena (ARQ) Supports: RDFS, OWL (partial OWL-Lite and OWL 2 RL) Details: Apache Jena is a widely used open-source framework for RDF data, including reasoning. It supports RDFS and OWL entailment through a rule-based engine. License: Apache License 2.0

  1. HermiT Supports: OWL 2 DL Details: HermiT is a reasoning engine that supports full OWL 2 DL entailment, which can be used for RDF reasoning when RDF data is described using OWL vocabularies. License: GNU Lesser General Public License (LGPL)
  2. Pellet Supports: OWL 2 DL, RDFS Details: Pellet is an open-source reasoner that provides reasoning for OWL 2 DL and RDFS entailment. It is commonly used in conjunction with RDF data and ontologies. License: GNU General Public License (GPL)
  3. RDFox (Community Edition) Supports: RDFS, OWL 2 RL, Datalog Details: RDFox has an open-source community version that provides support for RDFS and OWL 2 RL entailment and rule-based reasoning with Datalog. It is optimized for parallel reasoning over large datasets. License: GPL for community version
  4. COWL (ClioPatria) Supports: RDFS, OWL (partial) Details: ClioPatria, a SWI-Prolog-based Semantic Web framework, includes the COWL reasoner, which supports RDFS and some OWL reasoning for RDF data. License: Simplified BSD License (for ClioPatria)

All of these reasoners are open-source and support various levels of RDF entailment, with some focused on RDFS reasoning and others on more expressive OWL-based reasoning.}}

supreme-core commented 1 month ago

Hi @vid

These choices seem appropriate for further investigation.

I know I am going to throw some people off when I use "entailment". Very unique word, it's hard to forget once you hear it.

Much appreciate for the detailed response.