Изследвания · Онтологии и бизнес правила
Правилата на компанията, записани веднъж и прилагани точно
Онтологията описва това, с което компанията работи: нейните обекти, техните атрибути, връзките им и правилата, които се прилагат към тях. Във VAILS тя не е проектен документ: тя се изпълнява. Документите се пренасят в нея, бизнес правилата се прилагат към нея и тя може да бъде запитвана или проверявана за съгласуваност по всяко време.
Как работи
Онтологията се декларира с класове, типизирани и ограничени атрибути (задължителни, граници, затворен списък от стойности, наследяване) и връзки. Тя се компилира в логически правила, в база, собствена на онтологията и на сесията.
Данните постъпват в нея по три начина: извлечени от текст или изображение от езиковия модел, воден от схемата; създадени директно от програмата; или получени от оптимизационно изчисление. Бизнес правилата се пишат с условие, действие и приоритет; изводът ги прилага, докато нищо повече не се променя. След това онтологията се запитва чрез филтри или на естествен език.
- Деклариране
- Попълване
- Прилагане на правилата
- Запитване и проверка
Примери от бизнеса
Банка: блокиране на рисковите преводи
Три правила, по ред на приоритет: висока сума или чувствителна държава правят превода рисков, а рисковият превод се блокира. Правилата са четими за отдела по съответствие.
$Banque = [ontology:define "Banque_Securite"
[ontology:class Virement
[attributes
[montant Float [required true]]
[pays_destination String [default "France"]]
[niveau_risque String [default "FAIBLE"]]
[statut String [default "EN_ATTENTE"]]]]]
[ontology:rule "MontantEleve" $Banque [target "Virement"] [priority 100]
[when ($this.montant > 10000)]
[then [ontology:set $this "niveau_risque" "ELEVE"]]]
[ontology:rule "PaysSensible" $Banque [target "Virement"] [priority 90]
[when ($this.pays_destination == "Iles Caimans")]
[then [ontology:set $this "niveau_risque" "ELEVE"]]]
[ontology:rule "Blocage" $Banque [target "Virement"] [priority 10]
[when ($this.niveau_risque == "ELEVE")]
[then [ontology:set $this "statut" "BLOQUE"]]]
[ontology:commit [new Virement [montant 15500] [pays_destination "Iles Caimans"]]]
[ontology:commit [new Virement [montant 820]]]
[ontology:infer-fixpoint $Banque 10]
[ontology:select $Banque "Virement" [statut "BLOQUE"]]
Резултат, получен на сървъра: преводът от 15 500 € към Каймановите острови е блокиран, а този от 820 € остава в изчакване.
Подбор на персонал: верига от правила
Първо правило определя нивото според опита; второ решава според нивото и оценката. Изводът свързва двете.
$RH = [ontology:define "RH_Tri"
[ontology:class Candidat
[attributes [nom String [required true]] [experience Integer [min 0]]
[score Integer [min 0] [max 100]]
[niveau String [default "JUNIOR"]] [decision String [default "A_ETUDIER"]]]]]
[ontology:rule "NiveauSenior" $RH [target "Candidat"] [priority 100]
[when ($this.experience >= 7)]
[then [ontology:set $this "niveau" "SENIOR"]]]
[ontology:rule "Accepte" $RH [target "Candidat"] [priority 10]
[when (($this.niveau == "SENIOR") && ($this.score >= 70))]
[then [ontology:set $this "decision" "ACCEPTE"]]]
[ontology:commit [new Candidat [nom "Marie"] [experience 9] [score 82]]]
[ontology:commit [new Candidat [nom "Paul"] [experience 9] [score 55]]]
[ontology:commit [new Candidat [nom "Lea"] [experience 3] [score 90]]]
[ontology:infer-fixpoint $RH 10]
[ontology:select $RH "Candidat" [decision "ACCEPTE"]]
Резултат, получен на сървъра: приета е само Мари; Пол е старши, но оценката му е недостатъчна, а Леа все още не е старши.
Покупки: проверка на качеството на данните за доставчиците
Преди да плати на доставчик или да го включи в списъка, онтологията проверява дали задължителните полета са налице и дали стойностите спазват границите си. Тази проверка е изцяло символна.
$Four = [ontology:define "Fournisseurs"
[ontology:class Fournisseur
[attributes [raison_sociale String [required true]] [siret String [required true]]
[note_qualite Integer [min 0] [max 20]]]]]
[ontology:commit [new Fournisseur [raison_sociale "Alpha SARL"] [note_qualite 25]]]
[ontology:consistent $Four]
Резултат, получен на сървъра: две блокиращи нарушения, липсващият регистрационен номер на фирмата и оценка за качество 25 при максимум 20.
Поръчки: привеждане на свободна стойност към каталога
Цветът и размерът на дограмата приемат само стойности от каталога. Когато клиентът напише антрацит или голям формат, извличането привежда стойността към правилния етикет по смисъл.
$menuiserie = [ontology:define menuiserie
[ontology:class Fenetre [attributes
[reference String]
[couleur String [in_values "Blanc 9010" "Gris 7016" "Brun 8019" "Noir 9005"]]
[taille String [in_values "S" "M" "L" "XL"]]]]]
$f = [ontology:fromText $menuiserie "Fenetre" "Commande REF-001 : fenetre coulissante, profil couleur anthracite, grand format (large)."]
[print $f.couleur] # Gris 7016
[print $f.taille] # L
Оферти: извличане на сканиран документ
PDF оферта се превръща в изображения и след това се пренася в схемата, включително таблицата с редовете. Сумите пристигат типизирани, готови да бъдат проверени от правила.
[ontology:class Devis
[attributes
[numero String [key true]]
[date Date]
[client Client]
[lignes List [of LigneDevis]] # déclenche l'extraction du tableau
[total_ht Currency]
[taux_tva Number]
[total_ttc Currency]]]
$images = [pdfToImages $fichier_pdf 2.0]
$devis = [ontology:fromImage $DevisSystem "Devis" $images]
Правила, написани от бизнес екипите
Правилата могат да бъдат написани и на Gherkin, формата на тестовите сценарии, и след това автоматично превърнати в изпълнима онтология.
$source = "
Feature: SecurityRules
Background: Schema
Given I define an ontology named 'BankSystem'
And I define a class 'Transaction' with attributes:
| Name | Type | Default |
| amount | Integer | 0 |
| status | String | 'Pending' |
@priority: 100
Scenario: High Value Rule
Given a 'Transaction' context
When 'amount' is greater than 1000
Then set 'status' to 'HighRisk'
"
$Ontologie = [evaluate [ontology:loadGherkin $source]]
Какво гарантира и какви са ограниченията ѝ
- Правилата се прилагат точно и възпроизводимо, по ред на приоритета си, до стабилизиране.
- Съгласуваността се проверява без езиков модел: задължителни полета, граници, списъци от стойности, кардиналности.
- Всяка сесия има свои онтологии; запазването им след края на сесията става изрично, чрез запис в работното пространство.
- Извличането от текст или изображение минава през езиковия модел; онтологичните договори позволяват то да бъде валидирано и повторено при отклонение.
Да приложим тази работа към вашите процеси?
Диагностиката тръгва от реалния начин, по който работите, и определя решенията, които могат да бъдат поверени на ИИ.