Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


a diff tool for OWL 2 ontologies

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 at Atomic concepts
  • -c sub Subconcepts asserted in either ontology
  • -c gr Concepts of the form r some C, r only C, not C, C or C', C and C', where C, C' are subconcepts asserted in either ontology, and r is an atomic role
  • -c cvs Concepts of the form r some A, r only A, not A, where A is an atomic concept, and r is 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] in Windows: use ecco.bat, in UNIX-based systems: use

  • [ONTOLOGY] an input ontology file path or URL


    • -o Output directory for generated files [ default: {ecco.jar.dir}/ecco-output ]
    • -t Transform XML diff report into HTML
    • -c Compute one of: [ at | sub | gr | cvs ] concept diff [ default: atomic ]
    • -r Analyse root ontologies only, i.e. ignore imports
    • -n Normalize 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)
    • -i Ignore Abox axioms
    • -j Maximum number of justifications computed per ineffectual change
    • -v Verbose mode
    • -h -help Print 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 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:

future plans

  • An alternative, term-centric view of changes between ontologies


a diff tool for OWL 2 ontologies







No releases published


No packages published