Skip to content

RDF 1.2 on the read side refuses conforming documents #85

Description

@tophcodes

What

A representation that carries no version media-type parameter is read as RDF 1.1 (ADR-6). A valid RDF 1.2 document sent without the parameter is therefore refused. Decide whether that is what we want on the read side, and what Accept gets on the write side.

Why

ADR-6's argument is about asymmetric failure: a document declared 1.1 that a 1.2 reader meets is merely unambitious, one declared 1.2 that a 1.1 reader meets is unreadable. That argument is about what the pod emits, and it is attached to a rule about what the pod accepts.

On the accept side there is no asymmetry to exploit. RDF 1.2 Turtle is a superset of 1.1, so
the two readings differ only for documents using 1.2-only constructs, triple terms,
reifiers, directional literals. For those, "read as 1.1" means refusing conforming input,
and refusing it precisely from the clients the strictness claims to protect: the ones that
do not know the parameter exists and so cannot send it.

The mirror case is unstated. Under the emit rule, a client sending plain Accept: text/turtle receives text/turtle;version=1.2 when the resource happens to hold a triple
term. By ADR-6's own argument that is the expensive failure: a 200 with a body the client
cannot parse.

How

  • Decide the read side: keep the refusal, or parse permissively and let the stored version speak for itself.
  • Decide the emit side: 406, downgrade, or accept the cost and say so in ADR-6.
  • Say what Accept: text/turtle;version=1.1 does against a resource holding 1.2 constructs. It is currently unstated and it is the request a careful client will send.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions