-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support für ilidata:-Option #157
Comments
Im Hinblick auf die "Organisationsliste" des VSA (und zukünftig des SIA und SVGW und allenfalls LKCH) würde ich die Unterstützung von Eine prüfenswerte Idee (credit to @edigonzales) finde ich auch die Verwendung eines metaconfig-files:
und dann
|
Ich würde gerne noch prüfen, ob man überhaupt explizit angeben muss, gegenüber welchen Katalog geprüft werden muss, wenn dieser in einem ilidata.xml geführt wird.
Viele Unsicherheiten, welche die Stabilität der Checks gefährdet. So gesehen könnte der Vorschlag von @beistehen im Moment die beste Lösung sein. Das metaconfig.ini wird auf der ilicop-Instanz geführt und definiert, welches Modell gegenüber welchen Katalogen geprüft werden soll. Wichtig für mich ist vor allem, dass diejenige Person, welche die Daten prüfen möchte, im Regelfall nicht wissen resp. angeben muss, gegenüber welchen Katalog geprüft wird. Es kann aber auch sein, dass die Daten gegenüber einer bestimmten Katalogversion geprüft werden müssen. Z.B. bei den MGDM der landwirtschaftlichen Bewirtschaftung ändern die Kataloge jährlich (meist rückwärtskompatibel). D.h. ich will ein XTF gegenüber dem Katalog von dem Jahr vergleichen, der mit den Daten im XTF übereinstimmt. Würde das immer noch gehen, indem z.B. der Katalog doch im ZIP mitgeliefert wird? Würde damit das metaconfig.ini übersteuern? |
Wir haben es so gelöst, dass es "Prüfprofile" gibt, die zudem steuerbar über einen Query-Parameter sind: http://ilivalidator.sogeo.services/?t=drainagen In der Combobox kann man natürlich immer auch noch das (falsche) wählen. Im Standardmodus kann man dann alles hochladen, was man will und alles mit (meta)config-files irgendwie überschreiben. Die Idee war, dass man den Kunden, die explizit Drainaigen prüfen müssen, den Link mit "t=drainagen" schickt und sie den bookmarken können. |
Wir haben uns konzeptionell mit der Entwicklung dieser Erweiterung auseinandergesetzt und den Aufwand geschätzt:
Geschätzter Aufwand: ca. 70h (Spez, Entwicklung, QS, Doku, PL // CHF 11'000.-) |
Hinweis: gelegentlich sind in der HEADERSECTION Modelle referenziert, die in den Daten gar nicht angewandt werden. Siehe dazu auch claeis/ilivalidator#287 und ff. |
@olivergrimm habt ihr eine Idee, wie ihr an die Modelle kommt, wenn die HEADERSECTION nicht zuverlässig ist? Das wäre aus meiner Sicht recht zentral, wenn die Lösung funktionieren soll. |
@romefi @beistehen Grundsätzlich sollten die veröffentlichten Katalog auf den Repositories zu keinen Fehlern führen oder verstehe ich das falsch? Zusätzliche Katalog-Daten sollten daher nicht zu einem Fehlerhaften Validierungsresultat führen. Die Kataloge halten nach meinem Verständnis meist auch keine komplexen Daten, womit der Performance-Impact wohl vernachlässigbar ausfällt. |
Ich glaube man muss vom Fall ausgehen, dass gar keine Modelle in der Headersection stehen. Nicht nur zusätzliche.
Sent from Outlook for iOS<https://aka.ms/o0ukef>
…________________________________
From: Philipp Lüthi ***@***.***>
Sent: Wednesday, April 10, 2024 4:44:50 PM
To: GeoWerkstatt/interlis-check-service ***@***.***>
Cc: Stefan Ziegler ***@***.***>; Mention ***@***.***>
Subject: Re: [GeoWerkstatt/interlis-check-service] Support für ilidata:-Option (Issue #157)
@romefi<https://github.com/romefi> @beistehen<https://github.com/beistehen> Grundsätzlich sollten die veröffentlichten Katalog auf den Repositories zu keinen Fehlern führen oder verstehe ich das falsch? Zusätzliche Katalog-Daten sollten daher nicht zu einem Fehlerhaften Validierungsresultat führen. Die Kataloge halten nach meinem Verständnis meist auch keine komplexen Daten, womit der Performance-Impact wohl vernachlässigbar ausfällt.
—
Reply to this email directly, view it on GitHub<#157 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AAVDXOFBSE6FYOSTN5TCNQTY4VF6FAVCNFSM6AAAAAA44TVFAGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBXG42TEOJTHE>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
dann eruieren wir die involvierten Modelle über ein Parsing der Datasection. |
@Philippluca In einer idealen Welt sind auch die Modellrepos fehlerfrei. In der Realität sieht die Sache anders aus... Weiter möchte ich zu bedenken geben, dass zukünftige Modelle auch viel mehr als 1 Katalog haben könnten. Da könnte dann der Impact auf die Performance plötzlich grösser werden. |
Ich glaube ich verstehe den Wunsch, dass niemand zusätzlich pro Thema machen muss. D.h. der Benutzer muss die Datei hochladen und es wird automatisch der passende Katalog gewählt. Zudem soll auch der Online-Checker-Anbieter nicht pro Thema eine Konfiguration vornehmen müssen. Da sehe ich aber mindestens das Problem, dass der Benutzer nicht sehr transparent andere Prüfresultate bekommt, als wenn er es lokal testet, weil ihm dort dieser Automatismus fehlt. Der Automatismus funktioniert für das Eruieren des Katalogs, was ist aber, wenn man für das Thema weitere vordefinierte Konfigurationen hat? Z.B. Fehler zu Warnungen degradieren? Das Parsen der Datasection reicht m.E. auch nicht für den Usecase, dass ein XTF externe Refernzen aufweist und man diese prüfen will. Z.B. Ein VSA-DSS-mini-Datensatz will man komplett prüfen. D.h. man muss den Datensatz "VSA-Organisationen" vorliegen haben. Von dem steht aber nichts im XTF: Das Wissen dazu steckt nur im Modell. Woher wüsste man nach dem Parsen der Datasection, WO dieser Organisationsdatensatz heruntergeladen werden kann? |
Müsste das nicht im ilidata.xml von VSA-DSS definiert sein? Ist ja eigentlich nichts anderes wie ein Katalog, dort findet die Modellverknüpfung auch mit dem ilidata.xml statt. Zumindest in diesem konkreten Fall.
Der Download scheint mir auch nicht der entscheidende Faktor zu sein. Und fehlerbehaftete Kataloge sind ja ein allgemeines Problem und nicht nur auf diese Umsetzung bezogen. Wenn man von Hand den Katalog runterlädt und Daten manuell mit dem Katalog überprüft, gibt es ja das gleiche Problem.
War auch mein erster Gedanke. Müsste geprüft werden. |
Angenommen die Daten sind korrekt, läuft ilivalidator ohne Fehler durch. Nun will ich jedoch auch prüfen, ob die Verknüpfungen zu den Organisationen korrekt ist. Aufruf wäre ja jetzt:
Und jetzt kommen tausend Fehler, weil ilivalidator Objekte nicht findet, weil die im vsaorganisation.xtf sind. Aus der Datasection kannst du für diese Fälle nicht lesen, WAS eigentlich referenziert wird und WO das referenzierte abgelegt ist. Aus dem Modell kannst du lesen, welches Modell im externen Datensatz verwendet wird, aber immer noch nicht, ob dieser in einem ilidata.xml greifbar ist. Mir ist momentan auch nicht klar, wie das mit "Katalog-Katalogen" gehen soll. Da kannst du wohl aus der Datasection das Modell des Kataloges eruieren. Aber welche Instanz eines Kataloges verwendest du dann? Woher kennst du seine ID aus dem ilidata.xml? Oder gibt es da eine Ilivalidator-Magie, die mir nicht bewusst ist? Arbeitshypthose wäre meinerseits auch, dass wenn es tatsächlich in sexy geht, dies auch mit dem ilivalidator pur sexy gehen müsste. Sonst wird es m.E. intransparent für die Anwender.
Darum müsste man schauen, dass der Benutzer nicht den Katalog herunterladen müsste, sondern "bloss" die Validierungskonfiguration angeben müsste (in der alles verknüpft ist). Aus dem Gedächtnis:
https://geo.so.ch/models/ilidata.xml Wenn es das alles nicht braucht, bin ich ganz Ohr. Der VSA-DSS-mini Usecase ist schon bissle anders als blosse Kataloge. Aber warum einen mE nicht wirklich transparenten Sonderzug für Kataloge fahren, der dann für weitere Anforderungen eh nicht mehr funktioniert. |
Das würde ich mal out of scope nehmen. Muss irgendwie gelöst werden, aber das lösen wir nicht in diesem Issue. Vielleicht kann geostandards.ch ein Validierungstool bauen, dass alle Datensätze validiert, die in einem ilidata.xml referenziert sind. So wie das irgendwann auch für alle ilimodels.xml usw. gemacht werden müsste.
Diese Angabe muss der User machen, da es bei 1-n Beziehung Modell-Katalog nie DEN Katalog gibt. Jemand muss das definieren. Entweder der User, indem er den Katalog auswählt oder irgendjemand, der ein Prüfprofil schreibt. Es müssten also alle Kataloge, die in einem ilidata.xml in den Repos dem referenzierten Modell zugewiesen ist, aufgelistet werden. Das macht ja ilimodels.ch schon. Allenfalls kann man mit ein bisschen Intelligenz (Datum, obsolete etc.) die wahrscheinlichen Kataloge zuerst vorschlagen. Sobald der Katalog, gegenüber dem geprüft werden soll, ausgewählt ist, kennt man auch die ilidata:RepoID und ilivalidator kann rattern.
Wieso? Ist es nicht in Prinzip immer eine |
Ich würde nicht dem Benutzer aufbürden, den richtigen Katalog aus verschiedenen auszuwählen. Der Benutzer prüft eine Transferdatei ja nicht in einem luftleerem Raum, sondern weil ein Auftraggeber eine Lieferung will. Dieser Auftraggeber soll definieren, mit welchen Parametern die Prüfung resp. letzten Endes die Anlieferung erfolgen soll. Zudem die exakt gleiche Prüfung der Lieferant auch lokal mit ilivalidator pur vornehmen kann, indem er
Ich dachte, man wollte mittels XTF parsen automatisch den Katalog herausfinden. Das geht mit EXTERNAL dann sowieso nicht mehr. Sonst sind sie schon ähnlich. |
Einverstanden, für klar bestimmte Datenlieferungen ist es sinnvoll wenn nicht zwingend, dass der Datenempfänger den Katalog vorgibt. Anders sieht es aus, wenn ein reiner Checker angeboten wird, der nicht im Verhältnis Datelieferant <> Datenempfänger steht. Da weiss der Checker nicht, gegen welchen Katalog geprüft werden soll, also braucht es eine Auswahl der möglichen Kataloge. |
Danke für Eure wertvollen Inputs. Das Parsen der Datasection war wohl definitiv ein Schuss in die Luft und ist schleunigst zu verwerfen. |
Verstehe ich noch nicht. Wie wäre hier der Ablauf? Was machte die Maschine? Was muss der Mensch machen? Und ich würde Umsetzungen nicht auf das Problem "Kataloge" beschränken, sondern ganz allgemein betrachten im Sinne von Validierungskonfiguration. |
Es gibt ja letzten Endes wohl zu 99.9% keine Validierung, die nicht in einer Lieferung endet? Es gibt vielleicht "Zwischenprüfungen" vor einer Lieferung. Dann muss man halt einfach einen Parameter haben, der zwar gemäss Vorgabe prüft, aber nicht abliefert. |
Grundsätzlich sollte m.E. alles die Maschine machen. Das Zielpublikum eines einfachen Validators sollte ohne Kenntnisse bzgl. Kataloge klar kommen. |
Die Maschine kann aus dem XTF das zu validierende Modell lesen. Aus dem Modell kenn ich via DEPENDS den Katalog. Wobei es bei DEPENDS wohl nicht nur Kataloge geben kann, sondern auch anderes Zeugs (?). Im ilidata.xml finde ich unter "baskets" den Modell- und Topicnamen des Katalogs wieder. Wenn es aber mehrere Katalogversionen gibt, kann ich automatisch nur raten (den aktuellsten, d.h. der keine Vorgängerversion hat). Zudem muss man das ilidata.xml sauber und vollständig pflegen, d.h. baskets muss geführt werden. Hier hätte ich auch ein paar Fragen, ob das zuverlässig ist. Ich zweifle glaubs einfach ein wenig an "Zielpublikum eines einfachen Validators sollte ohne Kenntnisse bzgl. Kataloge klar kommen". Ja, wie haben die dann die Daten erfasst? Mit Modelbaker, der das gleiche Problem haben wird, wenn es mehrere Kataloge gibt? Wenn man Kataloge wegabstrahieren will, soll man sie schon mal gar nicht verwenden (anderes Thema). |
@olivergrimm und ich haben eure Kommentare konsolidiert und landen auf folgenden Lösungsvorschlag: Es gilt die Prioritätenliste: API Parameter als ilidata: -> Lokale TOML Datei -> interlis-check-service. Für den Web UI Benutzer bedeutet dies, dass er für den interlis-check-service weiterhin keine angaben machen muss, jedoch entsprechende Katalogfehler bekommen kann. Wie von @edigonzales erwähnt, finden Validierungen nicht im luftleeren Raum statt, sondern als Vorbedingung einer Lieferung. Mit geopilot decken wir den Prozess der Datenlieferung bereits ab und sehen daher die Umsetzung dort am richtigen Ort.
Mit diesem Ansatz gelten die stärken von geopilot/ilicop weiterhin:
@romefi @edigonzales @beistehen Bitte um Feedback. |
Geht nicht, wenn es für ein Modell mehrere Prüfprofile geben muss. Eventuell aber egal, siehe mein Schlusskommentar.
Ich verstehe die Abgrenzung ilicop vs geocop nicht so ganz. Wenn man an den geocop liefert und dort angibt, welches Thema (z.B. LK-irgendwas) man schickt und geocop daraus das passende Prüfprofil liest und dann ilicop mit der passenden ilidata-ID, glaube ich es zu verstehen, dass es geht. Aber irgend zu einem Zeitpunkt, muss der Benutzer irgend eine Information mitschicken, sonst hat man immer das Problem, dass es zu einem Modell unterschiedliche "Lieferthemen" gibt oder wie man das nennen will. Bestes Beispiel wäre ja z.B. die Anlieferung eines ÖREB-Rahmenmodelles mit unterschiedlichen Constraints pro Thema. |
@edigonzales Ich habe mögliche Lösungen nochmals mit @romefi diskutiert. Wir sind dabei auf 3 Aussagen gekommen, welche dabei helfen könnten, die Lösung zu schärfen.
Ich denke, wir könnten die Lösung für mal 90% der Fälle verfolgen und iterativ immer weitere Einschränkungen vornehmen. Sofern mehrere Profile gefunden werden, werden eben mehrere Validierungen erfolgen. Mögliche Parameter zur Einschränkung:
|
May resolve #91 |
Seit Version 1.13.4 (evtl. früher) unterstützt der ilivalidator die Angabe einer voll-qualifizierenden Katalog-ID über
ilidata:Dataset.id
um externe Referenzen gegenüber Katalogen prüfen zu können:Beispiel:
java -jar .\ilivalidator-1.13.4-SNAPSHOT.jar --allObjectsAccessible ilidata:sh.geo.models.Hauptnutzung_CH "obe_Nutzungsplanung_SH_LV95_V4_0.XTF"
Die ilidata:-Angabe bezieht sich auf die Id des entsprechenden ilidata-Eintrags (Analogie zum Beispiel: https://models.geo.sh.ch/ilidata.xml)
Es soll geklärt werden, ob ein Bedarf besteht, dass diese Option auch beim ilicop nutzbar gemacht werden soll.
(siehe auch: claeis/ilivalidator#382 (comment))
Aktuell unterstützt der ilicop die Validierung gegenüber externen Katalogen über die Konfigurationsoptionen
Variante 1:
-Interpretation der Kataloge wenn sie im ZIP als XML mitgeschickt werden
Variante 2:
-Konfig catalogs:-Volume und serverseitige Bereitstellung der XML-Dateien
-Prüfen mittels Option --AllObjectsAccessible
The text was updated successfully, but these errors were encountered: