26. CENSUS OF MODERN APPLICATIONS

Ce paragraphe ne recense que des applications qui tournent encore dans des contextes opérationnels d'entreprise ou d'organisations.

26.1. Perimeter of census

Prolog went through many evolutions : One difficulty it to understand what a prolog-applictaion is. We had several propositions :

26.2. Table of applications

NAME domain Année Company Contexte Résultats Notes
Causality Link compréhension du langage naturel 2020 Causality Link analyse de pages html et suivi des news des agences cf causality link au dessus d'une couche de TLN en python. après spacy.
analyse quotidienne de millions de news extraction de patterns de causalité
Watson Marque commerciale 2012 IBM analyse de pages html et documentation
minage de centaines de millions de pages
pas de capacité à vraiment comprendre le fond
Wuenic world-wide infant immunisation estimates 2010 WHO, UNICEF Rule-based Knowledge Representation and Reasoning Production of official statistics frequently requires expert judgement to evaluate and reconcile data of unknown and varying quality from multiple and potentially conflicting sources. Moreover, exceptional events may be difficult to incorporate in modelled estimates. Computational logic provides a methodology and tools for incorporating analyst's judgement, integrating multiple data sources and modelling methods, ensuring transparency and replicability, and making documentation computationally accessible.
Paper : WUENIC – A Case Study in Rule-based Knowledge representation and Reasoning (Robert Kowalski1 and Anthony Burton) JURISIN 2011
TerminusDB Knowledge Graphs
software development : revision control
2019 TerminusDB is an open source knowledge graph and document store. It is used to build versioned data products. It is a native revision control database that is architecturally similar to Git. It is listed on DB-Engines.
cf WOQL as a web object query language
Architecture
  • en RUST
  • uses WQLOG
    WOQL (web object query language) based on
    • DATALOG Declarative logic programming language subset of Prolog
GeneXUs programmation low code GeneXus GeneXus is a Low Code, cross-platform, knowledge representation-based development tool,[1][2] mainly oriented towards enterprise-class applications for web applications, smart devices, and the Microsoft Windows platform.
GeneXus site
etc

27. APPLICATIONS

27.1. Difficultés du recensement

Le recensement présente plusieurs difficultés Les applications prolog souffrent de : Some requests

27.2. Les programmes jouets

On désigne par "programme jouet" un programme destiné à démontrer un principe ou un outil, mais qui n'a pas été jusqu'au bout d'une implémentation en vraie grandeur ou opérationnelle dans le monde réel.
Il y a beaucoup de programmes jouets intéressants pour des raisons de pédagogie :
APPLICATION Objectif notes techniques utilisées
le monde des cubes Des cubes empilables sont sur une table.
Il s'agit
  • de trouver une séquence qui permet d'une configuration à une autre
  • de guider un "robot manipulateur" pour déplacer les cubes

Exemple

peu de contraintes (ex : cubes vs Hanoï) ou place limitée sur la table
se cantone souvent à des cas triviaux (3 cubes, pas 1000 cubes)
les programmes présentés ne passent pas à l'échelle.
formalisme pas toujours évident si beaucoup plus de cubes
documentation pauvre
possible d'avoir plus d'objets (boules, pyramides, etc), et couleurs ?
résolution de problèmes
traitement du langage naturel
graphique
le problème des dames aux échecs Placer N dames sur un échiquier sans prise mutuelle backtracking simple en plaçant ligne par ligne
  • simple jusquà 20
  • plus aléatoire 20 -> 29
  • impraticable N > 30

==> besin d'être amélioré par des stratégies plus efficaces
discussion sur les stratégies possibles strategies for N queens - advanced programming.pdf backtrack labelling plus astucieux positionnement

On peut même constater que les programmes "jouets" n'ont pas permis la constitution de librairies ré-utilisables

27.3. Exemples applications du passé

Le tableau suivant présente un recensement de quelques applications:

Thème Année Contexte Note Résultats
traitement de textes 1995 traitement des doublons et fautes d'orthographe dans les adresses postales d'une base de données.
plusieurs dizaines de millions d'adresses.
Solutions avec programme impératif classique( /java) temps de traitement = ...
conception de pièces en matériaux composites 1988 Besoin d'un outil de CAO pour produire des plans de fabrication de pièces en matériaux composites d'épaisseur variable (et donc le nomre de couches et leur orientations).
problème combinatoire
?? Arrangement des couches produit en quelques secondes.
Production des plans identiques avec plans d'atelier du processus de fabrication
fabrication de centaines de pièces pour l'A320.
conception de molécules 1988-1992 recherche de structures ayant les bonnes propriétés de spectre et d'organisation moléculaire.
problème combinatoire
solution réécrite complètement en C, puis en python et C identification de centaines de molécules
windows NT 1994 Along with its C++ code and SProlog interpreter, the NCPA.CPL file has a 700-line SProlog program embedded into it as a textual Windows "resource." cf here
  • The SProlog algorithm has several features, but primarily it exploits Prolog's inherent backtracking mechanism by exhaustively checking each extant component with every other to determine compatibility. A set of potential "bindings" (one-directional links) is asserted into the Prolog database in the first pass. Then the other constraints are checked, and any associations which would violate negative constraints are retracted. Finally, the remaining database information is used to construct NT namespace device names for each component's "bindings."
  • This network configuration methodology was designed to facilitate the installation of component ensembles which could not be foreseen in 1991, when the work began. Since components declare their classes and constraints themselves, the Prolog interpreter can be counted upon to perform correctly without requiring updates to the NT binaries themselves.
  • This program is the actual network-configuration algorithm; a C++ class "wrapper" encapsulates the SProlog engine and exposes C++ member functions for facilities such as consulting and querying. Network configuration is performed by consulting the "rules" (the resource-based algorithm), consulting the "facts" (the Registry-derived declarative information), and performing a single query which runs the configure everything predicate. Then the C++ code performs many smaller queries to enumerate the results of the main query from the SProlog database. This information is rearranged and written back into each network component's Registry area. Then, when the network is started, this updated information is used by each software process to determine what other software modules are to be dynamically connected to it.
not in use anymore https:\\www.drdobbs.com\\cpp\\extending-c-with-prolog\\184409294
code available here prolog en C https:\\www.drdobbs.com\\cpp\\extending-c-with-prolog\\184409294#00a1_003a