Define proper RDF predicate identity allocation for user-created table columns #79
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adding a user-defined column in
pnpm rehearse:tableassigns an RDF predicate such asdid:ng:z:michielness, but the code constructs this by concatenating a fixed prefix and the column name. There is no identifier allocation or namespace/identity policy behind this value. Persisting and using the predicate works; the gap is what identity that predicate actually establishes.Reproduction
pnpm rehearse:table.michielness.did:ng:z:michielnessand save the schema.Current implementation
mapping:predicateto'did:ng:z:' + name. Editing the column name rewrites the predicate suffix.addressSchema(next, { readdress: true })on save. This derives a separate content-addressedatomic:prop:…Property ID; addressSchema.mjs leaves the RDF predicate mapping unchanged.did:ng:z:…predicate.Matrix discussion update — 29 October 2026
The follow-up Matrix discussion clarifies the status of the NextGraph namespace, but does not yet define an allocation policy for user-created predicates:
did:ng:z:as an example namespace. Niko subsequently clarified thatdid:ng:zand other forms are not only examples: they are intended to remain and become part of the NextGraph specifications, and can be used. NextGraph currently usesdid:ng:z(anddid:ng:x) as a convention. Niko also said these identifiers will have a resolution mechanism different from document identifiers; the details and their treatment in the DID method specification are still to be sorted out.https://nextgraph.eu/vocab/v1/...; this was a concern raised in the discussion, not an agreed decision to replace the DID namespace.did:ng:zneed not be rejected as example-only, but the discussion did not specify how to allocate distinct predicate identities within that convention. In particular, it did not establish that concatenating a display name is sufficient.The remaining issue is therefore the allocation and reuse policy, including collision avoidance and identity on rename. The prefix alone is not established as the bug, and no final identifier syntax or resolution design was agreed in this discussion.
Expected outcome
Define and implement how user-created RDF predicates get their identities and namespaces, consistent with NextGraph's identifier conventions. Independently created fields should not silently assert the same global predicate solely because their display names match; intentional reuse should remain possible.
The decision should also cover whether display-name changes preserve predicate identity, how existing saved predicates/data are handled, and how the UI distinguishes a column label, its Atomic Property ID and its RDF predicate. A central registry is not necessarily required; an explicit, supported allocation policy is.
As a future UI enhancement, consider searching existing predicate IRIs by display name and allowing explicit reuse before minting a new predicate. This suggestion does not yet establish a discovery service or search mechanism.
Verify the chosen behavior with independently created same-name fields, intentional reuse, renaming and saved-schema reload/replication. Related: #24 (runtime schema editing), #42 (native table rehearsal).