Skip to content
Melvin Carvalho edited this page May 26, 2025 · 3 revisions

Solid Vocabulary Term Strategies: Trade-offs Matrix

This page outlines the trade-offs of different strategies for defining RDF predicates in Solid applications. It is intended to guide developers, app authors, and spec contributors in choosing appropriate approaches for various stages of development, from prototyping to standardization.


🧭 1. Term Definition Strategies

Strategy Example Description
URN:solid urn:solid:foo A URN-based local identifier for rapid prototyping.
Pod-local URI /profile/card#foo A user- or app-local identifier, unique to the Pod domain.
Custom HTTP URI https://app.example/vocab#foo A hosted vocabulary term by the app or organization.
W3ID https://w3id.org/solid/foo Long-term stable URI under community control.
Global Standard https://schema.org/name Widely adopted and resolvable term managed externally.

πŸ“Š 2. Trade-offs Matrix

Criteria URN:solid Pod-local URI Custom HTTP URI W3ID Global Standard
Simple for developers βœ… βœ… βœ… ⚠️* ⚠️
Requires minting process ❌ ❌ ⚠️ βœ… βœ…
Globally unique ❌ ⚠️ βœ… βœ… βœ…
Dereferenceable ❌ βœ… βœ… βœ… βœ…
Discoverable via RDF tooling ❌ ⚠️ βœ… βœ… βœ…
Risk of collisions ⚠️ ⚠️ βœ… βœ… βœ…
Privacy-preserving βœ… βœ… ⚠️ ❌ ❌
Best for interop across apps ❌ ⚠️ βœ… βœ… βœ…
Works offline / air-gapped setups βœ… βœ… ⚠️ ❌ ❌
Encourages rapid prototyping βœ… βœ… ⚠️ ❌* ❌
Stable long-term ❌ ❌ ⚠️ βœ… βœ…

βœ… = Yes / good
⚠️ = Possible, but trade-offs
❌ = No / not recommended for that use case

  • feedback from Noel de Martin

I can prototype an app using a w3id vocabulary without registering it for real until the app is "done". I also disagree with all the ❌ on that column


πŸ“¦ 3. Recommendation by Use Case

Use Case Recommended Strategy
Internal app development urn:solid:*, Pod-local
Early prototyping with real data Pod-local or custom HTTP URI
Cross-app interoperability Custom HTTP URI or W3ID
Public-facing specs or standards W3ID or Global Standard
Privacy-focused / edge environments Pod-local or URNs

πŸ›  4. Migration Strategy

Encourage evolution of vocabularies over time:

  • Move from urn:solid:* to custom HTTP URIs or W3ID as terms stabilize.
  • Use owl:sameAs, rdfs:seeAlso, or JSON-LD @context to map terms.
  • Provide tooling to validate and promote terms from local to global.

This document is open for feedback. Please suggest improvements or propose edits via pull request or GitHub discussion.