FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Une "base de connaissance" - pour jouer ou plus si affinité Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

 

 Une "base de connaissance" - pour jouer ou plus si affinité

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Une "base de connaissance" - pour jouer ou plus si affinité Empty
MessageSujet: Une "base de connaissance" - pour jouer ou plus si affinité   Une "base de connaissance" - pour jouer ou plus si affinité EmptyDim 20 Mai 2018 - 19:10

J'ai développé un petit objet KnowledgaBase (base de connaissance), implémenté dans KGF.dll. Il permet de définir des "connaissances" du type "objet" - "propriété" - "attribut". Chacun des trois éléments est une chaîne de caractères quelconque.

Exemple: "Le vin" - "contient" - "de l'alcool"

On peut créer autant de connaissances qu'on veut. Un objet peut avoir plusieurs propriétés, et chaque propriété peut avoit plusieurs attributs.

Pourquoi faire, demanderez-vous ? Eh bien, on peut interroger cette base sous toutes les coûtures. En donnant n'importe lequel de ces éléments, un couple de deux sur ces 3 éléments ou tous les trois, le programme vous répondra avec les connaissances qui correspondent au critère recherché. Et si l'on ne spécifie rien du tout, le programme fournit la liste complète de toutes les connaissances.

Allez, on essaie... Téléchargez KGF.dll de mon WebDav, dossier Dlls, et copiez ce fichier dans un dossier quelconque, sous un nom quelconque avec l'extension *.knb:
Citation :
#KowledgeBase
"le chat","mange","des souris"
"le chat","mange","des croquettes"
"le chat","mange","des oiseaux"
"le chat","boit","du lait"
"le chien","mange","des croquettes"
"le chien","mange","des os"
"le chien","boit","de l'eau"
"papi","fume","le cigare"
"ma fille","craint","les souris"

Puis, prenez ce source:
Code:
' test_KnowledgeBase.bas



label ajouter, lister, sauver, charger
label changerobjet, changerpropriete, changerattribut
label supprimerobjet, supprimerpropriete, supprimerattribut

dim NB%, res%, objet$, propriete$, attribut$, nouveau$, base$, ext$


width 0,1100 : height 0,600
alpha 1 : top 1,10 : left 1, 10 : caption 1,"Objet"
alpha 2 : top 2,10 : left 2,190 : caption 2,"Propriété"
alpha 3 : top 3,10 : left 3,370 : caption 3,"Attribut"
alpha 4 : top 4,10 : left 4,610 : caption 4,"Nouveau"
alpha 5 : top 5,10 : left 5,770 : caption 5,"Changer"
alpha 6 : top 6,10 : left 6,860 : caption 6,"Supprimer"
edit 11 : top 11,30 : left 11, 10 : width 11,150
edit 12 : top 12,30 : left 12,190 : width 12,150
edit 13 : top 13,30 : left 13,370 : width 13,150
edit 14 : top 14,30 : left 14,610 : width 14,150
button 21 : top 21,60 : left 21,10 : caption 21,"Ajouter" : on_click 21,ajouter

button 27 : top 27,60 : left 27,320 : caption 27,"Sauver" : on_click 27,sauver
button 28 : top 28,60 : left 28,400 : caption 28,"Charger" : on_click 28,charger
button 29 : top 29,60 : left 29,480 : caption 29,"Lister" : on_click 29,lister

button 31 : top 31,30 : left 31,770 : caption 31,"Objet" : on_click 31,changerobjet
button 32 : top 32,55 : left 32,770 : caption 32,"Propriété" : on_click 32,changerpropriete
button 33 : top 33,80 : left 33,770 : caption 33,"Attribut" : on_click 33,changerattribut

button 41 : top 41,30 : left 41,860 : caption 41,"Objet" : on_click 41,supprimerobjet
button 42 : top 42,55 : left 42,860 : caption 42,"Propriété" : on_click 42,supprimerpropriete
button 43 : top 43,80 : left 43,860 : caption 43,"Attribut" : on_click 43,supprimerattribut

memo 99 : top 99,100 : left 99,10 : width 99,550 : height 99,400 : bar_both 99
open_dialog 100 : filter 100,"Base de connaissance|*.knb"
save_dialog 101 : filter 101,"Base de connaissance|*.knb"

dll_on "KGF.dll"

NB% = dll_call0("CreateKnowledgeBase")
if NB%=0
  text 99,"Erreur en création"
else
  text 99,"Prêt"
end_if
end

ajouter:
  objet$ = text$(11)
  propriete$ = text$(12)
  attribut$ = text$(13)
  res% = dll_call4("CreateNewKnowledge",NB%,adr(objet$),adr(propriete$),adr(attribut$))
  if res%=0
    text 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
  
lister:
  objet$ = text$(11)
  propriete$ = text$(12)
  attribut$ = text$(13)
  res% = dll_call5("QueryKnowledgeBase",NB%,adr(objet$),adr(propriete$),adr(attribut$),handle(99))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
            
