spec: state the frame derivation's reference signals and the graph reading - #174
Merged
Merged
Conversation
…ading - OOLD-EXT-6d10, ff64, 05d3: which signals make a property reference-valued, that an embedded object wins where both match, and that a key aliasing a JSON-LD keyword never gets a subframe - OOLD-EXT-725f: framing a graph yields one document per matching node, and several documents merge back into one graph Both implementations emitted @embed @once and so breached OOLD-EXT-68fa; a reference whose target carried triples was embedded and the framed document then failed the schema its frame came from. Closes #160
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #160.
OOLD-EXT-68faalready required@embed: @neverfor reference-valued properties, and the worked example already printed it, but the text never said which properties are reference-valued. Both reference implementations emitted@embed: @onceand no subframe at all, so both were in breach of an existing MUST.Measured, not assumed: framing a Person schema whose
works_foris{"type": "string", "format": "iri-reference"}against a graph where the employer carries its ownrdf:typeandschema:namereturns an object in that position, and the framed document then fails Ajv validation against the schema the frame was derived from.Rules added
OOLD-EXT-6d10(MUST) - a property is reference-valued on any of three signals:x-oold-rangeon a string-typed value, an IRI-familyformat, or a term mapped"@type": "@id".OOLD-EXT-ff64(MUST) - the embedded-object reading wins where a property matches both.OOLD-EXT-05d3(MUST NOT) - no subframe for a key aliasing a JSON-LD keyword.idconventionally carries"format": "iri"and so matches the reference signals, but a subframe there writes{"@id": {...}}, which a processor rejects. This one came out of the shared corpus while fixing the implementations, not from reading the text.OOLD-EXT-725f(MUST) - framing a graph yields one instance document per matching node, and several documents merge back into one graph.@neveris what makes the two directions consistent: an embedded reference would copy the target's triples into every document that mentions it. This is the framing-based answer to Object - Graph - Object Mappings #10.Implementations
Fixed in lockstep, each with tests that fail when only the
@neverline is removed:Verified
make spec,make validate(380 ok and 76 ok, 0 failed),rules_baseline.py check(88 rules),check_spec.py(54 sections).