▲

Hoe werkt Edugraph?

Op de site zie je tien afgewerkte voorbeelden. Op elke pagina zie je telkens eerst de proces notatie, een link naar de matrix en uiteindelijk het volledige netwerk dat aangemaakt is vertrekkende van de proces notatie. Bij het eerste voorbeeld wordt uitvoerig uitgelegd hoe de proces notatie wordt opgebouwd. Edugraph is dus geen teken programma maar een conversie programma voor een formele gestrutureerde tekst naar beeld. Die formele proces notatie wordt omgezet naar instructies voor Graphiz, dat daarmee de beelden automatisch genereert.

Edugraph kan zowel gerichte grafen weergeven als gerichte gewogen grafen. Het enige verschil is dat de bogenmatrix op een andere manier aangemaakt wordt voor een gerichte gewogen graaf. Bij een gerichte graaf bevat deze matrix enkel nullen en enen, bij een gerichte gewogen graaf worden de waarden weergegeven van de wegingen in plaats van enen. Je kan ook een ongerichte graaf aanmaken met Edugraph. Het volstaat om de pijlpunten te laten verdwijnen. Dat is een layout instelling. Standaard is dat arrowhead="normal". Als je er arrowhead="none" van maakt verdwijnt te pijlpunt. Maar om de bogenmatrix te genereren heb je dan wel nog extra werk. Een ongerichte graaf is symmetrisch. Dus je zal in de proces notatie telkens de twee richtingen moeten coderen. Zowel a → b als b → a moeten beschreven worden.

Werken met de gebruikers interface

De grafische users interface bevat drie menu's:
(1) Make SVG & HTML met item 'Select and Convert Process notation', waarmee je de conversie voor een gewone gerichte graaf opstart. Daar moet je de proces notatie kiezen met extensie .txt
(2) Make Weighted Graph met 'Select Weighted Graph Notatation', waarmee je de conversie voor een gerichte gewogen graaf opstart. Daar moet je de proces notatie kiezen met extensie .txt
(3) JSON to Process Noation file met 'Select JSON file' om een JSON bestand automatisch om te zetten naar een proces notatie. JSON (JavaScript Object Notation) is een open standaardbestandsformaat en een formaat voor gegevensuitwisseling dat gebruik maakt van voor mensen leesbare tekst om gegevensobjecten op te slaan en te verzenden. Het implementeert perfect de triplet van de subject-object relatie, die voorkomt in elke taal.
Dit voorbeeld laat zien hoe het werkt.
(4) Een primitieve platte tekst editor in menu 'Edit Files' om eventueel snel correctes aan te brengen in proces notatie of het nodes bestand, als er fouten in stonden. Maar feitelijk kan je daarvoor evengoed notepad (kladblok) gebruiken. Die biedt meer mogelijkheden.

Eens het bestand van de proces notatie met extensie .txt gekozen begint de conversie van de proces notatie. Edugraph maakt op het einde ook nog een webpagina aan met extensie .html waarin proces notatie. Er is in dezelfde folder een tekstbestand aangemaakt met extensie .matrix, waarin de de bogenmatrix staat.

Aangezien de gebruikte beelden generator Graphiz naast de beschrijving van de processen ook een beschrijving van de individuele nodes nodig heeft, genereert Edugraph een elementaire beschrijving van de nodes en slaat het die beschrijving op in een bestand met extensie .nodes. Dat bestand kan nog bijgewerkt worden als je er extra tekst, beelden en links wil aan toevoegen. Zonder die bij te werken wordt wel al een elementaire graaf aangemaakt, maar dan zonder extra tekst, links of beelden. Meer is niet nodig om uiteindelijk de visualisatie te genereren in een .svg (scalar vector graphics). Het programma kopieerde ook al de standaard layout instellingen naar een bestand. Dat kan ook nog aangepast worden, niet via een menu, zoals gebruikelijk bij een tekenprogramma maar door het wijzigen van de instellingen in het .layout bestand.

De eerste run

