Reasoning with Fact++ in rdflib

444 views
Skip to first unread message

Evgeny

unread,
Jan 12, 2016, 10:49:46 AM1/12/16
to rdflib-dev
Fact++ is a very fast highly optimized open-source reasoner written in C++. It works with DL axioms via DIG interface. Java OWL API is internally supported, also C++ API exists (http://owl-cpp.sourceforge.net), which provides Python bindings. At this point, conceptually nothing seems to hinder usage of this reasoner with rdflib.

What do you think? Maybe someone already tried them together? Please, share your experience.

wro...@gmail.com

unread,
Sep 15, 2016, 4:17:45 AM9/15/16
to rdflib-dev, evgeny....@gmail.com
On Tuesday, January 12, 2016 at 3:49:46 PM UTC, Evgeny wrote:
> Fact++ is a very fast highly optimized open-source reasoner written in C++. It works with DL axioms via DIG interface. Java OWL API is internally supported, also C++ API exists (http://owl-cpp.sourceforge.net), which provides Python bindings. At this point, conceptually nothing seems to hinder usage of this reasoner with rdflib.
>
> What do you think? Maybe someone already tried them together? Please, share your experience.

Hi,

I want to try to integrate FaCT++ with rdflib. I have some
initial Python bindings to FaCT++.C library (C version
of FaCT++) using cffi

https://bitbucket.org/wrobell/factplusplus/src/master/factpp/

I looked at FuXi's N3RuleStore class and my understanding is that
the best way to integrate FaCT++ reasoner with rdflib is to create
appropriate rdflib store. It seems, that if persistence is required,
then two different rdflib stores have to be combined. Or is there
better solution?

Also, owl-cpp it is worth looking at, i.e.Adaptor_triple::axiom
method in ./lib/logic/factpp/adaptor_triple.cpp file. This is my
starting point at the moment.

Regards,

Artur

eugeny....@gmail.com

unread,
Sep 15, 2016, 4:07:47 PM9/15/16
to rdflib-dev, evgeny....@gmail.com, wro...@gmail.com
Hi Artur,

I don't know which solution is "right". It seems that we may not need owl-cpp library, since the IO can be handled with rdflib. Moreover there's a lack of support of different ontology formats (e.g. Turtle) in owl-cpp, so rdflib is more universal in this context. On the other hand, I'm not sure if the huge ontologies work well inside rdflib. At least from my experience they require explicit "sys.setrecursionlimit" call to be read properly. And since Fact++ is something about performance and capacity, I think, we need to be careful, not to turn rdflib in a bottleneck here. In this sense, I'd bet on owl-cpp and refuse of rdflib or may be follow your cffi idea.

I'll write you a personal email to discuss our aims.

Best,
Evgeny

Evgeny Blokhin

unread,
Dec 23, 2022, 1:51:11 PM12/23/22
to rdflib-dev
Dear colleagues and friends,

after 6 years from my initial posting I am very happy to announce the full integration of the FaCT++ reasoner with the RDFLib: https://github.com/tilde-lab/pyfactxx

To achieve that we had to upgrade the original reasoner: rewrite individuals support, present a unified access point for arbitrary SPARQL queries (thanks to Dr. Ivan Rygaev), and expose all the required C++ interfaces to RDFLib via the Coras interface (thanks to Dr. Artur Wroblewski).

Enjoy! And Merry Christmas to all of you.
EB
Reply all
Reply to author
Forward
0 new messages