Giter Club home page Giter Club logo

Comments (11)

Julian avatar Julian commented on May 25, 2024

Hi.

This is because your $schema does not match the one predefined by JSON Schema for Draft 3. The one defined for Draft 3 has an empty fragment, so it's http://json-schema.org/draft-03/schema#.

So the behavior there is because it's falling back to Draft 4 since it doesn't know about that $schema. You can try that for yourself by doing Draft3Validator.check_schema(t) and seeing no error (and if you validate with a Draft3Validator you'd have no problems).

Whether or not without the fragment should also be recognized as draft 3 I think revolves around another discussion that has been going on about relative URIs vs JSON References, so I'm not sure: @fge @gazpachoking should http://json-schema.org/draft-03/schema and http://json-schema.org/draft-03/schema# both be accepted for draft 3 schemas?

from jsonschema.

fge avatar fge commented on May 25, 2024

@Julian

should http://json-schema.org/draft-03/schema and http://json-schema.org/draft-03/schema# both be accepted for draft 3 schemas?

Yes, since the first is the URI of the document itself, and the second is the empty pointer into that document -- ie, for all practical purposes, the document itself.

from jsonschema.

Julian avatar Julian commented on May 25, 2024

OK, sounds good. Thanks for confirming. I guess to properly implement $schema will require integrating ref resolution to resolve any registered $schemas then.

from jsonschema.

gazpachoking avatar gazpachoking commented on May 25, 2024

@Julian Do we really need to resolve the schemas? I was actually wondering about this the other day. @fge The spec says: "this URI MUST be both absolute and normalized." Wouldn't the normalized form either have the # or not, thus making the other way invalid?

from jsonschema.

fge avatar fge commented on May 25, 2024

On Fri, Mar 1, 2013 at 8:22 PM, Chase Sterling [email protected] wrote:

@Julian Do we really need to resolve the schemas? I was actually wondering about this the other day. @fge The spec says: "this URI MUST be both absolute and normalized." Wouldn't the normalized form either have the # or not, thus making the other way invalid?

Hold on, "$schema" is not "$ref". You don't need to resolve it. But if
you want to, then this is a JSON Reference, and as far as JSON
Reference is concerned, no fragment or an empty fragment is the same
(they are two different URIs, yes, but they reference exactly the same
content).

And when normalizing a URI, whatever it is, the fragment is always
left intact. Or did I misread your question?

Francis Galiegue, [email protected]
JSON Schema in Java: http://json-schema-validator.herokuapp.com

from jsonschema.

fge avatar fge commented on May 25, 2024

On Fri, Mar 1, 2013 at 8:28 PM, Francis Galiegue [email protected] wrote:
[...]

Hold on, "$schema" is not "$ref". You don't need to resolve it. But if
you want to, then this is a JSON Reference, and as far as JSON
Reference is concerned, no fragment or an empty fragment is the same
(they are two different URIs, yes, but they reference exactly the same
content).

FWIW, this is why I have a JsonRef class: it not only normalizes
URIs behind the scene, but "canonicalizes" them so that no fragment is
replaced by an empty fragment. As such, when I .getPointer(), I
always get a JSON Pointer -- even empty. And, of course, "x://y" and
"x://y#" are equal with this implementation.

Francis Galiegue, [email protected]
JSON Schema in Java: http://json-schema-validator.herokuapp.com

from jsonschema.

gazpachoking avatar gazpachoking commented on May 25, 2024

And when normalizing a URI, whatever it is, the fragment is always
left intact. Or did I misread your question?

Yeah, that answers it. I just thought that after normalization there would be one way to refer to the same schema, rather than the # still being optional.

from jsonschema.

gazpachoking avatar gazpachoking commented on May 25, 2024

@Julian I think we just need to go with @fge's method, we'll 'canonicalize' the uri (by adding an empty fragment if there isn't one) both when adding to our metaschema dict, and when reading $schema

from jsonschema.

gazpachoking avatar gazpachoking commented on May 25, 2024

Fixed in #77

from jsonschema.

Julian avatar Julian commented on May 25, 2024

Thanks for reporting this @ptallada . There will be either a bugfix release or a minor release tomorrow so this should hit you soon if you're not on HEAD. Cheers.

from jsonschema.

ptallada avatar ptallada commented on May 25, 2024

Wow, what a fast response :D

Thank you very much!

from jsonschema.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.