Na elke run toont Edugraph een verslag van wat het gedaan heeft. Als in dat verslag het woord “ERROR” voorkomt dan is het fout gelopen. Vooral op de proces notatie is het streng. Dubbele spaties volstaan om de verwerking af te breken. Het programma geeft wel precies aan in welke lijn de fout zit. Aangezien de elementaire codering van de definities van de nodes automatisch gebeurt zullen daar zelden fouten in voorkomen. MAAR, als in de proces notatie de schrijfwijze van een term lichtjes verschilt, krijg je dubels in de automatisch gegenereerde nodes definities. CONTROLLEER altijd op dubbels en corrigeer de proces notatie tot er geen dubbels meer voorkomen. Je zal dan ook telkens het bestand met nodes definities moeten verwijderen voor je een nieuwe run start.

Extra teksten en beelden toevoegen aan de nodes

Korte teksten kunnen toegevoegd worden. best minder dan 70 tekens, want hiervoor is geen regelovergang voorzien. Alle tekens zijn toegestaan, behalve niet-functionele vierkante haakjes. Vierkante haakjes mogen alleen worden gebruikt om een volgnummer te bevatten.

Voor lange teksten, meer dan 70 tekens, waarvoor wel regelovergang is geprogrammeerd, beelden en links moeten wel speciale expressies gebruikt worden en die moeten dan wel strikt de afgesproken grammatica volgen. Dit zijn ze:

ltext(“Hier komt dan de lange tekst…”)
Deze expressie mag meermaals gebruikt worden.

img(“Hier komt de naam van het beeld bestand met extensie”)
Het beeldbestand moet aanwezig zijn in de folder waar de proces notatie staat voor verwerking.

url(“Hier komt de link. Je kan zowel absolute als relatieve url’s gebruiken bvb ./tekst/tekst.html”)
Deze expressie moet direct onder de hoofding komen, anders wordt ze niet meegenomen.

Layout instellingen

Hier onder een lijst van de layout instellingen die kunnen aangepast worden:

rankdir="TB"; Richting ontwikkeling graaf kan ook zijn BT, LR of RL

fontname="Verdana"; Te gebruiken letter font

fontsize="14"; Grootte van het font

bgcolor="#ffffff"; Kleur van het achtergrond van de graaf in hexadecimale code

stylesheet="../svg_def.css"; Link naar het CSS bestand

--- NODES ---

fontname="Verdana", Te gebruiken letter font

fontsize="14", Grootte van het font

color="#101010", Kleur van het font in hexadecimale code

bgcolor="#ffffff" Achtergrondkleur in hexadecimale code van node hoofdingen

border="0" Voor boord rond de node

cellborder="1" Voor boord rond een cel

cellpadding="3" Binnenafstand in de cel

cellspacing="0" Buitenafstand tussen de cellen

63 Geeft voor ltext aan wanneer lijnovergang nodig is

--- EDGES ---

decorate="false", Verbindt de tekst met de pijl

style="solid", Waarden kunnen ook dash en dot zijn

arrowhead="normal", Normale pijlpunt, none is geen pijlpunt

penwidth="1.0", Dikte van de pijl

fontsize="14", Groote van het font voor tekst

fontcolor="14", Kleur van de tekst voor tekst bij de pijl bij de pijlen

fontname="Verdana", Te gebruiken letter font voor tekst bij de pijlen

--- OUTPUT ---

SVG Standaard kan ook NOSVG zijn

NOPNG Kan ook PNG zijn dan maakt het programma ook een .png beeld

NOPDF Kan ook PDF zijn dan maakt het programma ook een .pdf bestand

HTML Standaard kan ook NOHTML zijn

Verander echter niets aan het format! het zijn bijna allemaal letterlijke Graphiz instructies.

Een uitgebreide lijst van RGB hexadecimale kleurencodes vindt je hier.

Optionele parameters voor processen

(1) Met ;constraint:”false”, kan je de graaf laten afwijken van de oorspronkelijke ontplooiing (TB, BT,LR of RL).
(2) Je kan ook de kleur van elke pijl afzonderlijk bepalen door achter die punt komma de instructie ;color:”#ff0000”, voor een rode pijl bijvoorbeeld. Default is de kleur van de pijl zwart.
(3) Je kan net als bij de nodes ook een url toevoegen aan de tekst van een proces die bij de pijl staat. Daarvoor hoef je dan de expressie ;URL:"hier komt dan de url" gebruiken.

