Comments (11)
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.
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.
OK, sounds good. Thanks for confirming. I guess to properly implement $schema
will require integrating ref resolution to resolve any registered $schema
s then.
from jsonschema.
@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.
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.
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.
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.
@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.
Fixed in #77
from jsonschema.
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.
Wow, what a fast response :D
Thank you very much!
from jsonschema.
Related Issues (20)
- Migrating From RefResolver, unable to resolve $ref
- Feature request: Add support for a second message attribute on errors which is guaranteed not to include the failing instance HOT 5
- Python NaN validates against all numeric limits, and shouldn't HOT 2
- validating nan in an enum is no longer supported HOT 1
- Need a custom ref resolver
- Support custom Registry for meta schema in check_schema HOT 4
- `"format":"date-time"` not working HOT 6
- The latest version is slower than 3.2.0 validator HOT 5
- Validation error messages changed after upgrading jsonschema version from 3.2.0 to 4.21.1 HOT 5
- multipleOf fails to validate that 4.02 is a multiple of 0.01 due to floating point math HOT 1
- Unexpected KeyError while running test suite inside GitLab Worker HOT 3
- Enhancing the multipleOf Validator for Improved Decimal Handling in jsonschema HOT 1
- @FormatChecker.checks decorator not a classmethod HOT 1
- RefResolver deprecation docs are confusing and do not explain how to replace a very simple usage (a RefResolver which just specifies a base_uri) HOT 1
- Using the copy button of the code block in the README results in error "zsh: command not found: $" HOT 2
- Support installation via Homebrew HOT 1
- Improve `best_match` when used with applicators HOT 2
- Documentation is out to date HOT 6
- Error importing jsonschema after release 4.22.0 HOT 7
- Mitigate undesired side effect of new `best_match` behaviour with alternative proposal HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jsonschema.