Imvertor / Imvertor-Maven

Mavenized version of Imvertor
http://www.imvertor.org
7 stars 12 forks source link

Valideer de gegenereerde Json schema's tegen het Json (meta) schema dat daarbij past #458

Open ArjanLoeffen opened 4 months ago

ArjanLoeffen commented 4 months ago

Valideer de gegenereerde Json schema's tegen het Json (meta) schema dat daarbij past. Baseer je op de methodiek in https://www.jsonschemavalidator.net/

Meta-schema's zijn: image

Zie ook #336 - Deze spec gaat uit van https://json-schema.org/draft/2019-09/schema dus die wordt standaard gebruikt voor de validatie van de BP Json schema's. Zorg dat die $schema referentie wordt geactiveerd. Check ook deze StackOverflow discussie en deze (everit schema loader)

ArjanLoeffen commented 4 months ago

Joost specificeert ook: https://github.com/networknt/json-schema-validator

ArjanLoeffen commented 4 months ago

Implementatie is compleet. Maar hierbij maak ik gebruik van lokaal opgeslagen metaschema's. Ik heb het complete metaschema voor 2020-12 gevonden (https://github.com/orgs/json-schema-org/discussions/231) maar niet voor 2019-09. En die versie wordt gevolgd in de Best Practices, zie issue #336 .

@joostfarla weet jij waar ik dat schema kan vinden? https://json-schema.org/draft/2019-09/schema is alleen een topstruktuur en dus incompleet als ik die lokaal bewaar.

joostfarla commented 4 months ago

@ArjanLoeffen je vindt de referenced schema's op de volgende URLs:

Je zou deze files los van elkaar ("as-is" dus) in een folder kunnen plaatsen en de validator kunnen vertellen waar deze gevonden kunnen worden. Platslaan tot 1 file is ook wel mogelijk, maar dat vereist wat handwerk.

ArjanLoeffen commented 4 months ago

Ik heb de schema's zoals genoemd samengevoegd in één gist.json schema. Dat lijkt te werken. Volgens bronnen op het net is het niet mogelijk json schema's via imports naar elkaar te laten verwijzen; het importeren/includeren kan worden gerealiseerd door een preprocessing stap. Die weg bewandelen we nu nog even niet. Het resultaat van zo'n stap zou een gelijkaardige gist.json worden.

@joostfarla wil jij die gist.json even beoordelen?

joostfarla commented 3 months ago

@joostfarla wil jij die gist.json even beoordelen?

Dit schema lijkt me in orde zo!

Volgens bronnen op het net is het niet mogelijk json schema's via imports naar elkaar te laten verwijzen; het importeren/includeren kan worden gerealiseerd door een preprocessing stap.

Normaal gesproken worden $ref verwijzingen door de validator automatisch "geresolved". Als de URIs voorkomen in de definitions ($defs) kan de validator deze meteen benutten. Indien niet, dan zal hij deze op dat moment proberen op te halen.