eyeling 1.24.7 → 1.24.9
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/HANDBOOK.md +35 -35
- package/dist/browser/eyeling.browser.js +14 -1
- package/examples/act-alarm-bit-interoperability.n3 +5 -3
- package/examples/act-barley-seed-lineage.n3 +5 -3
- package/examples/act-docking-abort.n3 +5 -3
- package/examples/act-gravity-mediator-witness.n3 +5 -3
- package/examples/act-isolation-breach.n3 +5 -3
- package/examples/act-photosynthetic-exciton-transfer.n3 +5 -3
- package/examples/act-sensor-memory-reset.n3 +5 -3
- package/examples/act-tunnel-junction-wake-switch.n3 +5 -3
- package/examples/act-yeast-self-reproduction.n3 +5 -3
- package/examples/annotation.n3 +5 -0
- package/examples/auroracare.n3 +29 -29
- package/examples/backward-recursion.n3 +5 -0
- package/examples/barley-seed-becoming.n3 +5 -3
- package/examples/bmi.n3 +5 -3
- package/examples/builtin-coverage.n3 +5 -0
- package/examples/calidor.n3 +3 -3
- package/examples/collection.n3 +5 -0
- package/examples/complex-matrix-stability.n3 +5 -3
- package/examples/context-association.n3 +1 -9
- package/examples/control-system.n3 +5 -3
- package/examples/deep-taxonomy-10.n3 +5 -3
- package/examples/deep-taxonomy-100.n3 +5 -3
- package/examples/deep-taxonomy-1000.n3 +5 -3
- package/examples/deep-taxonomy-10000.n3 +5 -3
- package/examples/deep-taxonomy-100000.n3 +3 -1
- package/examples/delfour.n3 +3 -3
- package/examples/digital-product-passport.n3 +2 -0
- package/examples/dijkstra-risk-path.n3 +1 -2
- package/examples/easter.n3 +6 -4
- package/examples/eco-route-insight.n3 +1 -2
- package/examples/flandor.n3 +3 -3
- package/examples/french-cities.n3 +5 -3
- package/examples/fundamental-theorem-arithmetic.n3 +5 -3
- package/examples/genetic-algorithm-knapsack.n3 +1 -1
- package/examples/genetic-algorithm.n3 +1 -1
- package/examples/genetic-knapsack-selection.n3 +1 -2
- package/examples/gps.n3 +5 -3
- package/examples/harborsmr.n3 +5 -3
- package/examples/input/ontology-question-generation.trig +79 -0
- package/examples/input/rdf-message-flow.trig +10 -10
- package/examples/input/rdf-messages.trig +6 -6
- package/examples/interop-demo.n3 +3 -1
- package/examples/matrix-mechanics.n3 +3 -3
- package/examples/medior.n3 +3 -3
- package/examples/n3-speaks-for-itself.n3 +5 -0
- package/examples/odrl-dpv-ehds-risk-ranked.n3 +1 -1
- package/examples/odrl-dpv-healthcare-risk-ranked.n3 +1 -1
- package/examples/odrl-dpv-risk-ranked.n3 +1 -1
- package/examples/odrl-risk-mitigation.n3 +1 -1
- package/examples/odrl-risk.n3 +1 -1
- package/examples/ontology-question-generation.n3 +409 -0
- package/examples/output/{act-alarm-bit-interoperability.txt → act-alarm-bit-interoperability.md} +23 -17
- package/examples/output/act-barley-seed-lineage.md +31 -0
- package/examples/output/{act-docking-abort.txt → act-docking-abort.md} +25 -19
- package/examples/output/{act-gravity-mediator-witness.txt → act-gravity-mediator-witness.md} +27 -21
- package/examples/output/{act-isolation-breach.txt → act-isolation-breach.md} +30 -24
- package/examples/output/{act-photosynthetic-exciton-transfer.txt → act-photosynthetic-exciton-transfer.md} +23 -17
- package/examples/output/{act-sensor-memory-reset.txt → act-sensor-memory-reset.md} +23 -17
- package/examples/output/{act-tunnel-junction-wake-switch.txt → act-tunnel-junction-wake-switch.md} +24 -18
- package/examples/output/{act-yeast-self-reproduction.txt → act-yeast-self-reproduction.md} +26 -20
- package/examples/output/annotation.md +7 -0
- package/examples/output/auroracare.md +154 -0
- package/examples/output/backward-recursion.md +11 -0
- package/examples/output/barley-seed-becoming.md +31 -0
- package/examples/output/bmi.md +26 -0
- package/examples/output/builtin-coverage.md +7 -0
- package/examples/output/calidor.md +35 -0
- package/examples/output/collection.md +7 -0
- package/examples/output/{complex-matrix-stability.txt → complex-matrix-stability.md} +17 -11
- package/examples/output/context-association.md +12 -0
- package/examples/output/{control-system.txt → control-system.md} +23 -17
- package/examples/output/deep-taxonomy-10.md +21 -0
- package/examples/output/deep-taxonomy-100.md +21 -0
- package/examples/output/{deep-taxonomy-1000.txt → deep-taxonomy-1000.md} +18 -12
- package/examples/output/{deep-taxonomy-10000.txt → deep-taxonomy-10000.md} +18 -12
- package/examples/output/{deep-taxonomy-100000.txt → deep-taxonomy-100000.md} +18 -12
- package/examples/output/delfour.md +36 -0
- package/examples/output/digital-product-passport.md +7 -0
- package/examples/output/dijkstra-risk-path.md +16 -0
- package/examples/output/{easter.txt → easter.md} +156 -150
- package/examples/output/eco-route-insight.md +25 -0
- package/examples/output/flandor.md +37 -0
- package/examples/output/{french-cities.txt → french-cities.md} +17 -11
- package/examples/output/{fundamental-theorem-arithmetic.txt → fundamental-theorem-arithmetic.md} +18 -12
- package/examples/output/genetic-algorithm-knapsack.md +7 -0
- package/examples/output/genetic-algorithm.md +7 -0
- package/examples/output/genetic-knapsack-selection.md +18 -0
- package/examples/output/{gps.txt → gps.md} +18 -12
- package/examples/output/harborsmr.md +26 -0
- package/examples/output/interop-demo.md +7 -0
- package/examples/output/matrix-mechanics.md +20 -0
- package/examples/output/medior.md +38 -0
- package/examples/output/n3-speaks-for-itself.md +58 -0
- package/examples/output/{odrl-dpv-ehds-risk-ranked.txt → odrl-dpv-ehds-risk-ranked.md} +20 -15
- package/examples/output/{odrl-dpv-healthcare-risk-ranked.txt → odrl-dpv-healthcare-risk-ranked.md} +17 -12
- package/examples/output/{odrl-dpv-risk-ranked.txt → odrl-dpv-risk-ranked.md} +21 -16
- package/examples/output/{odrl-risk-mitigation.txt → odrl-risk-mitigation.md} +21 -16
- package/examples/output/{odrl-risk.txt → odrl-risk.md} +10 -5
- package/examples/output/ontology-question-generation.md +31 -0
- package/examples/output/parcellocker.md +26 -0
- package/examples/output/pn-junction-tunneling.md +29 -0
- package/examples/output/queens.md +27 -0
- package/examples/output/rc-discharge-envelope.md +16 -0
- package/examples/output/rdf-dataset.md +12 -0
- package/examples/output/rdf-message-flow.md +12 -0
- package/examples/output/rdf-messages.md +12 -0
- package/examples/output/{resto.txt → resto.md} +23 -17
- package/examples/output/school-placement-audit.md +16 -0
- package/examples/output/smoke-arithmetic.md +12 -0
- package/examples/output/sqrt2-cauchy.md +19 -0
- package/examples/output/sqrt2-dedekind.md +37 -0
- package/examples/output/sudoku.md +49 -0
- package/examples/output/transcendental-numbers-stretched.md +266 -0
- package/examples/output/transistor-switch.md +30 -0
- package/examples/output/triple-terms.md +12 -0
- package/examples/output/{tunnel-junction-wake-switch-becoming.txt → tunnel-junction-wake-switch-becoming.md} +24 -18
- package/examples/output/{wind-turbine.txt → wind-turbine.md} +21 -15
- package/examples/parcellocker.n3 +3 -1
- package/examples/pn-junction-tunneling.n3 +3 -3
- package/examples/queens.n3 +1 -0
- package/examples/rc-discharge-envelope.n3 +1 -1
- package/examples/rdf-dataset.n3 +5 -0
- package/examples/rdf-message-flow.n3 +1 -2
- package/examples/rdf-messages.n3 +1 -2
- package/examples/resto.n3 +5 -3
- package/examples/school-placement-audit.n3 +1 -2
- package/examples/smoke-arithmetic.n3 +1 -1
- package/examples/sqrt2-cauchy.n3 +2 -0
- package/examples/sqrt2-dedekind.n3 +2 -0
- package/examples/sudoku.n3 +14 -14
- package/examples/transcendental-numbers-stretched.n3 +5 -0
- package/examples/transistor-switch.n3 +3 -3
- package/examples/triple-terms.n3 +5 -0
- package/examples/tunnel-junction-wake-switch-becoming.n3 +5 -3
- package/examples/wind-turbine.n3 +5 -3
- package/eyeling.js +14 -1
- package/lib/explain.js +14 -1
- package/package.json +1 -1
- package/test/examples.test.js +44 -13
- package/test/package.test.js +43 -7
- package/examples/output/act-barley-seed-lineage.txt +0 -25
- package/examples/output/annotation.n3 +0 -0
- package/examples/output/auroracare.txt +0 -149
- package/examples/output/backward-recursion.n3 +0 -4
- package/examples/output/barley-seed-becoming.txt +0 -25
- package/examples/output/bmi.txt +0 -20
- package/examples/output/builtin-coverage.n3 +0 -0
- package/examples/output/calidor.txt +0 -29
- package/examples/output/collection.n3 +0 -0
- package/examples/output/context-association.n3 +0 -9
- package/examples/output/deep-taxonomy-10.txt +0 -15
- package/examples/output/deep-taxonomy-100.txt +0 -15
- package/examples/output/delfour.txt +0 -30
- package/examples/output/digital-product-passport.txt +0 -1
- package/examples/output/dijkstra-risk-path.n3 +0 -3
- package/examples/output/eco-route-insight.n3 +0 -3
- package/examples/output/flandor.txt +0 -31
- package/examples/output/genetic-algorithm-knapsack.txt +0 -1
- package/examples/output/genetic-algorithm.txt +0 -1
- package/examples/output/genetic-knapsack-selection.n3 +0 -3
- package/examples/output/harborsmr.txt +0 -20
- package/examples/output/interop-demo.txt +0 -1
- package/examples/output/matrix-mechanics.txt +0 -14
- package/examples/output/medior.txt +0 -32
- package/examples/output/n3-speaks-for-itself.txt +0 -52
- package/examples/output/parcellocker.txt +0 -20
- package/examples/output/pn-junction-tunneling.txt +0 -23
- package/examples/output/queens.txt +0 -21
- package/examples/output/rc-discharge-envelope.n3 +0 -9
- package/examples/output/rc-discharge-envelope.txt +0 -9
- package/examples/output/rdf-dataset.n3 +0 -5
- package/examples/output/rdf-message-flow.n3 +0 -7
- package/examples/output/rdf-messages.n3 +0 -7
- package/examples/output/school-placement-audit.n3 +0 -3
- package/examples/output/smoke-arithmetic.n3 +0 -5
- package/examples/output/smoke-arithmetic.txt +0 -5
- package/examples/output/sqrt2-cauchy.txt +0 -13
- package/examples/output/sqrt2-dedekind.txt +0 -31
- package/examples/output/sudoku.txt +0 -43
- package/examples/output/transcendental-numbers-stretched.txt +0 -260
- package/examples/output/transistor-switch.txt +0 -24
- package/examples/output/triple-terms.n3 +0 -5
package/examples/calidor.n3
CHANGED
|
@@ -419,7 +419,7 @@
|
|
|
419
419
|
# ARC rendering through log:outputString
|
|
420
420
|
# --------------------------------------
|
|
421
421
|
|
|
422
|
-
:out01 log:outputString "
|
|
422
|
+
:out01 log:outputString "# calidor\n\n## Source files\n\n- [N3 rules](../calidor.n3)\n\n## Answer\n" .
|
|
423
423
|
|
|
424
424
|
{
|
|
425
425
|
:case :recommendedPackage ?pkg .
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
:out06 log:outputString ?line .
|
|
442
442
|
} .
|
|
443
443
|
|
|
444
|
-
:out07 log:outputString "\n
|
|
444
|
+
:out07 log:outputString "\n## Reason Why\n" .
|
|
445
445
|
:out08 log:outputString "The gateway desensitizes local heat, vulnerability, and prepaid-energy stress into an expiring municipal support insight, and the city consumes that envelope only for heatwave response.\n" .
|
|
446
446
|
:out09 log:outputString "metric : active_need_count\n" .
|
|
447
447
|
|
|
@@ -485,7 +485,7 @@
|
|
|
485
485
|
:out17 log:outputString ?line .
|
|
486
486
|
} .
|
|
487
487
|
|
|
488
|
-
:out18 log:outputString "\n
|
|
488
|
+
:out18 log:outputString "\n## Check\n" .
|
|
489
489
|
|
|
490
490
|
{ :check :signatureVerifies true . } => { :out19 log:outputString "signature verifies : yes\n" . } .
|
|
491
491
|
{ :check :payloadHashMatches true . } => { :out20 log:outputString "payload hash matches : yes\n" . } .
|
package/examples/collection.n3
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
@prefix : <https://eyereasoner.github.io/eyeling/examples/collection#>.
|
|
2
2
|
(1 _:b2 (2)) :p2 :q2 .
|
|
3
3
|
_:b2 :p :q .
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Markdown rendering via log:outputString.
|
|
7
|
+
:__md_output :text "# collection\n\n## Source files\n\n- [N3 rules](../collection.n3)\n- [Input TriG](../input/collection.trig)\n\n" .
|
|
8
|
+
{ :__md_output :text ?text } log:query { :__md_output log:outputString ?text } .
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
@prefix math: <http://www.w3.org/2000/10/swap/math#> .
|
|
18
18
|
@prefix string: <http://www.w3.org/2000/10/swap/string#> .
|
|
19
19
|
|
|
20
|
+
:000_md_title log:outputString "# complex-matrix-stability\n\n## Source files\n\n- [N3 rules](../complex-matrix-stability.n3)\n\n" .
|
|
21
|
+
|
|
20
22
|
# --------------
|
|
21
23
|
# Editable input
|
|
22
24
|
# --------------
|
|
@@ -254,7 +256,7 @@
|
|
|
254
256
|
"Complex Matrix Stability — ARC-style
|
|
255
257
|
|
|
256
258
|
"
|
|
257
|
-
"Answer
|
|
259
|
+
"## Answer
|
|
258
260
|
"
|
|
259
261
|
"We compare three diagonal 2x2 complex matrices for discrete-time stability: "
|
|
260
262
|
"A_unstable = " ?MuS ", A_stable = " ?MsS ", and A_damped = " ?MdS ". "
|
|
@@ -262,7 +264,7 @@
|
|
|
262
264
|
"So A_unstable is unstable, A_stable is marginally stable, and A_damped is damped.
|
|
263
265
|
|
|
264
266
|
"
|
|
265
|
-
"Reason Why
|
|
267
|
+
"## Reason Why
|
|
266
268
|
"
|
|
267
269
|
"For a discrete-time linear system x_{k+1} = A x_k, the eigenvalues of A govern the behaviour of the modes. "
|
|
268
270
|
"Because these matrices are diagonal, the eigenvalues are just the diagonal entries. "
|
|
@@ -271,7 +273,7 @@
|
|
|
271
273
|
"Here the diagonal entries give radii 2, 1, and 0 respectively, which explains the three classifications.
|
|
272
274
|
|
|
273
275
|
"
|
|
274
|
-
"Check
|
|
276
|
+
"## Check
|
|
275
277
|
"
|
|
276
278
|
"C1 " ?C1 "
|
|
277
279
|
"
|
|
@@ -46,14 +46,6 @@
|
|
|
46
46
|
}
|
|
47
47
|
=>
|
|
48
48
|
{
|
|
49
|
-
:report log:outputString "# Context association\n\n## Entailment\nThe RDF dataset associates Bob's data graph with a Data Integrity proof graph and a second metadata proof graph.\n\n## Explanation\nThe input TriG names three graph contexts. The data graph states Bob's name. The signature graph links to that data graph with a proof and records an ecdsa-rdfc-2019 Data Integrity proof from the university issuer. The metadata graph then signs the signature graph itself, giving a chained context association.".
|
|
49
|
+
:report log:outputString "# Context association\n\n## Source files\n\n- [N3 rules](../context-association.n3)\n- [Input TriG](../input/context-association.trig)\n\n## Entailment\nThe RDF dataset associates Bob's data graph with a Data Integrity proof graph and a second metadata proof graph.\n\n## Explanation\nThe input TriG names three graph contexts. The data graph states Bob's name. The signature graph links to that data graph with a proof and records an ecdsa-rdfc-2019 Data Integrity proof from the university issuer. The metadata graph then signs the signature graph itself, giving a chained context association.".
|
|
50
50
|
}.
|
|
51
51
|
|
|
52
|
-
# query
|
|
53
|
-
{
|
|
54
|
-
:association ?P ?O.
|
|
55
|
-
}
|
|
56
|
-
log:query
|
|
57
|
-
{
|
|
58
|
-
:association ?P ?O.
|
|
59
|
-
}.
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
|
|
14
14
|
@prefix : <https://example.org/control-system#>.
|
|
15
15
|
|
|
16
|
+
:000_md_title log:outputString "# control-system\n\n## Source files\n\n- [N3 rules](../control-system.n3)\n\n" .
|
|
17
|
+
|
|
16
18
|
# -----
|
|
17
19
|
# Facts
|
|
18
20
|
# -----
|
|
@@ -155,11 +157,11 @@
|
|
|
155
157
|
:feedbackDifferential ?FBDiff.
|
|
156
158
|
(
|
|
157
159
|
"Control System — ARC explanation of two control signals\n\n"
|
|
158
|
-
"Answer\n"
|
|
160
|
+
"## Answer\n"
|
|
159
161
|
?Answer "\n"
|
|
160
162
|
"Actuator 1 command: " ?A1 "\n"
|
|
161
163
|
"Actuator 2 command: " ?A2 "\n\n"
|
|
162
|
-
"Reason Why\n"
|
|
164
|
+
"## Reason Why\n"
|
|
163
165
|
"The first sensor pair is " ?Low " and " ?High ", so the reading is " ?Trend
|
|
164
166
|
" and the controller normalizes the gap " ?Gap " into " ?Norm ". "
|
|
165
167
|
"That normalized value creates a feedforward term of " ?FFProp
|
|
@@ -169,7 +171,7 @@
|
|
|
169
171
|
"The observed state is " ?DiffErr " relative units below the measured output, so the differential correction is negative. "
|
|
170
172
|
"That yields a proportional feedback part of " ?FBProp ", a nonlinear factor of " ?FBFactor
|
|
171
173
|
", and a differential contribution of " ?FBDiff ". Together they produce actuator 2 command " ?A2 ".\n\n"
|
|
172
|
-
"Check\n"
|
|
174
|
+
"## Check\n"
|
|
173
175
|
"C1 OK - the first sensor pair is rising, so the normalization uses the rising-branch rule.\n"
|
|
174
176
|
"C2 OK - the normalized measurement is positive and smaller than the raw gap, which is consistent with a square-root normalization.\n"
|
|
175
177
|
"C3 OK - actuator 1 is lower than its proportional feedforward term because disturbance compensation is subtracted.\n"
|
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
|
|
32
32
|
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
|
|
33
33
|
|
|
34
|
+
:000_md_title log:outputString "# deep-taxonomy-10\n\n## Source files\n\n- [N3 rules](../deep-taxonomy-10.n3)\n\n" .
|
|
35
|
+
|
|
34
36
|
# ARC checks
|
|
35
37
|
{ :ind a :N0. }
|
|
36
38
|
=> { :arc :check1 "C1 OK - the starting classification N0 is present." . } .
|
|
@@ -59,13 +61,13 @@
|
|
|
59
61
|
{
|
|
60
62
|
:report log:outputString "Deep Taxonomy - deep classification benchmark
|
|
61
63
|
|
|
62
|
-
Answer
|
|
64
|
+
## Answer
|
|
63
65
|
The test succeeds: starting from one individual classified as N0, the rules eventually classify it as N10 and then as A2.
|
|
64
66
|
|
|
65
|
-
Reason Why
|
|
67
|
+
## Reason Why
|
|
66
68
|
Each rule moves the same individual one level deeper in the taxonomy and also adds two side labels. Because that chain continues all the way from N0 to N10, the final rule deriving A2 fires, and that in turn makes the test true.
|
|
67
69
|
|
|
68
|
-
Check
|
|
70
|
+
## Check
|
|
69
71
|
C1 OK - the starting classification N0 is present.
|
|
70
72
|
C2 OK - the first expansion produced N1 together with side labels I1 and J1.
|
|
71
73
|
C3 OK - the chain reaches the midpoint N5 and still carries both side-label branches.
|
|
@@ -121,6 +121,8 @@
|
|
|
121
121
|
|
|
122
122
|
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
|
|
123
123
|
|
|
124
|
+
:000_md_title log:outputString "# deep-taxonomy-100\n\n## Source files\n\n- [N3 rules](../deep-taxonomy-100.n3)\n\n" .
|
|
125
|
+
|
|
124
126
|
# ARC checks
|
|
125
127
|
{ :ind a :N0. }
|
|
126
128
|
=> { :arc :check1 "C1 OK - the starting classification N0 is present." . } .
|
|
@@ -149,13 +151,13 @@
|
|
|
149
151
|
{
|
|
150
152
|
:report log:outputString "Deep Taxonomy - deep classification benchmark
|
|
151
153
|
|
|
152
|
-
Answer
|
|
154
|
+
## Answer
|
|
153
155
|
The test succeeds: starting from one individual classified as N0, the rules eventually classify it as N100 and then as A2.
|
|
154
156
|
|
|
155
|
-
Reason Why
|
|
157
|
+
## Reason Why
|
|
156
158
|
Each rule moves the same individual one level deeper in the taxonomy and also adds two side labels. Because that chain continues all the way from N0 to N100, the final rule deriving A2 fires, and that in turn makes the test true.
|
|
157
159
|
|
|
158
|
-
Check
|
|
160
|
+
## Check
|
|
159
161
|
C1 OK - the starting classification N0 is present.
|
|
160
162
|
C2 OK - the first expansion produced N1 together with side labels I1 and J1.
|
|
161
163
|
C3 OK - the chain reaches the midpoint N50 and still carries both side-label branches.
|
|
@@ -1021,6 +1021,8 @@
|
|
|
1021
1021
|
|
|
1022
1022
|
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
|
|
1023
1023
|
|
|
1024
|
+
:000_md_title log:outputString "# deep-taxonomy-1000\n\n## Source files\n\n- [N3 rules](../deep-taxonomy-1000.n3)\n\n" .
|
|
1025
|
+
|
|
1024
1026
|
# ARC checks
|
|
1025
1027
|
{ :ind a :N0. }
|
|
1026
1028
|
=> { :arc :check1 "C1 OK - the starting classification N0 is present." . } .
|
|
@@ -1049,13 +1051,13 @@
|
|
|
1049
1051
|
{
|
|
1050
1052
|
:report log:outputString "Deep Taxonomy - deep classification benchmark
|
|
1051
1053
|
|
|
1052
|
-
Answer
|
|
1054
|
+
## Answer
|
|
1053
1055
|
The test succeeds: starting from one individual classified as N0, the rules eventually classify it as N1000 and then as A2.
|
|
1054
1056
|
|
|
1055
|
-
Reason Why
|
|
1057
|
+
## Reason Why
|
|
1056
1058
|
Each rule moves the same individual one level deeper in the taxonomy and also adds two side labels. Because that chain continues all the way from N0 to N1000, the final rule deriving A2 fires, and that in turn makes the test true.
|
|
1057
1059
|
|
|
1058
|
-
Check
|
|
1060
|
+
## Check
|
|
1059
1061
|
C1 OK - the starting classification N0 is present.
|
|
1060
1062
|
C2 OK - the first expansion produced N1 together with side labels I1 and J1.
|
|
1061
1063
|
C3 OK - the chain reaches the midpoint N500 and still carries both side-label branches.
|
|
@@ -10021,6 +10021,8 @@
|
|
|
10021
10021
|
|
|
10022
10022
|
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
|
|
10023
10023
|
|
|
10024
|
+
:000_md_title log:outputString "# deep-taxonomy-10000\n\n## Source files\n\n- [N3 rules](../deep-taxonomy-10000.n3)\n\n" .
|
|
10025
|
+
|
|
10024
10026
|
# ARC checks
|
|
10025
10027
|
{ :ind a :N0. }
|
|
10026
10028
|
=> { :arc :check1 "C1 OK - the starting classification N0 is present." . } .
|
|
@@ -10049,13 +10051,13 @@
|
|
|
10049
10051
|
{
|
|
10050
10052
|
:report log:outputString "Deep Taxonomy - deep classification benchmark
|
|
10051
10053
|
|
|
10052
|
-
Answer
|
|
10054
|
+
## Answer
|
|
10053
10055
|
The test succeeds: starting from one individual classified as N0, the rules eventually classify it as N10000 and then as A2.
|
|
10054
10056
|
|
|
10055
|
-
Reason Why
|
|
10057
|
+
## Reason Why
|
|
10056
10058
|
Each rule moves the same individual one level deeper in the taxonomy and also adds two side labels. Because that chain continues all the way from N0 to N10000, the final rule deriving A2 fires, and that in turn makes the test true.
|
|
10057
10059
|
|
|
10058
|
-
Check
|
|
10060
|
+
## Check
|
|
10059
10061
|
C1 OK - the starting classification N0 is present.
|
|
10060
10062
|
C2 OK - the first expansion produced N1 together with side labels I1 and J1.
|
|
10061
10063
|
C3 OK - the chain reaches the midpoint N5000 and still carries both side-label branches.
|
|
@@ -100022,6 +100022,8 @@
|
|
|
100022
100022
|
|
|
100023
100023
|
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
|
|
100024
100024
|
|
|
100025
|
+
:000_md_title log:outputString "# deep-taxonomy-100000\n\n## Source files\n\n- [N3 rules](../deep-taxonomy-100000.n3)\n\n" .
|
|
100026
|
+
|
|
100025
100027
|
# ARC checks
|
|
100026
100028
|
{ :ind a :N0. }
|
|
100027
100029
|
=> { :arc :check1 "C1 OK - the starting classification N0 is present." . } .
|
|
@@ -100048,5 +100050,5 @@
|
|
|
100048
100050
|
}
|
|
100049
100051
|
=>
|
|
100050
100052
|
{
|
|
100051
|
-
:report log:outputString "Deep Taxonomy - very deep classification benchmark\n\
|
|
100053
|
+
:report log:outputString "Deep Taxonomy - very deep classification benchmark\n\n## Answer\nThe test succeeds: starting from one individual classified as N0, the rules eventually classify it as N100000 and then as A2.\n\n## Reason Why\nEach rule moves the same individual one level deeper in the taxonomy and also adds two side labels. Because that chain continues all the way from N0 to N100000, the final rule deriving A2 fires, and that in turn makes the test true.\n\n## Check\nC1 OK - the starting classification N0 is present.\nC2 OK - the first expansion produced N1 together with side labels I1 and J1.\nC3 OK - the chain reaches the midpoint N50000 and still carries both side-label branches.\nC4 OK - the final taxonomy step from N99999 to N100000 was completed.\nC5 OK - once N100000 is reached, the terminal class A2 is derived.\nC6 OK - the success flag is raised only after the terminal class A2 is present.\n" .
|
|
100052
100054
|
} .
|
package/examples/delfour.n3
CHANGED
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
# ARC rendering through log:outputString
|
|
332
332
|
# --------------------------------------
|
|
333
333
|
|
|
334
|
-
:out01 log:outputString "
|
|
334
|
+
:out01 log:outputString "# delfour\n\n## Source files\n\n- [N3 rules](../delfour.n3)\n\n## Answer\n" .
|
|
335
335
|
:out02 log:outputString "The scanner is allowed to use a neutral shopping insight and recommends Low-Sugar Tea Biscuits instead of Classic Tea Biscuits.\n" .
|
|
336
336
|
:out03 log:outputString "case : delfour\n" .
|
|
337
337
|
:out04 log:outputString "decision : Allowed\n" .
|
|
@@ -345,7 +345,7 @@
|
|
|
345
345
|
:out06 log:outputString ?line .
|
|
346
346
|
} .
|
|
347
347
|
|
|
348
|
-
:out07 log:outputString "\n
|
|
348
|
+
:out07 log:outputString "\n## Reason Why\n" .
|
|
349
349
|
:out08 log:outputString "The phone desensitizes a diabetes-related household condition into a scoped low-sugar need, wraps it in an expiring Insight + Policy envelope, signs it, and the scanner consumes that envelope for shopping assistance.\n" .
|
|
350
350
|
:out09 log:outputString "metric : sugar_g_per_serving\n" .
|
|
351
351
|
|
|
@@ -396,7 +396,7 @@
|
|
|
396
396
|
:out18 log:outputString ?line .
|
|
397
397
|
} .
|
|
398
398
|
|
|
399
|
-
:out19 log:outputString "\n
|
|
399
|
+
:out19 log:outputString "\n## Check\n" .
|
|
400
400
|
|
|
401
401
|
{ :check :signatureVerifies true . } => { :out20 log:outputString "signature verifies : yes\n" . } .
|
|
402
402
|
{ :check :payloadHashMatches true . } => { :out21 log:outputString "payload hash matches : yes\n" . } .
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
|
|
18
18
|
@prefix string: <http://www.w3.org/2000/10/swap/string#> .
|
|
19
19
|
|
|
20
|
+
:000_md_title log:outputString "# digital-product-passport\n\n## Source files\n\n- [N3 rules](../digital-product-passport.n3)\n\n" .
|
|
21
|
+
|
|
20
22
|
# --------------------
|
|
21
23
|
# 1) Actors and places
|
|
22
24
|
# --------------------
|
|
@@ -43,10 +43,9 @@
|
|
|
43
43
|
{
|
|
44
44
|
:Case :selectedPath :pathB; :trustGate :noEnumeratedPathIsLower; :notes :riskCanOutweighRawCost.
|
|
45
45
|
:pathB :routeText ?Route; :rawCost ?Raw; :riskSum ?Risk; :score ?Score; :edgeCount ?Edges.
|
|
46
|
-
("
|
|
46
|
+
("# dijkstra-risk-path\n\n## Source files\n\n- [N3 rules](../dijkstra-risk-path.n3)\n- [Input TriG](../input/dijkstra-risk-path.trig)\n\n## Answer\nselected path : %s\nraw cost : %.2f\nrisk sum : %.2f\nrisk-adjusted score : %.2f\nedges in selected path : %d\n\n## Explanation\nEach edge contributes its delivery cost plus the configured risk penalty. The N3 source enumerates the small graph's simple route candidates and compares the selected route against each alternative score. The selected route balances cost and risk through DepotB and LabD, while the apparently cheaper DepotC path is rejected once risk is priced in." ?Route ?Raw ?Risk ?Score ?Edges) string:format ?Block.
|
|
47
47
|
} => {
|
|
48
48
|
:dijkstraRiskPath log:outputString ?Block.
|
|
49
49
|
:dijkstraRiskPath :selects :pathB.
|
|
50
50
|
}.
|
|
51
51
|
|
|
52
|
-
{ :dijkstraRiskPath :selects ?Path } log:query { :dijkstraRiskPath :selects ?Path }.
|
package/examples/easter.n3
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
16
16
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
17
17
|
|
|
18
|
+
:000_md_title log:outputString "# easter\n\n## Source files\n\n- [N3 rules](../easter.n3)\n\n" .
|
|
19
|
+
|
|
18
20
|
<> rdfs:comment """This ARC-style version keeps the Gregorian computus from the original example and reports, for each sample year, an Answer, a Reason Why, and a set of independent Checks.""" .
|
|
19
21
|
|
|
20
22
|
:y2026 a :Case; :year 2026 .
|
|
@@ -194,14 +196,14 @@
|
|
|
194
196
|
:check1 ?C1; :check2 ?C2; :check3 ?C3; :check4 ?C4; :check5 ?C5.
|
|
195
197
|
(
|
|
196
198
|
"Easter — Gregorian computus\n\n"
|
|
197
|
-
"
|
|
198
|
-
"Answer\n"
|
|
199
|
+
"## " ?Y "\n"
|
|
200
|
+
"## Answer\n"
|
|
199
201
|
"Easter Sunday falls on " ?Month " " ?Day ".\n\n"
|
|
200
|
-
"Reason Why\n"
|
|
202
|
+
"## Reason Why\n"
|
|
201
203
|
"For year " ?Y ", the computus gives j=" ?J ", k=" ?K ", q=" ?Q
|
|
202
204
|
", r=" ?R ", v=" ?V ", and final month/day numbers x=" ?X ", z=" ?Z ". "
|
|
203
205
|
"Because the day is z+1, the resulting Easter date is " ?Month " " ?Day ".\n\n"
|
|
204
|
-
"Check\n"
|
|
206
|
+
"## Check\n"
|
|
205
207
|
?C1 ?C2 ?C3 ?C4 ?C5
|
|
206
208
|
) string:concatenation ?Block. }
|
|
207
209
|
=>
|
|
@@ -34,10 +34,9 @@
|
|
|
34
34
|
:Shipment :id ?ShipmentId; :payloadTons ?PayloadTons.
|
|
35
35
|
:Envelope :rawDataExported ?Raw; :payloadDigest ?Digest; :signatureKey ?Key; :signature ?Signature.
|
|
36
36
|
:Policy :fuelIndexThreshold ?Threshold; :signatureAlgorithm ?Algorithm.
|
|
37
|
-
("
|
|
37
|
+
("# eco-route-insight\n\n## Source files\n\n- [N3 rules](../eco-route-insight.n3)\n- [Input TriG](../input/eco-route-insight.trig)\n\n## Answer\ninsight status : issue\nshow eco banner : %s\naudience : %s\nallowed use : %s\nsuggested route : %s\ncurrent fuel index : %.2f\nsuggested fuel index : %.2f\nestimated saving : %.2f\nexpires at : %s\nraw data exported : %s\nsignature algorithm : %s\npayload digest : %s\nsignature key : %s\nsignature : %s\n\n## Explanation\nThe current route uses fuel index = distanceKm × (payloadKg / 1000) × gradientFactor. For %s, Current urban route gives %.2f × %.2f × %.2f = %.2f. The policy threshold is %.2f, so a local eco banner is justified. The selected alternative %s gives %.2f × %.2f × %.2f = %.2f, saving %.2f while staying within the ETA delay limit. The signed envelope exposes audience, use, expiry, route suggestion, and compact fuel indices, but not raw payload, GPS trace, driver behavior, or raw telemetry." ?Show ?Audience ?Use ?AltId ?CurrentIndex ?AltIndex ?Saving ?Expiry ?Raw ?Algorithm ?Digest ?Key ?Signature ?ShipmentId ?CurrentDistance ?PayloadTons ?CurrentGradient ?CurrentIndex ?Threshold ?AltId ?AltDistance ?PayloadTons ?AltGradient ?AltIndex ?Saving) string:format ?Block.
|
|
38
38
|
} => {
|
|
39
39
|
:ecoRouteInsight log:outputString ?Block.
|
|
40
40
|
:ecoRouteInsight :issues :Insight.
|
|
41
41
|
}.
|
|
42
42
|
|
|
43
|
-
{ :ecoRouteInsight :issues ?Insight } log:query { :ecoRouteInsight :issues ?Insight }.
|
package/examples/flandor.n3
CHANGED
|
@@ -371,7 +371,7 @@
|
|
|
371
371
|
# ARC rendering through log:outputString
|
|
372
372
|
# --------------------------------------
|
|
373
373
|
|
|
374
|
-
:out01 log:outputString "
|
|
374
|
+
:out01 log:outputString "# flandor\n\n## Source files\n\n- [N3 rules](../flandor.n3)\n\n## Answer\n" .
|
|
375
375
|
:out02 log:outputString "Name: Flandor\n" .
|
|
376
376
|
:out03 log:outputString "Region: Flanders\n" .
|
|
377
377
|
:out04 log:outputString "Metric: regional_retooling_priority\n" .
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
("Envelope HMAC-SHA-256: %s\n" ?sig) string:format ?line .
|
|
393
393
|
} => { :out10 log:outputString ?line . } .
|
|
394
394
|
|
|
395
|
-
:out11 log:outputString "\n
|
|
395
|
+
:out11 log:outputString "\n## Reason Why\n" .
|
|
396
396
|
:out12 log:outputString "Export weakness is active because at least one cluster has exportOrdersIndex < 90 (Antwerp chemicals=84, Ghent manufacturing=87).\n" .
|
|
397
397
|
:out13 log:outputString "Skills strain is active because technical vacancy rate is 4.6% (threshold > 3.9%).\n" .
|
|
398
398
|
:out14 log:outputString "Grid stress is active because congestion hours = 19 (threshold > 11).\n" .
|
|
@@ -400,7 +400,7 @@
|
|
|
400
400
|
:out16 log:outputString "Selected package \"Flandor Retooling Pulse\" covers export=true, skills=true, grid=true, cost=€120M.\n" .
|
|
401
401
|
:out17 log:outputString "Usage is permitted only for purpose \"regional_stabilization\" and the envelope expires at 2026-04-08T19:00:00+00:00.\n" .
|
|
402
402
|
|
|
403
|
-
:out18 log:outputString "\n
|
|
403
|
+
:out18 log:outputString "\n## Check\n" .
|
|
404
404
|
{ :check :payloadHashMatches true . }
|
|
405
405
|
=> { :out19 log:outputString "- PASS: payload hash matches\n" . } .
|
|
406
406
|
{ :check :hmacMatches true . }
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
|
|
15
15
|
@prefix : <https://example.org/french-cities#>.
|
|
16
16
|
|
|
17
|
+
:000_md_title log:outputString "# french-cities\n\n## Source files\n\n- [N3 rules](../french-cities.n3)\n\n" .
|
|
18
|
+
|
|
17
19
|
# ---------------------------------------------------------------------------
|
|
18
20
|
# Facts
|
|
19
21
|
# ---------------------------------------------------------------------------
|
|
@@ -128,16 +130,16 @@
|
|
|
128
130
|
:check :c1 ?C1; :c2 ?C2; :c3 ?C3; :c4 ?C4.
|
|
129
131
|
(
|
|
130
132
|
"French cities — ARC style graph reachability\n\n"
|
|
131
|
-
"Answer\n"
|
|
133
|
+
"## Answer\n"
|
|
132
134
|
?Outcome "\n\n"
|
|
133
|
-
"Reason Why\n"
|
|
135
|
+
"## Reason Why\n"
|
|
134
136
|
"The original example says that every :oneway link is also a :path, and that :path is transitive. "
|
|
135
137
|
"So once Angers can reach Nantes directly, longer routes can be built by chaining earlier links. "
|
|
136
138
|
?Angers " reaches Nantes directly. "
|
|
137
139
|
?LeMans " reaches Nantes through Angers. "
|
|
138
140
|
?Chartres " reaches Nantes through Le Mans and Angers. "
|
|
139
141
|
?Paris " reaches Nantes through Chartres, Le Mans, and Angers.\n\n"
|
|
140
|
-
"Check\n"
|
|
142
|
+
"## Check\n"
|
|
141
143
|
"C1 " ?C1 "\n"
|
|
142
144
|
"C2 " ?C2 "\n"
|
|
143
145
|
"C3 " ?C3 "\n"
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
@prefix list: <http://www.w3.org/2000/10/swap/list#> .
|
|
18
18
|
@prefix string: <http://www.w3.org/2000/10/swap/string#> .
|
|
19
19
|
|
|
20
|
+
:000_md_title log:outputString "# fundamental-theorem-arithmetic\n\n## Source files\n\n- [N3 rules](../fundamental-theorem-arithmetic.n3)\n\n" .
|
|
21
|
+
|
|
20
22
|
# --------------
|
|
21
23
|
# Editable input
|
|
22
24
|
# --------------
|
|
@@ -222,17 +224,17 @@ true .
|
|
|
222
224
|
:Check :c6 ?C6.
|
|
223
225
|
(
|
|
224
226
|
"Fundamental Theorem of Arithmetic — ARC-style\n\n"
|
|
225
|
-
"Answer\n"
|
|
227
|
+
"## Answer\n"
|
|
226
228
|
"For n = " ?N ", the prime factors are " ?Flat ", the prime-power form is " ?PrimePower
|
|
227
229
|
", and the product of these factors is " ?N " with " ?Distinct " distinct primes.\n\n"
|
|
228
|
-
"Reason Why\n"
|
|
230
|
+
"## Reason Why\n"
|
|
229
231
|
"Existence in this run comes from repeated smallest-divisor decomposition: " ?N
|
|
230
232
|
" factors as " ?Flat ". Each distinct factor is prime. "
|
|
231
233
|
"For uniqueness up to order, the reverse traversal gives " ?LargestFlat
|
|
232
234
|
", and both traversals sort to the same multiset of primes. "
|
|
233
235
|
"So this concrete case exhibits the Fundamental Theorem of Arithmetic for " ?N
|
|
234
236
|
": a prime factorization exists and is unique up to order. The extreme prime factors are " ?Smallest " and " ?Largest ".\n\n"
|
|
235
|
-
"Check\n"
|
|
237
|
+
"## Check\n"
|
|
236
238
|
"C1 " ?C1 "\n"
|
|
237
239
|
"C2 " ?C2 "\n"
|
|
238
240
|
"C3 " ?C3 "\n"
|
|
@@ -23,10 +23,9 @@
|
|
|
23
23
|
:Run :capacity ?Capacity; :localSearchStopsAt :FinalLocal.
|
|
24
24
|
:FinalLocal :genome ?Genome; :selectedItems ?Items; :weight ?Weight; :value ?Value; :fitness ?Fitness; :generationsEvaluated ?Generations.
|
|
25
25
|
:ExhaustiveOptimum :genome ?OptGenome; :value ?OptValue.
|
|
26
|
-
("
|
|
26
|
+
("# genetic-knapsack-selection\n\n## Source files\n\n- [N3 rules](../genetic-knapsack-selection.n3)\n- [Input TriG](../input/genetic-knapsack-selection.trig)\n\n## Answer\nfinal genome : %s\nselected items : %s\nweight : %d / %d\nvalue : %d\nfitness : %d\ngenerations evaluated : %d\nexhaustive optimum value : %d at genome %s\n\n## Explanation\nEach genome bit says whether the corresponding item is selected for the knapsack. Feasible candidates get fitness 1000000 minus value, so higher value means lower fitness; overweight candidates are penalized above every feasible candidate. The N3 source records the deterministic local-search result and validates that the final genome respects capacity and has no strictly better one-bit neighbor. For transparency, an exhaustive enumeration also records the global best feasible value, showing this is a local mutation search rather than a global-optimality claim." ?Genome ?Items ?Weight ?Capacity ?Value ?Fitness ?Generations ?OptValue ?OptGenome) string:format ?Block.
|
|
27
27
|
} => {
|
|
28
28
|
:geneticKnapsackSelection log:outputString ?Block.
|
|
29
29
|
:geneticKnapsackSelection :selects :FinalLocal.
|
|
30
30
|
}.
|
|
31
31
|
|
|
32
|
-
{ :geneticKnapsackSelection :selects ?Candidate } log:query { :geneticKnapsackSelection :selects ?Candidate }.
|
package/examples/gps.n3
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
@prefix gps: <https://example.org/gps#>.
|
|
16
16
|
@prefix : <https://example.org/gps-case#>.
|
|
17
17
|
|
|
18
|
+
:000_md_title log:outputString "# gps\n\n## Source files\n\n- [N3 rules](../gps.n3)\n\n" .
|
|
19
|
+
|
|
18
20
|
# -----
|
|
19
21
|
# Facts
|
|
20
22
|
# -----
|
|
@@ -105,17 +107,17 @@
|
|
|
105
107
|
:routeViaKortrijk :label ?AltLabel; :duration ?AltDur; :cost ?AltCost; :belief ?AltBel; :comfort ?AltComf.
|
|
106
108
|
(
|
|
107
109
|
"GPS — Goal driven route planning\n\n"
|
|
108
|
-
"Answer\n"
|
|
110
|
+
"## Answer\n"
|
|
109
111
|
?Outcome "\n"
|
|
110
112
|
"Recommended route: " ?BestLabel "\n\n"
|
|
111
|
-
"Reason Why\n"
|
|
113
|
+
"## Reason Why\n"
|
|
112
114
|
"From Gent to Oostende, the planner found two routes in this small map. "
|
|
113
115
|
"The direct route (" ?BestLabel ") takes " ?BestDur " seconds at cost " ?BestCost
|
|
114
116
|
", with belief " ?BestBel " and comfort " ?BestComf ". "
|
|
115
117
|
"The alternative (" ?AltLabel ") takes " ?AltDur " seconds at cost " ?AltCost
|
|
116
118
|
", with belief " ?AltBel " and comfort " ?AltComf ". "
|
|
117
119
|
"So the direct route is faster, cheaper, more reliable, and slightly more comfortable.\n\n"
|
|
118
|
-
"Check\n"
|
|
120
|
+
"## Check\n"
|
|
119
121
|
"C1 OK - the direct Gent → Brugge → Oostende route was derived.\n"
|
|
120
122
|
"C2 OK - the alternative Gent → Kortrijk → Brugge → Oostende route was derived.\n"
|
|
121
123
|
"C3 OK - the recommended route is faster than the alternative.\n"
|
package/examples/harborsmr.n3
CHANGED
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
@prefix string: <http://www.w3.org/2000/10/swap/string#> .
|
|
23
23
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
24
24
|
|
|
25
|
+
:000_md_title log:outputString "# harborsmr\n\n## Source files\n\n- [N3 rules](../harborsmr.n3)\n\n" .
|
|
26
|
+
|
|
25
27
|
# -----
|
|
26
28
|
# Facts
|
|
27
29
|
# -----
|
|
@@ -184,14 +186,14 @@
|
|
|
184
186
|
=> {
|
|
185
187
|
:out log:outputString """HarborSMR — bounded flexible-export insight for port electrolysis
|
|
186
188
|
|
|
187
|
-
Answer
|
|
189
|
+
## Answer
|
|
188
190
|
PERMIT
|
|
189
191
|
The port hydrogen hub may use the SMR insight to run PEM electrolyzer train 2 at 16 MW from 14:00 to 18:00.
|
|
190
192
|
|
|
191
|
-
Reason Why
|
|
193
|
+
## Reason Why
|
|
192
194
|
The operator shares only a narrow, expiring insight that a temporary 18 MW flexible-export window is available. The request is for electrolysis dispatch only, the requested 16 MW fits inside the permitted window, safety margins are above threshold, no outage blocks the window, and the policy forbids redistribution for market resale. Raw reactor telemetry stays local.
|
|
193
195
|
|
|
194
|
-
Check
|
|
196
|
+
## Check
|
|
195
197
|
C1 OK - reserve margin exceeds the dispatch threshold
|
|
196
198
|
C2 OK - cooling margin exceeds the dispatch threshold
|
|
197
199
|
C3 OK - no planned outage blocks the window
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
@prefix ex: <http://example.org/ontology-question-generation/domain#> .
|
|
2
|
+
@prefix see: <https://eyereasoner.github.io/eye/reasoning#> .
|
|
3
|
+
@prefix in: <http://example.org/eyeling/input#> .
|
|
4
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
5
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
6
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
7
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
8
|
+
|
|
9
|
+
# A tiny ontology containing common OWL/RDFS patterns from which
|
|
10
|
+
# competency questions can be generated.
|
|
11
|
+
|
|
12
|
+
ex:Person a owl:Class ;
|
|
13
|
+
rdfs:label "person" .
|
|
14
|
+
|
|
15
|
+
ex:Organization a owl:Class ;
|
|
16
|
+
rdfs:label "organization" .
|
|
17
|
+
|
|
18
|
+
ex:Project a owl:Class ;
|
|
19
|
+
rdfs:label "project" .
|
|
20
|
+
|
|
21
|
+
ex:Employee a owl:Class ;
|
|
22
|
+
rdfs:label "employee" ;
|
|
23
|
+
rdfs:subClassOf ex:Person ;
|
|
24
|
+
rdfs:subClassOf [
|
|
25
|
+
a owl:Restriction ;
|
|
26
|
+
owl:onProperty ex:worksFor ;
|
|
27
|
+
owl:someValuesFrom ex:Organization
|
|
28
|
+
] ;
|
|
29
|
+
rdfs:subClassOf [
|
|
30
|
+
a owl:Restriction ;
|
|
31
|
+
owl:onProperty ex:assignedTo ;
|
|
32
|
+
owl:minCardinality 1
|
|
33
|
+
] .
|
|
34
|
+
|
|
35
|
+
ex:worksFor a owl:ObjectProperty ;
|
|
36
|
+
rdfs:label "works for" ;
|
|
37
|
+
rdfs:domain ex:Person ;
|
|
38
|
+
rdfs:range ex:Organization ;
|
|
39
|
+
owl:inverseOf ex:employs .
|
|
40
|
+
|
|
41
|
+
ex:employs a owl:ObjectProperty ;
|
|
42
|
+
rdfs:label "employs" ;
|
|
43
|
+
rdfs:domain ex:Organization ;
|
|
44
|
+
rdfs:range ex:Person .
|
|
45
|
+
|
|
46
|
+
ex:assignedTo a owl:ObjectProperty ;
|
|
47
|
+
rdfs:label "assigned to" ;
|
|
48
|
+
rdfs:domain ex:Employee ;
|
|
49
|
+
rdfs:range ex:Project .
|
|
50
|
+
|
|
51
|
+
ex:birthDate a owl:DatatypeProperty, owl:FunctionalProperty ;
|
|
52
|
+
rdfs:label "birth date" ;
|
|
53
|
+
rdfs:domain ex:Person ;
|
|
54
|
+
rdfs:range xsd:date .
|
|
55
|
+
|
|
56
|
+
ex:legalName a owl:DatatypeProperty ;
|
|
57
|
+
rdfs:label "legal name" ;
|
|
58
|
+
rdfs:domain ex:Organization ;
|
|
59
|
+
rdfs:range xsd:string .
|
|
60
|
+
|
|
61
|
+
ex:Organization owl:disjointWith ex:Person .
|
|
62
|
+
|
|
63
|
+
ex:principalEmployer rdfs:subPropertyOf ex:worksFor ;
|
|
64
|
+
rdfs:label "principal employer" .
|
|
65
|
+
|
|
66
|
+
xsd:date a rdfs:Datatype ;
|
|
67
|
+
rdfs:label "date" .
|
|
68
|
+
|
|
69
|
+
xsd:string a rdfs:Datatype ;
|
|
70
|
+
rdfs:label "string" .
|
|
71
|
+
|
|
72
|
+
in:metadata {
|
|
73
|
+
in:run a see:InputDataset .
|
|
74
|
+
in:run see:name "ontology-question-generation" .
|
|
75
|
+
in:run see:title "Ontology Question Generation" .
|
|
76
|
+
in:run see:sourceFile "examples/ontology-question-generation.n3" .
|
|
77
|
+
in:run see:description "Small OWL/RDFS ontology used to generate Markdown competency questions from ontological patterns." .
|
|
78
|
+
in:run see:compiler "Eyeling RDF/TriG input sidecar" .
|
|
79
|
+
}
|