From 669f78b8d4503a35e06ffaa60b22c3915b4f35ea Mon Sep 17 00:00:00 2001
From: arjan
Date: Fri, 5 Apr 2024 11:10:57 +0200
Subject: [PATCH 01/75] Release van Development opgehoogd
---
src/main/resources/static/release/release.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/resources/static/release/release.xml b/src/main/resources/static/release/release.xml
index 0e3c6afc..5f3b7d7a 100644
--- a/src/main/resources/static/release/release.xml
+++ b/src/main/resources/static/release/release.xml
@@ -2,7 +2,7 @@
ImvertorNightly-build
- 13
+ 14Copyright (C) 2016-2022 Dienst voor het Kadaster en de openbare registers.
This program comes with ABSOLUTELY NO WARRANTY; for details pass -help program.
From ffa26affa1719d8a2d9f3dec17c3175898daf91d Mon Sep 17 00:00:00 2001
From: arjan
Date: Fri, 5 Apr 2024 11:11:38 +0200
Subject: [PATCH 02/75] Bugfix op RDF output van MIM compiler
---
.../xsl/MIMCompiler/v2/MIMCompiler-RDF.xsl | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler-RDF.xsl b/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler-RDF.xsl
index 598b9b87..955a03ef 100644
--- a/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler-RDF.xsl
+++ b/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler-RDF.xsl
@@ -199,16 +199,12 @@ Zie: https://docs.geostandaarden.nl/mim/mim/ voor de laatste versie van de stand
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
From ed428ce9ce8349229f140a29f32d23bce26f5d0c Mon Sep 17 00:00:00 2001
From: arjan
Date: Mon, 8 Apr 2024 13:51:48 +0200
Subject: [PATCH 03/75] Bugfix samenstellen EA toollbox
Vanaf nu is ook informatiemodel stereotype onderdeel van de packages
sectie in de toolbox view.
Bugfix.
---
src/main/resources/input/MIM/cfg/visuals/MIM10.xml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/resources/input/MIM/cfg/visuals/MIM10.xml b/src/main/resources/input/MIM/cfg/visuals/MIM10.xml
index df34fda3..05af863f 100644
--- a/src/main/resources/input/MIM/cfg/visuals/MIM10.xml
+++ b/src/main/resources/input/MIM/cfg/visuals/MIM10.xml
@@ -123,6 +123,9 @@
+
+
+
From ce9a87dedf08efb1a6b258b8631bc86097c4b5d2 Mon Sep 17 00:00:00 2001
From: arjan
Date: Mon, 8 Apr 2024 13:52:30 +0200
Subject: [PATCH 04/75] Logius: Verbeterde naamgeving toolbox.
---
.../input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml b/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml
index df858132..30477387 100644
--- a/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml
+++ b/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml
@@ -12,14 +12,14 @@
- MEGNL
+ Logius-C-NL
- MIM 1.1.1 Logius NL
+ MIM 1.1.1 Logius Conceptueel NL
- MEGEN
+ Logius-C-EN
- MIM 1.1.1 Logius EN
+ MIM 1.1.1 Logius Conceptual EN
From be347df26a954122e03457127fb09d2f2983021f Mon Sep 17 00:00:00 2001
From: arjan
Date: Tue, 9 Apr 2024 11:08:38 +0200
Subject: [PATCH 05/75] EIGENAAR wordt gekoppeld aan Imvertor metamodel.
---
.../EIGENAAR/cfg/metamodels/EIGENAAR-CONCEPTUAL.xml | 3 ++-
.../input/EIGENAAR/cfg/tvsets/EIGENAAR-CONCEPTUAL.xml | 3 ++-
.../input/EIGENAAR/cfg/visuals/EIGENAAR-CONCEPTUAL.xml | 5 +++--
.../input/EIGENAAR/cfg/visuals/EIGENAAR-LOGICAL.xml | 10 +++++-----
4 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/main/resources/input/EIGENAAR/cfg/metamodels/EIGENAAR-CONCEPTUAL.xml b/src/main/resources/input/EIGENAAR/cfg/metamodels/EIGENAAR-CONCEPTUAL.xml
index b42e12dc..04dd3b24 100644
--- a/src/main/resources/input/EIGENAAR/cfg/metamodels/EIGENAAR-CONCEPTUAL.xml
+++ b/src/main/resources/input/EIGENAAR/cfg/metamodels/EIGENAAR-CONCEPTUAL.xml
@@ -4,8 +4,9 @@
-->
-
+
+ EIGENAAR CONCEPTUEEL
diff --git a/src/main/resources/input/EIGENAAR/cfg/tvsets/EIGENAAR-CONCEPTUAL.xml b/src/main/resources/input/EIGENAAR/cfg/tvsets/EIGENAAR-CONCEPTUAL.xml
index a2ed4c89..554e2a38 100644
--- a/src/main/resources/input/EIGENAAR/cfg/tvsets/EIGENAAR-CONCEPTUAL.xml
+++ b/src/main/resources/input/EIGENAAR/cfg/tvsets/EIGENAAR-CONCEPTUAL.xml
@@ -4,8 +4,9 @@
-->
-
+
+ EIGENAAR CONCEPTUEEL
diff --git a/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-CONCEPTUAL.xml b/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-CONCEPTUAL.xml
index 407d0d7b..524279b1 100644
--- a/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-CONCEPTUAL.xml
+++ b/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-CONCEPTUAL.xml
@@ -4,12 +4,13 @@
-->
-
+
+
- BRO MIM 1.1
+ EIGENAAR MIM 1.1.1Visuals for EIGENAAR modellenVisuele aspecten van EIGENAAR modellen
diff --git a/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-LOGICAL.xml b/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-LOGICAL.xml
index 08bb78ae..8a8e5947 100644
--- a/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-LOGICAL.xml
+++ b/src/main/resources/input/EIGENAAR/cfg/visuals/EIGENAAR-LOGICAL.xml
@@ -4,11 +4,11 @@
-->
-
-
+
+
BRO logicalVisuals for BRO logical models
@@ -17,7 +17,7 @@
-
+
@@ -25,5 +25,5 @@
-
+
From a0a8ad1110aa19177fd271707697115ab0582773 Mon Sep 17 00:00:00 2001
From: arjan
Date: Tue, 9 Apr 2024 11:08:56 +0200
Subject: [PATCH 06/75] Logius wordt gekoppeld aan Imvertor metamodel.
---
.../input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml | 3 ++-
.../input/Logius/cfg/tvsets/Logius-CONCEPTUAL.xml | 3 ++-
.../input/Logius/cfg/visuals/Logius-CONCEPTUAL.xml | 5 +++--
.../input/Logius/cfg/visuals/Logius-LOGICAL.xml | 11 ++++++-----
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml b/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml
index 30477387..25875e9b 100644
--- a/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml
+++ b/src/main/resources/input/Logius/cfg/metamodels/Logius-CONCEPTUAL.xml
@@ -4,8 +4,9 @@
-->
-
+
+ Logius CONCEPTUEEL
diff --git a/src/main/resources/input/Logius/cfg/tvsets/Logius-CONCEPTUAL.xml b/src/main/resources/input/Logius/cfg/tvsets/Logius-CONCEPTUAL.xml
index a0ada0af..aaac0239 100644
--- a/src/main/resources/input/Logius/cfg/tvsets/Logius-CONCEPTUAL.xml
+++ b/src/main/resources/input/Logius/cfg/tvsets/Logius-CONCEPTUAL.xml
@@ -4,8 +4,9 @@
-->
-
+
+ Logius CONCEPTUEEL
diff --git a/src/main/resources/input/Logius/cfg/visuals/Logius-CONCEPTUAL.xml b/src/main/resources/input/Logius/cfg/visuals/Logius-CONCEPTUAL.xml
index d6d17838..747b122c 100644
--- a/src/main/resources/input/Logius/cfg/visuals/Logius-CONCEPTUAL.xml
+++ b/src/main/resources/input/Logius/cfg/visuals/Logius-CONCEPTUAL.xml
@@ -4,12 +4,13 @@
-->
-
+
+
- BRO MIM 1.1
+ BRO MIM 1.1.1Visuals for Logius modellenVisuele aspecten van Logius modellen
diff --git a/src/main/resources/input/Logius/cfg/visuals/Logius-LOGICAL.xml b/src/main/resources/input/Logius/cfg/visuals/Logius-LOGICAL.xml
index 08bb78ae..8ec9dfb0 100644
--- a/src/main/resources/input/Logius/cfg/visuals/Logius-LOGICAL.xml
+++ b/src/main/resources/input/Logius/cfg/visuals/Logius-LOGICAL.xml
@@ -4,11 +4,12 @@
-->
-
-
+
+
+
BRO logicalVisuals for BRO logical models
@@ -17,13 +18,13 @@
-
+
-
+
From ad8a97a8f317eb6bf7b7851bc4349fcfe809e40b Mon Sep 17 00:00:00 2001
From: arjan
Date: Tue, 9 Apr 2024 11:24:55 +0200
Subject: [PATCH 07/75] Gebruik van streaming XMI reader voor extraheren van
images.
In een vroeg stadium worden alle base64 images van EA afgekoppeld zodat
de XMI verwerking niet te veel geheugen zal gaan innemen.
Optimalisatie.
---
.../XmiCompiler/XMIImageExporter.java | 131 ++++++++++++++++++
.../nl/imvertor/XmiCompiler/XmiCompiler.java | 29 ++++
.../xsl/XmiTranslator/XMI1Imvert.xsl | 9 +-
3 files changed, 165 insertions(+), 4 deletions(-)
create mode 100644 src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java
diff --git a/src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java b/src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java
new file mode 100644
index 00000000..3ed85b99
--- /dev/null
+++ b/src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java
@@ -0,0 +1,131 @@
+package nl.imvertor.XmiCompiler;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.Base64.Decoder;
+import java.util.List;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+public class XMIImageExporter {
+
+ public List export(InputStream xmiStreamIn, OutputStream xmiStreamOut) throws Exception {
+ String name = null;
+ String imageID = null;
+ boolean isImage = false;
+ List imageList = new ArrayList<>();
+ StringBuffer imageDataBuffer = new StringBuffer();
+ Decoder base64Decoder = Base64.getDecoder();
+ XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
+ xmlInputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE);
+ XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(xmiStreamIn);
+ XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(xmiStreamOut);
+ boolean hasNext;
+ do {
+ switch (reader.getEventType()) {
+ case XMLStreamConstants.START_DOCUMENT:
+ writer.writeStartDocument(reader.getEncoding(), reader.getVersion());
+ break;
+ case XMLStreamConstants.END_DOCUMENT:
+ writer.writeEndDocument();
+ break;
+ case XMLStreamConstants.START_ELEMENT:
+ writer.writeStartElement(reader.getPrefix(), reader.getLocalName(), def(reader.getNamespaceURI(), ""));
+ for (int i = 0; i < reader.getNamespaceCount(); i++)
+ writer.writeNamespace(reader.getNamespacePrefix(i), reader.getNamespaceURI(i));
+ for (int i = 0; i < reader.getAttributeCount(); i++)
+ writer.writeAttribute(reader.getAttributePrefix(i), def(reader.getAttributeNamespace(i), ""),
+ reader.getAttributeLocalName(i), reader.getAttributeValue(i));
+ if (reader.getLocalName().equals("EAImage")) {
+ isImage = true;
+ name = reader.getAttributeValue(null, "name");
+ imageID = reader.getAttributeValue(null, "imageID");
+ }
+ break;
+ case XMLStreamConstants.END_ELEMENT:
+ if (isImage) {
+ byte[] imageData = base64Decoder.decode(imageDataBuffer.toString());
+ imageDataBuffer.setLength(0);
+ imageList.add(new Image(name, imageID, imageData));
+ writer.writeComment("Image data removed");
+ isImage = false;
+ }
+ writer.writeEndElement();
+ break;
+ case XMLStreamConstants.CHARACTERS:
+ if (isImage) {
+ imageDataBuffer.append(reader.getText().replaceAll("\\s+", ""));
+ } else {
+ writer.writeCharacters(reader.getText());
+ }
+ break;
+ case XMLStreamConstants.CDATA:
+ writer.writeCData(reader.getText());
+ break;
+ case XMLStreamConstants.COMMENT:
+ writer.writeComment(reader.getText());
+ break;
+ case XMLStreamConstants.PROCESSING_INSTRUCTION:
+ writer.writeProcessingInstruction(reader.getPITarget(), reader.getPIData());
+ break;
+ }
+ hasNext = reader.hasNext();
+ if (hasNext)
+ reader.next();
+ } while (hasNext);
+ return imageList;
+ }
+
+ public static final class Image {
+
+ private String name;
+ private String imageID;
+ private byte[] data;
+
+ public Image(String name, String imageID, byte[] data) {
+ this.name = name;
+ this.imageID = imageID;
+ this.data = data;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getImageID() {
+ return imageID;
+ }
+
+ public byte[] getData() {
+ return data;
+ }
+
+ }
+
+ private String def(String text, String def) {
+ return text == null ? def : text;
+ }
+
+ /*
+ public static void main(String[] args) throws Exception {
+ XMIImageExporter exporter = new XMIImageExporter();
+ try (FileInputStream xmiFis = new FileInputStream(new File("D:\\Projects\\validprojects\\Kadaster-Imvertor\\Imvertor-OS-work\\Tasks-GIThub\\xmi\\GIThub-issues.qea.xmi"));
+ FileOutputStream xmiFos = new FileOutputStream(new File("D:\\Projects\\validprojects\\Kadaster-Imvertor\\Imvertor-OS-work\\Tasks-GIThub\\xmi\\GIThub-issues.qea.out.xmi"))) {
+ List images = exporter.export(xmiFis, xmiFos);
+ for (Image image: images) {
+ System.out.println(image.name);
+ System.out.println(image.imageID);
+ try (FileOutputStream imgFos = new FileOutputStream(new File("D:\\Projects\\validprojects\\Kadaster-Imvertor\\Imvertor-OS-work\\Tasks-GIThub\\xmi\\Images\\" + image.imageID + "_" + image.name))) {
+ imgFos.write(image.data);
+ }
+ }
+ }
+ }
+ */
+}
diff --git a/src/main/java/nl/imvertor/XmiCompiler/XmiCompiler.java b/src/main/java/nl/imvertor/XmiCompiler/XmiCompiler.java
index 0793ea5d..6e3ff56e 100644
--- a/src/main/java/nl/imvertor/XmiCompiler/XmiCompiler.java
+++ b/src/main/java/nl/imvertor/XmiCompiler/XmiCompiler.java
@@ -21,13 +21,18 @@
package nl.imvertor.XmiCompiler;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.List;
import javax.xml.xpath.XPathConstants;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.w3c.dom.NodeList;
+import nl.imvertor.XmiCompiler.XMIImageExporter.Image;
import nl.imvertor.common.Step;
import nl.imvertor.common.Transformer;
import nl.imvertor.common.file.AnyFile;
@@ -273,11 +278,35 @@ private XmlFile exportEapToXmi(EapFile eapFile, XmlFile xmifile, String projectN
*/
private void cleanXMI(XmlFile xmiFile) throws Exception {
+ // decode alle images uit content naar de Images folder
+ extractImages(xmiFile);
+
+ // Probeer character fix
String c = xmiFile.getContent();
if (c.contains(""))
xmiFile.setContent(StringUtils.replacePattern(c, "[0-9]{4};", "?"));
}
+ private void extractImages(XmlFile xmiFile) throws Exception {
+ XMIImageExporter exporter = new XMIImageExporter();
+ AnyFile tempFile = new AnyFile(File.createTempFile("extractImages.", ".xmi"));
+ tempFile.deleteOnExit();
+ File imageFolder = new File(xmiFile.getParentFile(),"Images");
+ try (FileInputStream xmiFis = new FileInputStream(xmiFile);
+ FileOutputStream xmiFos = new FileOutputStream(tempFile)) {
+ List images = exporter.export(xmiFis, xmiFos);
+ for (Image image: images) {
+ try (FileOutputStream imgFos = new FileOutputStream(new File(imageFolder, image.getImageID() + "_" + image.getName()))) {
+ imgFos.write(image.getData());
+ imgFos.close();
+ }
+ }
+ xmiFis.close();
+ xmiFos.close();
+ tempFile.copyFile(xmiFile);
+ }
+ }
+
private void migrateXMI(XmlFile xmiFile, String mode) throws Exception {
runner.warn(logger,"This model is subject to migration rules, please consider aligning the model with the metamodel",null,"TMISTMR");
AnyFile outFile = new AnyFile(File.createTempFile("migrateXMI.", ".xmi"));
diff --git a/src/main/resources/xsl/XmiTranslator/XMI1Imvert.xsl b/src/main/resources/xsl/XmiTranslator/XMI1Imvert.xsl
index aacfa802..e591b6ed 100644
--- a/src/main/resources/xsl/XmiTranslator/XMI1Imvert.xsl
+++ b/src/main/resources/xsl/XmiTranslator/XMI1Imvert.xsl
@@ -268,10 +268,9 @@
-
-
-
-
+
+ x?>
@@ -519,6 +518,7 @@
+
@@ -526,6 +526,7 @@
+ x?>
From 176cbf28c6da92eceb6c65400c4f30bc1649e41b Mon Sep 17 00:00:00 2001
From: arjan
Date: Tue, 9 Apr 2024 12:46:27 +0200
Subject: [PATCH 08/75] Toevoeging van "keuzes" in EA toolbox.
Deze waren niet alle vertegenwoordigd.
Bugfix.
---
.../resources/input/MIM/cfg/visuals/MIM10.xml | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/main/resources/input/MIM/cfg/visuals/MIM10.xml b/src/main/resources/input/MIM/cfg/visuals/MIM10.xml
index 05af863f..218879a4 100644
--- a/src/main/resources/input/MIM/cfg/visuals/MIM10.xml
+++ b/src/main/resources/input/MIM/cfg/visuals/MIM10.xml
@@ -74,13 +74,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 3dd4b33048ce3196efd27efadf3a0f7aafadc3ce Mon Sep 17 00:00:00 2001
From: arjan
Date: Thu, 11 Apr 2024 12:30:51 +0200
Subject: [PATCH 09/75] Forceer UTF-8 bij uitlezen van XMI.
De image encoder ging uit van getEncoding() die niet altijd de juiste
codering oplevert. Uitgangspunt is dat de XMI altijd in UTF-8 wordt
aangeleverd.
Bugfix.
---
src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java b/src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java
index 3ed85b99..a3709800 100644
--- a/src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java
+++ b/src/main/java/nl/imvertor/XmiCompiler/XMIImageExporter.java
@@ -7,12 +7,15 @@
import java.util.Base64.Decoder;
import java.util.List;
+import javax.sound.sampled.AudioFormat.Encoding;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.commons.lang.CharEncoding;
+
public class XMIImageExporter {
public List export(InputStream xmiStreamIn, OutputStream xmiStreamOut) throws Exception {
@@ -30,7 +33,7 @@ public List export(InputStream xmiStreamIn, OutputStream xmiStreamOut) th
do {
switch (reader.getEventType()) {
case XMLStreamConstants.START_DOCUMENT:
- writer.writeStartDocument(reader.getEncoding(), reader.getVersion());
+ writer.writeStartDocument(CharEncoding.UTF_8, reader.getVersion());
break;
case XMLStreamConstants.END_DOCUMENT:
writer.writeEndDocument();
From 4676d10e62f30ab370a9b486e5466a99d7ee4b27 Mon Sep 17 00:00:00 2001
From: arjan
Date: Thu, 11 Apr 2024 12:39:35 +0200
Subject: [PATCH 10/75] BRO: In ISO19136 toevoeging keuze tussen Objecttypen
(MIM)
Zie #473
Minor, het is een uitbreiding van de schema module.
---
.../xsl/XsdCompiler/Imvert2XSD-ISO19136.xsl | 63 ++++++++++++++-----
1 file changed, 46 insertions(+), 17 deletions(-)
diff --git a/src/main/resources/xsl/XsdCompiler/Imvert2XSD-ISO19136.xsl b/src/main/resources/xsl/XsdCompiler/Imvert2XSD-ISO19136.xsl
index fe18c413..6c6edb68 100644
--- a/src/main/resources/xsl/XsdCompiler/Imvert2XSD-ISO19136.xsl
+++ b/src/main/resources/xsl/XsdCompiler/Imvert2XSD-ISO19136.xsl
@@ -372,6 +372,7 @@
+
@@ -416,9 +417,9 @@
-
-
-
+
+
+
@@ -427,18 +428,18 @@
-
+
-
+
-
+
@@ -449,12 +450,33 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -478,16 +500,16 @@
-
+
-
+
-
+
@@ -569,6 +591,13 @@
+
+
+
+
+
+
+
@@ -649,8 +678,13 @@
-
+
+
+
+
@@ -1271,13 +1305,8 @@
-
-
-
+
From e409404cc8fbc22172dcec9dcdf4ed9bae26fc4c Mon Sep 17 00:00:00 2001
From: arjan
Date: Mon, 15 Apr 2024 10:57:44 +0200
Subject: [PATCH 11/75] Keuzen tussen Objecttype vereisen geen naam van de
relatie meer
Bugfix
---
src/main/resources/xsl/Validator/Imvert2validation.xsl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/resources/xsl/Validator/Imvert2validation.xsl b/src/main/resources/xsl/Validator/Imvert2validation.xsl
index 0e5e4dcd..d5cfcc45 100644
--- a/src/main/resources/xsl/Validator/Imvert2validation.xsl
+++ b/src/main/resources/xsl/Validator/Imvert2validation.xsl
@@ -969,7 +969,7 @@
-
+
@@ -983,7 +983,7 @@
not($is-collection) and $this/imvert:name and not(imf:test-name-convention($this)),
'Association name does not obey convention')"/>
- :
+ : Name
- :
+ : Version
+
+ : Imvertor
- :
+ : At
diff --git a/src/main/resources/xsl/OfficeCompiler/Imvert2modeldoc.xsl b/src/main/resources/xsl/OfficeCompiler/Imvert2modeldoc.xsl
index 4143ceb4..9d53fd06 100644
--- a/src/main/resources/xsl/OfficeCompiler/Imvert2modeldoc.xsl
+++ b/src/main/resources/xsl/OfficeCompiler/Imvert2modeldoc.xsl
@@ -77,7 +77,7 @@
-
+
@@ -1619,6 +1619,7 @@
+
From 8fdda0eacf6f63fc2e0205115f04f53d7eeb531e Mon Sep 17 00:00:00 2001
From: arjan
Date: Tue, 16 Apr 2024 11:28:03 +0200
Subject: [PATCH 13/75] Extra MIM info toegevoegd aan report.
Minor. Uitbreiding.
---
src/main/resources/xsl/MIMCompiler/MIMCompiler-report.xsl | 1 +
src/main/resources/xsl/MIMCompiler/v2/MIMCompiler.xsl | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/main/resources/xsl/MIMCompiler/MIMCompiler-report.xsl b/src/main/resources/xsl/MIMCompiler/MIMCompiler-report.xsl
index 7af45cf8..aeba9a90 100644
--- a/src/main/resources/xsl/MIMCompiler/MIMCompiler-report.xsl
+++ b/src/main/resources/xsl/MIMCompiler/MIMCompiler-report.xsl
@@ -43,6 +43,7 @@
+
diff --git a/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler.xsl b/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler.xsl
index 62c81795..109f00aa 100644
--- a/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler.xsl
+++ b/src/main/resources/xsl/MIMCompiler/v2/MIMCompiler.xsl
@@ -215,6 +215,11 @@
+
+
+
@@ -571,7 +576,7 @@
-
+
From 9b92105608c0ec69278d63190ce4cf814942ca58 Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 11:23:28 +0200
Subject: [PATCH 14/75] String trimming nu gebruik van apache commons
Minor, improvement.
---
src/main/java/nl/imvertor/OfficeCompiler/OfficeCompiler.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/nl/imvertor/OfficeCompiler/OfficeCompiler.java b/src/main/java/nl/imvertor/OfficeCompiler/OfficeCompiler.java
index b3cfd34a..a6788e8e 100644
--- a/src/main/java/nl/imvertor/OfficeCompiler/OfficeCompiler.java
+++ b/src/main/java/nl/imvertor/OfficeCompiler/OfficeCompiler.java
@@ -25,9 +25,9 @@
import java.util.Iterator;
import java.util.Vector;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.jgit.transport.PushResult;
-import org.springframework.util.StringUtils;
import nl.imvertor.common.Configurator;
import nl.imvertor.common.Step;
@@ -146,7 +146,7 @@ public void generateOfficeReport() throws Exception {
}
}
private String trim(String urlfrag) {
- return StringUtils.trimTrailingCharacter(StringUtils.trimLeadingCharacter(urlfrag,'/'),'/');
+ return StringUtils.removeEnd(StringUtils.removeStart(urlfrag,"/"),"/");
}
/*
From d273a683de6e63bde3f9af0bda67bd9278467fe6 Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 11:39:16 +0200
Subject: [PATCH 15/75] RemovePattern verplaatst naar RegExUtils
Minor, upgrade.
---
src/main/java/nl/imvertor/common/file/AnyFolder.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/nl/imvertor/common/file/AnyFolder.java b/src/main/java/nl/imvertor/common/file/AnyFolder.java
index 5ce06aaa..2203947f 100644
--- a/src/main/java/nl/imvertor/common/file/AnyFolder.java
+++ b/src/main/java/nl/imvertor/common/file/AnyFolder.java
@@ -29,7 +29,7 @@
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.output.FileWriterWithEncoding;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.RegExUtils;
import nl.imvertor.common.Configurator;
import nl.imvertor.common.Transformer;
@@ -349,7 +349,7 @@ private String getSpecs(AnyFile file) throws IOException {
}
private String cleanXmlPI(String xmlString) {
- return StringUtils.removePattern(xmlString, XmlFile.xmlPiRegex);
+ return RegExUtils.removePattern(xmlString, XmlFile.xmlPiRegex);
}
/*
From 742fc984367318845caa1f8710565a8327df460c Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 12:42:15 +0200
Subject: [PATCH 16/75] RDF Validatie met behulp van Shacl opnieuw
geimplementeerd
De validator onderscheid fouten in Shacl (schema) van fouten in de RDF
(instance).
Zie #476
Bugfix. Eerdere versie voldeed niet.
---
.../nl/imvertor/common/file/ShaclFile.java | 121 +++++++++---------
1 file changed, 57 insertions(+), 64 deletions(-)
diff --git a/src/main/java/nl/imvertor/common/file/ShaclFile.java b/src/main/java/nl/imvertor/common/file/ShaclFile.java
index 7b063f36..3ae513b4 100644
--- a/src/main/java/nl/imvertor/common/file/ShaclFile.java
+++ b/src/main/java/nl/imvertor/common/file/ShaclFile.java
@@ -21,16 +21,24 @@
package nl.imvertor.common.file;
import java.io.File;
+import java.io.StringReader;
-import org.apache.jena.atlas.RuntimeIOException;
-import org.apache.jena.rdf.model.Model;
-import org.apache.jena.riot.RiotException;
-import org.apache.jena.util.FileUtils;
import org.apache.log4j.Logger;
-import org.topbraid.shacl.validation.ValidationUtil;
-import org.topbraid.spin.util.JenaUtil;
+import org.eclipse.rdf4j.common.exception.ValidationException;
+import org.eclipse.rdf4j.model.Model;
+import org.eclipse.rdf4j.model.vocabulary.RDF4J;
+import org.eclipse.rdf4j.repository.RepositoryConnection;
+import org.eclipse.rdf4j.repository.RepositoryException;
+import org.eclipse.rdf4j.repository.sail.SailRepository;
+import org.eclipse.rdf4j.rio.RDFFormat;
+import org.eclipse.rdf4j.rio.Rio;
+import org.eclipse.rdf4j.rio.WriterConfig;
+import org.eclipse.rdf4j.rio.helpers.BasicWriterSettings;
+import org.eclipse.rdf4j.sail.memory.MemoryStore;
+import org.eclipse.rdf4j.sail.shacl.ShaclSail;
import nl.imvertor.common.Configurator;
+import nl.imvertor.common.Runner;
/**
* A representation of a Shacl file.
@@ -44,8 +52,8 @@ public class ShaclFile extends RdfFile {
private static final long serialVersionUID = 1L;
protected static final Logger logger = Logger.getLogger(ShaclFile.class);
- private Model dataShape;
- private Model dataModel;
+ /*private Model dataShape;
+ private Model dataModel;*/
public ShaclFile(String pathname) {
super(pathname);
@@ -62,66 +70,51 @@ public void validate(Configurator configurator) throws Exception {
}
public void parse(Configurator configurator) throws Exception {
-
- try {
- // Load the main data model
- dataShape = JenaUtil.createMemoryModel();
- dataShape.read(this.getFileInputStream(), "",
- FileUtils.langTurtle);
-
- } catch (RuntimeIOException ie) {
- configurator.getRunner().error(logger,"Jena IO error: " + ie.getMessage());
-
- } catch (RiotException re) {
- configurator.getRunner().error(logger,re.getMessage());
-
- } catch (Exception e) {
- throw e;
- }
-
+ this.parse(configurator, "");
}
-
+
public void parse(Configurator configurator, String ttlDataFilePath) throws Exception {
- parse(configurator);
- // if the model is read okay, parse the TTL data file passed.
+ Runner runner = Configurator.getInstance().getRunner();
- if (configurator.getRunner().succeeds()) {
- try {
-
- dataModel = JenaUtil.createMemoryModel();
- RdfFile dataFile = new RdfFile(ttlDataFilePath);
- dataModel.read(dataFile.getFileInputStream(), "",
- FileUtils.langTurtle);
-
- // Perform the validation of everything, using the data model
- // also as the shapes model - you may have them separated
- Configurator.getInstance().getRunner().warn(logger,"Cannot yet validate SKOS result");
-
- //ValidationUtil.validateModel(dataModel, dataShape, true); // returns Resource report
-
- /* This will return a small report on the status of the model. Format:
-
- @base .
- @prefix ex: .
- @prefix owl: .
- @prefix uml: .
- @prefix sh: .
- @prefix kkg: .
- @prefix rdfs: .
-
- [ a sh:ValidationReport ;
- sh:conforms true
- ] .
- */
- //ModelPrinter.get().print(report.getModel());
-
- } catch (RiotException re) {
- configurator.getRunner().error(logger,re.getMessage());
-
- } catch (Exception e) {
- throw e;
- }
+ // Create a SHACL-enabled repository
+ ShaclSail shaclSail = new ShaclSail(new MemoryStore());
+
+ SailRepository sailRepository = new SailRepository(shaclSail);
+ sailRepository.init();
+
+ // Load data into the repository
+ try (RepositoryConnection connection = sailRepository.getConnection()) {
+ connection.begin();
+
+ // Load shapes
+ StringReader shaclRules = new StringReader(getContent());
+
+ connection.add(shaclRules, "", RDFFormat.TURTLE, RDF4J.SHACL_SHAPE_GRAPH);
+ connection.commit();
+
+ if (!ttlDataFilePath.equals("")) {
+
+ // Load RDF data
+ AnyFile dataFile = new AnyFile(ttlDataFilePath);
+
+ StringReader invalidSampleData = new StringReader(dataFile.getContent());
+
+ connection.begin();
+ connection.add(invalidSampleData, "", RDFFormat.TURTLE);
+ try {
+ connection.commit();
+ } catch (RepositoryException exception) {
+ Throwable cause = exception.getCause();
+ if (cause instanceof ValidationException) {
+ runner.error(logger, "Shacl validator reports RDF error: " + exception.getMessage());
+ } else
+ throw exception;
+ }
+ }
+
+ } catch (Exception e) {
+ runner.warn(logger, "Shacl validator scheme invalid, cannot validate RDF: " + e.getMessage(),"rdf-parse","some-wiki-ref");
}
}
From 966f38681345f720ad89fa3592480be8e57bc22b Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 12:42:39 +0200
Subject: [PATCH 17/75] TODO verwijderd.
---
src/main/java/nl/imvertor/SkosCompiler/SkosCompiler.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/nl/imvertor/SkosCompiler/SkosCompiler.java b/src/main/java/nl/imvertor/SkosCompiler/SkosCompiler.java
index c894bf95..f0336275 100644
--- a/src/main/java/nl/imvertor/SkosCompiler/SkosCompiler.java
+++ b/src/main/java/nl/imvertor/SkosCompiler/SkosCompiler.java
@@ -93,7 +93,7 @@ public boolean generateSKOS() throws Exception {
String skosSchemaUrl = configurator.getXParm("system/skos-schema-url"); // wordt gezet bij het genereren van een SKOS file.
if (skosSchemaUrl != null) {
ShaclFile skosSchema = shaclFileByCatalog(skosSchemaUrl);
- skosFile.validate(configurator, skosSchema); // TODO
+ skosFile.validate(configurator, skosSchema);
} else
skosFile.validate(configurator);
From 24c1027cfc26398138485db4f68dbfe8384e4bb5 Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 12:43:27 +0200
Subject: [PATCH 18/75] Noodzakelijke switch naar rdf4j versie 5
Upgrade.
---
pom.xml | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index a4b4274f..2c286f71 100644
--- a/pom.xml
+++ b/pom.xml
@@ -192,18 +192,27 @@
org.eclipse.rdf4jrdf4j-runtime
- 2.4.1
+ 5.0.0-M2
+ pomorg.eclipse.rdf4jrdf4j-rio-rdfxml
- 2.4.1
+ 5.0.0-M2org.eclipse.rdf4jrdf4j-rio-turtle
- 2.4.1
+ 5.0.0-M2
+
+
+
+ org.eclipse.rdf4j
+ rdf4j-model
+ 5.0.0-M2
+
+
org.slf4j
From 860f176b2d49f4c85d379b1e619175ae205a8829 Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 19:46:52 +0200
Subject: [PATCH 19/75] Commentaar toegevoegd.
---
.../java/nl/imvertor/common/file/ShaclFile.java | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/main/java/nl/imvertor/common/file/ShaclFile.java b/src/main/java/nl/imvertor/common/file/ShaclFile.java
index 3ae513b4..e5c7fa72 100644
--- a/src/main/java/nl/imvertor/common/file/ShaclFile.java
+++ b/src/main/java/nl/imvertor/common/file/ShaclFile.java
@@ -69,10 +69,24 @@ public void validate(Configurator configurator) throws Exception {
this.parse(configurator);
}
+ /**
+ * Valideer een turtle file (well-formedness check).
+ *
+ * @param configurator De Configurator instance
+ **/
public void parse(Configurator configurator) throws Exception {
this.parse(configurator, "");
}
+ /**
+ * Valideer een turtle file en lever de fouten op in de vorm van error messages.
+ *
+ *
Zie ook https://rdf4j.org/documentation/programming/shacl/
+ *
+ * @param configurator De Configurator instance
+ * @param ttlDataFilePath Pad naar het Turtle file
+ * @throws Exception Een fout die niet betrekking heeft op de validatie van Turtle zelf.
+ */
public void parse(Configurator configurator, String ttlDataFilePath) throws Exception {
Runner runner = Configurator.getInstance().getRunner();
From fe17a089e180f11018808ba4031f07c75e62f977 Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 20:23:00 +0200
Subject: [PATCH 20/75] Laatste SBB SKOS shapes opgehaald.
Vanuit https://raw.githubusercontent.com/pldn/nederlands-profiel-voor-stelselcatalogi/main/profiles/skos-ap-nl.ttl
Zie #476
Minor. Update.
---
.../etc/skos/skos-ap-nl/skos-ap-nl.ttl | 334 +++++++++++++++---
1 file changed, 279 insertions(+), 55 deletions(-)
diff --git a/src/main/resources/etc/skos/skos-ap-nl/skos-ap-nl.ttl b/src/main/resources/etc/skos/skos-ap-nl/skos-ap-nl.ttl
index 670d93bd..8c4fab69 100644
--- a/src/main/resources/etc/skos/skos-ap-nl/skos-ap-nl.ttl
+++ b/src/main/resources/etc/skos/skos-ap-nl/skos-ap-nl.ttl
@@ -13,22 +13,22 @@
@prefix dcat: .
@prefix adms: .
@prefix prov: .
-@prefix vcard: .
skosapnl:
a owl:Ontology ;
- rdfs:label "Toepassingsprofiel Nederlandse standaard voor het beschrijven van begrippen in LD"@nl ;
- owl:versionInfo "0.0.1" .
+ rdfs:label "Toepassingsprofiel Nederlandse standaard voor het beschrijven van begrippen in RDF"@nl ;
+ owl:versionInfo "1.0.0" ;
+ sh:declare [
+ sh:prefix "skos" ;
+ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ;
+ ] .
skosapnl:Concept
a sh:NodeShape ;
rdfs:comment "Een abstract idee of notie."@nl, "An idea or notion; a unit of thought."@en ;
rdfs:label "Begrip"@nl ;
- sh:property
- skosapnl:Concept-exactMatch ,
- skosapnl:Concept-narrowMatch ,
+ sh:property
skosapnl:Concept-example ,
- skosapnl:Concept-relatedMatch ,
skosapnl:Concept-comment ,
skosapnl:Concept-source ,
skosapnl:Concept-hiddenLabel ,
@@ -40,20 +40,28 @@ skosapnl:Concept
skosapnl:Concept-topConceptOf ,
skosapnl:Concept-closeMatch ,
skosapnl:Concept-label ,
- skosapnl:Concept-narrowerInstantial ,
- skosapnl:Concept-narrowerPartitive ,
skosapnl:Concept-editorialNote ,
- skosapnl:Concept-broaderPartitive ,
skosapnl:Concept-prefLabel ,
skosapnl:Concept-historyNote ,
skosapnl:Concept-altLabel ,
skosapnl:Concept-changeNote ,
skosapnl:Concept-scopeNote ,
- skosapnl:Concept-broaderGeneric ,
skosapnl:Concept-definition ,
+ skosapnl:Concept-narrowerInstantial ,
+ skosapnl:Concept-exactMatch ,
+ skosapnl:Concept-narrowMatch ,
+ skosapnl:Concept-relatedMatch ,
+ skosapnl:Concept-narrowerPartitive ,
+ skosapnl:Concept-broaderPartitive ,
+ skosapnl:Concept-broaderGeneric ,
skosapnl:Concept-broaderInstantial ,
skosapnl:Concept-narrowerGeneric ,
skosapnl:Concept-broadMatch ;
+ sh:sparql
+ skosapnl:OrphanConcept ,
+ skosapnl:TopConceptHavingBroader ,
+ skosapnl:UnambiguousNotations ,
+ skosapnl:UniquePreflabelWithinConceptScheme ;
sh:targetClass skos:Concept .
skosapnl:SourceDocument
@@ -65,8 +73,7 @@ skosapnl:SourceDocument
skosapnl:SourceDocument-label ,
skosapnl:SourceDocument-comment ,
skosapnl:SourceDocument-page ,
- skosapnl:SourceDocument-bibliographicCitation ,
- skosapnl:SourceDocument-type .
+ skosapnl:SourceDocument-bibliographicCitation .
skosapnl:Collection
a sh:NodeShape ;
@@ -128,12 +135,14 @@ skosapnl:Concept-related
rdfs:label "is gerelateerd aan"@nl ;
sh:class skos:Concept ;
sh:description "Een concept met een associatieve semantische relatie"@nl, "Relates a concept to a concept with which there is an associative semantic relationship."@en ;
- sh:disjoint skos:broaderTransitive ;
+ sh:disjoint skos:broader ;
+ sh:disjoint skos:narrower ;
sh:group skosapnl:SemanticRelationPropertyGroup ;
sh:name "has related"@en, "is gerelateerd aan"@nl ;
sh:order 22 ;
sh:nodeKind sh:IRI ;
- sh:path skos:related .
+ sh:severity sh:Warning ;
+ sh:path skos:related .
skosapnl:Concept-definition
a sh:PropertyShape ;
@@ -147,7 +156,8 @@ skosapnl:Concept-definition
sh:name "definitie"@nl ;
sh:order 10 ;
sh:nodeKind sh:Literal ;
- sh:path skos:definition .
+ sh:path skos:definition ;
+ sh:severity sh:Violation .
skosapnl:Concept-narrowerInstantial
a sh:PropertyShape ;
@@ -158,7 +168,8 @@ skosapnl:Concept-narrowerInstantial
sh:name "is categorie van"@nl ;
sh:order 56 ;
sh:nodeKind sh:IRI ;
- sh:path isothes:narrowerInstantial .
+ sh:severity sh:Warning ;
+ sh:path isothes:narrowerInstantial .
skosapnl:Concept-changeNote
a sh:PropertyShape ;
@@ -169,6 +180,7 @@ skosapnl:Concept-changeNote
sh:order 31 ;
sh:nodeKind sh:Literal ;
sh:path skos:changeNote ;
+ sh:severity sh:Warning ;
sh:datatype rdf:langString .
skosapnl:Concept-broadMatch
@@ -178,22 +190,30 @@ skosapnl:Concept-broadMatch
sh:description
"skos:broadMatch is used to state a hierarchical mapping link between two conceptual resources in different concept schemes."@en ,
"Used to state a hierarchical mapping link between two conceptual resources in different concept schemes."@en ;
+ sh:disjoint skos:narrowMatch ;
+ sh:disjoint skos:closeMatch ;
+ sh:disjoint skos:exactMatch ;
sh:disjoint skos:relatedMatch ;
sh:group skosapnl:MatchingRelationshipsPropertyGroup ;
sh:name "heeft overeenkomstig bovenliggend"@nl ;
sh:order 40 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:broadMatch .
skosapnl:Concept-narrowMatch
a sh:PropertyShape ;
rdfs:label "heeft overeenkomstig onderliggend"@nl ;
sh:class skos:Concept ;
+ sh:disjoint skos:broadMatch ;
+ sh:disjoint skos:closeMatch ;
+ sh:disjoint skos:exactMatch ;
sh:disjoint skos:relatedMatch ;
sh:group skosapnl:MatchingRelationshipsPropertyGroup ;
sh:name "heeft overeenkomstig onderliggend"@nl ;
sh:order 41 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:narrowMatch .
skosapnl:Concept-broader
@@ -207,6 +227,8 @@ skosapnl:Concept-broader
sh:name "heeft bovenliggend begrip"@nl ;
sh:order 20 ;
sh:nodeKind sh:IRI ;
+ sh:disjoint skos:related ;
+ sh:severity sh:Warning ;
sh:path skos:broader .
skosapnl:Concept-narrower
@@ -220,6 +242,8 @@ skosapnl:Concept-narrower
sh:name "heeft onderliggend begrip"@nl ;
sh:order 21 ;
sh:nodeKind sh:IRI ;
+ sh:disjoint skos:related ;
+ sh:severity sh:Warning ;
sh:path skos:narrower .
skosapnl:Concept-example
@@ -231,7 +255,9 @@ skosapnl:Concept-example
sh:name "example"@en, "voorbeeld"@nl ;
rdfs:label "voorbeeld"@nl ;
sh:order 35 ;
- sh:nodeKind sh:IRIOrLiteral ;
+ sh:or ([ sh:datatype rdf:langString ] [ sh:datatype xsd:string ]);
+ sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path skos:example .
skosapnl:Concept-narrowerPartitive
@@ -243,6 +269,7 @@ skosapnl:Concept-narrowerPartitive
sh:name "omvat"@nl ;
sh:order 54 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path isothes:narrowerPartitive .
skosapnl:Concept-hiddenLabel
@@ -252,8 +279,13 @@ skosapnl:Concept-hiddenLabel
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
sh:name "zoekterm"@nl ;
sh:order 2 ;
+ sh:datatype rdf:langString ;
sh:nodeKind sh:Literal ;
- sh:path skos:hiddenLabel .
+ sh:severity sh:Warning ;
+ sh:path skos:hiddenLabel ;
+ sh:disjoint
+ skos:altLabel ,
+ skos:prefLabel .
skosapnl:Concept-relatedMatch
a sh:PropertyShape ;
@@ -263,8 +295,13 @@ skosapnl:Concept-relatedMatch
sh:description "Used to state an associative mapping link between two conceptual resources in different concept schemes."@en ;
sh:group skosapnl:MatchingRelationshipsPropertyGroup ;
sh:name "is overeenkomstig verwant"@nl ;
+ sh:disjoint skos:broadMatch ;
+ sh:disjoint skos:closeMatch ;
+ sh:disjoint skos:exactMatch ;
+ sh:disjoint skos:narrowMatch ;
sh:order 44 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:relatedMatch .
skosapnl:Concept-prefLabel
@@ -272,16 +309,17 @@ skosapnl:Concept-prefLabel
rdfs:label "Voorkeursterm"@nl ;
sh:datatype rdf:langString ;
sh:description "The preferred lexical label for a resource, in a given language."@en ;
- sh:disjoint skos:altLabel, skos:hiddenLabel ;
+ sh:disjoint
+ skos:altLabel ,
+ skos:hiddenLabel ;
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
sh:minCount 1 ;
sh:name "voorkeursterm"@nl ;
sh:order 0 ;
sh:path skos:prefLabel ;
sh:nodeKind sh:Literal ;
- sh:severity sh:Violation ;
- sh:message "Een begrip heeft altijd 1 voorkeursterm."@nl ;
- sh:uniqueLang true .
+ sh:uniqueLang true ;
+ sh:severity sh:Violation .
skosapnl:Concept-broaderPartitive
a sh:PropertyShape ;
@@ -292,6 +330,7 @@ skosapnl:Concept-broaderPartitive
sh:name "is onderdeel van"@nl ;
sh:order 53 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path isothes:broaderPartitive .
skosapnl:Concept-exactMatch
@@ -299,11 +338,15 @@ skosapnl:Concept-exactMatch
rdfs:label "is exact overeenkomstig"@nl ;
sh:class skos:Concept ;
sh:description "Used to link two concepts, indicating a high degree of confidence that the concepts can be used interchangeably across a wide range of information retrieval applications. skos:exactMatch is a transitive property, and is a sub-property of skos:closeMatch."@en ;
- sh:disjoint skos:broadMatch, skos:relatedMatch ;
+ sh:disjoint skos:broadMatch ;
+ sh:disjoint skos:closeMatch ;
+ sh:disjoint skos:narrowMatch ;
+ sh:disjoint skos:relatedMatch ;
sh:group skosapnl:MatchingRelationshipsPropertyGroup ;
sh:name "is exact overeenkomstig"@nl ;
sh:order 43 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:exactMatch .
skosapnl:Concept-inScheme
@@ -315,6 +358,7 @@ skosapnl:Concept-inScheme
sh:name "in kader"@nl ;
sh:order 6 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Violation ;
sh:path skos:inScheme .
skosapnl:Concept-topConceptOf
@@ -325,18 +369,24 @@ skosapnl:Concept-topConceptOf
sh:name "is topbegrip van"@nl ;
sh:order 23 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:topConceptOf .
skosapnl:Concept-altLabel
a sh:PropertyShape ;
rdfs:label "alternatieve term"@nl ;
- sh:description "An alternative lexical label for a resource."@en, "Een alternatieve term voor een begrip is een term die gebruikt kan worden als alternatief voor de voorkeursterm van dit begrip, maar niet de voorkeur heeft."@nl ;
- sh:disjoint skos:hiddenLabel ;
+ sh:description
+ "An alternative lexical label for a resource."@en,
+ "Een alternatieve term voor een begrip is een term die gebruikt kan worden als alternatief voor de voorkeursterm van dit begrip, maar niet de voorkeur heeft."@nl ;
+ sh:disjoint
+ skos:hiddenLabel ,
+ skos:prefLabel ;
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
sh:name "alternatieve term"@nl ;
sh:datatype rdf:langString ;
sh:order 1 ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path skos:altLabel .
skosapnl:Concept-broaderGeneric
@@ -348,6 +398,7 @@ skosapnl:Concept-broaderGeneric
sh:name "is specialisatie van"@nl ;
sh:order 51 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path isothes:broaderGeneric .
skosapnl:Concept-narrowerGeneric
@@ -359,6 +410,7 @@ skosapnl:Concept-narrowerGeneric
sh:name "is generalisatie van"@nl ;
sh:order 52 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path isothes:narrowerGeneric .
skosapnl:Concept-historyNote
@@ -370,6 +422,7 @@ skosapnl:Concept-historyNote
sh:order 33 ;
sh:datatype rdf:langString ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path skos:historyNote .
skosapnl:Concept-source
@@ -380,6 +433,7 @@ skosapnl:Concept-source
sh:name "bron"@nl ;
sh:order 11 ;
sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:severity sh:Warning ;
sh:node skosapnl:SourceDocument ;
sh:path dct:source .
@@ -392,6 +446,7 @@ skosapnl:Concept-comment
sh:order 5 ;
sh:datatype rdf:langString ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path rdfs:comment .
skosapnl:Concept-editorialNote
@@ -403,6 +458,7 @@ skosapnl:Concept-editorialNote
sh:datatype rdf:langString ;
sh:order 32 ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path skos:editorialNote .
skosapnl:Concept-broaderInstantial
@@ -414,6 +470,7 @@ skosapnl:Concept-broaderInstantial
sh:name "is exemplaar van"@nl ;
sh:order 55 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path isothes:broaderInstantial .
skosapnl:Concept-scopeNote
@@ -425,6 +482,7 @@ skosapnl:Concept-scopeNote
sh:datatype rdf:langString ;
sh:order 34 ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path skos:scopeNote .
skosapnl:Concept-closeMatch
@@ -433,9 +491,14 @@ skosapnl:Concept-closeMatch
sh:class skos:Concept ;
sh:description "Used to link two concepts that are sufficiently similar that they can be used interchangeably in some information retrieval applications. In order to avoid the possibility of \"compound errors\" when combining mappings across more than two concept schemes, skos:closeMatch is not declared to be a transitive property."@en ;
sh:group skosapnl:MatchingRelationshipsPropertyGroup ;
+ sh:disjoint skos:broadMatch ;
+ sh:disjoint skos:exactMatch ;
+ sh:disjoint skos:narrowMatch ;
+ sh:disjoint skos:relatedMatch ;
sh:name "is vrijwel overeenkomstig"@nl ;
sh:order 42 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:closeMatch .
skosapnl:Concept-notation
@@ -446,30 +509,33 @@ skosapnl:Concept-notation
sh:name "code"@nl ;
sh:order 3 ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path skos:notation .
skosapnl:Concept-label
a sh:PropertyShape ;
- rdfs:label "label"@nl ;
- sh:datatype rdf:langString ;
- sh:description "Een label voor een object is een voor mensen leesbare naam ter aanduiding van een object."@nl ;
+ rdfs:label "naam"@nl ;
+ sh:datatype xsd:string ;
+ sh:description "Een naam is een voor mensen leesbare term ter aanduiding van het begrip."@nl ;
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
- sh:name "label"@nl ;
+ sh:name "naam"@nl ;
sh:order 4 ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path rdfs:label .
skosapnl:SourceDocument-label
a sh:PropertyShape ;
- rdfs:label "label"@nl ;
+ rdfs:label "naam"@nl ;
sh:datatype rdf:langString ;
- sh:description "Compacte, voor de mens leesbare aanduiding van de bron."@nl ;
+ sh:description "Een naam is een voor mensen leesbare term ter aanduiding van het brondocument."@nl ;
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
sh:minCount 1 ;
- sh:name "label"@nl ;
+ sh:name "naam"@nl ;
sh:order 4 ;
sh:nodeKind sh:Literal ;
- sh:path rdfs:label .
+ sh:severity sh:Info ;
+ sh:path dct:title .
skosapnl:SourceDocument-comment
a sh:PropertyShape ;
@@ -480,6 +546,7 @@ skosapnl:SourceDocument-comment
sh:name "uitleg"@nl ;
sh:order 5 ;
sh:nodeKind sh:Literal ;
+ sh:severity sh:Warning ;
sh:path rdfs:comment .
skosapnl:SourceDocument-page
@@ -490,42 +557,34 @@ skosapnl:SourceDocument-page
sh:name "url"@nl ;
sh:order 7 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path foaf:page .
skosapnl:SourceDocument-bibliographicCitation
a sh:PropertyShape ;
- rdfs:label "citeertitel"@nl ;
+ rdfs:label "bronverwijzing"@nl ;
sh:description "Een reeks gegevens waarmee een document of fragment daarvan gevonden kan worden. Er bestaan verschillende citeerstijlen zoals IEEE, APA of MLA."@nl ;
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
- sh:name "citeertitel"@nl ;
+ sh:name "bronverwijzing"@nl ;
sh:order 8 ;
sh:nodeKind sh:Literal ;
sh:datatype xsd:string ;
+ sh:severity sh:Warning ;
sh:path dct:bibliographicCitation .
-skosapnl:SourceDocument-type
- a sh:PropertyShape ;
- rdfs:label "soort bron"@nl ;
- sh:description "Aanduiding van het type of genre van het brondocument."@nl ;
- sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
- sh:name "soort bron"@nl ;
- sh:order 9 ;
- sh:nodeKind sh:IRI ;
- sh:path dct:type ;
- sh:class skos:Concept .
-
skosapnl:Collection-label
a sh:PropertyShape ;
- rdfs:label "label"@nl ;
+ rdfs:label "naam"@nl ;
sh:datatype rdf:langString ;
- sh:description "Een label voor een object is een voor mensen leesbare naam ter aanduiding van een object."@nl ;
+ sh:description "Een naam is een voor mensen leesbare term ter aanduiding van de collectie."@nl ;
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
sh:minCount 1 ;
- sh:name "label"@nl ;
+ sh:name "naam"@nl ;
sh:order 4 ;
sh:nodeKind sh:Literal ;
- sh:path rdfs:label .
+ sh:severity sh:Warning ;
+ sh:path skos:prefLabel .
skosapnl:Collection-member
a sh:PropertyShape ;
@@ -536,6 +595,7 @@ skosapnl:Collection-member
"Relateert een collectie aan een begrip dat onderdeel is van deze collectie."@nl ;
sh:name "bevat"@nl ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:member .
skosapnl:Collection-comment
@@ -544,6 +604,7 @@ skosapnl:Collection-comment
sh:name "uitleg"@nl, "comment"@en ;
sh:order 5 ;
sh:datatype rdf:langString ;
+ sh:severity sh:Warning ;
sh:path rdfs:comment .
skosapnl:ConceptScheme-hasTopConcept
@@ -557,6 +618,7 @@ skosapnl:ConceptScheme-hasTopConcept
sh:group skosapnl:SemanticRelationPropertyGroup ;
sh:order 20 ;
sh:nodeKind sh:IRI ;
+ sh:severity sh:Warning ;
sh:path skos:hasTopConcept .
skosapnl:ConceptScheme-comment
@@ -565,16 +627,178 @@ skosapnl:ConceptScheme-comment
sh:name "uitleg"@nl, "comment"@en ;
sh:order 5 ;
sh:datatype rdf:langString ;
+ sh:severity sh:Warning ;
sh:path rdfs:comment .
skosapnl:ConceptScheme-label
a sh:PropertyShape ;
- rdfs:label "label"@nl ;
+ rdfs:label "naam"@nl ;
sh:datatype rdf:langString ;
- sh:description "Een label voor een object is een voor mensen leesbare naam ter aanduiding van een object."@nl ;
+ sh:description "Een naam is een voor mensen leesbare term ter aanduiding van het begrippenkader."@nl ;
sh:group skosapnl:LabelsAndDescriptionPropertyGroup ;
sh:minCount 1 ;
- sh:name "label"@nl ;
+ sh:name "naam"@nl ;
sh:order 4 ;
sh:nodeKind sh:Literal ;
- sh:path rdfs:label .
\ No newline at end of file
+ sh:severity sh:Warning ;
+ sh:path dct:title .
+
+
+
+## logical constraints
+
+skosapnl:DisjointConceptAndConceptScheme
+ a sh:NodeShape ;
+ sh:targetClass skos:Concept ;
+ sh:sparql [
+ sh:prefixes skosapnl: ;
+ sh:message "Een begrip kan niet ook een begrippenkader zijn."@nl ;
+ sh:select """
+ SELECT $this
+ WHERE {
+ $this a skos:ConceptScheme
+ }""" ;
+ ] ;
+.
+skosapnl::DisjointConceptAndCollection
+ a sh:NodeShape ;
+ sh:targetSubjectsOf skos:narrower ;
+ sh:targetSubjectsOf skos:broader ;
+ sh:targetSubjectsOf skos:related ;
+ sh:sparql [
+ sh:prefixes skosapnl: ;
+ sh:message "Een begrip kan niet ook een collectie zijn." ;
+ sh:select """
+ SELECT $this
+ WHERE {
+ $this a skos:Collection .
+ }""" ;
+ ] ;
+.
+
+skosapnl:DisjointConceptSchemeAndCollection
+ a sh:NodeShape ;
+ sh:targetObjectsOf skos:topConceptOf ;
+ sh:targetObjectsOf skos:inScheme ;
+ sh:sparql [
+ sh:prefixes skosapnl: ;
+ sh:message "Een begrippenkader kan niet ook een collectie zijn." ;
+ sh:select """
+ SELECT $this
+ WHERE {
+ $this a skos:Collection
+ }""" ;
+ ] ;
+.
+
+skosapnl:MappingRelationsMisuse
+ a sh:NodeShape ;
+ sh:targetSubjectsOf skos:broadMatch ;
+ sh:targetSubjectsOf skos:closeMatch ;
+ sh:targetSubjectsOf skos:exactMatch ;
+ sh:targetSubjectsOf skos:narrowMatch ;
+ sh:targetSubjectsOf skos:relatedMatch ;
+ sh:sparql [
+ sh:prefixes skosapnl: ;
+ sh:message "Harmonisatierelaties mogen niet gebruikt worden tussen begrippen die tot hetzelfde begrippenkader behoren."@nl ;
+ sh:message "Mapping relations should be asserted to concepts being members of different concept schemes"@en ;
+ sh:select """
+ SELECT $this
+ WHERE {
+ $this skos:broadMatch | skos:closeMatch | skos:exactMatch | skos:narrowMatch | skos:relatedMatch ?concept ;
+ skos:inScheme ?cs .
+ ?concept skos:inScheme ?cs .
+
+ }""" ;
+ ] ;
+.
+
+skosapnl:SemanticRelations
+ a sh:NodeShape ;
+ sh:targetObjectsOf skos:broader ;
+ sh:targetObjectsOf skos:narrower ;
+ sh:targetObjectsOf skos:related ;
+ sh:targetSubjectsOf skos:broader ;
+ sh:targetSubjectsOf skos:narrower ;
+ sh:targetSubjectsOf skos:related ;
+ sh:targetObjectsOf skos:broadMatch ;
+ sh:targetObjectsOf skos:closeMatch ;
+ sh:targetObjectsOf skos:exactMatch ;
+ sh:targetObjectsOf skos:narrowMatch ;
+ sh:targetObjectsOf skos:relatedMatch ;
+ sh:targetSubjectsOf skos:broadMatch ;
+ sh:targetSubjectsOf skos:closeMatch ;
+ sh:targetSubjectsOf skos:exactMatch ;
+ sh:targetSubjectsOf skos:narrowMatch ;
+ sh:targetSubjectsOf skos:relatedMatch ;
+ sh:sparql [
+ sh:prefixes skosapnl: ;
+ sh:message "Semantische relaties verwijzen altijd van en naar begrippen." ;
+ sh:select """
+ SELECT $this
+ WHERE {
+ FILTER NOT EXISTS { $this a skos:Concept }
+ }""" ;
+ ] ;
+.
+
+skosapnl:UnambiguousNotations
+ a sh:SPARQLConstraint ;
+ sh:message
+ "Begrippen binnen een begrippenkader mogen geen codes delen."@nl ,
+ "Duplicate notations within concept scheme"@en ;
+ sh:severity sh:Violation ;
+ sh:prefixes skosapnl: ;
+ sh:select """SELECT $this
+ WHERE {
+ $this skos:notation ?value .
+ ?other skos:notation ?value .
+ ?this skos:inScheme ?cs .
+ ?other skos:inScheme ?cs .
+ FILTER (?this != ?other)
+ }
+ """ .
+
+skosapnl:UniquePreflabelWithinConceptScheme
+ a sh:SPARQLConstraint ;
+ sh:message
+ "Duplicate preffered labels within concept scheme."@en ,
+ "meerdere begrippen met dezelfde voorkeursterm binnen een begrippenkader"@en ;
+ sh:severity sh:Violation ;
+ sh:prefixes skosapnl: ;
+ sh:select """SELECT $this
+ WHERE {
+ $this skos:prefLabel ?value .
+ ?other skos:prefLabel ?value .
+ ?this skos:inScheme ?cs .
+ ?other skos:inScheme ?cs .
+ FILTER (?this != ?other)
+ }
+ """ .
+skosapnl:TopConceptHavingBroader
+ a sh:SPARQLConstraint ;
+ sh:prefixes skosapnl: ;
+ sh:message "Een topbegrip mag geen bovenliggende begrippen kennen." ;
+ sh:severity sh:Violation ;
+ sh:select """SELECT $this
+ WHERE {
+ ?this skos:topConceptOf|^skos:hasTopConcept ?cs ;
+ skos:broader ?other .
+ }
+ """ .
+
+skosapnl:OrphanConcept
+ a sh:SPARQLConstraint ;
+ sh:prefixes skosapnl: ;
+ sh:message "Het begrip is geen topbegrip maar heeft ook geen bovenliggende of gerelateerde begrippen."@nl ;
+ sh:select """SELECT $this
+ WHERE {
+ $this a skos:Concept .
+ FILTER NOT EXISTS {
+ ?this skos:topConceptOf|^skos:hasTopConcept ?cs .
+ }
+ FILTER NOT EXISTS {
+ ?this skos:broader | ^skos:broader | skos:narrower | ^skos:narrower | skos:related | ^skos:related ?other .
+ }
+ }""" ;
+ sh:severity sh:Warning .
\ No newline at end of file
From 2662305fb76c8d08d2c04ea2542a8bbca56abf83 Mon Sep 17 00:00:00 2001
From: arjan
Date: Wed, 17 Apr 2024 20:24:06 +0200
Subject: [PATCH 21/75] Kleine technische aanpassingen in ShaclFile.
---
.../nl/imvertor/common/file/ShaclFile.java | 24 +++++++------------
1 file changed, 8 insertions(+), 16 deletions(-)
diff --git a/src/main/java/nl/imvertor/common/file/ShaclFile.java b/src/main/java/nl/imvertor/common/file/ShaclFile.java
index e5c7fa72..a655e309 100644
--- a/src/main/java/nl/imvertor/common/file/ShaclFile.java
+++ b/src/main/java/nl/imvertor/common/file/ShaclFile.java
@@ -21,19 +21,15 @@
package nl.imvertor.common.file;
import java.io.File;
-import java.io.StringReader;
+import java.io.InputStreamReader;
import org.apache.log4j.Logger;
import org.eclipse.rdf4j.common.exception.ValidationException;
-import org.eclipse.rdf4j.model.Model;
import org.eclipse.rdf4j.model.vocabulary.RDF4J;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.RepositoryException;
import org.eclipse.rdf4j.repository.sail.SailRepository;
import org.eclipse.rdf4j.rio.RDFFormat;
-import org.eclipse.rdf4j.rio.Rio;
-import org.eclipse.rdf4j.rio.WriterConfig;
-import org.eclipse.rdf4j.rio.helpers.BasicWriterSettings;
import org.eclipse.rdf4j.sail.memory.MemoryStore;
import org.eclipse.rdf4j.sail.shacl.ShaclSail;
@@ -91,31 +87,27 @@ public void parse(Configurator configurator, String ttlDataFilePath) throws Exce
Runner runner = Configurator.getInstance().getRunner();
- // Create a SHACL-enabled repository
- ShaclSail shaclSail = new ShaclSail(new MemoryStore());
+ ShaclSail shaclSail = new ShaclSail(new MemoryStore());
SailRepository sailRepository = new SailRepository(shaclSail);
sailRepository.init();
- // Load data into the repository
try (RepositoryConnection connection = sailRepository.getConnection()) {
connection.begin();
- // Load shapes
- StringReader shaclRules = new StringReader(getContent());
+ InputStreamReader shaclRulesReader = getReader();
- connection.add(shaclRules, "", RDFFormat.TURTLE, RDF4J.SHACL_SHAPE_GRAPH);
+ connection.add(shaclRulesReader, "", RDFFormat.TURTLE, RDF4J.SHACL_SHAPE_GRAPH);
connection.commit();
if (!ttlDataFilePath.equals("")) {
- // Load RDF data
- AnyFile dataFile = new AnyFile(ttlDataFilePath);
+ AnyFile dataFile = new AnyFile(ttlDataFilePath);
- StringReader invalidSampleData = new StringReader(dataFile.getContent());
+ InputStreamReader dataReader = dataFile.getReader();
connection.begin();
- connection.add(invalidSampleData, "", RDFFormat.TURTLE);
+ connection.add(dataReader, "", RDFFormat.TURTLE);
try {
connection.commit();
} catch (RepositoryException exception) {
@@ -128,7 +120,7 @@ public void parse(Configurator configurator, String ttlDataFilePath) throws Exce
}
} catch (Exception e) {
- runner.warn(logger, "Shacl validator scheme invalid, cannot validate RDF: " + e.getMessage(),"rdf-parse","some-wiki-ref");
+ runner.warn(logger, "Shacl validator schema file \"" + getName() + "\" invalid, cannot validate RDF. " + e.getMessage(),"rdf-parse","some-wiki-ref");
}
}
From 4412b40426c4f1e4c06b604d3b3537ff1a8f5971 Mon Sep 17 00:00:00 2001
From: arjan
Date: Tue, 23 Apr 2024 09:33:25 +0200
Subject: [PATCH 22/75] Kadaster: bp-by-reference-encodings wordt
/req/by-reference-uri
Zie #462
Config. Minor.
---
.../input/Kadaster/cfg/schemarules/JSON-OGC-Kadaster.xml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/main/resources/input/Kadaster/cfg/schemarules/JSON-OGC-Kadaster.xml b/src/main/resources/input/Kadaster/cfg/schemarules/JSON-OGC-Kadaster.xml
index 471e1758..8563a9ef 100644
--- a/src/main/resources/input/Kadaster/cfg/schemarules/JSON-OGC-Kadaster.xml
+++ b/src/main/resources/input/Kadaster/cfg/schemarules/JSON-OGC-Kadaster.xml
@@ -43,4 +43,13 @@
-->
single
+
+ /req/by-reference-uri
+
From 7a9e9f84536a5c7968fedeafeeea35a81374de8d Mon Sep 17 00:00:00 2001
From: arjan
Date: Tue, 23 Apr 2024 09:37:08 +0200
Subject: [PATCH 23/75] Introductie Waterschapshuis
Minor. Uitbreiding.
---
.../resources/cfg/OfficeCompiler/parms.xml | 4 +
src/main/resources/cfg/Validator/parms.xml | 23 +
.../cfg/comparerules/Waterschapshuis.xml | 15 +
.../docrules/Waterschapshuis-CONCEPTUAL.xml | 14 +
.../cfg/docrules/Waterschapshuis-LOGICAL.xml | 13 +
.../cfg/docrules/Waterschapshuis.xml | 487 ++++++++++++++++++
.../Waterschapshuis/cfg/i3n/translation.xml | 10 +
.../cfg/local/respec/css/default.css | 27 +
.../cfg/local/respec/data/abstract.xhtml | 5 +
.../cfg/local/respec/data/sotd.xhtml | 5 +
.../metamodels/Waterschapshuis-CONCEPTUAL.xml | 33 ++
.../metamodels/Waterschapshuis-LOGICAL.xml | 11 +
.../notesrules/Waterschapshuis-CONCEPTUAL.xml | 17 +
.../notesrules/Waterschapshuis-LOGICAL.xml | 11 +
.../cfg/owners/Waterschapshuis.xml | 100 ++++
.../cfg/owners/web/css/report.css | 157 ++++++
.../cfg/owners/web/img/logo-big.jpg | Bin 0 -> 28346 bytes
.../cfg/owners/web/img/logo-small.jpg | Bin 0 -> 5118 bytes
.../owners/web/script/jquery/jquery-latest.js | 154 ++++++
.../tablesorter/jquery.tablesorter.min.js | 4 +
.../cfg/owners/web/themes/blue/asc.gif | Bin 0 -> 54 bytes
.../cfg/owners/web/themes/blue/bg.gif | Bin 0 -> 64 bytes
.../cfg/owners/web/themes/blue/desc.gif | Bin 0 -> 54 bytes
.../cfg/owners/web/themes/blue/style.css | 13 +
.../cfg/schemarules/XML-ISO19136.xml | 30 ++
.../cfg/skosrules/Waterschapshuis.xml | 83 +++
.../cfg/tvsets/Waterschapshuis-CONCEPTUAL.xml | 14 +
.../cfg/tvsets/Waterschapshuis-LOGICAL.xml | 14 +
.../cfg/versionrules/Waterschapshuis.xml | 101 ++++
.../visuals/Waterschapshuis-CONCEPTUAL.xml | 30 ++
.../cfg/visuals/Waterschapshuis-LOGICAL.xml | 30 ++
.../props/Waterschapshuis.xlsx | Bin 0 -> 23226 bytes
.../xsd/conceptual-schemas.xml | 38 ++
.../Waterschapshuis/xsd/local-schemas.xml | 12 +
...Waterschapshuis-CONCEPTUAL-html-msword.xsl | 73 +++
...Waterschapshuis-CONCEPTUAL-html-respec.xsl | 85 +++
...rt2modeldoc-Waterschapshuis-CONCEPTUAL.xsl | 55 ++
37 files changed, 1668 insertions(+)
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/comparerules/Waterschapshuis.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-CONCEPTUAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-LOGICAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/i3n/translation.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/local/respec/css/default.css
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/local/respec/data/abstract.xhtml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/local/respec/data/sotd.xhtml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/metamodels/Waterschapshuis-CONCEPTUAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/metamodels/Waterschapshuis-LOGICAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/notesrules/Waterschapshuis-CONCEPTUAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/notesrules/Waterschapshuis-LOGICAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/Waterschapshuis.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/css/report.css
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/img/logo-big.jpg
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/img/logo-small.jpg
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/script/jquery/jquery-latest.js
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/script/tablesorter/jquery.tablesorter.min.js
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/themes/blue/asc.gif
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/themes/blue/bg.gif
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/themes/blue/desc.gif
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/owners/web/themes/blue/style.css
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/schemarules/XML-ISO19136.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/skosrules/Waterschapshuis.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/tvsets/Waterschapshuis-CONCEPTUAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/tvsets/Waterschapshuis-LOGICAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/versionrules/Waterschapshuis.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/visuals/Waterschapshuis-CONCEPTUAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/cfg/visuals/Waterschapshuis-LOGICAL.xml
create mode 100644 src/main/resources/input/Waterschapshuis/props/Waterschapshuis.xlsx
create mode 100644 src/main/resources/input/Waterschapshuis/xsd/conceptual-schemas.xml
create mode 100644 src/main/resources/input/Waterschapshuis/xsd/local-schemas.xml
create mode 100644 src/main/resources/xsl/OfficeCompiler/Imvert2modeldoc-Waterschapshuis-CONCEPTUAL-html-msword.xsl
create mode 100644 src/main/resources/xsl/OfficeCompiler/Imvert2modeldoc-Waterschapshuis-CONCEPTUAL-html-respec.xsl
create mode 100644 src/main/resources/xsl/OfficeCompiler/Imvert2modeldoc-Waterschapshuis-CONCEPTUAL.xsl
diff --git a/src/main/resources/cfg/OfficeCompiler/parms.xml b/src/main/resources/cfg/OfficeCompiler/parms.xml
index 80d58ea0..8e6b6ebb 100644
--- a/src/main/resources/cfg/OfficeCompiler/parms.xml
+++ b/src/main/resources/cfg/OfficeCompiler/parms.xml
@@ -293,6 +293,10 @@
Imvert2modeldoc-EIGENAAR-LOGICAL.xslImvert2modeldoc-EIGENAAR-LOGICAL-html-respec.xsl
+ Imvert2modeldoc-Waterschapshuis-CONCEPTUAL.xsl
+ Imvert2modeldoc-Waterschapshuis-CONCEPTUAL-html-respec.xsl
+ Imvert2modeldoc-Waterschapshuis-CONCEPTUAL-html-msword.xsl
+
Imvert2modeldoc-KOOP-CONCEPTUAL.xslImvert2modeldoc-KOOP-CONCEPTUAL-html-respec.xsl
diff --git a/src/main/resources/cfg/Validator/parms.xml b/src/main/resources/cfg/Validator/parms.xml
index 64dbecef..477edc77 100644
--- a/src/main/resources/cfg/Validator/parms.xml
+++ b/src/main/resources/cfg/Validator/parms.xml
@@ -478,6 +478,29 @@
Imvert2validation-MIM11.xslImvert2validation-MIM111.xsl
+
+
+
+ Imvert2canonical.xsl
+ Imvert2canonical-MIM11.xsl
+
+ Imvert2validation.xsl
+ Imvert2validation-MIM11.xsl
+ Imvert2validation-MIM111.xsl
+
+
+ Imvert2canonical.xsl
+ Imvert2canonical-MIM11.xsl
+ Imvert2canonical-MIM111.xsl
+
+ Imvert2validation.xsl
+ Imvert2validation-MIM11.xsl
+ Imvert2validation-MIM111.xsl
+
+
+
+
+
+ Waterschapshuis
+
+
+
+
diff --git a/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-CONCEPTUAL.xml b/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-CONCEPTUAL.xml
new file mode 100644
index 00000000..df85bd06
--- /dev/null
+++ b/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-CONCEPTUAL.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ Waterschapshuis CONCEPTUAL
+
+ Waterschapshuis specific requirements on conceptual documentation.
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-LOGICAL.xml b/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-LOGICAL.xml
new file mode 100644
index 00000000..4c40dc46
--- /dev/null
+++ b/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis-LOGICAL.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Waterschapshuis LOGICAL
+
+ Waterschapshuis specific requirements on logical documentation.
+
+
\ No newline at end of file
diff --git a/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis.xml b/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis.xml
new file mode 100644
index 00000000..12a363d7
--- /dev/null
+++ b/src/main/resources/input/Waterschapshuis/cfg/docrules/Waterschapshuis.xml
@@ -0,0 +1,487 @@
+
+
+
+
+ Waterschapshuis
+
+ Waterschapshuis specific requirements on documentation.
+
+ NAME
+
+
+ as-row
+
+
+ no
+
+
+ suffix
+
+
+ yes
+
+
+ yes
+
+
+ true
+
+
+ no
+ yes
+ yes
+ yes
+
+
+ https://armatiek.nl/respec-profiles/w3c/profile/respec-w3c-common.js
+
+
+ Overzichtsdiagram
+ Overview diagram
+
+ overzicht
+ overview
+ yes
+
+
+
+ Detaildiagram
+ Detail diagram
+ detail
+ detail
+ yes
+
+
+
+ Naam (genormaliseerd)
+ Name (normalized)
+
+
+
+
+
+
+
+ Naam
+ Name
+
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+ DISPLAY-GLOBAL-UNION
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+ DISPLAY-GLOBAL-COMPOSITE
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+ DISPLAY-DETAIL-ENUMERATION
+
+
+
+
+
+ Alternatieve naam
+ Alternative name
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+ DISPLAY-GLOBAL-UNION
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+ DISPLAY-GLOBAL-COMPOSITE
+
+
+
+ Mnemonic
+ Mnemonic
+
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+
+
+
+ Herkomst
+ Origin
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+ DISPLAY-GLOBAL-UNION
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+
+ DISPLAY-GLOBAL-COMPOSITE
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Definitie
+ Definition
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+ DISPLAY-GLOBAL-UNION
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+ DISPLAY-GLOBAL-COMPOSITE
+ DISPLAY-GLOBAL-REGISTRATIEOBJECT
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+ DISPLAY-DETAIL-ENUMERATION
+
+
+
+ Herkomst definitie
+ Origin of definition
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+ DISPLAY-GLOBAL-UNION
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+ DISPLAY-GLOBAL-COMPOSITE
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+ DISPLAY-DETAIL-ENUMERATION
+
+
+
+ Toelichting
+ Explanation
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+ DISPLAY-GLOBAL-UNION
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+ DISPLAY-GLOBAL-COMPOSITE
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+ DISPLAY-DETAIL-ENUMERATION
+
+
+
+
+ Mogelijk geen waarde
+ Voidable
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Reden geen waarde
+ Void reason
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+
+ Materiële geschiedenis
+ Material history
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Formele geschiedenis
+ Formal history
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Indicatie in onderzoek
+ Indication under investigation
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Aanduiding strijdigheid/nietigheid
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Kardinaliteit
+ Multiplicity
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+
+
+
+ Juridische status
+ Legal status
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+
+ Regels
+ Rules
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+
+ DISPLAY-DETAIL-OBJECTTYPE
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Regels IMBRO/A
+ Rules IMBRO/A
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+
+ DISPLAY-DETAIL-OBJECTTYPE
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Patroon
+ Pattern
+
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+
+
+
+ Formeel patroon
+ Formal pattern
+
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+
+
+
+ Formaat
+ Format
+
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+
+
+
+ Lengte
+ Length
+
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+
+
+
+ Formaat IMBRO/A
+ Format IMBRO/A
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+
+
+
+ Relatiesoort
+
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+
+
+
+ Gerelateerd objecttype
+ Associated objecttype
+
+ DISPLAY-DETAIL-ASSOCIATION
+
+
+
+ Is afgeleid
+ Is derived
+
+ DISPLAY-DETAIL-ATTRIBUTE
+
+
+
+ Meeteenheid
+ Unit of measure
+
+ DISPLAY-DETAIL-ATTRIBUTE
+
+
+
+ Minimumwaarde
+ MinInclusive
+
+ DISPLAY-DETAIL-ATTRIBUTE
+
+
+
+ Maximumwaarde
+ MaxInclusive
+
+ DISPLAY-DETAIL-ATTRIBUTE
+
+
+
+ Onderliggende constructies
+ Underlying constructs
+
+ DISPLAY-GLOBAL-OBJECTTYPE
+ DISPLAY-GLOBAL-ASSOCIATIONCLASS
+ DISPLAY-GLOBAL-REFERENCELIST
+ DISPLAY-GLOBAL-CODELIST
+ DISPLAY-GLOBAL-UNION
+ DISPLAY-GLOBAL-STRUCTUREDDATATYPE
+ DISPLAY-GLOBAL-PRIMITIVEDATATYPE
+ DISPLAY-GLOBAL-COMPOSITE
+
+ DISPLAY-DETAIL-COMPOSITE
+ DISPLAY-DETAIL-ATTRIBUTE
+ DISPLAY-DETAIL-COMPOSITE-ATTRIBUTE
+ DISPLAY-DETAIL-REFERENCEELEMENT
+ DISPLAY-DETAIL-UNIONELEMENT
+ DISPLAY-DETAIL-DATAELEMENT
+ DISPLAY-DETAIL-ASSOCIATION
+ DISPLAY-DETAIL-COMPOSITE-ASSOCIATION
+
+
+
+ Populatie
+ Population
+
+ DISPLAY-GLOBAL-REGISTRATIEOBJECT
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/input/Waterschapshuis/cfg/i3n/translation.xml b/src/main/resources/input/Waterschapshuis/cfg/i3n/translation.xml
new file mode 100644
index 00000000..bc55fc1e
--- /dev/null
+++ b/src/main/resources/input/Waterschapshuis/cfg/i3n/translation.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/input/Waterschapshuis/cfg/local/respec/css/default.css b/src/main/resources/input/Waterschapshuis/cfg/local/respec/css/default.css
new file mode 100644
index 00000000..766252f5
--- /dev/null
+++ b/src/main/resources/input/Waterschapshuis/cfg/local/respec/css/default.css
@@ -0,0 +1,27 @@
+span.TODO {
+ background-color: yellow;
+ color: black;
+ font-weight: bold;
+}
+span.code {
+ font-family: monospace;
+}
+span.underline {
+ text-decoration: underline;
+}
+div.box_note {
+ background-color: #fafaac;
+ padding: 1em;
+}
+div.box_warning {
+ background-color: #f6d99e;
+ padding: 1em;
+}
+div.box_quote {
+ background-color: #f0e9da;
+ padding: 1em;
+}
+div.box_quote_href {
+ text-align: right;
+ color: gray;
+}
\ No newline at end of file
diff --git a/src/main/resources/input/Waterschapshuis/cfg/local/respec/data/abstract.xhtml b/src/main/resources/input/Waterschapshuis/cfg/local/respec/data/abstract.xhtml
new file mode 100644
index 00000000..5b444458
--- /dev/null
+++ b/src/main/resources/input/Waterschapshuis/cfg/local/respec/data/abstract.xhtml
@@ -0,0 +1,5 @@
+
+
+ This is the abstract.
+
+
\ No newline at end of file
diff --git a/src/main/resources/input/Waterschapshuis/cfg/local/respec/data/sotd.xhtml b/src/main/resources/input/Waterschapshuis/cfg/local/respec/data/sotd.xhtml
new file mode 100644
index 00000000..c945fccf
--- /dev/null
+++ b/src/main/resources/input/Waterschapshuis/cfg/local/respec/data/sotd.xhtml
@@ -0,0 +1,5 @@
+
+