Voorlopig kan je maar een van die optionele parameters per proces gebruiken.

Download en installatie

Als je niet zo tech-savvy bent kan je de installatie best overlaten aan een IT collega of vriend. Het programma draait op verschillende platformen omdat het gemaakt is met Java. Aangezien het gebruik maakt van Graphiz zal je ook dat moeten installeren. Voor het installeren van Java op Microsoft Windows hebt u beheerders autorisatie nodig. Verzeker u ervan dat zowel Java als Graphiz in de opstart paden van het systeem zit. In Windows kan je dat checken door aan de prompt het commando path <enter> te gebruiken.

Na PATH= moet je dan lijnen zien als:

C:\Program Files\Common Files\Oracle\Java\javapath;

C:\Program Files\Java\jdk-21\bin;

C:\Program Files\Graphviz\bin;

Eens het programma gecompileerd kan je het opstarten in de bin folder waar de classes staan met:

java EDUGRAPH

Je kan dat commando ook in een batch file met extensie .bat zetten in de bin folder . Dan kan je opstarten zonder telkens naar de prompt te moeten gaan.

Compileren van de source code kan je aan de prompt vanuit de src folder met het commando:

javac *.java -d ..\bin

In de zip file die je hier onder kan downloaden zitten ook folders met voorbeelden van proces notaties en nodes definities. Daar kan je alvast mee oefenen voor je aan de slag gaat met eigen werk. De binary is gecompileerd voor Windows 10, 64 bit met JDK 21. De binariies ervan vindt je nog in de bin folder. Die binaries zullen ook werken met de laatste versie van Java, JDK 27 als je Windows 10, 64 bit hebt. Ze worden overschreven als je opnieuw compileert.

Nuttige tips

Als je beelden in de graaf gebruikt, maal dat ze even breed zijn. Drie zaken bepalen de breedte van een node: (1) De lengte van een regel zonder afbreking. (2) De lengte van de regels na afbreking en (3) de breedte van de beelden.

Voor SVG maakt het niet uit welke soort beelden je gebruikt. .png, .jpg en .gif kan allemaal, maar als je de graaf ook wil omzetten naar png of pdf gebruik je best vooral .png. Gifs worden onzichtbaar na omzetting.

