From 13ba630aeafc83904bef813138e4e9bcd8d14e0f Mon Sep 17 00:00:00 2001 From: Carlo van Driesten Date: Wed, 29 Jul 2026 15:44:47 +0200 Subject: [PATCH 1/4] fix(owl): use owl:onDataRange for datatype qualified cardinality restrictions The OWLISO19150 ontology target emitted owl:onClass for every qualified cardinality restriction, including restrictions on datatype properties. Per the W3C OWL 2 specification, a qualified cardinality restriction on a data property MUST use owl:onDataRange pointing at a data range (Structural Specification and Functional-Style Syntax, Sec. 8.5 "Data Property Cardinality Restrictions"; Mapping to RDF Graphs, Sec. 3.2). owl:onClass is reserved for object property cardinality restrictions (Sec. 8.3). Emitting owl:onClass with an XSD datatype (e.g. `owl:onClass xsd:double`) is invalid OWL 2 DL and breaks OWL reasoners and downstream OWL-to-SHACL tooling. createQCardinalityRestriction, createQMinCardinalityRestriction and createQMaxCardinalityRestriction now select the linking predicate via a new helper, qualifiedRestrictionOnPredicate(p), which returns owl:onDataRange for datatype properties and owl:onClass for object properties. Signed-off-by: Carlo van Driesten --- .../core/target/ontology/OntologyModel.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/shapechange-core/src/main/java/de/interactive_instruments/shapechange/core/target/ontology/OntologyModel.java b/shapechange-core/src/main/java/de/interactive_instruments/shapechange/core/target/ontology/OntologyModel.java index 12d5ad84e..591dac880 100644 --- a/shapechange-core/src/main/java/de/interactive_instruments/shapechange/core/target/ontology/OntologyModel.java +++ b/shapechange-core/src/main/java/de/interactive_instruments/shapechange/core/target/ontology/OntologyModel.java @@ -1112,6 +1112,25 @@ protected void addUnionSemantics(ClassInfo ci, OntClass c) { } } + /** + * Determines the predicate that links a qualified cardinality restriction to + * its restricting range. + * + * Per the W3C OWL 2 specification, qualified cardinality restrictions on a + * data property MUST use owl:onDataRange with a data range (Structural + * Specification and Functional-Style Syntax, Sec. 8.5 "Data Property + * Cardinality Restrictions"; Mapping to RDF Graphs, Sec. 3.2), whereas + * owl:onClass applies only to object property cardinality restrictions + * (Sec. 8.3). Emitting owl:onClass with an XSD datatype (e.g. xsd:double) + * yields an invalid OWL 2 DL construct. + * + * @param p the property the restriction applies to + * @return OWL2.onDataRange for datatype properties, otherwise OWL2.onClass + */ + protected Property qualifiedRestrictionOnPredicate(OntProperty p) { + return (p != null && p.isDatatypeProperty()) ? OWL2.onDataRange : OWL2.onClass; + } + public OntClass createQCardinalityRestriction(OntProperty p, int cardinality, Resource range) { /* * NOTE: We cannot use the create(Min|Max)CardinalityQRestriction(...) methods @@ -1131,7 +1150,7 @@ public OntClass createQCardinalityRestriction(OntProperty p, int cardinality, Re Literal cardAsNonNegativeInteger = ontmodel.createTypedLiteral(cardinality, "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"); restriction.addLiteral(OWL2.qualifiedCardinality, cardAsNonNegativeInteger); - restriction.addProperty(OWL2.onClass, range); + restriction.addProperty(qualifiedRestrictionOnPredicate(p), range); return restriction; } @@ -1155,7 +1174,7 @@ public OntClass createQMinCardinalityRestriction(OntProperty p, int cardinality, Literal cardAsNonNegativeInteger = ontmodel.createTypedLiteral(cardinality, "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"); restriction.addLiteral(OWL2.minQualifiedCardinality, cardAsNonNegativeInteger); - restriction.addProperty(OWL2.onClass, range); + restriction.addProperty(qualifiedRestrictionOnPredicate(p), range); return restriction; } @@ -1179,7 +1198,7 @@ public OntClass createQMaxCardinalityRestriction(OntProperty p, int cardinality, Literal cardAsNonNegativeInteger = ontmodel.createTypedLiteral(cardinality, "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"); restriction.addLiteral(OWL2.maxQualifiedCardinality, cardAsNonNegativeInteger); - restriction.addProperty(OWL2.onClass, range); + restriction.addProperty(qualifiedRestrictionOnPredicate(p), range); return restriction; } From 971c3634f1626703f09873877d395738867a68a9 Mon Sep 17 00:00:00 2001 From: Carlo van Driesten Date: Wed, 29 Jul 2026 16:03:45 +0200 Subject: [PATCH 2/4] test(owl): add regression test for qualified cardinality onDataRange Adds a pure SCXML integration test (no Enterprise Architect model required) covering rule-owl-prop-multiplicityAsQualifiedCardinalityRestriction: - datatype properties with exact/min/max qualified cardinality use owl:onDataRange (xsd:double, xsd:integer) - object properties use owl:onClass The reference model is verified against the fixed OntologyModel. Without the fix the test fails, because owl:onClass is emitted for XSD datatypes (invalid OWL 2 DL). Signed-off-by: Carlo van Driesten --- .../reference/owl/INPUT/test.ttl | 48 ++++++++++ .../scxml.xml | 95 +++++++++++++++++++ ...L_owl_qualifiedCardinalityRestrictions.xml | 52 ++++++++++ .../shapechange/app/OntologyTest.java | 16 ++++ 4 files changed, 211 insertions(+) create mode 100644 shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/reference/owl/INPUT/test.ttl create mode 100644 shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml create mode 100644 shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/reference/owl/INPUT/test.ttl b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/reference/owl/INPUT/test.ttl new file mode 100644 index 000000000..971919e3b --- /dev/null +++ b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/reference/owl/INPUT/test.ttl @@ -0,0 +1,48 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . + +ex:Road.width rdf:type owl:DatatypeProperty; + rdfs:domain ex:Road; + rdfs:range xsd:double . + +ex:Road.lane rdf:type owl:ObjectProperty; + rdfs:domain ex:Road; + rdfs:range ex:Lane . + +ex:Road.length rdf:type owl:DatatypeProperty; + rdfs:domain ex:Road; + rdfs:range xsd:double . + +ex:Road rdf:type owl:Class; + rdfs:subClassOf [ rdf:type owl:Restriction; + owl:onClass ex:Lane; + owl:onProperty ex:Road.lane; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ]; + rdfs:subClassOf [ rdf:type owl:Restriction; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger; + owl:onDataRange xsd:integer; + owl:onProperty ex:Road.speedLimit + ]; + rdfs:subClassOf [ rdf:type owl:Restriction; + owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger; + owl:onDataRange xsd:double; + owl:onProperty ex:Road.width + ]; + rdfs:subClassOf [ rdf:type owl:Restriction; + owl:onDataRange xsd:double; + owl:onProperty ex:Road.length; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] . + +ex:Lane rdf:type owl:Class . + +ex:Road.speedLimit rdf:type owl:DatatypeProperty; + rdfs:domain ex:Road; + rdfs:range xsd:integer . + + + rdf:type owl:Ontology . diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml new file mode 100644 index 000000000..06fbb1d93 --- /dev/null +++ b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml @@ -0,0 +1,95 @@ + + + + + Model + 1 + + + Test Model + 2 + + + Test Schema + 10 + + application schema + + + + targetNamespace + + http://example.org/qualifiedCardinality + + + + version + + 1 + + + + xmlns + + ex + + + + + + Road + 100 + + featuretype + + + + length + 101 + 1 + 1 + Real + true + + + width + 102 + 1..* + 2 + Real + true + + + speedLimit + 103 + 0..1 + 3 + Integer + true + + + lane + 104 + 1 + 4 + 200 + Lane + true + + + + + Lane + 200 + + featuretype + + + + + + + + + + diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml new file mode 100644 index 000000000..f3c42532a --- /dev/null +++ b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java b/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java index f1232acc5..f9a6ddc24 100644 --- a/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java +++ b/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java @@ -94,4 +94,20 @@ public void testPropertyGeneralizationAndEnrichment() { new String[] { "ttl" }, "testResults/owl/propertyGeneralizationAndEnrichment/owl", "src/integrationtests/owl/propertyGeneralizationAndEnrichment/reference/owl"); } + + @Test + public void testQualifiedCardinalityRestrictions() { + /* + * rule-owl-prop-multiplicityAsQualifiedCardinalityRestriction: qualified + * cardinality restrictions on datatype properties must use owl:onDataRange + * (W3C OWL 2 Structural Specification, Sec. 8.5; Mapping to RDF Graphs, + * Sec. 3.2), while restrictions on object properties use owl:onClass + * (Sec. 8.3). This is a pure SCXML test (no Enterprise Architect model + * required). + */ + multiTest( + "src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml", + new String[] { "ttl" }, "testResults/owl/qualifiedCardinalityRestrictions", + "src/integrationtests/owl/qualifiedCardinalityRestrictions/reference"); + } } From fb570eed9d66c08941c5e240ab59130bcac2d52f Mon Sep 17 00:00:00 2001 From: Carlo van Driesten Date: Wed, 29 Jul 2026 23:16:27 +0200 Subject: [PATCH 3/4] test(owl): base qualified cardinality test on EA model with derived SCXML Replace the hand-written SCXML model of the qualifiedCardinalityRestrictions integration test with an Enterprise Architect repository as the original model, plus the SCXML resources derived from it via the standard mechanism (updateOrCreateScxmlResources=true), as requested in the review of PR #756. - Add test_qualifiedCardinalityRestrictions.qea: minimal EA model (Test Schema with Road/Lane feature types) exercising both branches of rule-owl-prop-multiplicityAsQualifiedCardinalityRestriction: datatype properties (length Real[1], width Real[1..*], speedLimit Integer[0..1]) -> owl:onDataRange, and the object property (lane Lane[1]) -> owl:onClass. - Add the EA-derived SCXML resources (test_qualifiedCardinalityRestrictions.zip) and the derived testEA_..._runWithSCXML.xml configuration. - Add the original EA configuration testEA_owl_qualifiedCardinalityRestrictions.xml (inputModelType=EA7) and point OntologyTest at it. - Remove the previous hand-written scxml.xml and testSCXML_... configuration. The reference OWL output is unchanged, so the EA-derived model reproduces the exact expected result; the test still runs on 64bit Java without EA using the committed SCXML resources. Signed-off-by: Carlo van Driesten --- .../scxml.xml | 95 ----------- ..._owl_qualifiedCardinalityRestrictions.xml} | 6 +- ...edCardinalityRestrictions_runWithSCXML.xml | 150 ++++++++++++++++++ .../test_qualifiedCardinalityRestrictions.qea | Bin 0 -> 1495040 bytes .../test_qualifiedCardinalityRestrictions.zip | Bin 0 -> 1109 bytes .../shapechange/app/OntologyTest.java | 12 +- 6 files changed, 162 insertions(+), 101 deletions(-) delete mode 100644 shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml rename shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/{testSCXML_owl_qualifiedCardinalityRestrictions.xml => testEA_owl_qualifiedCardinalityRestrictions.xml} (93%) create mode 100644 shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions_runWithSCXML.xml create mode 100644 shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/test_qualifiedCardinalityRestrictions.qea create mode 100644 shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/test_qualifiedCardinalityRestrictions.zip diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml deleted file mode 100644 index 06fbb1d93..000000000 --- a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/scxml.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - Model - 1 - - - Test Model - 2 - - - Test Schema - 10 - - application schema - - - - targetNamespace - - http://example.org/qualifiedCardinality - - - - version - - 1 - - - - xmlns - - ex - - - - - - Road - 100 - - featuretype - - - - length - 101 - 1 - 1 - Real - true - - - width - 102 - 1..* - 2 - Real - true - - - speedLimit - 103 - 0..1 - 3 - Integer - true - - - lane - 104 - 1 - 4 - 200 - Lane - true - - - - - Lane - 200 - - featuretype - - - - - - - - - - diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions.xml similarity index 93% rename from shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml rename to shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions.xml index f3c42532a..a616c1165 100644 --- a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml +++ b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions.xml @@ -5,13 +5,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interactive-instruments.de/ShapeChange/Configuration/1.1 ../../../../sc-resources/schema/ShapeChangeConfiguration.xsd"> - + + value="src/integrationtests/owl/qualifiedCardinalityRestrictions/test_qualifiedCardinalityRestrictions.qea" /> - + diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions_runWithSCXML.xml b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions_runWithSCXML.xml new file mode 100644 index 000000000..bcfb0a3a0 --- /dev/null +++ b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions_runWithSCXML.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/test_qualifiedCardinalityRestrictions.qea b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/test_qualifiedCardinalityRestrictions.qea new file mode 100644 index 0000000000000000000000000000000000000000..2fb781acf82426f82c8372db24601e4c1a1e33e4 GIT binary patch literal 1495040 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 literal 0 HcmV?d00001 diff --git a/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/test_qualifiedCardinalityRestrictions.zip b/shapechange-app/src/integrationtests/owl/qualifiedCardinalityRestrictions/test_qualifiedCardinalityRestrictions.zip new file mode 100644 index 0000000000000000000000000000000000000000..c3d4b3a5ebf2b3672d75cd85b095654c00d3e88e GIT binary patch literal 1109 zcmWIWW@Zs#;Nak3IK1<33N4p{0SWH5^E0fQ1$vdm3oUbwRo0|M=Cmahq<8#C5PA@%!ERC#lo03? zn=ozG*(wi4WzHROM+Bcf@N_FaxF>Wm&oi#m?=zpM>RsrL%Pd*?-mqLxaYk{%p7f5m zLoMP}r;F!&*uik_d2z9wiSn!H=DPda>hAW*FZt;{!=SH&+jil!#3fZnPyB7JN!a9Q zdUy4*HLhC)MVgdtZMT2AUS$7mPIYuy=kg-=)PHJys&c71(WzRSc~|8~xyim3`s|{S zukowu+a}iIrD9JQjx{Q(Jz{Ne^WKfq1++!NxZO`ZU@X?`t8|&2 zd(C5V$%}KX+rul1RNqR<6ekDMpokE%$G#hjEo+r(}PZZze6Gxw99+OM@g*}Cr*^;L#XoZaH^<64Z*`HNo? z>f+s19cKFmb>Cqyyf!1#EpvU`0z)NPv+WkW`^;p$E#2x(p02p`(3tgzFxSiC+dD%z zF1cM&WPQG2o9Pyn%a>QPbd|_3KV3ih&NH{GpDx}qo!UG_Fj&MOBQm5_;Mdk$`?}47 z7&ixsusry5EoaB{cat;bKe|6J!N@0A?B$HaI+qi#rzGx^H9DhsSjOngza#s-+fM3T zKb5`auHR0Rw?=FZHFmGn;%8OVt-m7iY68zZVFkTAst<(&o}YL(pU1!N?d8T@8^d>% z8ZW*1)bE*_!>Uh#TQYn_XDjz8w_U#buwd4T2tD)cM^}{|R7suRxP97@t*ukFF4gX4 zwAz+gH!=BCuk_LMANI%Ek22hoXy5VlQLw~(w#*%Q6Mikr%vbkl?rkn{w)o-j|Dpx! zTJa5s-k3P`UOi~EDKMp4cw+vi)A8RfX=)tZ`{}W=lHe_2x6dLoufB$>9vW>3=BE)3=9F@ kj7%a7h@6fr2g>QFfarW5;LXYg(#i;g;XwKY&^iVN0MQTgga7~l literal 0 HcmV?d00001 diff --git a/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java b/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java index f9a6ddc24..2c2a6e0ee 100644 --- a/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java +++ b/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/OntologyTest.java @@ -102,11 +102,17 @@ public void testQualifiedCardinalityRestrictions() { * cardinality restrictions on datatype properties must use owl:onDataRange * (W3C OWL 2 Structural Specification, Sec. 8.5; Mapping to RDF Graphs, * Sec. 3.2), while restrictions on object properties use owl:onClass - * (Sec. 8.3). This is a pure SCXML test (no Enterprise Architect model - * required). + * (Sec. 8.3). + * + * The original model is the Enterprise Architect repository + * test_qualifiedCardinalityRestrictions.qea; the SCXML based resources + * (test_qualifiedCardinalityRestrictions.zip and the *_runWithSCXML config) + * are derived from it via the standard mechanism (run the test with system + * variable updateOrCreateScxmlResources=true), so the test executes without + * Enterprise Architect on 64bit Java. */ multiTest( - "src/integrationtests/owl/qualifiedCardinalityRestrictions/testSCXML_owl_qualifiedCardinalityRestrictions.xml", + "src/integrationtests/owl/qualifiedCardinalityRestrictions/testEA_owl_qualifiedCardinalityRestrictions.xml", new String[] { "ttl" }, "testResults/owl/qualifiedCardinalityRestrictions", "src/integrationtests/owl/qualifiedCardinalityRestrictions/reference"); } From 093d03e3d6953d0c70d46c51c10a655f9c8ea9a6 Mon Sep 17 00:00:00 2001 From: jdsika Date: Thu, 30 Jul 2026 10:36:59 +0200 Subject: [PATCH 4/4] build: make the Enterprise Architect module optional via the 'ea' profile shapechange-app declares a compile-scope dependency on shapechange-ea, which compiles against org.sparx:eaapi. That artifact ships inside an Enterprise Architect installation and is on no public repository, so a machine or CI runner without EA cannot build the app module at all: Could not resolve dependencies for project net.shapechange:shapechange-ea dependency: org.sparx:eaapi:jar:17.0.1704 (compile) Could not find artifact org.sparx:eaapi:jar:17.0.1704 in central The code does not need it. DefaultModelProvider resolves the EA model reader by class name (Class.forName("...shapechange.ea.model.EADocument")) and SqlDdl does the same for DatabaseModelWriterEA, so shapechange-core and shapechange-app hold no compile-time reference to any EA type - only the Maven wiring forces it. - Root POM: shapechange-ea moves into an 'ea' profile, activated by the absence of the skipEa property, so the default reactor is exactly as before. - shapechange-app: the shapechange-ea dependency and the EA-only resource copy move into the same profile. - BasicTest: the one EA type in the test sources, EAModelDiff, is resolved by class name in the private similarEaRepo helper, mirroring how the main code loads EA classes. Only .qea comparisons touch it, and without the module they now fail with a message naming the cause instead of failing to compile. Building with -DskipEa yields a distribution supporting every non-EA input type (SCXML, XMI, GCSR). Selecting inputModelType=EA7 in such a build fails at model load, where the class is looked up. Verified on Ubuntu 24.04 (WSL2), OpenJDK 21.0.11, Maven 3.9.16, against both paths - with Enterprise Architect 17 installed and its eaapi.jar registered in the local repository, and without it: - default: reactor unchanged, four modules; mvn install builds shapechange-core, shapechange-ea and shapechange-app successfully - -DskipEa: reactor is ShapeChange, shapechange-core, shapechange-app; builds - the OWL regression test passes on both paths: mvn [-DskipEa] -pl shapechange-app -am \ -Dtest=OntologyTest#testQualifiedCardinalityRestrictions test Tests run: 1, Failures: 0, Errors: 0. Without this change that command cannot run at all on a machine without EA. - full suite, both paths: Tests run: 255, Failures: 14, Errors: 78, Skipped: 34. Identical numbers with and without EA, so this change alters no test outcome. None of those 92 failures relates to this change, and all are EA-independent: - 78 errors and 12 failures come from the unconditional Saxon exclusion in this module's surefire configuration (classpathDependencyExcludes, net.sf.saxon:Saxon-HE). Lifting it makes CodelistsTest 3/3, FeatureCatalogueTest 16/16 and OutputProcessingTest 2/2 pass. - 2 failures are GeoPackage tests needing the external sqldiff binary, absent here. The 34 skipped tests are the same classes on both paths, the EA-backed ones among them (TaggedValueEaInputTransformerTest, SQLDatabaseModelTest, UmlModelTest, ArcGISWorkspaceTest): EA's native COM layer is not reachable from a Linux JVM, so they skip whether or not the module is built. No EA test starts failing silently under -DskipEa. Out of scope, but noted while testing: the Saxon exclusion makes any XSLT-producing target fail under mvn test, with or without EA. Worth a separate look; deliberately not touched here. Signed-off-by: jdsika --- pom.xml | 28 ++++++++- shapechange-app/pom.xml | 58 ++++++++++++++----- .../shapechange/app/BasicTest.java | 26 +++++++-- 3 files changed, 91 insertions(+), 21 deletions(-) diff --git a/pom.xml b/pom.xml index e95d6798d..52c5217c6 100644 --- a/pom.xml +++ b/pom.xml @@ -43,10 +43,36 @@ shapechange-core - shapechange-ea shapechange-app + + + + ea + + + !skipEa + + + + shapechange-ea + + + + + https://github.com/ShapeChange/ShapeChange scm:git:https://github.com/ShapeChange/ShapeChange.git diff --git a/shapechange-app/pom.xml b/shapechange-app/pom.xml index 9ae55c98d..10d9724cd 100644 --- a/shapechange-app/pom.xml +++ b/shapechange-app/pom.xml @@ -14,11 +14,6 @@ shapechange-core ${project.version} - - ${project.groupId} - shapechange-ea - ${project.version} - org.apache.xmlgraphics fop @@ -67,17 +62,6 @@ *.properties - - ../shapechange-ea/src/main/resources - true - ${project.basedir}/sc-resources - - **/* - - - *.properties - - @@ -413,4 +397,46 @@ + + + + ea + + + !skipEa + + + + + ${project.groupId} + shapechange-ea + ${project.version} + + + + + + ../shapechange-ea/src/main/resources + true + ${project.basedir}/sc-resources + + **/* + + + *.properties + + + + + + + \ No newline at end of file diff --git a/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/BasicTest.java b/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/BasicTest.java index bc7259724..1586e0e35 100644 --- a/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/BasicTest.java +++ b/shapechange-app/src/test/java/de/interactive_instruments/shapechange/app/BasicTest.java @@ -90,7 +90,6 @@ import de.interactive_instruments.shapechange.core.util.ExternalCallException; import de.interactive_instruments.shapechange.core.util.ExternalCallUtil; import de.interactive_instruments.shapechange.core.util.ZipHandler; -import de.interactive_instruments.shapechange.ea.util.EAModelDiff; /** * Basic unit test for ShapeChange @@ -642,6 +641,9 @@ private void similarYaml(String fileName, String referenceFileName) { } } + /** EA repository comparison helper, resolved reflectively; see similarEaRepo. */ + private static final String EA_MODEL_DIFF_CLASSNAME = "de.interactive_instruments.shapechange.ea.util.EAModelDiff"; + private void similarEaRepo(String fileName, String referenceFileName) { try { @@ -656,12 +658,28 @@ private void similarEaRepo(String fileName, String referenceFileName) { fail("Reference file " + referenceFile.getAbsolutePath() + " does not exist."); } - EAModelDiff differ = new EAModelDiff(); + /* + * Loaded by name, exactly as DefaultModelProvider loads EA model readers, so that + * these test sources compile and run without the shapechange-ea module on the + * classpath. Only .qea comparisons need it; every other assertion in this class is + * EA-independent. + */ + Object differ; + try { + differ = Class.forName(EA_MODEL_DIFF_CLASSNAME).getConstructor().newInstance(); + } catch (ClassNotFoundException e) { + fail("Comparing EA repositories requires the shapechange-ea module, which is not on" + + " the classpath. Build with EA support (omit -DskipEa) to run this test." + + " Result file: " + fileName); + return; + } - boolean similar = differ.similar(file, referenceFile); + boolean similar = (Boolean) differ.getClass().getMethod("similar", File.class, File.class) + .invoke(differ, file, referenceFile); + String diffDetails = (String) differ.getClass().getMethod("getDiffDetails").invoke(differ); assertTrue(similar, "EA repository output differs from reference result. Result file: " + fileName - + " - Reference file: " + referenceFileName + ". Details:\n" + differ.getDiffDetails()); + + " - Reference file: " + referenceFileName + ". Details:\n" + diffDetails); } catch (Exception e) { fail("Exception while comparing EA repository '" + fileName + "' to reference file '" + referenceFileName