eyeprolog 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -65,6 +65,7 @@ printf 'human(socrates).\nmortal(X) :- human(X).\n' |
|
|
|
65
65
|
- [Playground](https://eyereasoner.github.io/eyeprolog/playground) — run EyeProlog in a browser
|
|
66
66
|
- [Examples](examples) — runnable programs and checked output
|
|
67
67
|
- [Example decks](examples/deck/README.md) — explainable RDF/Prolog scenarios with reproducible roundtrips
|
|
68
|
+
- [Introduction to EyeProlog](examples/deck/introduction-to-eyeprolog.md) — short presentation deck for first-time audiences
|
|
68
69
|
- [Symbiotic Knowledge Graphs](examples/deck/symbiotic-knowledge-graphs.md) — RDF ↔ Prolog heatwave-response demo for human/AI/KG co-evolution
|
|
69
70
|
- [rdf-prolog-roundtrip](https://github.com/eyereasoner/rdf-prolog-roundtrip) — standalone RDF 1.2 ↔ ISO Prolog bridge used by the RDF examples
|
|
70
71
|
- [ISO conformance audit](test/conformance/ISO-COMPLIANCE.md) — supported Part 1 profile
|
package/examples/deck/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Wide-audience companion explanations for selected runnable examples.
|
|
4
4
|
|
|
5
|
+
- [Introduction to EyeProlog](introduction-to-eyeprolog.md) — a short slide deck introducing facts, rules, answers, proofs, ISO conformance, JavaScript embedding, and RDF roundtrips.
|
|
5
6
|
- [Cross-organization data sharing](cross-organization-data-sharing.md) — ODRL/DPV sharing decisions with permit, deny, review, safeguards, and obligations.
|
|
6
7
|
- [Explainable EV-depot configuration](explainable-ev-depot-configuration.md) — reversible configuration rules that select a charger, explain blockers, and derive required changes.
|
|
7
8
|
- [ODRL policy reasoning](odrl-policy-reasoning.md) — permissions, prohibitions, duties, conflicts, and defaults.
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
---
|
|
2
|
+
marp: true
|
|
3
|
+
title: Introduction to EyeProlog
|
|
4
|
+
description: A short presentation introducing EyeProlog as a portable, inspectable ISO Prolog engine for answers, proofs, and RDF-backed reasoning.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Introduction to EyeProlog
|
|
8
|
+
|
|
9
|
+
Portable Prolog reasoning for answers, proofs, and knowledge graphs
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What is EyeProlog?
|
|
14
|
+
|
|
15
|
+
EyeProlog is a small ISO Prolog implementation for JavaScript.
|
|
16
|
+
|
|
17
|
+
It turns explicit facts and rules into:
|
|
18
|
+
|
|
19
|
+
- answers;
|
|
20
|
+
- variable bindings;
|
|
21
|
+
- checked example output;
|
|
22
|
+
- optional proof traces;
|
|
23
|
+
- embeddable reasoning in Node.js and browsers.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Why Prolog?
|
|
28
|
+
|
|
29
|
+
Prolog is a language for relations.
|
|
30
|
+
|
|
31
|
+
Instead of spelling out every control step, you describe what must hold:
|
|
32
|
+
|
|
33
|
+
```prolog
|
|
34
|
+
human(socrates).
|
|
35
|
+
mortal(X) :- human(X).
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Then you ask questions:
|
|
39
|
+
|
|
40
|
+
```prolog
|
|
41
|
+
?- mortal(socrates).
|
|
42
|
+
true.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## The core idea
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
facts + rules + query
|
|
51
|
+
|
|
|
52
|
+
v
|
|
53
|
+
search by unification
|
|
54
|
+
|
|
|
55
|
+
v
|
|
56
|
+
answers with reasons
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The same rule can answer a yes/no question, enumerate solutions, or participate in a larger proof.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Quick start
|
|
64
|
+
|
|
65
|
+
Run EyeProlog without a global install:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
npx --yes eyeprolog
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Try a list query:
|
|
72
|
+
|
|
73
|
+
```prolog
|
|
74
|
+
?- use_module(library(lists)).
|
|
75
|
+
true.
|
|
76
|
+
?- member(X, [prolog, logic]).
|
|
77
|
+
X = prolog
|
|
78
|
+
; X = logic.
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Programs are ordinary text
|
|
84
|
+
|
|
85
|
+
A file can contain facts, rules, and goals:
|
|
86
|
+
|
|
87
|
+
```prolog
|
|
88
|
+
human(socrates).
|
|
89
|
+
mortal(X) :- human(X).
|
|
90
|
+
|
|
91
|
+
?- mortal(X).
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Run it:
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
eyeprolog examples/socrates.pl
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Proofs are first-class
|
|
103
|
+
|
|
104
|
+
EyeProlog can show not only *what* was concluded, but *why*.
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
eyeprolog --proof examples/socrates.pl
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Proof output is useful for:
|
|
111
|
+
|
|
112
|
+
- debugging rules;
|
|
113
|
+
- explaining decisions;
|
|
114
|
+
- regression tests;
|
|
115
|
+
- audit trails.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## ISO first, extensions visible
|
|
120
|
+
|
|
121
|
+
EyeProlog starts from ISO/IEC 13211-1 Prolog.
|
|
122
|
+
|
|
123
|
+
That matters because facts, rules, terms, control, errors, streams, arithmetic, and meta-calls have an external reference point.
|
|
124
|
+
|
|
125
|
+
Normal mode adds practical libraries and embedding features. Strict ISO mode keeps the standardized core separate and testable.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Why JavaScript?
|
|
130
|
+
|
|
131
|
+
EyeProlog runs where modern applications already run:
|
|
132
|
+
|
|
133
|
+
- command-line tools;
|
|
134
|
+
- npm packages;
|
|
135
|
+
- browser playgrounds;
|
|
136
|
+
- web workers;
|
|
137
|
+
- JavaScript APIs.
|
|
138
|
+
|
|
139
|
+
The aim is not to replace every Prolog system. It is to make portable Prolog reasoning easy to embed and inspect.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## RDF and knowledge graphs
|
|
144
|
+
|
|
145
|
+
EyeProlog pairs naturally with RDF through `rdf-prolog-roundtrip`:
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
RDF dataset
|
|
149
|
+
-> rdf(S, P, O, Graph) facts
|
|
150
|
+
-> EyeProlog rules
|
|
151
|
+
-> result_rdf/4 facts
|
|
152
|
+
-> RDF dataset
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
RDF remains the interchange layer. Prolog remains the transparent reasoning layer.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## What this enables
|
|
160
|
+
|
|
161
|
+
The example suite uses the same pattern for:
|
|
162
|
+
|
|
163
|
+
- policy decisions;
|
|
164
|
+
- incident response;
|
|
165
|
+
- software supply-chain risk;
|
|
166
|
+
- scientific evidence assessment;
|
|
167
|
+
- EV-depot configuration;
|
|
168
|
+
- symbiotic human/AI/knowledge-graph workflows.
|
|
169
|
+
|
|
170
|
+
Each scenario keeps data, rules, answers, and materialized results as separate inspectable artifacts.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Testing and conformance
|
|
175
|
+
|
|
176
|
+
EyeProlog’s release gate includes:
|
|
177
|
+
|
|
178
|
+
- file-based conformance cases;
|
|
179
|
+
- strict ISO tests;
|
|
180
|
+
- WG17 syntax cases;
|
|
181
|
+
- regression tests;
|
|
182
|
+
- runnable examples;
|
|
183
|
+
- proof examples;
|
|
184
|
+
- documentation synchronization checks.
|
|
185
|
+
|
|
186
|
+
The point is simple: behavior should be reproducible, not anecdotal.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## When EyeProlog fits
|
|
191
|
+
|
|
192
|
+
EyeProlog is a good fit when a project needs:
|
|
193
|
+
|
|
194
|
+
- explicit rules;
|
|
195
|
+
- inspectable conclusions;
|
|
196
|
+
- portable Prolog syntax;
|
|
197
|
+
- embeddable JavaScript runtime;
|
|
198
|
+
- checked examples and proofs;
|
|
199
|
+
- a clean boundary between data, rules, and results.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Where to go next
|
|
204
|
+
|
|
205
|
+
- Read [`README.md`](../../README.md) for setup and links.
|
|
206
|
+
- Read [`why-eyeprolog.md`](../../why-eyeprolog.md) for the design motivation.
|
|
207
|
+
- Open [`playground.html`](../../playground.html) to run examples in a browser.
|
|
208
|
+
- Explore [`examples/`](../) for runnable programs.
|
|
209
|
+
- Read [`the-art-of-eyeprolog.md`](../../the-art-of-eyeprolog.md) for the full reference.
|