[x3d-public] JSON Schema meeting minutes Python Success!

John Carlson yottzumm at gmail.com
Fri Oct 29 22:03:40 PDT 2021


Ajv is still failing on XMLSpy converted schema, and so is Java:

Here's a smattering of errors:

     [java] WARNING: Converting unescaped reference #/$defs/xs:NMTOKEN 
to JSON Schema legal $ref form #/$defs/xs%3ANMTOKEN
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:ID to 
JSON Schema legal $ref form #/$defs/xs%3AID
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:IDREF to 
JSON Schema legal $ref form #/$defs/xs%3AIDREF
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:NMTOKENS 
to JSON Schema legal $ref form #/$defs/xs%3ANMTOKENS
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:NMTOKEN 
to JSON Schema legal $ref form #/$defs/xs%3ANMTOKEN
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:NMTOKEN 
to JSON Schema legal $ref form #/$defs/xs%3ANMTOKEN
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:ID to 
JSON Schema legal $ref form #/$defs/xs%3AID
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:IDREF to 
JSON Schema legal $ref form #/$defs/xs%3AIDREF
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:NMTOKENS 
to JSON Schema legal $ref form #/$defs/xs%3ANMTOKENS
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:NMTOKEN 
to JSON Schema legal $ref form #/$defs/xs%3ANMTOKEN
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped
     [java] WARNING: Converting unescaped reference #/$defs/xs:NMTOKEN 
to JSON Schema legal $ref form #/$defs/xs%3ANMTOKEN
     [java] Oct 30, 2021 12:00:39 AM 
net.jimblackler.jsonschemafriend.PathUtils fixUnescaped

Should I start filing tickets against Ajv and jsonschemafriend?

Here is a small program for your use for validating with Java:


$ cat Main.java
import net.jimblackler.jsonschemafriend.*;
import java.io.*;

public class Main {
  public static void main(String[] args) {
    try {
      SchemaStore schemaStore = new SchemaStore(); // Initialize a 
SchemaStore.
      // Load the schema.

        // Schema schema = schemaStore.loadSchema(new 
File("x3d-4.0-JSONSchema.json"));
        Schema schema = schemaStore.loadSchema(new 
File("X3dXml4.0SchemaConvertedToJson2020-12Schema.json"));

        for (int a = 0; a < args.length; a++) {
                try {
                        new Validator().validate(schema, new 
File(args[a]));
                } catch (Exception ve) {
                        ve.printStackTrace();
                }
        }
    } catch (SchemaException e) {
      e.printStackTrace();
    }
  }
}

On 10/29/21 23:44, John Carlson wrote:
>
> I was able to change Python validators, and the new one validates with 
> XMLSpy converted schemas!  Woohoo!
>
> Here's the main test script that I use, which I will check in:
>
>
> import os
> from jschon import create_catalog, JSON, JSONSchema
> import json
>
> create_catalog('2020-12')
>
> # validate the X3D Resources examples with draft 2020-12 JSON schema
> # validate one instance "instance" against X3D JSON Schema 4.0
>
> class ValidateX3DJSON:
>    # load a JSON file called jsonname into obj
>
>    def load_json(self, jsonpre, jsonname):
>        try:
>            with open(jsonname, 'r') as jsonfile:
>                obj = json.load(jsonfile)
>                jsonfile.close()
>                return obj
>        except:
>            print(f"{jsonpre}JsonInvalid", end=" ")
>            return None
>
>    # validate instance against two schemas
>    def validate_with_schemas(self, entryPath, schemas, pres):
>        result = [ "jsonSkipped", "jwcSkipped", "dbSkipped"]
>
>        try:
>            result[0] = "jsonDidNotParse"
>            instance = JSON(self.load_json("x3d", entryPath))
>            result[0] = "jsonParsed"
>            for si in range(len(schemas)):
>                result[si+1] = pres[si]+"Invalid"
>                schemas[si].evaluate(instance)
>                result[si+1] = pres[si]+"Valid"
>        except:
>            pass
>        print(result[0], result[1], result[2], end=" ")
>
>    def fileList(self, dirpath):
>        for base, directories, filenames in list(os.walk(dirpath)):
>            for filename in filenames:
>                if filename.endswith(".json"):
>                    fullpath = os.path.join(base, filename)
>                    yield fullpath
>
>
>
> if __name__ == "__main__":
>    X3DJSONValidator = ValidateX3DJSON()
>    pre = ["jwc", "db"]
>    metaschema = JSONSchema(X3DJSONValidator.load_json("meta", 
> "../schema/2020-12-JSONSchema.json"))
>    schemafiles = ('../schema/x3d-4.0-JSONSchema.json', 
> '../schema/X3dXml4.0SchemaConvertedToJson2020-12Schema.json')
>    schemas = []
>    for s in range(len(schemafiles)):
>        schemas.append(JSONSchema(X3DJSONValidator.load_json(pre[s], 
> schemafiles[s])))
>        metaschema.evaluate(schemas[s])
>    for entryPath in 
> X3DJSONValidator.fileList("/c/x3d-code/www.web3d.org/x3d/content/examples"):
>        X3DJSONValidator.validate_with_schemas(entryPath, schemas, pre)
>        print(entryPath)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20211030/306698a5/attachment.html>


More information about the x3d-public mailing list