Ontologie
La couche sémantique typée qui s'appuie sur vos tables gérées et votre base de connaissances — Objets, Liens, Actions et l'atelier qui les crée.
La couche d'ontologie est la colonne vertébrale sémantique typée de Scrydon. Elle prend des données brutes (tables gérées, pages de base de connaissances, tâches de flux de processus) et fournit aux agents, à la vue graphique et à l'analyste une vue stable, typée et gouvernée du monde.
Au lieu d'« une ligne dans la table regulated_entities », un workflow raisonne sur une « RegulatedEntity avec un legalName, un riskClassification, et des liens vers ses affiliatedPersons ». La plateforme projette l'Objet typé à partir de la ligne sous-jacente au moment de la lecture — pas d'ETL en batch, pas de copie.
Concepts fondamentaux
| Concept | Description |
|---|---|
| Type d'objet | Une entité typée (Transaction, Customer, RegulatedEntity). Possède des propriétés, des règles d'identité, un titre et une icône optionnels. |
| Type de lien | Une relation typée entre deux types d'objets (Customer → owns → Account). |
| Type d'action | Une mutation côté serveur typée, conditionnée par le point de décision de politique (AssignAsset, FileSAR). |
| Liaison | « Comment construire un Objet typé à partir d'une source réelle » — une ligne de table gérée, une page de base de connaissances, une tâche de flux de processus. |
| Pack | Un bundle réutilisable de types d'objets, de liens, d'actions et de liaisons, livré sous forme d'extension. |
| Branche | Le schéma est versionné. main est en lecture seule ; les modifications passent par des propositions. |
Position dans l'architecture
Une instance RegulatedEntity typée peut être adossée à l'une quelconque de ces sources — au niveau du type, l'appelant n'a pas besoin de le savoir.
Points d'accès en lecture
| Appelant | Point d'entrée |
|---|---|
| Agents de workflow | Le bloc Get Object + les outils scrydon:ontology |
| Vue graphique | /graph — affiche le graphe du schéma |
| Analyste | /analyst — requêtes en langage naturel sur les Objets typés |
| Agents avec récupération augmentée | Le moteur de contexte — recherche sémantique sur les instances typées |
Les quatre passent par le même chemin de projection, donc le masquage des colonnes, les filtres de lignes et les étiquettes DLP s'appliquent de manière uniforme.
Lire un schéma versionné depuis un service
Les services côté serveur limités à un espace de travail peuvent utiliser
@scrydon/ontology-sdk/client pour lire le schéma d'ontologie publié avec des réponses
strictement validées à l'exécution. Le client expose des espaces de noms distincts types,
linkTypes et actionTypes ; chaque réponse identifie la révision et la branche résolues.
import {
createKernelClient,
OntologyApiError,
} from "@scrydon/ontology-sdk/client";
const ontology = createKernelClient({
baseUrl: `${ontologyServiceUrl}/api/ontology`,
headers: () => ({
...admittedCallerHeaders(),
"x-organization-id": organizationId,
"x-workspace-id": workspaceId,
"x-workspace-environment-id": workspaceEnvironmentId,
}),
});
try {
const current = await ontology.types.list({ ontology: "crm" });
const owns = await ontology.linkTypes.get({
ontology: "crm",
name: "Owns",
revisionId: current.revision.revisionId,
});
const actions = await ontology.actionTypes.list({
ontology: "crm",
revisionId: current.revision.revisionId,
});
} catch (error) {
if (error instanceof OntologyApiError) {
console.error(error.code, error.httpStatus, error.details);
}
throw error;
}Omettez revisionId pour résoudre une seule fois le pointeur publié courant. Passez ensuite
la valeur revision.revisionId retournée afin d'épingler les lectures suivantes à cette
révision de schéma immuable. Le callback synchrone headers s'exécute à chaque requête et doit
renvoyer le tuple de tenant complet ainsi que le transport admis de l'appelant courant ; n'exposez
jamais des identifiants de service ni des en-têtes utilisateur mis en cache au code du navigateur. Les
requêtes échouées lèvent OntologyApiError, dont le statut HTTP est disponible via
httpStatus. Une réponse non-2xx dépourvue d'enveloppe d'erreur du noyau — un 502 HTML renvoyé par
un proxy, un 401 vide provenant du maillage — est elle aussi une OntologyApiError : son code est
MALFORMED_ERROR_RESPONSE, httpStatus reprend le statut retourné et details contient le type de
contenu de la réponse ainsi qu'un aperçu borné du corps.
Lire des objets et des liens depuis un service
Le même client expose les espaces de noms stricts objects et links. L'appelant utilise un seul
contrat, que le type soit stocké dans le registre de Scrydon ou projeté depuis une liaison
gouvernée ; le champ origin de chaque résultat indique le plan qui l'a fourni. Les résultats du
registre contiennent origin.kind === 'ledger', un marquage et une séquence de registre. Les
résultats projetés contiennent origin.kind === 'source', la liaison et sa version, la référence
source et les métadonnées de matérialisation. La révision de schéma d'un résultat source identifie
le schéma utilisé pour interpréter la ligne ; ce n'est pas un instantané historique de la table en
amont.
const assets = await ontology.objects.query({
ontology: "crm",
objectTypes: ["Asset"],
filter: [{ property: "status", op: "eq", value: "active" }],
limit: 50,
});
const neighborhood = await ontology.objects.neighbors({
ontologyApiName: "crm",
objectType: "Asset",
objectId: assets.sets[0].objects[0].objectId,
depth: 1,
limit: 25,
});
const relationships = await ontology.links.list({
ontologyApiName: "crm",
linkType: "Owns",
sourceRef: neighborhood.center.objectId,
});objects.list et links.list renvoient des curseurs opaques signés ; renvoyez un curseur reçu
sans le modifier. objects.query accepte au maximum 20 types d'objets, huit filtres et 200 lignes
par ensemble de résultats. objects.neighbors limite le parcours à une profondeur de 3 et à 100
voisins. Les lectures adossées à une source échouent de manière fermée si l'autorisation ou le
transport source est indisponible, et les lectures historiques sont réservées aux objets détenus
par le registre.
Rechercher des instances d'objets gouvernées
search.query combine une traduction bornée du langage naturel vers des filtres avec une recherche
lexicale sur les mêmes lignes source gouvernées. Sélectionnez une ontologie lorsque vous la
connaissez ; objectTypes peut encore restreindre le corpus sans élargir la vue de schéma autorisée
de l'appelant.
const result = await ontology.search.query({
target: {
kind: "ontology-instances",
ontology: "operations",
objectTypes: ["Aircraft"],
},
query: "aircraft operating in Belgium",
limit: 25,
});Chaque ligne indique si elle correspond au DSL d'ontologie, au score lexical ou aux deux. Lorsque
la traduction est indisponible, query.degraded vaut true et le chemin lexical continue de
fonctionner. Vérifiez poolCapped avant de considérer les décomptes ou agrégats comme exhaustifs,
et exposez chaque entrée de reasons : une contrainte de lien impossible à évaluer y est déclarée
au lieu d'être ignorée silencieusement. La recherche utilise les lignes source actuelles, conserve
l'identité admise et l'habilitation de l'appelant, et échoue de manière fermée si l'autorisation ou
le transport source est indisponible. N'envoyez pas d'identifiant utilisateur dans le corps.
Projeter des couches géographiques gouvernées
geo.layers transforme les lignes d'objets actuelles adossées à une source en fonctionnalités
prêtes à cartographier, sans obliger l'appelant à parcourir les liaisons ni à deviner les colonnes de
coordonnées. Limitez la requête à une ontologie lorsque vous la connaissez et utilisez une boîte
englobante inclusive pour ne conserver que les points d'ancrage situés dans une zone.
const aircraft = await ontology.geo.layers({
ontology: "operations",
objectTypes: ["Aircraft"],
limit: 200,
bbox: {
minLng: 2.5,
minLat: 49.4,
maxLng: 6.4,
maxLat: 51.6,
},
});Chaque couche contient un nom de type, un libellé d'affichage et des fonctionnalités géographiques. Une fonctionnalité peut également contenir une polyligne lorsque la ligne liée fournit une propriété de chemin prise en charge. Les couches vides explicitement demandées et les couches non provisionnées restent dans la réponse afin que les appelants distinguent « aucune ligne correspondante » d'une table sous-jacente absente. La requête accepte au maximum 20 noms de types et 1 000 fonctionnalités par couche ; les requêtes globales trop larges échouent au lieu de renvoyer une carte silencieusement tronquée. La projection géographique est une lecture actuelle de la source et échoue de manière fermée lorsque l'autorisation ou le transport source est indisponible.
Par où commencer
Concepts
Types d'objets, de liens, d'actions, liaisons — expliqués en détail.
Liaisons
Comment un Objet typé est projeté à partir d'une source réelle.
Branches et propositions
Le schéma est versionné. Les modifications passent par une révision.
Packs
Bundles d'ontologie réutilisables livrés sous forme d'extensions.
Utilisation dans les workflows
Le bloc Get Object et les outils d'ontologie.
SDK Authoring
Créez votre propre pack d'ontologie avec TypeScript et Zod.
Comment un tenant obtient une ontologie
Trois chemins, tous coexistants :
- Installation automatique à la première ouverture. La plateforme livre une ontologie par défaut qui s'installe automatiquement à la première ouverture de l'atelier.
- Installation depuis Extensions. Choisissez n'importe quel pack pour lequel votre organisation est licenciée. Crée des types d'objets, de liens, d'actions, des règles d'identité et des liaisons sur une nouvelle branche
main. - Création par l'utilisateur. Ajoutez des types d'objets, de liens et d'actions directement via l'onglet Schéma, puis liez-les via Liaisons.
Voir aussi
- Architecture → Ontologie — diagramme système et le modèle en cinq couches.
- Analytics — les tables gérées auxquelles l'ontologie se lie.
- SDKs → Authoring → Ontologies — écrivez vos propres packs.