VSON — Visual Scene Ontology Notation

Vocabulary version 1.2 · Apache-2.0 · github.com/yamancan/visual-scene-ontology

VSON represents what is in a picture as a typed, validatable RDF graph: the entities depicted, the qualities they bear, the spatial and temporal facts that hold between them, and the frame the scene is seen through. The OWL ontology below declares the terms, and the SHACL shapes decide whether a given document is well-formed — well-formedness is a validation result here, not a convention.

Try it. The studio turns an image into a scene graph and validates it in your browser. Four demos and sixteen gallery scenes run with no key. vson-studio.pages.dev

The VSON pipeline Extraction: an image goes to a vision-language model, which emits a document in VSON-P. Transpile turns that document into a VSON-T graph. Verification, which is vson validate: the graph passes through three gates in order — SHACL, OWL 2 RL, then C2 closure — and clearing all three exits 0 with the graph. Any gate that fails exits 1 with findings. Every gate reads the document. None of them reads the image. image vision-language model document · VSON-P graph · VSON-T SHACL OWL 2 RL C2 closure exit 0 · graph exit 1 · findings reads emits transpile any gate fails extraction verification · vson validate Every gate reads the document. None of them reads the image.

This host serves the namespace documents themselves. The project — the transpilers, the CLI, the test corpus and the specification — lives in the GitHub repository linked above.

Ontology

/v1/ontology.ttl — the VSO TBox: entity taxonomy, frame layer, reification node classes and the closed value vocabularies the shapes validate against.
Namespace https://w3id.org/vson/v1/ontology#, written vso: in every VSON document. The prefix the vocabulary publishes for registries is vson:, because vso: is already the Vehicle Sales Ontology's; a prefix is an abbreviation either way, and the namespace above is the name.

RCC-8 value vocabulary

/v1/rcc8.ttl — the eight RCC-8 base relation names, as a closed vocabulary of values for vso:rcc.
Namespace https://w3id.org/vson/v1/rcc8#, prefix rcc:.

Allen interval relations

/v1/allen.ttl — Allen's thirteen base relations on intervals, declared as object properties between perdurants, with their inverses.
Namespace https://w3id.org/vson/v1/allen#, prefix allen:.

All three, in one file

/v1/vson-full.ttl — the ontology and both value vocabularies concatenated. It is the import closure of https://w3id.org/vson/v1/ontology, whose header imports the other two: one request instead of three, for a client that cannot follow an owl:imports.

A distribution, not a name. No IRI is minted for it and none resolves to it — cite the three names above, which are also what every term in the file carries an rdfs:isDefinedBy back to. Each section keeps its own header and comments, exactly as that document ships.

SHACL shapes — strict profile

/v1/shapes.ttl — the shapes a conformant VSON document must satisfy.
Shape names are minted in https://w3id.org/vson/v1/shapes#, prefix vss:.

SHACL shapes — relaxed profile

/v1/shapes-relaxed.ttl — the partial validation profile, for documents still being extracted or repaired. It shares the vss: namespace with the strict profile; the two are separate documents, not separate vocabularies.

JSON-LD context

/v1/context.jsonld — binds the Composition-level reference properties to their VSO IRIs so a JSON-LD processor materializes the same graph the Turtle surface carries. It maps names; it does not constrain them. The shapes above are what enforce well-formedness.

JSON Schemas

/v1/schema/vson-output.schema.json — the extractor response envelope.
/v1/schema/vson-jsonld.schema.json — the structural skeleton of the JSON-LD scene form.

Both are structural only. A payload can satisfy either schema and still fail SHACL.

Canonical names. The canonical IRIs are https://w3id.org/vson/v1/… — permanent identifiers under the W3C Permanent Identifier Community Group. They dereference: since 2026-07-31 each one redirects to the matching document on this host, so https://w3id.org/vson/v1/ontology resolves to /v1/ontology.ttl and a reasoner can follow the name without being told where the bytes live. Cite the canonical names, not these paths: they are the identifiers, this host is only where the bytes currently sit.