1:- use_module(library(trill)).    2
    3:- trill.    4
    5
    6%subClassOf(a,unionOf([b,c])).
    7%subClassOf(a,complementOf(e)).
    8%subClassOf(b,e).
    9%subClassOf(c,e).
   10
   11%classAssertion(a,x).
   12%classAssertion(e,x).
   13%classAssertion(complementOf(a),x).
   14
   15
   16subClassOf(a,intersectionOf([b,someValuesFrom(r,e)])).
   17subClassOf(a,unionOf([f,allValuesFrom(r,b)])).
   18subClassOf(b,intersectionOf([c,d])).
   19subClassOf(c,intersectionOf([minCardinality(1,r),e])).
   20subClassOf(b,complementOf(e)).
   21
   22subClassOf(b,complementOf(f)).
   23
   24subClassOf(a,unionOf([intersectionOf([c,complementOf(c)]),complementOf(f)])).
   25subClassOf(a, unionOf([complementOf(c),complementOf(f)])).
   26subClassOf(a, unionOf([complementOf(c),complementOf(d)])).
   27
   28annotationAssertion('disponte:probability',subClassOf(a,intersectionOf([b,someValuesFrom(r,e)])),literal('0.1')).
   29annotationAssertion('disponte:probability',subClassOf(a,unionOf([f,allValuesFrom(r,b)])),literal('0.2')).
   30annotationAssertion('disponte:probability',subClassOf(b,intersectionOf([c,d])),literal('0.3')).
   31annotationAssertion('disponte:probability',subClassOf(c,intersectionOf([minCardinality(1,r),e])),literal('0.4')).
   32annotationAssertion('disponte:probability',subClassOf(b,complementOf(e)),literal('0.5')).
   33
   34annotationAssertion('disponte:probability',subClassOf(b,complementOf(f)),literal('0.6')).
   35
   36annotationAssertion('disponte:probability',subClassOf(a,unionOf([intersectionOf([c,complementOf(c)]),complementOf(f)])),literal('0.7')).
   37annotationAssertion('disponte:probability',subClassOf(a, unionOf([complementOf(c),complementOf(f)])),literal('0.8')).  % TODO  da testare con Protege
   38annotationAssertion('disponte:probability',subClassOf(a, unionOf([complementOf(c),complementOf(d)])),literal('0.9')).
   39
   40
   41/*
   42subClassOf(a,complementOf(f)).
   43subClassOf(unionOf([complementOf(c),complementOf(f)]),z).
   44subClassOf(a, unionOf([complementOf(c),complementOf(f)])).
   45
   46classAssertion(a,1).
   47*/
   48
   49% TODO guarda come clash inserito in caso di or_rule (quando arrivo a complement(e) da a->b or c, c->e non dovrebbe esserci clash??)
   50% TODO pensare a come integrare
   51% TODO al clash mandare anche parte della spiegazione che ha portato al clash per evitare di generare sempre le stesse justification