The current database source of truth is the declarative SQL schema under packages/database/supabase/schemas/.
packages/database/supabase/schemas/base.sql- base enums and shared sequence, including
public."EntityType"
- base enums and shared sequence, including
packages/database/supabase/schemas/space.sqlpublic."Space"
packages/database/supabase/schemas/account.sqlpublic."PlatformAccount"public."AgentIdentifier"public."LocalAccess"public."SpaceAccess"public.upsert_account_in_spacepublic.upsert_accounts_in_space
packages/database/supabase/schemas/content.sqlpublic."Document"public."Content"public."ResourceAccess"public.document_local_inputpublic.content_local_inputpublic._local_document_to_db_documentpublic._local_content_to_db_contentpublic.upsert_documentspublic.upsert_contentpublic.can_view_specific_resourcepublic.my_accessible_resources
packages/database/supabase/schemas/concept.sqlpublic."Concept"public.concept_local_inputpublic._local_concept_to_db_conceptpublic.upsert_conceptspublic.schema_of_conceptpublic.instances_of_schemapublic.concept_in_relationspublic.concepts_of_relationpublic.content_of_conceptpublic.author_of_conceptpublic.rid_to_space_id_and_local_idpublic.rid_or_local_id_to_concept_db_id
packages/database/supabase/schemas/contributor.sqlpublic.content_contributorspublic.concept_contributors
packages/database/supabase/schemas/embedding.sqlpublic."ContentEmbedding_openai_text_embedding_3_small_1536"public.upsert_content_embedding- embedding match/search views and functions
packages/database/supabase/schemas/assets.sqlpublic."FileReference"public.file_gc- storage bucket policies
packages/database/supabase/schemas/sync.sqlpublic.sync_infopublic.propose_sync_taskpublic.end_sync_task
packages/database/supabase/migrations/20250504202930_content_tables.sql- older broader model with
Person,AutomatedAgent,Account,DiscoursePlatform,DiscourseSpace,represents_id
- older broader model with
packages/database/supabase/migrations/20250513173724_content_concept_key.sql- moved between explicit content-to-concept linkage strategies
packages/database/supabase/migrations/20250526150535_uniqueness.sql- tightened uniqueness around local IDs
packages/database/supabase/migrations/20250718131540_content_variant.sql- introduced
ContentVariantand variant-aware uniqueness
- introduced
packages/database/supabase/migrations/20260102140646_content_and_concept_access_tables.sql- older separate
ContentAccessandConceptAccess
- older separate
packages/database/supabase/migrations/20260117210851_unify_concept_content_access_tables.sql- unified access into
ResourceAccess
- unified access into
packages/database/supabase/migrations/20260118210851_fileref.sql- introduced
FileReference
- introduced
packages/database/supabase/migrations/20260221193625_rid_functions.sql- RID resolution functions
packages/database/src/dbTypes.ts- generated TypeScript model of the current SQL schema
packages/database/src/inputTypes.ts- exported TypeScript aliases for local-to-DB composite inputs:
LocalAccountDataInputLocalDocumentDataInputLocalContentDataInputLocalConceptDataInput
- exported TypeScript aliases for local-to-DB composite inputs:
packages/database/src/lib/queries.ts- main query API over
Concept - distinguishes nodes vs relations via
arity == 0vsarity > 0 - uses computed relationships
content_of_concept,concept_in_relations,concepts_of_relation
- main query API over
packages/database/src/lib/contextFunctions.ts- space creation/login and platform-account creation in a space
packages/database/src/lib/files.ts- maps binary file uploads to storage plus
FileReference
- maps binary file uploads to storage plus
apps/roam/src/utils/getDiscourseNodes.tstype DiscourseNode- node schemas come from the Roam config page tree and block props
apps/roam/src/utils/getDiscourseRelations.tstype DiscourseRelation- relation definitions come from the grammar subtree
apps/roam/src/utils/createReifiedBlock.ts- stores relation instances as hidden-prop blocks under
roam/js/discourse-graph/relations - prop namespace is
discourse-graph - stores
hasSchema,sourceUid,destinationUid, and other role UID bindings
- stores relation instances as hidden-prop blocks under
apps/roam/src/utils/migrateRelations.ts- migration from legacy pattern-derived relations to stored relations
apps/roam/src/utils/storedRelations.ts- feature-flag style helpers around stored relation mode
apps/roam/src/utils/conceptConversion.tsdiscourseNodeSchemaToLocalConceptdiscourseNodeBlockToLocalConceptdiscourseRelationSchemaToLocalConceptdiscourseRelationDataToLocalConcept
apps/roam/src/utils/upsertNodesAsContentWithEmbeddings.ts- maps Roam nodes to
content_local_input
- maps Roam nodes to
apps/roam/src/utils/syncDgNodesToSupabase.ts- current sync entrypoint
- primary concept sync path currently handles node schemas and node instances
apps/roam/src/utils/jsonld.ts- JSON-LD export with
@context,@graph,dgb:RelationInstance,rdf:predicate,prov:generatedAtTime
- JSON-LD export with
apps/roam/src/utils/exportUtils.tsapps/roam/src/utils/importDiscourseGraph.ts
apps/obsidian/src/types.tsDiscourseNodeDiscourseRelationTypeDiscourseRelationRelationInstanceSettings
apps/obsidian/src/constants.ts- default node types:
Question,Claim,Evidence,Source - default relation types:
supports,opposes,informs,derivedFrom - default
discourseRelationstriple schemas
- default node types:
- markdown files with frontmatter
- node instance IDs are ensured by
apps/obsidian/src/utils/nodeInstanceId.ts
- node instance IDs are ensured by
apps/obsidian/src/utils/relationsStore.ts- relation instance source of truth is
relations.json type RelationsFile
- relation instance source of truth is
apps/obsidian/src/utils/conceptConversion.tsdiscourseNodeSchemaToLocalConceptdiscourseRelationTypeToLocalConceptdiscourseRelationTripleSchemaToLocalConceptdiscourseNodeInstanceToLocalConceptrelationInstanceToLocalConcept
apps/obsidian/src/utils/upsertNodesAsContentWithEmbeddings.ts- generates
directandfullcontent variants
- generates
apps/obsidian/src/utils/syncDgNodesToSupabase.ts- syncs node schemas, relation type schemas, triple schemas, node instances, and relation instances
apps/obsidian/src/utils/publishNode.ts- publishes nodes, relations, schemas, and files using
ResourceAccessandFileReference
- publishes nodes, relations, schemas, and files using
apps/obsidian/src/utils/importNodes.ts- imports content/files from shared persistence
apps/obsidian/src/utils/rid.ts- RID conversion helpers
apps/website/public/schema/dg_base.ttl- conceptual ontology foundation
- defines
dgb:NodeSchema,dgb:RelationDef,dgb:RelationInstance
apps/website/public/schema/dg_core.ttl- conceptual vocabulary for
Question,Claim,Evidence,Sourceand built-in relations
- conceptual vocabulary for
packages/database/schema.yaml- older LinkML-style semantic model, partly aligned and partly stale relative to current SQL
apps/website/app/api/supabase/content/route.tsapps/website/app/api/supabase/content/batch/route.tsapps/website/app/api/supabase/document/route.tsapps/website/app/api/supabase/agent-identifier/route.tsapps/website/app/api/supabase/content-embedding/batch/route.tsapps/website/app/api/supabase/space/route.tsapps/website/app/utils/supabase/dbUtils.tsapps/website/app/utils/supabase/validators.ts
These routes expose DB tables and batch upserts directly enough that transport payloads can easily be mistaken for the canonical data model. They are transport adapters over the SQL model, not the model itself.
packages/database/features/queryConcepts.feature- explicit test evidence that relation instances are stored as
Conceptrows withreference_content
- explicit test evidence that relation instances are stored as
packages/database/features/addConcepts.featurepackages/database/features/getContext.featurepackages/database/doc/concept_example.md- explicit design note about relation occurrences and possible future materialization
packages/database/doc/upsert_content.mdpackages/database/doc/sync_functions.md