Supplementary data for the paper "XAI4Wind: A Multimodal Knowledge Graph Database for Explainable Decision Support in Operations & Maintenance of Wind Turbines".
arXiv: https://arxiv.org/abs/2012.10489
ResearchGate: https://www.researchgate.net/publication/347534382_XAI4Wind_A_Multimodal_Knowledge_Graph_Database_for_Explainable_Decision_Support_in_Operations_Maintenance_of_Wind_Turbines
The knowledge graph (KG) was exported to a JSON file using Neo4j's APOC (Awesome Procedures on Cypher) library. More details on APOC can be found here at https://neo4j.com/developer/neo4j-apoc/. This KG was developed and tested in Neo4j version 1.3.11.42 on MacOS Big Sur (version 11.0.1). The EXPORT JSON procedure was utilised to export the KG to the JSON object. Thereby, it can be loaded using its import counterpart method apoc.import.json. We have also provided the Cypher script used for developing this KG in the repo as a text file _CypherScriptXAI4Wind.txt.
An example of importing the graph through the JSON object using APOC is given below:-
CALL apoc.import.json("CompleteKG_XAI4Wind.json")
The KG in itself (standalone) can serve independently in the Neo4j Desktop Application for interactive information querying and retrieval. This does not require any availablity of SCADA datasets.
For demonstration of XAI, SCADA features would be needed- but they can also be generalised to any resource with time-series parameters. As the KG will run in the local runtime, it is essential to connect it with a Python interface (e.g. Jupyter Notebook/Google Colaboratory) to integrate it with an Explainable AI model. This requires the py2neo library which can be installed with
pip install py2neo
or (in Colab)
!pip install py2neo
You would need to look-up the Bolt server address (as visible in your specific Neo4j Desktop Application instance) and specify the same during integrated with Python. E.g. if your Bolt server address is 11005, and you have also specified a password for access (pass),the follow lines of code can be used for the interfacing.
from py2neo import Graph
graph = Graph("bolt://localhost:11005", auth=("neo4j", "pass")) #Can look up port address from inside Neo4j (11005 at present)
For a real-world application of the KG beyond the use-cases described already in this repo, please see https://github.com/joyjitchatterjee/WindTurbine-QAKG for using the KG as a resource towards interactive decision support (question-answering) in the wind industry.
We acknowledge the publicly available Skillwind maintenance manual and ORE Catapult's Platform for Operational Data (POD) for the valuable resources used in this paper. A subset of 102 SCADA features (with their names publicly available on POD) was used in the KG. The maintenance actions segment is used to organise the information present in the Skillwind manual into a domain-specific ontology. Due to confidentiality reasons, we have not provided the numeric values and complete SCADA corpus, but only released information which is presently in the public domain in this repository. More information can be found in references (1) for the maintenance action manual and (2) for multiple other potential SCADA features and alarms available in POD.
Chatterjee, J. and Dethlefs, N., “XAI4Wind: A Multimodal Knowledge Graph Database for Explainable Decision Support in Operations & Maintenance of Wind Turbines”, arXiv e-prints, 2020
@misc{chatterjee2020xai4wind,
title={XAI4Wind: A Multimodal Knowledge Graph Database for Explainable Decision Support in Operations & Maintenance of Wind Turbines},
author={Joyjit Chatterjee and Nina Dethlefs},
year={2020},
eprint={2012.10489},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
This repo is based on the MIT License, which allows free use of the provided resources, subject to the original sources being credit/acknowledged appropriately. The software/resources under MIT license is provided as is, without any liability or warranty at the end of the authors.