Transform a UML model into a formal OWL ontology, and a SHACL shape based on established UML conventions.
This project comprises a set of tools for transforming an UML (v2.5) model from its XMI (v2.5.1) serialisation into a formal OWL ontology, and a SHACL shape. This approach is conformant to the SEMIC Style Guide and with eProcurement Ontology Architecture specification.
The UML transformation is performed using XSLT stylesheets under the assumption that the UML model conforms to the set of conventions outlined in the EPO UML conventions documentation. This set of UML conventions is an extension to the UML conventions specified in SEMIC Style Guide.
The following capabilities are addressed:
This work is developed in the context of eProcurement ontology project financed by the Digital Europe Programme and led by the Publications Office of the European Union.
This project can be used in 2 different ways as follows.
The Makefile is a powerful tool that automates different commands for software projects. It provides a convenient way to define and execute various tasks, such as using source code, generating documentation, running tests, and more. This will help the user to easily use the software.
All commands will be executed using the Make build automation tool that needs to be installed if not available on the system. The make targets can sometime have optional parameters (see example bellow). The project will have default values for the available parameters for the different commands.
Example
# without parameters
make install
# with parameters
make owl-core XMI_INPUT_FILE_PATH=/home/mypc/work/model2owl/file1.xml OUTPUT_FOLDER_PATH=./my-folder
Prerequisites:
Steps:
execute make install
Note: If you don't have a virtual environment set up use make create-virtual-env
to create a virtual environment and
then activate it by using source model2owl-venv/bin/activate
.
The model2owl configuration is formed from 4 files that should be in one folder:
To start just copy the default configuration files from ePO-default-config folder in your new configuration folder.
To change the configuration in the config-parameters.xsl just simply change the value of the variable. Notes:
#exiting variables
<xsl:variable name="acceptableTypesForObjectProperties"
select="('epo:Identifier', 'rdfs:Literal')"/>
<xsl:variable name="defaultNamespaceInterpretation" select="fn:true()"/>
#Don't change to different datatypes
<xsl:variable name="defaultNamespaceInterpretation" select="'new-value'"/> ---> incorrect
<xsl:variable name="stereotypeValidOnAssociations" select="()"/>
In the namespaces.xml file you can add the namespaces that you use in UML model and also can control which of them should appear as import in the final output.
Example
# to add prefix you need a name and the URI
<prefix name="foaf" value="http://xmlns.com/foaf/0.1/"/>
# to have an import statement in the final output
# add importURI attribute to the definition above
<prefix name="dct" value="http://purl.org/dc/terms/" importURI="http://purl.org/dc/terms/"/>
#Output will have the following import statement
<owl:imports rdf:resource="http://purl.org/dc/terms/"/>
Use xsdAndRdfDataTypes.xml file to define the datatypes used in the UML model.
Example
<datatype namespace="xsd" qname="xsd:date"/>
If the model uses UML datatypes these should be mapped in the umlToXsdDataTypes.xml file.
Example
<mapping>
<from qname="epo:Date"/>
<to qname="xsd:date"/>
</mapping>
All configuration files (see above) should be in one folder. Once the folder with the desired configurations is created the config-proxy.xsl file (found in the root directory of this project) should be changed to point to the location of the new configuration before executing any transformations.
Example:
# Change the path to the config-parameters.xsl inside the config-proxy.xsl
# from
<xsl:import href="https://github.com/OP-TED/model2owl/blob/master/test/ePO-default-config/config-parameters.xsl"/>
# to
<xsl:import href="https://github.com/OP-TED/model2owl/blob/master/my-pc/user/my-config-folder/config-parameters.xsl"/>
After installing and creating your configuration folder use the available make targets described above to transform/generate output from you XMI/XML export file. The command should be executed from the root folder of this project.
Example
# generate lightweight ontology from the UML export (xml/xmi)
make owl-core XMI_INPUT_FILE_PATH=/home/mypc/work/model2owl/file1.xml OUTPUT_FOLDER_PATH=./my-folder
To use model2owl in an automatic way, we have created a github repository model2owl-boilerplate that will no longer require for you to install or to execute anything. Follow the instructions found there for using this model2owl automation.
You are more than welcome to help expand and mature this project.
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
Please note we adhere to Apache code of conduct, please follow it in all your interactions with the project.
The documents, such as reports and specifications, available in the /doc folder, are licenced under a CC BY 4.0 licence.
The XSLT (stylesheets) and other scripts are licenced under GNU GPLv3 licence.