Replies: 5 comments 3 replies
-
|
I like having a separate ID/NAME from display-name. However does the character restriction potentially cause problems with existing table names or column names that may already be quoted in DBs? Would this be an issue for languages that use non-ASCII characters? I can see how it could be nice to have simple names, although, I don't think we can get away from defining some quoting behaviour for referencing the underlying tables/columns. We also probably want to be careful about how we would handle non-ASCII characters in that case. |
Beta Was this translation helpful? Give feedback.
-
|
+1, I do like the idea of having a separate name and ID. But even with ID, it poses new challenges since different systems will require different guarantees of uniqueness within a scope. Unless, we align that ID will have to be a UUID. |
Beta Was this translation helpful? Give feedback.
-
|
I would love to have this column. To have the same metrik name in multiple Power User folders is very common. In MSTR We're using GUID with 32 charackters. I'm relaxed with the uniqueness. The source system is resbonsible for this... |
Beta Was this translation helpful? Give feedback.
-
|
@cpimhoff Thank you for creating this topic ❤️ I absolutely agree that we need to differentiate between I agree with the concept that we should put constraints on how the I'd like, if deemed reasonable, to steer us away from using a UUID or GUID. In my mind OSI is not just a compiled intermediary, but also a direct authoring layer. I should be able to write OSI directly instead of having to transpiling from dbt SL definitions to OSI if I want. In such a case, how do I author a UUID or GUID? It isn't exactly human friendly, and I'm not sure how much it gives us over an With all that in mind I see there being two possible paths.
I personally gravitate towards option (1). When I'm naming something, I think of it as "naming", not "ID-ing" (though the latter is also valid). However, that's more personal preference than anything concrete. Where I do think option (1) is better is What do y'all think? cc: @magerdaniel @khush-bhatia @sfc-gh-wpugh @cpimhoff |
Beta Was this translation helpful? Give feedback.
-
|
+1 for When we discuss importing from RDF, the ID would be an IRI (e.g. Do we need both, an local unique Regarding name: We discussed language-strings to support different translations for the display name. We would probably recommend a well-known pattern to translate the displayName, e.g. using annotations array. Option A: Use IRI as ID Option B: id + iri as a separate field Follow-up questionWhen we introduce |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Encoding “name” as the top-level, unique, stable identifier for entities in the OSI has some risks.
The code-addressable identifier for a resource can have unexpected constraints in different environments that OSI resource names may run into often. These include not allowing special characters, not leading with numbers, or even small details like capitalization varies greatly for identifiers across SQL databases.
Any importer into a system which has any of these constraints would have to rewrite not just the name, but any references to the name, including inside all expressions in all dialects, which can be complex.
I would suggest the OSI develop some constraints on stable names so that integrations into external systems can be implemented more smoothly, without translation in most cases. I would suggest a minimum and maximum character length, with no mixed casing, and no spaces or special characters.
OSI models will be imported and stored in consumer systems, and these systems will have features which bind application resources to OSI entities. For example, a BI app could import an OSI dataset
salesand then build a dashboard that links tosales. The only stable identifier that the OSI entity provides is the name, so if the name changes, the dashboard would break when the OSI models are next ingested.Changing the user/LLM-facing semantic name of a resource should not break downstream consumption of resources.
I would suggest separating this concept into
id: stringandname: string.idwould be the strict identifier.namewould be a loose string suitable for display. This split would more clearly reflect the constraints around identifiers when exporting/importing.Beta Was this translation helpful? Give feedback.
All reactions