Against the following Object Type:
{
"$namespace" : "http://www.example.com/my-schema",
"$types" : [
{
"$kind" : "object",
"$content" : {
"foo" : {
"$type" : "string",
}
},
"$open" : false,
"$name" : "only-foo"
},
{
"$kind" : "object",
"$content" : {
"foo" : {
"$type" : "string",
},
"bar" : {
"$type" : "boolean",
"$optional" : true
}
}
"$name" : "foo-bar-and-arrays"
}
]
}
The objects { "foo" : "bar" } and { "foo" : "foo" } are valid against the Type named "Q{http://www.example.com/my-schema}only-foo" because the foo pairs are strings.
The object {} is not because the foo pair is missing.
The object { "foo" : "bar", "bar" : "foo" } is not because no other pair than "foo" is allowed (closed Object Type).
Against the Type named "Q{http://www.example.com/my-schema}only-foo":
The objects { "foo" : "bar", "foobar" : [ "foo" ] } and { "foo" : "bar", "bar" : true } are valid because the foo pairs are strings, bar is optional and the Object Type is $open.
The objects {} and { "bar" : "foo" } and { "foo" : "bar", "bar" : "foo" } are not because the foo pair is missing or the bar pair is not a boolean.