Skip to content

Adopt urn:solid as default vocabulary for RDF compatibility #5

@melvincarvalho

Description

@melvincarvalho

Background

LION is JSON-LD compatible and offers a full upgrade path, but the spec doesn't currently say anything about what @vocab (the JSON-LD default vocabulary) a LION document should use when RDF compatibility is needed.

This means a LION author who wants their document to round-trip cleanly to RDF/Turtle/JSON-LD has to either:

  • learn JSON-LD and pick an @context themselves, or
  • accept that bare property names (name, knows, email) won't expand to anything semantically meaningful.

Both options undermine LION's "just JSON, RDF when you need it" pitch.

Proposal

Adopt the following recommendation in the LION specification:

Processors requiring RDF compatibility — that is, processors emitting or consuming JSON-LD, RDF/Turtle, or any other RDF serialisation — SHOULD assume @vocab: "urn:solid:" as the default vocabulary unless an explicit @context is supplied.

urn:solid: is a vocabulary-agnostic URN namespace with a stable registry of bare-form terms that map (via owl:sameAs) to the canonical upstream IRIs in FOAF, Schema.org, dcterms, ActivityStreams, PROV, LDP, WAC, and SKOS/DCAT/ORG.

Why this fits LION

  1. No upfront tax. A LION user who never touches RDF never sees urn:solid. The recommendation only applies when a processor needs to emit/consume RDF.
  2. No vocab lock-in. Defaulting to urn:solid instead of FOAF or Schema.org means LION isn't picking a winner. The registry resolves bare names to whichever upstream vocab is canonical for that term.
  3. Stable across registry churn. Upstream vocabs deprecate, rename, move. The urn:solid indirection layer absorbs that churn.
  4. SHOULD, not MUST. Authors who supply an explicit @context override cleanly. No special-casing required.

Example

```json
{
"@id": "https://alice.example.org/profile",
"@type": "Person",
"name": "Alice",
"knows": { "@id": "https://bob.example.org/profile" }
}
```

With the SHOULD adopted, an RDF processor reading the above would expand Person, name, knows to urn:solid:Person, urn:solid:name, urn:solid:knows, each of which maps to the corresponding foaf: term via the registry.

Concrete next steps (if accepted)

  1. Add the SHOULD clause to LION's spec.
  2. Publish a drop-in lion-context.jsonld (at linkedobjects.org/ or urn-solid.github.io/) that sets @vocab: "urn:solid:" plus the standard prefix table — one URL, one line, full RDF compat.
  3. Reciprocal acknowledgement is already in the urn:solid spec.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions