How to reason or make inferences in Neo4j?
Asked Answered
P

3

8

I created a semantic Graph in Neo4j. Is there any possibility to use an OWL reasoner in Neo4j? Or any inference engine?

Though it has been mentioned here i can't find any solution or API for this.

Thankful for any advice!

Pericarditis answered 21/6, 2017 at 14:21 Comment(0)
H
6

Maybe you want to see this: click here

I quoted this from that link:

Your main task if you want to use reasoners over a neo4j database is going to be to suck data out of neo4j, and format it as a set of RDF triples. You can then put those RDF triples into a Jena Model. When you have that jena model in memory, you can use existing jena APIs to use reasoners with that model

Harday answered 21/6, 2017 at 14:58 Comment(0)
C
2

My research in this area in progress, please watch here to see latest article draft, there is special section Inference on graph.

I'm looking on neo4j -> Prolog -> neo4j approach: (a)-[b]->(c) graph can be expressed as b(a,c) predicate, so export your .db into .pl and query in SWI Prolog for example. But the most complex thing: how to do some (direct) reasoning for backward import into neo4j.

I'm thinking about applying YieldProlog with direct traversal over neo4j db using BOLT prolotocol. I plan to add special mods for Yield method to specially process labels and attributes of graph elements, so my knowledge bases going to be described is neo4j databases by design.

Chromatolysis answered 18/9, 2017 at 12:34 Comment(0)
C
2

If you're looking for practical inference over graph data you should take a look at TypeDB, it has a reasoning engine built in. You can define your reasoning logic using rules in TypeQL.

P.S. I work for Vaticle, the company who builds TypeDB ;)

Comical answered 30/10, 2020 at 12:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.