Het svg bestand dat gegenereerd wordt bevat al een link naar een opmaak bestand extensie.css. In het bestand waarin de layout gedefinieerd is, kan je die link wijzigen. Je kan dus de opmaak van de svg daar sturen zoals in html. Er zijn wel een aantal bijzonderheden. Om aan te duiden dat de opmaakregels gelden voor svg bevat dat bestand de regel:
@namespace svg url(http://www.w3.org/2000/svg);
De items die je wil aanspreken moeten vooraf gegaan worden door svg| Voorbeelden:

svg|text
svg|a text
svg|polygon
svg|path

SVG bestaat uit vormen en lijnen en niet uit tekst zoals HTML. Ool letters zijn vectoren in SVG. Typisch voor svg css is dat je om een vlak grijs te kleuren bijvoorbeeld, je dan fill:#e0e0e0; gebruikt ipv background. Om een lijn een rode kleur te geven gebruik je stroke:#ff0000;. Meer over svg css vind je in W3C schools: svg Stroke Attributes en svg Fill Attributes.

Zie ook de FAQ

Dowload Edugraph Beta 1.0

Download Edugraph Beta 2.0: Edugraph.zip
(creative commons CC BY-NC-ND 4.0)

Het programma is Open Source maar dat wil niet zeggen dat de beelden die ermee gemaakt werden op deze site niet copyrighted zijn. Als die voor educatieve en niet commerciële doeleinden gebruikt worden zijn ze wel creative commons CC BY-NC-ND 4.0.

Aangezien het programma voor de grafische omzetting Graphiz dot lanceert via het besturingssysteem is het waarschijnlijk dat die instructies in het programma zullen moeten aangepast worden in Linux. Waarschijnlijk zal je het absolute pad naar Graphiz moeten meegeven. In Windows is dat niet nodig omdat dat pad in het systeem is opgeslagen.

Ruimte voor verbetering

Dit is een project waarvan het concept veelbelovend is maar waarvan de uitvoering matig is door een tekort aan manschappen. Het concept laat toe kennisdatabanken op te bouwen en daarbij de eerste twee stappen ‘Chunking en voorbewerking’ en ‘Entiteit- en relatie-extractie’ over te slaan. Het zijn deze stappen die de inzet van enorme datacenters vragen. Het huidige AI concept van Open AI en Anthropic is gebaseerd op piraterij, met dit concept kan de opbouw van kennis terug in handen gegeven worden aan de docenten en wetenschappers die ze verspreiden en eraan bouwen.

De hedendaagse AI industrie heeft een visie ontdaan van elke grond in de realiteit en ze propageert doelstellingen die ze niet waar kan maken. Het idee van algemene intelligentie en bewustzijn geven aan een machine is een propaganda trope. Net zoals de tabaksindustrie het onderzoek naar afleidingsmanoeuvres financierde om het publieke debat met twijfel te overspoelen, zo presenteert deze industrie onzinnige discussiepunten als existentiële vragen en financiert ze zelfs onderzoek hiernaar.

De applicatie van het concept is momenteel nog een een mans project en dat is het zwakke punt. Dat het steunt op open source Graphiz is niet het probleem, maar dat het Graphiz aanspreekt via het besturingssysteem is dat wel. Het programma is niet in staat om fouten te detecteren als het daar misloopt. Door vanuit C++ de Graphiz bibliotheken rechtstreeks aan te spreken kan dit probleem vermeden worden. Maar dan moeten er verschillende programma's gecompiuleeerd worden voor de verschillende besturingssystemen en ik heb noch een Linux noch een Apple computer. Ook de gebruikers interface is minimaal. Maar als je kijkt hoe Graphiz zelf ontwikkeld is door Bell Laboratories en nog altijd onderhouden wordt door een team van drie programmeurs, zie je direct waar de kat gebonden ligt. Dit is werk voor een team.



Referenties

Alkharashi M. Comparing experiential versus conventional learning on knowledge retention for teaching surgery to medical graduates. Saudi J Ophthalmol. 2020 Dec 28;34(2):107-110. doi: 10.4103/1319-4534.305042. PMID: 33575531; PMCID: PMC7866721 <https://pmc.ncbi.nlm.nih.gov/articles/PMC7866721/>.

Bahdanau, Dzmitry; Cho, Kyunghyun; Bengio, Yoshua (19 May 2016). "Neural Machine Translation by Jointly Learning to Align and Translate". arXiv:1409.0473 [cs.CL] <https://arxiv.org/abs/1409.0473>.

Belli, Stefano R., Robert D. Rogers, Jennifer Y.F. Lau, Adult and adolescent social reciprocity: Experimental data from the Trust Game, Journal of Adolescence, Volume 35, Issue 5, 2012, Pages 1341-1349, ISSN 0140-1971, https://doi.org/10.1016/j.adolescence.2012.05.004. (https://www.sciencedirect.com/science/article/pii/S0140197112000814).

Dahlström, Erik et al, (2011) Scalable Vector Graphics (SVG) 1.1 (Second Edition), W3C Recommendation 16 August 2011, <https://www.w3.org/TR/2011/REC-SVG11-20110816/>

Daigavane, Balaraman Ravindran, Gaurav Aggarwal, 2021, Understanding Convolutions on Graphs, Google Research, Published Sept. 2, 2021, DOI: 10.23915/distill.00032, <https://distill.pub/2021/understanding-gnns/>.

Jawed S, Amin HU, Malik AS, Faye I. Classification of Visual and Non-visual Learners Using Electroencephalographic Alpha and Gamma Activities. Front Behav Neurosci. 2019 May 7;13:86. doi: 10.3389/fnbeh.2019.00086. PMID: 31133829; PMCID: PMC6513874. <https://pmc.ncbi.nlm.nih.gov/articles/PMC6513874/>

Ladkin, Bernard (2018), Causal Analysis of Incidents with Why-Because Analysis using the SERAS® , Software Toolkit, CAUSALIS Ingenieurgesellschaft mbH, 2008, revised 2018-02-14, <https://rvs-bi.de/research/WBA/WBA-NewIntro20180214.pdf>

Levonian, E. Auditory and visual retention in relation to arousal. AVCR 16, 57–62 (1968). https://doi.org/10.1007/BF02768681, <https://link.springer.com/article/10.1007/BF02768681>

Lewis, David, (2004), “Causation as Influence” (expanded version), in Collins, Hall, and Paul 2004, 75–106, <https://www.andrewmbailey.com/dkl/Causation_As_Influence_long.pdf>

Menzies, Peter, (2019), Counterfactual Theories of Causation, 29 October 2019, Stanford Encyclopedia of Pholosophy, <https://plato.stanford.edu/entries/causation-counterfactual/>

Reed, Stephen K. (2012). Cognition : theories and applications. Wadsworth, Cengage Learning, 12 April 2012, ISBN 978-1-133-49228-3. OCLC 1040947645, <https://www.worldcat.org/nl/title/1040947645>

Roark CL, Lescht E, Hampton Wray A, Chandrasekaran B. Auditory and visual category learning in children and adults. Dev Psychol. 2023 May;59(5):963-975. doi: 10.1037/dev0001525. Epub 2023 Mar 2. PMID: 36862449; PMCID: PMC10164074.

Rottman BM, Hastie R. Reasoning about causal relationships: Inferences on causal networks. Psychol Bull. 2014 Jan;140(1):109-39. doi: 10.1037/a0031903. Epub 2013 Apr 1. PMID: 23544658; PMCID: PMC3988659. <https://pmc.ncbi.nlm.nih.gov/articles/PMC3988659/>.

Runge, Jakob, et al. , (2019), Detecting and quantifying causal associations in large non-linear time series datasets. Sci. Adv.5,eaau4996 (2019). DOI: <https://www.science.org/doi/10.1126/sciadv.aau4996>

Sanchez-Lengeling, Benjamin, Emily Reif, Adam Pearce, Alexander B. Wiltschko, 2021, A Gentle Introduction to Graph Neural Networks, Google Research, Published Sept. 2, 2021, DOI 10.23915/distill.00033, <https://distill.pub/2021/gnn-intro/>.

Schürmann, Tim, (WBA) 'Counterfactual Test’, Workgroup RVS, Faculty of Technology, Bielefeld University) <https://rvs-bi.de/research/WBA/IntroWBA-ENG.pdf>

Stepanov, Alexander (1985), Towards a Theory of Causal Implication, Department of Electrical Engineering and Computer Science, Polytechnic University of New York, 1985, <http://stepanovpapers.com/TOWARDS%20A%20THEORY%20OF%20CAUSAL%20IMPLICATION.pdf>

van Benthem, Johan, (IEP), Modal Logic: A Contemporary View, University of Amsterdam, Stanford University, and Tsinghua University, The Netherlands, U. S. A., and China, <https://iep.utm.edu/modal-lo/>

Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N; Kaiser, Łukasz; Polosukhin, Illia (December 2017). "Attention is All you Need" (PDF). In I. Guyon and U. Von Luxburg and S. Bengio and H. Wallach and R. Fergus and S. Vishwanathan and R. Garnett (ed.). 31st Conference on Neural Information Processing Systems (NIPS). Advances in Neural Information Processing Systems. Vol. 30. Curran Associates, Inc. arXiv:1706.03762 <https://papers.nips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf>.

Wielemaker, J. (2005). An Optimised Semantic Web Query Language Implementation in Prolog. In: Gabbrielli, M., Gupta, G. (eds) Logic Programming. ICLP 2005. Lecture Notes in Computer Science, vol 3668. Springer, Berlin, Heidelberg. <https://doi.org/10.1007/11562931_12>.