Deriving Schematron from AIXM Business Rules
The process of deriving Schematron code from AIXM business rules expressed in SBVR consists of five steps:
- Loading the conceptual schemas
- Merging AIXM core and extension schemas
- Loading AIXM business rules from an excel file
- Parsing the rules to First Order Logic constraints/expressions
- Translate the FOL constraints to Schematron
The OGC Testbed 11 Aviation – Guidance on Using SBVR Engineering Report describes these steps in more detail.
From a configuration point of view, the following is important (a complete example configuration is given at the end of this page):
- Loading the conceptual schemas:
- ensure that the input parameter ‘isAIXM’ is true, that constraint checking is not disabled, and that the input parameter ‘folConstraintTypeRegex’ is set to SBVR.
- ensure that PackageInfo elements are configured that identify the relevant AIXM schemas together with their target namespaces and preferred XML namespace prefixes.
- set stereotype aliases to map the stereotypes used by AIXM schema to the well-known stereotypes that ShapeChange uses internally
- more details on these configuration parameters can be found on the input element page
- Merging AIXM core and extension schemas
- ensure that the ‘coreSchemaTargetNamespace’ parameter is set correctly (unless the default value applies, in which case the parameter can be omitted)
- more details on the configuration of the according transformation can be found on the AIXM Schema Merger page
- Loading AIXM business rules from an excel file
- provide the correct file location and ensure that the file is structured correctly (an example is available here)
- more details on the configuration of the according transformation can be found on the Constraint Loader page
- Parsing the rules to First Order Logic constraints/expressions
- more details on the configuration of the according transformation can be found on the First Order Logic Constraint Parser page
- Translate the FOL constraints to Schematron
- ensure that ‘TargetXmlSchema’ is used as configuration element
- ensure that the ‘defaultEncodingRule’ identifies a custom encoding rule that contains the conversion rules ‘rule-all-cls-aixmDatatype’ and ‘rule-all-prop-uomAsAttribute’, on top of the ISO 19136 conversion rules
- more details on the configuration of the according target can be found on the FOL to Schematron page
Example Configuration
<?xml version="1.0" encoding="UTF-8"?> <ShapeChangeConfiguration xmlns="http://www.interactive-instruments.de/ShapeChange/Configuration/1.1" xmlns:sc="http://www.interactive-instruments.de/ShapeChange/Configuration/1.1" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interactive-instruments.de/ShapeChange/Configuration/1.1 https://shapechange.net/resources/schema/ShapeChangeConfiguration.xsd"> <input id="INPUT"> <parameter name="inputModelType" value="EA7"/> <parameter name="inputFile" value="./AIXM.eap"/> <parameter name="appSchemaNameRegex" value="AIXM|Digital NOTAM Event Specification"/> <parameter name="publicOnly" value="true"/> <parameter name="checkingConstraints" value="enabled"/> <parameter name="folConstraintTypeRegex" value="SBVR"/> <parameter name="sortedSchemaOutput" value="true"/> <parameter name="isAIXM" value="true"/> <packages> <PackageInfo ns="http://www.aixm.aero/schema/5.1" nsabr="aixm" packageName="AIXM" version="5.1" xsdDocument="aixm.xsd"/> <PackageInfo ns="http://www.aixm.aero/schema/5.1/event" nsabr="event" packageName="Digital NOTAM Event Specification" version="1.0" xsdDocument="event.xsd"/> </packages> <parameter name="excludedPackages" value="ISO 19107 Geometry, ISO 19115 Metadata, ISO 19136, XMLSchemaDatatypes"/> <xi:include href="https://shapechange.net/resources/config/StandardAliases.xml"/> <stereotypeAliases> <StereotypeAlias alias="object" wellknown=""/> <StereotypeAlias alias="message" wellknown=""/> <StereotypeAlias alias="choice" wellknown="Union"/> <StereotypeAlias alias="feature" wellknown="FeatureType"/> <StereotypeAlias alias="extension" wellknown="AIXMExtension"/> </stereotypeAliases> </input> <log> <parameter name="reportLevel" value="INFO"/> <parameter name="logFile" value="./aixm_log.xml"/> </log> <transformers> <Transformer class="de.interactive_instruments.ShapeChange.Transformation.AIXM.AIXMSchemaMerger" id="step1" input="INPUT" mode="enabled"> <parameters> <ProcessParameter name="coreSchemaTargetNamespace" value="http://www.aixm.aero/schema/5.1"/> </parameters> </Transformer> <Transformer class="de.interactive_instruments.ShapeChange.Transformation.Constraints.ConstraintLoader" id="step2" input="step1" mode="enabled"> <parameters> <ProcessParameter name="constraintExcelFile" value="./AIXM_business_rules.xlsx"/> </parameters> </Transformer> <Transformer class="de.interactive_instruments.ShapeChange.Transformation.Constraints.FolConstraintParsing" id="step3" input="step2" mode="enabled"/> </transformers> <targets> <TargetXmlSchema class="de.interactive_instruments.ShapeChange.Target.FOL2Schematron.FOL2Schematron" inputs="step3" mode="enabled"> <targetParameter name="outputDirectory" value="./results/sch"/> <targetParameter name="defaultEncodingRule" value="aixm"/> <rules> <EncodingRule extends="iso19136_2007" name="aixm"> <rule name="rule-all-cls-aixmDatatype"/> <rule name="rule-all-prop-uomAsAttribute"/> </EncodingRule> </rules> <xi:include href="https://shapechange.net/resources/config/StandardRules.xml"/> <xi:include href="https://shapechange.net/resources/config/StandardNamespaces.xml"/> <xi:include href="https://shapechange.net/resources/config/StandardMapEntries.xml"/> </TargetXmlSchema> </targets> </ShapeChangeConfiguration>