https://github.com/balhoff/owlrl-datalog
Experimenting with OWL RL reasoning in Souffle
https://github.com/balhoff/owlrl-datalog
Last synced: 12 months ago
JSON representation
Experimenting with OWL RL reasoning in Souffle
- Host: GitHub
- URL: https://github.com/balhoff/owlrl-datalog
- Owner: balhoff
- License: mit
- Created: 2021-09-17T17:42:31.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-01-20T22:28:36.000Z (over 2 years ago)
- Last Synced: 2025-06-09T23:06:06.591Z (about 1 year ago)
- Language: Scala
- Size: 31.6 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# owlrl-datalog
This is an implementation of reasoning rules for the [OWL RL profile](https://www.w3.org/TR/owl2-profiles/#OWL_2_RL) in [Soufflé](https://souffle-lang.github.io).
The Soufflé rules are separated into two stages:
- The [first stage](https://github.com/balhoff/owlrl-datalog/blob/master/src/datalog/owl_from_rdf.dl) parses OWL axioms out of RDF representing the ontology Tbox,
and outputs tables for each expression and axiom type.
- The [second stage](https://github.com/balhoff/owlrl-datalog/blob/master/src/datalog/owl_rl_abox.dl) inputs those tables as well as RDF representing an Abox dataset.
It outputs the inferred class assertions and object property assertions according to the Tbox.
The two stage approach allows only computing the Abox inferences for many input datasets, handling the ontology only once.
"Preparsing" the ontology also allows the Abox rules to be more efficient.
See the [Makefile](https://github.com/balhoff/owlrl-datalog/blob/master/Makefile) for examples of how to run the rules.
An [implementation that works with RDF quads](https://github.com/balhoff/owlrl-datalog/blob/master/src/datalog/owl_rl_abox_quads.dl) is also provided.