Scope
This page exists because most rejected pull requests are not wrong, they are out of scope. The contributor built something reasonable for a service that this is not.
What w3id.org is for
Stable identifiers that redirect somewhere you control.
Concretely, the service is a good fit when:
- You are publishing a vocabulary, ontology, or schema and need permanent IRIs for its terms.
- You need a permanent JSON-LD context URL, or a stable IRI for a credential type, a specification, or a protocol.
- You want a namespace under which your project can mint identifiers, e.g.
https://w3id.org/my-project/..., that outlives your current hosting. - You need content negotiation in front of an ontology, so that a browser gets HTML and a triple store gets Turtle, from the same IRI. See Content negotiation.
- You are an individual who wants a stable identifier for yourself, under the shared
/people/namespace.
In all of these, w3id.org holds a redirect and nothing else. The content lives on your infrastructure.
What w3id.org is not for
It is not a file host
Do not commit your ontology, schema, context, or documentation to this repository. Not as .ttl, .owl, .rdf, .jsonld, .json, .html, or anything else.
This is the single most common out-of-scope pull request. It gets rejected every time, and it is not a matter of size — a one-line context file is as out of scope as a fifty-megabyte ontology. The repository holds redirect rules and contact information. That is the whole inventory.
Host the files yourself: a project website, GitHub Pages, an institutional repository, Zenodo, a purpose-built vocabulary server. Then point your w3id.org identifier at it. See files/only-allowed-names.
It is not a CDN or a general-purpose URL shortener
The service is not there to make your links shorter, to sit in front of your website for performance, or to give a marketing campaign a tidy URL. It exists so that identifiers embedded in data keep resolving. If nothing is going to embed the identifier, you probably do not need one.
It is not a place to reserve names
Claiming a directory is a long-term commitment, not a land grab. Requests are declined for names that are:
- too generic — a single common English word, or a term the whole community would plausibly need;
- confusing — close enough to an existing identifier or a well-known organisation to mislead;
- inappropriate or offensive;
- speculative — claimed with no concrete project behind them, or claimed in bulk.
Do not squat on names for projects that do not exist yet, and do not claim a top-level directory when a path under an existing namespace would do.
It is not a dynamic application platform
There is no application code, no database, no server-side processing you can extend, no authentication, no access control, no per-user logic. .htaccess rewrite rules are the only mechanism available, and only the subset of them that produces redirects.
Specifically, you cannot use this service to:
- proxy or mirror content;
- vary a response by who is asking, or by anything other than the request URL and headers;
- add authentication or restrict access to an identifier;
- run any code.
It is not a place for project documentation
The README.md in your identifier directory is for identifier and maintainer information — what the identifier is, who looks after it, how to reach them. It is not your project's README, not a user manual, and not a specification. Keep it short and link out to the real documentation.
Naming
There is no formal naming policy, and no published list of reserved names. The current practice:
- Claim a top-level directory for your project and mint second-level identifiers under it:
https://w3id.org/PROJECT-ID/SUB-ID. - Shared top-level namespaces exist for some categories, e.g.
https://w3id.org/people/PERSON-IDfor individuals. Use them where they apply rather than claiming a new top level. - Prefer lowercase directory names. See
tree/no-case-collision— this is not just aesthetics, case collisions genuinely break the repository on macOS and Windows.
Maintainers may decline a name for any of the reasons above. If you are unsure whether a name will be acceptable, ask first — on the mailing list or as an issue. Either is much cheaper than finding out in a pull request review.
Still not sure?
Ask before you write any code, on the public-perma-id@w3.org mailing list or as an issue. Describe what you want to identify and where the content will live, and somebody will tell you whether this is the right tool.