sauver:
  base$ = file_name$(101)
  if base$="_" then return
  ext$ = lower$(file_extract_extension$(base$))
  if ext$=""
    ext$ = ".knb"
    base$ = base$ + ext$
  else
    if ext$<>".knb"
      base$ = left$(base$,len(base$)-len(ext$)) + ".knb"
    end_if
  end_if
  res% = dll_call2("SaveKnowledgeBaseToFile",NB%,adr(base$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  return
  
charger:
  base$ = file_name$(100)
  if base$="_" then return
  ext$ = lower$(file_extract_extension$(base$))
  if ext$=""
    ext$ = ".knb"
    base$ = base$ + ext$
  else
    if ext$<>".knb"
      base$ = left$(base$,len(base$)-len(ext$)) + ".knb"
    end_if
  end_if
  if file_exists(base$)=0
    message "Fichier non trouvé"
    return
  end_if
  res% = dll_call2("LoadKnowledgeBaseFromFile",NB%,adr(base$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  return
  
changerobjet:
  objet$ = text$(11)
  nouveau$ = text$(14)
  res% = dll_call3("ChangeKnowledgeObject",NB%,adr(objet$),adr(nouveau$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
  
changerpropriete:
  objet$ = text$(11)
  propriete$ = text$(12)
  nouveau$ = text$(14)
  res% = dll_call4("ChangeKnowledgeProperty",NB%,adr(objet$),adr(propriete$),adr(nouveau$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
  
changerattribut:
  objet$ = text$(11)
  propriete$ = text$(12)
  attribut$ = text$(13)
  nouveau$ = text$(14)
  res% = dll_call5("ChangeKnowledgeAttribute",NB%,adr(objet$),adr(propriete$),adr(attribut$),adr(nouveau$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
  
supprimerobjet:
  objet$ = text$(11)
  res% = dll_call2("DeleteKnowledgeObject",NB%,adr(objet$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
  
supprimerpropriete:
  objet$ = text$(11)
  propriete$ = text$(12)
  res% = dll_call3("DeleteKnowledgeProperty",NB%,adr(objet$),adr(propriete$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
  
supprimerattribut:
  objet$ = text$(11)
  propriete$ = text$(12)
  attribut$ = text$(13)
  res% = dll_call4("DeleteKnowledgeAttribute",NB%,adr(objet$),adr(propriete$),adr(attribut$))
  if res%=0
    item_add 99,"Ok"
  else
    text 99,"Erreur"
  end_if
  text 11,""
  text 12,""
  text 13,""
  return
  
  
copiez-le dans le même dossier et lancez-le dans Panoramic_Editor.

Dans la fenêtre qui s"ouvre, cliquez sur "Charger", sélectionnez le fichier *.knb installé, puis validez. Le mémo vous donne le résultat.
Maintenant, cliquez directement sur "Lister". Le mémo contiendra toutes les connaissances.

A partir de la, jouez... Exemple: rentrez "eau" dans le cham "Attribut" et cliquez sur "Lister". Vous allez apprendre que le chien boit de l'eau...

Very Happy Very Happy Very Happy

Vous pouvez évidemment renseigner les trois champs objet, propriété et attribit, puis cliquer sur "Ajouter" pour ajouter une nouvelle connaissance. Ou modifier n'importe lequel ce ces éléménts, et le supprimer. En plus, vous pouvez sauvegarder votre "connaissance" par le bouton "Sauver" dans un fichier *.knb.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Une "base de connaissance" - pour jouer ou plus si affinité Empty
MessageSujet: Re: Une "base de connaissance" - pour jouer ou plus si affinité   Une "base de connaissance" - pour jouer ou plus si affinité EmptyLun 21 Mai 2018 - 9:36

On peut l'utiliser, de façon pratique, comme:

- carnet d'adresses:
les noms des contacts sont les "objets"
les mots "fixe", "portable", "mail", "URL" etc servent de propriétés (liste non exhaustive)
les "attributs" sont les valeurs correspondantes
On obtient immédiatement la recherche par nom ainsi que la recherche inversée par n'importe lequel de ces critères

- arbre généalogique:
les noms des contacts sont les "objets"
les mots "conjoint de", "compagne de"', "fils de", "fille de", "marié le", "divorcé le", "né le", "décédé le" etc servent de propriétées (liste non exhaustive)
les attributs sont les valeurs correspondantes
on ontient la fichie complète en questionnant sur un nom, la personne ou la date visée en questionnant sur un nom et son attribut, le nom de la ou des personnes en questionnant sur une date, etc.

Ce ne sont que deux applications concrètes, mais on peut en imaginer des multitudes:
- case à vin
- bibliothèque
- collection quelconque
- programmes à lancer
- mémo personnel de données, URL's, dates, ...
ou, plus ludique:
- informations sur les personnages de Star Wars
- habitudes alimentaires des animeaux
- besoins des plantes à cultiver

Les limites sont votre imaqination...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Une "base de connaissance" - pour jouer ou plus si affinité Empty
MessageSujet: Re: Une "base de connaissance" - pour jouer ou plus si affinité   Une "base de connaissance" - pour jouer ou plus si affinité EmptyLun 21 Mai 2018 - 10:29

Bonjour klaus !

Ca rappelle un peu le programme que j'avais proposé sur l'intelligence artificielle.
Il fait la même chose mais en langage courant...

Seulement je n'ai pas réussi à le transformer en Panoramic sans erreurs. Dommage !
A la base c'est un programme datant des années 80 qui a été repris en VB il me semble.

Si cela t'intéresse c'est ici !
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Contenu sponsorisé





Une "base de connaissance" - pour jouer ou plus si affinité Empty
MessageSujet: Re: Une "base de connaissance" - pour jouer ou plus si affinité   Une "base de connaissance" - pour jouer ou plus si affinité Empty

Revenir en haut Aller en bas
 
Une "base de connaissance" - pour jouer ou plus si affinité
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Un exemple de mes cartes à jouer
» Base pour un programme de gestion
» Logithèque : une base de données en Panoramic pour Panoramic
»  Carré magique d’ordre 3 à 99 et plus si affinité !
» Un jeu de cartes à jouer

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: