This specification defines a lightweight convention for using the urn:solid: namespace for temporary RDF predicates within the Solid ecosystem. These predicates serve as stand-ins for future stable URIs and support early experimentation, mirroring the way developers use JSON keys before formalizing vocabularies.
Solid developers often need to introduce new predicates rapidly. Minting stable HTTP URIs can be too heavyweight during early stages. As in JSON development, temporary identifiers like "foo" or "isCool" are useful. In RDF, this role can be filled by simple URNs like:
urn:solid:isCool
This mirrors JSON idioms while staying valid within RDF and Linked Data tooling.
A urn:solid: predicate consists of:
urn:solid:{term}
Where {term}:
- Is a URI-safe string (letters, numbers, dashes, underscores)
- Follows lowercase or camelCase naming conventions
- Has no global coordination requirement
Examples:
urn:solid:syncTokenurn:solid:hasFavoriteColorurn:solid:completedStep
- Use
urn:solid:predicates only during prototyping. - Each predicate SHOULD be documented in context (e.g., app spec, data schema, README).
- Developers SHOULD prepare to replace them with persistent HTTP URIs as the project matures.
| Benefit | Cost |
|---|---|
| Simple and readable (like JSON keys) | Not globally unique |
| No need to mint HTTP URIs early | Not dereferenceable |
| Easy to adopt in Solid apps | Risk of name collisions if shared across apps |
| Encourages rapid development | No discovery or linking via RDF tooling |
-
Use unique, descriptive terms to avoid accidental reuse (
urn:solid:userPrefsTheme) -
If a predicate is widely reused, promote it to a real HTTP URI
-
Maintain a mapping table when upgrading:
urn:solid:userPrefsTheme → https://example.com/ns#theme
When predicates stabilize:
- Mint a proper HTTP-based IRI, e.g.,
https://example.org/ns#foo - Map with
owl:equivalentPropertyorrdfs:seeAlso - Deprecate the
urn:solid:form - Update apps and tooling incrementally
- RDF processors MUST accept
urn:solid:*as valid IRIs. - Tools MAY warn or highlight their temporary status.
- Servers and apps SHOULD NOT depend on these as permanent identifiers.
While urn:solid: is not an IANA-registered namespace, its use in Solid is pragmatic and scoped. It aligns with RFC 8141 §3.1 which allows informal URN namespaces for limited/private use.
This proposal introduces a simple, JSON-inspired convention—urn:solid:foo—to allow RDF predicates to be created without ceremony. It supports developer agility, fosters rapid prototyping, and remains compatible with RDF tools while keeping a clear migration path to stable vocabularies.