The utility-tools program is a set of utilities to manage
rules. It currently provides three services:
- single-piece head decomposition
- transforms a set of rules into a
set of rules with a single-piece head. In other words, it splits rule heads as much as possible
while keeping logical equivalence and without introducing new predicates;
- atomic-head decomposition
- transforms a set of rules into a set
of atomic-head rules. This requires to introduce new predicates. The atomic-head decomposition
first performs a single-piece head decomposition to minimize the number of added predicates.
- labeler
- adds an annotation into the label of rules
when they satisfy one of the patterns below:
- CI: Concept Inclusion - B(x) :- A(x)
- RI: Role Inclusion - r(x,y) :- p(x,y)
- Inv: Inverse Role - r(y,x) :- p(x,y)
- Dom: Domain - A(x) :- p(x,y)
- Rng: Range - A(y) :- p(x,y)
- MR: Mandatory Role - p(x,y) :- A(x)
- IMR: Inverse Mandatory Role -
p(x,y) :- A(y)
- ERC: Existential quantification in rule
heads - p(x,y), B(y) :- A(x)
- IERC: ERC with Inverse role -
p(y,x), B(y) :- A(x)
- Trans: Transitivity - p(x,z) :- p(x,y),p(y,z)
- RC: Role Composition -
s(x,z) :- p(x,y),r(y,z)
- Func: Functional dependency - x
= y :- BODY
- DC: Disjoint Concept - ! :- A(x), B(x)
- DR: Disjoint Role - ! :-
p(x,y),r(x,y)
- NC: Negative Constraint - ! BODY
This allows to easily extract specific kinds of rules from a rule set.
Getting started
Compute single-piece head rules
java -jar utility-tools-*.jar -p < ./example1.dlp
Compute atomic-head rules
java -jar utility-tools-*.jar -a < ./example1.dlp
Label rules
java -jar utility-tools-*.jar -l < ./example1.dlp