AsOf IDs
One stable key per entity. Cite it beside the Wikidata QID.
The ID
form: ent_ and the record's slug: ent_google. Slugs are lowercase names with hyphens: openai, google-deepmind, laguna-m-1.
url: https://asof.is/record/{slug}: the page. Add .md for the markdown twin; https://asof.is/v1/entities/{slug} is the JSON, with ?as_of=YYYY-MM-DD for the state on a date.
node: https://asof.is/record/{slug}#entity: the @id of the entity in the page's own JSON-LD (Organization, Person or Product).
by id: https://asof.is/record/ent_google and https://asof.is/v1/entities/ent_google redirect to the slug's URL, so an ID alone resolves.
stability: An ID is never reused or reassigned. When two records turn out to be one, the dropped slug redirects permanently to the kept one on every surface (page, twin, JSON, timeline), and the dropped ID keeps resolving.
scope: Organizations, products and models, regulators and public bodies, and people in public roles, in tech and AI first. Narrow on purpose: every record is one the pipeline checks.Try it: /record/google, /record/google.md, /v1/entities/google, /record/ent_google.
Beside Wikidata, not instead
- A QID identifies. Wikidata holds an item for most things worth naming, in every language, under CC0; it is the right key for saying which entity you mean, and AsOf uses it that way: every record names its QID where one exists.
- An AsOf ID dates. Behind it sits a ledger, not a description: each claim carries valid_from and valid_to, its sources and a confidence score, and a replaced claim is closed and linked to the one that replaced it, never overwritten. Ask the URL what was true on a day, or what changed since one, and it answers from checked claims only.
- The two reconcile. The record carries the QID, the SEC CIK and the ticker as identifiers in its own markup and JSON, so a reader with any of them reaches the AsOf record, and a reader with the AsOf ID reaches the Wikidata item.
- A record does not wait for an item. A record exists when the pipeline has checked claims about an entity; it names a Wikidata item when one exists. So citing both keys covers an entity before, and after, Wikidata has it.
In your markup
An organization's own page, with both keys:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Google",
"url": "https://www.google.com/",
"sameAs": [
"https://www.wikidata.org/wiki/Q95",
"https://asof.is/record/google"
],
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "wikidata",
"value": "Q95"
},
{
"@type": "PropertyValue",
"propertyID": "asof",
"value": "ent_google",
"url": "https://asof.is/record/google"
}
]
}An article that names the entity:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "...",
"mentions": [
{
"@type": "Organization",
"name": "Google",
"sameAs": [
"https://www.wikidata.org/wiki/Q95",
"https://asof.is/record/google"
]
}
]
}- sameAs takes the record's page URL, https://asof.is/record/{slug}, with no fragment and no .md: one URL per entity, the one its ID redirects to. List it beside the Wikidata URL; sameAs is a list.
- identifier takes a PropertyValue with propertyID "asof" and the ID as value; url may carry the page. Keep the Wikidata row too, propertyID "wikidata", value the QID.
- Inside your own JSON-LD graph, a node that is the entity may point at ours by @id, https://asof.is/record/{slug}#entity; between sites, sameAs is the link readers follow.
- Cite the entity, not a claim. A claim's URL (/claim/{id}) is a quotation with a date and a source: use it in a citation, a footnote or citation markup, not in sameAs.
- On the record's side the same markup is already there: every record page declares its Organization, Person or Product with identifier rows for asof, wikidata, cik and ticker, and sameAs to Wikidata, the official website and SEC EDGAR, so the link holds in both directions.
Where to read an ID
- The record page: the Identifiers box in the sidebar, with a ready-made snippet to paste.
- The JSON: every /v1/entities answer opens with id, name, wikidata and page.
- The twin: /record/{slug}.md opens with id, wikidata, kind and same_as.
- The indexes: https://asof.is/llms.txt lists every entity with its twin; https://asof.is/record.md lists each with its QID.
- Search: https://asof.is/v1/search?q=TEXT resolves a name, ticker or former name to a slug.
Resolve one
GET https://asof.is/v1/entities/{slug}?as_of=YYYY-MM-DD
GET https://asof.is/record/{slug}.mdThe state on a date, with coverage and sources; the slug is the ID after ent_. The API is described on the API page.