This is a working repository for work associated with the Maintenance Activity Ontology. This ontology has been submitted for review.
This work is authored by: Caitlin Woods, Matt Selway, Tyler Bikaun, Markus Stumptner and Melinda Hodkiewicz.
This repository contains the following folders:
- data: OWL files containing instance data, populated using the population_script.
- imports: OWL files used as imports in the maintenance activity ontologies.
- population_script: A python script to regenerate the files contained in the data folder.
- reasoning_script: A python script to perform reasoning in the ontology.
The file, maintenance-activity.owl, contains the maintenance activity reference ontology presented in the paper.
The files, maintenance-activity-classification-rules.owl, asset-data.owl, asset-list-ontology.owl, functional-breakdown-pump-ontology.owl, and work-order-ontology.owl, contain data files necesarry for running the application level ontology for maintenance work order data quality.
For initial testing of the ontology, the goal was to use easily accessible tools and the python owlready2
library with the Pellet reasoner was chosen.
This combination has some limitations, including the time taken to perform the reasoning over the entire dataset; hence, the dataset was split into individual files for each Maintenance Work Order Record.
The reasoning script can be run across all records, and individual record, or some subset of records. For example, running
reasoning_script> python runner.py
will run the full set (1-36), while
reasoning_script> python runner.py 3 12
will run the third to twelfth records. The last argument can be omitted to run until the end, e.g., third to 36th record if omitted from the above example. Finally, the following would run only the second record:
reasoning_script> python runner.py 2 2
There is also some inconsistency in the output occasionally (exact cause is unknown) where the activity classifications are not inferred and so the script will run the pellet reasoner twice if it detects such an occurrence.
Lastly, the punning of the annotation properties (which should be fine as it only puns each annotation property to a data property or object property but not both) could lead to inconsistent reasoning output (sometimes it would work and other times not) and, hence, has been excluded from the data files for reliability of the script.
These issues appear to be idiosyncratic of the tools being used in this instance.