Built using the OWL API. For demo purposes there is a Web-based front-end here.
ecco identifies changes according to OWL's notion of structural equivalence, and then verifies whether these changes produce any effect on entailments, i.e. whether they are logically effectual or ineffectual. Subsequently these differences are aligned according to their impact (or lack thereof).
Additionally, ecco now has an option (-c) to detect which concepts had their meaning affected by axiom changes. This is done by checking which (atomic) concepts have different sub- or super-concepts between ontologies, where the latter can be:
-c atAtomic concepts-c subSubconcepts asserted in either ontology-c grConcepts of the formr some C,r only C,not C,C or C',C and C', whereC, C'are subconcepts asserted in either ontology, andris an atomic role-c cvsConcepts of the formr some A,r only A,not A, whereAis an atomic concept, andris an atomic role
Note that these are all sound but incomplete approximations of the minimal [concept] change set, as defined here. The last option: -c cvs is based on the entailment grammar employed in ContentCVS.
After detecting the set of affected concepts, ecco distinguishes between concepts that are directly or indirectly affected, that is, whether some concept A changed due to a change in some concept B, where both ontologies entail that A => B.
Finally, axiom changes are aligned with the concepts that they affect; these are shown on the right hand side columns. When hovering over affected concepts, the tool will show the entailment differences for each concept change.
For full details, check my thesis, particularly Chapter 7 where a tool walkthrough is carried out.
[SCRIPT] -ont1 [ONTOLOGY] -ont2 [ONTOLOGY] [OPTIONS]
-
[SCRIPT]in Windows: use ecco.bat, in UNIX-based systems: use ecco.sh -
[ONTOLOGY]an input ontology file path or URL -
[OPTIONS]-oOutput directory for generated files [ default: {ecco.jar.dir}/ecco-output ]-tTransform XML diff report into HTML-cCompute one of: [ at | sub | gr | cvs ] concept diff [ default: atomic ]-rAnalyse root ontologies only, i.e. ignore imports-nNormalize entity URIs, i.e. if two ontologies have the same entity names in a different namespace, this trigger establishes a common namespace (comparison of entity names is by syntactic string equality)-iIgnore Abox axioms-jMaximum number of justifications computed per ineffectual change-vVerbose mode-h-helpPrint this help message
The standard output of ecco is an XML file representing the change set. With the -t flag, ecco will transform this XML file into HTML.
By default, the output goes to a folder named ecco-output, which contains the required files for appropriate rendering on a Web browser. The output folder can be altered via the -o flag. For a more informative progress monitoring, use the -v flag.
In order to deploy ecco on a set of versions, the script eccov.sh can be used. Instructions for doing so are in the script itself.
ecco is compatible with Java 1.7 (or above), and requires Java JDK and Apache Maven installed in order to be built from sources.
The tool relies directly on the following projects:
- OWL API (v3.5.1)
- HermiT reasoner (v1.3.8)
- JFact reasoner (v1.2.2)
- Guava (v14.0.1)
- Saxon-HE XSLT and XQuery processor (v9.6.0)
- Apache commons-io (v2.4)
- An alternative, term-centric view of changes between ontologies