Guidebook/Act 1 — The Collection

Chapter 02

What is a song, officially?

Maya's homemade strings collide with a stranger's — same song, different atoms. The fix is fifteen years of settled vocabulary she didn't have to invent, and a superset that keeps the receipts.

Maya
Discovers why MusicRecording beats her homemade strings
You
Resolve full property sets with provenance via getPropertiesFor
Teaches
schema.org · vocabulary · @0xintuition/schema-org
Maya sips coffee at her kitchen table, reading her laptop over breakfast.

Maya does what every developer does with a weekend project she's secretly proud of: she posts it.

The Intuition Discord, builders channel, Sunday night — four lines of code, one hex string, and a sentence she rewrites three times so it doesn't sound like bragging. By morning there's a reply from a stranger. A jazz collector, judging by the avatar. Forty years of records, same fifteen years of dead platforms, and they'd run her snippet on the one song of hers they owned:

ts
calculateAtomId("Kerala by Bonobo");
// 0x19bf587bea99388e2fb10d8df318c5c7fbf2c81921ca5c93a51859c773d25d19

Maya looks at it for a long moment. Her Kerala is 0xbdf3…9644. Theirs is 0x19bf…5d19. Same song, two atoms — hers on a laptop in San Francisco, theirs somewhere on the other side of an avatar. The first other person ever to touch the graph she's building, and they've already forked it.

The problem, stated honestly#

Nothing is broken. The math did exactly what it promised: different bytes, different ID. "Kerala — Bonobo" and "Kerala by Bonobo" are different strings, so they name different atoms. The determinism that makes records permanent is the same determinism that makes typos permanent.

And notice who's on the other end of the collision: not a coworker, not a friend Maya can text a style guide to. A stranger. Which is exactly the point of the whole design — the graph's promise was never "you and your friends can agree on data." It's that your records line up with a jazz collector you've never met, a builder on another continent, an app that won't be written for years. If identity comes from bytes, then agreeing on identity means agreeing on bytes — with everyone, forever, including people you cannot coordinate with even in principle.

So coordinating harder isn't the move. What Maya actually needs is an answer that was settled before either of them typed a word: what a song officially is.

Somebody already did this.

A close-up still-life evoking one shared vocabulary for describing a song.

Fifteen years of settled arguments#

Since 2011, the open web has been quietly agreeing on what things are. schema.org — the shared vocabulary built by the search engines and argued over in public, revision by revision — defines the official shape of nearly everything: a Person, a Book, a MusicRecording, a LocalBusiness, a JobPosting. Not as philosophy. As fields.

@0xintuition/schema-org pins that entire settled vocabulary as the graph's foundation:

crate/the-inheritance.ts
import { listTypes, getPropertiesFor } from "@0xintuition/schema-org";

listTypes().length;
// 933 types — pinned from schema.org v30.0

getPropertiesFor("MusicRecording").length;
// 135

Nine hundred thirty-three kinds of thing, and for each one, the full set of properties the web has agreed it can have. A MusicRecording officially has byArtist, inAlbum, inPlaylist, duration, isrcCode, recordingOf — one hundred thirty-five properties in all, every one of them the end of an argument someone else already had.

And the dictionary keeps answering. What is an album, officially?

ts
getPropertiesFor("MusicAlbum").length;
// 136 — albumRelease, numTracks, track, byArtist…

getPropertiesFor("MusicGroup").length;
// 95 — what a band officially is

Maya spends an hour reading type definitions the way she once read liner notes. A song knows which album it's on. An album knows its artist and its track count. A band knows its members. Fifteen years of the web arguing about what things are — search engines, publishers, librarians, pedants of every denomination — and the arguments are over, and the conclusions are importable.

Maya didn't inherit a spelling standard. She inherited the whole dictionary. And here's the part that matters for everything ahead: Intuition doesn't fork that dictionary or compete with it — the packages pin it, whole, as the graph's foundation, and then build a curated superset on top. What that superset adds — and which of those 135 blanks actually matter — is the next chapter's whole story.

Relief, then horror#

The relief: nobody has to invent what a song is. The vocabulary is settled, pinned, versioned, and importable.

The horror arrives about four seconds later, while Maya is scrolling the 135 properties of a MusicRecording. accessMode. accessibilityAPI. copyrightHolder. temporalCoverage. Officially, a song can have all of these. Maya needs maybe four.

And notice what the dictionary did not fix: the stranger's atom is still out there, 0x19bf…5d19, permanent as anything. Knowing the official properties of a song doesn't tell two strangers which ones to fill in, or how, so that their bytes — and therefore their IDs — come out identical.

The vocabulary is the raw material. What Maya needs next is the ring drawn around it: for each kind of thing, the exact fields that make it itself, so that everyone building "Kerala" builds the same bytes without coordinating. That ring has a name — a classification — and drawing it is the whole next chapter.