I experienced the following error when attempting to install a new version of my ontology as code published cia the backing code resository in marketplace:
{
"type": "integrationValidationError",
"integrationValidationError": {
"error": {
"blockType": "ONTOLOGY",
"error": {
"severity": "BLOCKING",
"error": {
"type": "linkTypeForeignKeyReferenceDoesNotExist",
"linkTypeForeignKeyReferenceDoesNotExist": {}
},
"fallbackMessage": "The foreign key specified by a link type doesn't exist as a property on the specified object type. [linkTypeRid=ri.ontology.main.relation.969df33a-8825-4b99-a118-26998b48d160, primaryKeyObjectTypeRid=ri.ontology.main.object-type.9a08e85c-499d-4b0b-88fb-3583e5ae5140, foreignKeyObjectTypeRid=ri.ontology.main.object-type.ce077b1e-9f10-45d8-9765-a0a802289ea9]"
},
"traceId": "f76276f7bd3c089b"
}
}
}
This doesn’t allow the developer to actually troubleshoot the issue leaving them stuck. I need to know the name of the source object and attributes.
I did found out how to search for the RIDs. Go to the Ontology Manager and search by the RID. In my case the validator is complaining that an existing link in the ontology no longer references a valid FK/PK relationship. IE the key was likely removed in the backing dataset of the existing ontology not using Marketplace. So a few things here:
- Can the error message be a bit more clear that it references existing ontology objects and link and what the names are.
- If there are things that are broken in the existing ontology (maybe the team decided to update the backing datasets ahead of a release of the new ontology as code for example) can the existing ontology be overwritten with the oncoming changes and blow away broken links etc?
- What is the SDLC we should be using? Do not break existing data contracts in tables (ie removing columns used in links), use a wide table and deprecate columns. Or always create new tables in the new shape and remap with new release.
- Why are users able to break the Ontology using Ontology Manager. From my perspective if you manage an ontology as code you should be able to select an install option that does not allow updating datasets with breaking changes, does not allow manual edits of outputs created by marketplace. The only way to make changes should be via the release process in marketplace for outputs created by marketplace. Is this something you are considering?
Install mode is set to to production but with Ontology as Code I don’t see any option to lock the resources. Locking resources for sure needs to be something we can control to prevent train wrecks when users attempt to edit in Ontology Manager or update backing datasets.