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
 
 - 
 
1. Example Configuration
  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
  <?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.qea"/>
    <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.core.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.core.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.core.transformation.constraints.FolConstraintParsing"
      id="step3" input="step2" mode="enabled"/>
  </transformers>
  <targets>
    <TargetXmlSchema
      class="de.interactive_instruments.shapechange.core.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>