eyeling 1.24.5 → 1.24.7

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.
Files changed (294) hide show
  1. package/HANDBOOK.md +0 -99
  2. package/README.md +2 -2
  3. package/dist/browser/eyeling.browser.js +6 -0
  4. package/{see/examples/n3 → examples}/annotation.n3 +1 -1
  5. package/{see/examples/n3/backward_recursion.n3 → examples/backward-recursion.n3} +0 -2
  6. package/examples/collection.n3 +3 -0
  7. package/examples/context-association.n3 +59 -0
  8. package/{see/examples/n3/dijkstra_risk_path.n3 → examples/dijkstra-risk-path.n3} +3 -18
  9. package/{see/examples/n3/eco_route_insight.n3 → examples/eco-route-insight.n3} +2 -47
  10. package/{see/examples/n3/genetic_knapsack_selection.n3 → examples/genetic-knapsack-selection.n3} +2 -24
  11. package/{see/examples → examples}/input/annotation.trig +3 -3
  12. package/{see/examples/input/backward_recursion.trig → examples/input/backward-recursion.trig} +2 -2
  13. package/{see/examples/input/builtin_coverage.trig → examples/input/builtin-coverage.trig} +2 -2
  14. package/{see/examples → examples}/input/collection.trig +3 -3
  15. package/examples/input/context-association.trig +35 -0
  16. package/{see/examples/input/dijkstra_risk_path.trig → examples/input/dijkstra-risk-path.trig} +4 -4
  17. package/{see/examples/input/eco_route_insight.trig → examples/input/eco-route-insight.trig} +4 -4
  18. package/{see/examples/input/genetic_knapsack_selection.trig → examples/input/genetic-knapsack-selection.trig} +4 -4
  19. package/{see/examples/input/rc_discharge_envelope.trig → examples/input/rc-discharge-envelope.trig} +4 -4
  20. package/{see/examples/input/rdf_dataset.trig → examples/input/rdf-dataset.trig} +4 -4
  21. package/{see/examples/input/rdf_message_flow.trig → examples/input/rdf-message-flow.trig} +3 -3
  22. package/{see/examples/input/rdf_messages.trig → examples/input/rdf-messages.trig} +4 -4
  23. package/{see/examples/input/school_placement_audit.trig → examples/input/school-placement-audit.trig} +4 -4
  24. package/{see/examples/input/smoke_arithmetic.trig → examples/input/smoke-arithmetic.trig} +3 -3
  25. package/{see/examples/input/triple_terms.trig → examples/input/triple-terms.trig} +3 -3
  26. package/examples/output/annotation.n3 +0 -0
  27. package/examples/output/backward-recursion.n3 +4 -0
  28. package/examples/output/builtin-coverage.n3 +0 -0
  29. package/examples/output/collection.n3 +0 -0
  30. package/examples/output/context-association.n3 +9 -0
  31. package/examples/output/dijkstra-risk-path.n3 +3 -0
  32. package/examples/output/eco-route-insight.n3 +3 -0
  33. package/examples/output/genetic-knapsack-selection.n3 +3 -0
  34. package/examples/output/rc-discharge-envelope.n3 +9 -0
  35. package/examples/output/rc-discharge-envelope.txt +9 -0
  36. package/examples/output/rdf-dataset.n3 +5 -0
  37. package/examples/output/rdf-message-flow.n3 +7 -0
  38. package/examples/output/rdf-messages.n3 +7 -0
  39. package/examples/output/school-placement-audit.n3 +3 -0
  40. package/examples/output/smoke-arithmetic.n3 +5 -0
  41. package/examples/output/smoke-arithmetic.txt +5 -0
  42. package/examples/output/triple-terms.n3 +5 -0
  43. package/{see/examples/n3/rc_discharge_envelope.n3 → examples/rc-discharge-envelope.n3} +2 -15
  44. package/{see/examples/n3/rdf_dataset.n3 → examples/rdf-dataset.n3} +2 -11
  45. package/{see/examples/n3/rdf_message_flow.n3 → examples/rdf-message-flow.n3} +9 -75
  46. package/{see/examples/n3/rdf_messages.n3 → examples/rdf-messages.n3} +6 -43
  47. package/{see/examples/n3/school_placement_audit.n3 → examples/school-placement-audit.n3} +2 -14
  48. package/{see/examples/n3/smoke_arithmetic.n3 → examples/smoke-arithmetic.n3} +3 -5
  49. package/{see/examples/n3/triple_terms.n3 → examples/triple-terms.n3} +1 -4
  50. package/eyeling.js +6 -0
  51. package/lib/builtins.js +6 -0
  52. package/package.json +4 -7
  53. package/test/api.test.js +25 -8
  54. package/test/examples.test.js +22 -2
  55. package/test/package.test.js +16 -2
  56. package/see/README.md +0 -149
  57. package/see/examples/_see.js +0 -249
  58. package/see/examples/age.js +0 -1459
  59. package/see/examples/annotation.js +0 -1320
  60. package/see/examples/backward.js +0 -1405
  61. package/see/examples/backward_recursion.js +0 -1504
  62. package/see/examples/bayes_diagnosis.js +0 -2883
  63. package/see/examples/bayes_therapy.js +0 -4152
  64. package/see/examples/bmi.js +0 -3038
  65. package/see/examples/builtin_coverage.js +0 -2524
  66. package/see/examples/collection.js +0 -1320
  67. package/see/examples/complex.js +0 -3762
  68. package/see/examples/complex_matrix_stability.js +0 -2973
  69. package/see/examples/composition_of_injective_functions_is_injective.js +0 -2170
  70. package/see/examples/control_system.js +0 -1918
  71. package/see/examples/crypto_builtins_tests.js +0 -1489
  72. package/see/examples/delfour.js +0 -3174
  73. package/see/examples/digital_product_passport.js +0 -2856
  74. package/see/examples/dijkstra.js +0 -2070
  75. package/see/examples/dijkstra_risk_path.js +0 -1874
  76. package/see/examples/doc/age.md +0 -27
  77. package/see/examples/doc/annotation.md +0 -24
  78. package/see/examples/doc/backward.md +0 -26
  79. package/see/examples/doc/backward_recursion.md +0 -26
  80. package/see/examples/doc/bayes_diagnosis.md +0 -41
  81. package/see/examples/doc/bayes_therapy.md +0 -40
  82. package/see/examples/doc/bmi.md +0 -38
  83. package/see/examples/doc/builtin_coverage.md +0 -53
  84. package/see/examples/doc/collection.md +0 -24
  85. package/see/examples/doc/complex.md +0 -38
  86. package/see/examples/doc/complex_matrix_stability.md +0 -35
  87. package/see/examples/doc/composition_of_injective_functions_is_injective.md +0 -24
  88. package/see/examples/doc/control_system.md +0 -32
  89. package/see/examples/doc/crypto_builtins_tests.md +0 -27
  90. package/see/examples/doc/delfour.md +0 -37
  91. package/see/examples/doc/digital_product_passport.md +0 -36
  92. package/see/examples/doc/dijkstra.md +0 -28
  93. package/see/examples/doc/dijkstra_risk_path.md +0 -30
  94. package/see/examples/doc/dog.md +0 -28
  95. package/see/examples/doc/eco_route_insight.md +0 -33
  96. package/see/examples/doc/equals.md +0 -26
  97. package/see/examples/doc/equivalence_classes_overlap_implies_same_class.md +0 -24
  98. package/see/examples/doc/euler_identity.md +0 -39
  99. package/see/examples/doc/ev_roundtrip_planner.md +0 -32
  100. package/see/examples/doc/existential_rule.md +0 -24
  101. package/see/examples/doc/expression_eval.md +0 -26
  102. package/see/examples/doc/family_cousins.md +0 -24
  103. package/see/examples/doc/fastpow.md +0 -29
  104. package/see/examples/doc/fibonacci.md +0 -28
  105. package/see/examples/doc/french_cities.md +0 -28
  106. package/see/examples/doc/fundamental_theorem_arithmetic.md +0 -36
  107. package/see/examples/doc/genetic_knapsack_selection.md +0 -29
  108. package/see/examples/doc/goldbach_1000.md +0 -31
  109. package/see/examples/doc/good_cobbler.md +0 -27
  110. package/see/examples/doc/gps.md +0 -35
  111. package/see/examples/doc/gray_code_counter.md +0 -31
  112. package/see/examples/doc/greatest_lower_bound_uniqueness.md +0 -24
  113. package/see/examples/doc/group_inverse_uniqueness.md +0 -24
  114. package/see/examples/doc/hadamard_approx.md +0 -32
  115. package/see/examples/doc/hanoi.md +0 -26
  116. package/see/examples/doc/odrl_dpv_risk_ranked.md +0 -57
  117. package/see/examples/doc/path_discovery.md +0 -33
  118. package/see/examples/doc/rc_discharge_envelope.md +0 -33
  119. package/see/examples/doc/rdf_dataset.md +0 -26
  120. package/see/examples/doc/rdf_message_flow.md +0 -35
  121. package/see/examples/doc/rdf_messages.md +0 -37
  122. package/see/examples/doc/school_placement_audit.md +0 -31
  123. package/see/examples/doc/smoke_arithmetic.md +0 -31
  124. package/see/examples/doc/socrates.md +0 -24
  125. package/see/examples/doc/triple_terms.md +0 -26
  126. package/see/examples/doc/wind_turbine.md +0 -37
  127. package/see/examples/doc/witch.md +0 -28
  128. package/see/examples/dog.js +0 -1436
  129. package/see/examples/eco_route_insight.js +0 -2110
  130. package/see/examples/equals.js +0 -1363
  131. package/see/examples/equivalence_classes_overlap_implies_same_class.js +0 -1792
  132. package/see/examples/euler_identity.js +0 -2038
  133. package/see/examples/ev_roundtrip_planner.js +0 -2562
  134. package/see/examples/existential_rule.js +0 -1363
  135. package/see/examples/expression_eval.js +0 -1798
  136. package/see/examples/family_cousins.js +0 -1586
  137. package/see/examples/fastpow.js +0 -2207
  138. package/see/examples/fibonacci.js +0 -1594
  139. package/see/examples/french_cities.js +0 -1492
  140. package/see/examples/fundamental_theorem_arithmetic.js +0 -2106
  141. package/see/examples/genetic_knapsack_selection.js +0 -1743
  142. package/see/examples/goldbach_1000.js +0 -1798
  143. package/see/examples/good_cobbler.js +0 -1396
  144. package/see/examples/gps.js +0 -2813
  145. package/see/examples/gray_code_counter.js +0 -1641
  146. package/see/examples/greatest_lower_bound_uniqueness.js +0 -1918
  147. package/see/examples/group_inverse_uniqueness.js +0 -1897
  148. package/see/examples/hadamard_approx.js +0 -4417
  149. package/see/examples/hanoi.js +0 -1625
  150. package/see/examples/input/age.trig +0 -27
  151. package/see/examples/input/backward.trig +0 -25
  152. package/see/examples/input/bayes_diagnosis.trig +0 -111
  153. package/see/examples/input/bayes_therapy.trig +0 -130
  154. package/see/examples/input/bmi.trig +0 -28
  155. package/see/examples/input/complex.trig +0 -26
  156. package/see/examples/input/complex_matrix_stability.trig +0 -65
  157. package/see/examples/input/composition_of_injective_functions_is_injective.trig +0 -35
  158. package/see/examples/input/control_system.trig +0 -31
  159. package/see/examples/input/crypto_builtins_tests.trig +0 -25
  160. package/see/examples/input/delfour.trig +0 -90
  161. package/see/examples/input/digital_product_passport.trig +0 -116
  162. package/see/examples/input/dijkstra.trig +0 -34
  163. package/see/examples/input/dog.trig +0 -31
  164. package/see/examples/input/equals.trig +0 -25
  165. package/see/examples/input/equivalence_classes_overlap_implies_same_class.trig +0 -28
  166. package/see/examples/input/euler_identity.trig +0 -34
  167. package/see/examples/input/ev_roundtrip_planner.trig +0 -90
  168. package/see/examples/input/existential_rule.trig +0 -26
  169. package/see/examples/input/expression_eval.trig +0 -41
  170. package/see/examples/input/family_cousins.trig +0 -39
  171. package/see/examples/input/fastpow.trig +0 -25
  172. package/see/examples/input/fibonacci.trig +0 -51
  173. package/see/examples/input/french_cities.trig +0 -38
  174. package/see/examples/input/fundamental_theorem_arithmetic.trig +0 -42
  175. package/see/examples/input/goldbach_1000.trig +0 -53
  176. package/see/examples/input/good_cobbler.trig +0 -24
  177. package/see/examples/input/gps.trig +0 -35
  178. package/see/examples/input/gray_code_counter.trig +0 -33
  179. package/see/examples/input/greatest_lower_bound_uniqueness.trig +0 -29
  180. package/see/examples/input/group_inverse_uniqueness.trig +0 -29
  181. package/see/examples/input/hadamard_approx.trig +0 -32
  182. package/see/examples/input/hanoi.trig +0 -26
  183. package/see/examples/input/odrl_dpv_risk_ranked.trig +0 -107
  184. package/see/examples/input/path-discovery.trig +0 -96448
  185. package/see/examples/input/path_discovery.trig +0 -29
  186. package/see/examples/input/socrates.trig +0 -26
  187. package/see/examples/input/wind_turbine.trig +0 -48
  188. package/see/examples/input/witch.trig +0 -26
  189. package/see/examples/n3/age.n3 +0 -28
  190. package/see/examples/n3/backward.n3 +0 -22
  191. package/see/examples/n3/bayes_diagnosis.n3 +0 -122
  192. package/see/examples/n3/bayes_therapy.n3 +0 -149
  193. package/see/examples/n3/bmi.n3 +0 -145
  194. package/see/examples/n3/collection.n3 +0 -3
  195. package/see/examples/n3/complex.n3 +0 -140
  196. package/see/examples/n3/complex_matrix_stability.n3 +0 -113
  197. package/see/examples/n3/composition_of_injective_functions_is_injective.n3 +0 -27
  198. package/see/examples/n3/control_system.n3 +0 -59
  199. package/see/examples/n3/crypto_builtins_tests.n3 +0 -18
  200. package/see/examples/n3/delfour.n3 +0 -167
  201. package/see/examples/n3/digital_product_passport.n3 +0 -156
  202. package/see/examples/n3/dijkstra.n3 +0 -46
  203. package/see/examples/n3/dog.n3 +0 -20
  204. package/see/examples/n3/equals.n3 +0 -11
  205. package/see/examples/n3/equivalence_classes_overlap_implies_same_class.n3 +0 -19
  206. package/see/examples/n3/euler_identity.n3 +0 -41
  207. package/see/examples/n3/ev_roundtrip_planner.n3 +0 -82
  208. package/see/examples/n3/existential_rule.n3 +0 -10
  209. package/see/examples/n3/expression_eval.n3 +0 -21
  210. package/see/examples/n3/family_cousins.n3 +0 -62
  211. package/see/examples/n3/fastpow.n3 +0 -56
  212. package/see/examples/n3/fibonacci.n3 +0 -44
  213. package/see/examples/n3/french_cities.n3 +0 -28
  214. package/see/examples/n3/fundamental_theorem_arithmetic.n3 +0 -84
  215. package/see/examples/n3/goldbach_1000.n3 +0 -66
  216. package/see/examples/n3/good_cobbler.n3 +0 -10
  217. package/see/examples/n3/gps.n3 +0 -70
  218. package/see/examples/n3/gray_code_counter.n3 +0 -53
  219. package/see/examples/n3/greatest_lower_bound_uniqueness.n3 +0 -20
  220. package/see/examples/n3/group_inverse_uniqueness.n3 +0 -19
  221. package/see/examples/n3/hadamard_approx.n3 +0 -43
  222. package/see/examples/n3/hanoi.n3 +0 -16
  223. package/see/examples/n3/odrl_dpv_risk_ranked.n3 +0 -460
  224. package/see/examples/n3/path_discovery.n3 +0 -43
  225. package/see/examples/n3/socrates.n3 +0 -21
  226. package/see/examples/n3/wind_turbine.n3 +0 -85
  227. package/see/examples/n3/witch.n3 +0 -30
  228. package/see/examples/odrl_dpv_risk_ranked.js +0 -5128
  229. package/see/examples/output/age.md +0 -48
  230. package/see/examples/output/annotation.md +0 -43
  231. package/see/examples/output/backward.md +0 -50
  232. package/see/examples/output/backward_recursion.md +0 -54
  233. package/see/examples/output/bayes_diagnosis.md +0 -103
  234. package/see/examples/output/bayes_therapy.md +0 -84
  235. package/see/examples/output/bmi.md +0 -164
  236. package/see/examples/output/builtin_coverage.md +0 -99
  237. package/see/examples/output/collection.md +0 -44
  238. package/see/examples/output/complex.md +0 -61
  239. package/see/examples/output/complex_matrix_stability.md +0 -55
  240. package/see/examples/output/composition_of_injective_functions_is_injective.md +0 -62
  241. package/see/examples/output/control_system.md +0 -61
  242. package/see/examples/output/crypto_builtins_tests.md +0 -68
  243. package/see/examples/output/delfour.md +0 -100
  244. package/see/examples/output/digital_product_passport.md +0 -100
  245. package/see/examples/output/dijkstra.md +0 -74
  246. package/see/examples/output/dijkstra_risk_path.md +0 -76
  247. package/see/examples/output/dog.md +0 -50
  248. package/see/examples/output/eco_route_insight.md +0 -88
  249. package/see/examples/output/equals.md +0 -50
  250. package/see/examples/output/equivalence_classes_overlap_implies_same_class.md +0 -86
  251. package/see/examples/output/euler_identity.md +0 -73
  252. package/see/examples/output/ev_roundtrip_planner.md +0 -79
  253. package/see/examples/output/existential_rule.md +0 -54
  254. package/see/examples/output/expression_eval.md +0 -50
  255. package/see/examples/output/family_cousins.md +0 -187
  256. package/see/examples/output/fastpow.md +0 -36
  257. package/see/examples/output/fibonacci.md +0 -53
  258. package/see/examples/output/french_cities.md +0 -70
  259. package/see/examples/output/fundamental_theorem_arithmetic.md +0 -101
  260. package/see/examples/output/genetic_knapsack_selection.md +0 -66
  261. package/see/examples/output/goldbach_1000.md +0 -58
  262. package/see/examples/output/good_cobbler.md +0 -54
  263. package/see/examples/output/gps.md +0 -102
  264. package/see/examples/output/gray_code_counter.md +0 -68
  265. package/see/examples/output/greatest_lower_bound_uniqueness.md +0 -60
  266. package/see/examples/output/group_inverse_uniqueness.md +0 -60
  267. package/see/examples/output/hadamard_approx.md +0 -510
  268. package/see/examples/output/hanoi.md +0 -51
  269. package/see/examples/output/odrl_dpv_risk_ranked.md +0 -139
  270. package/see/examples/output/path_discovery.md +0 -65
  271. package/see/examples/output/rc_discharge_envelope.md +0 -102
  272. package/see/examples/output/rdf_dataset.md +0 -54
  273. package/see/examples/output/rdf_message_flow.md +0 -198
  274. package/see/examples/output/rdf_messages.md +0 -134
  275. package/see/examples/output/school_placement_audit.md +0 -99
  276. package/see/examples/output/smoke_arithmetic.md +0 -54
  277. package/see/examples/output/socrates.md +0 -55
  278. package/see/examples/output/triple_terms.md +0 -53
  279. package/see/examples/output/wind_turbine.md +0 -108
  280. package/see/examples/output/witch.md +0 -87
  281. package/see/examples/path_discovery.js +0 -1774
  282. package/see/examples/rc_discharge_envelope.js +0 -1993
  283. package/see/examples/rdf_dataset.js +0 -1512
  284. package/see/examples/rdf_message_flow.js +0 -2580
  285. package/see/examples/rdf_messages.js +0 -2176
  286. package/see/examples/school_placement_audit.js +0 -1867
  287. package/see/examples/smoke_arithmetic.js +0 -1483
  288. package/see/examples/socrates.js +0 -1420
  289. package/see/examples/triple_terms.js +0 -1442
  290. package/see/examples/wind_turbine.js +0 -2853
  291. package/see/examples/witch.js +0 -1519
  292. package/see/see.js +0 -2179
  293. package/test/see.test.js +0 -159
  294. /package/{see/examples/n3/builtin_coverage.n3 → examples/builtin-coverage.n3} +0 -0
@@ -1,139 +0,0 @@
1
- # ODRL + DPV risk assessment with ranked, explainable output.
2
-
3
- ## Entailment
4
- The compiled query selected 65 fact(s) after the rule closure was computed.
5
- Main entailment: **(:Agreement1 :ConsumerExample 1 930 "C4" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C4: Add a permission allowing data export (or remove the prohibition) to support portability.\n".**
6
-
7
- Selected entailments:
8
- - (:Agreement1 :ConsumerExample 1 930 "C4" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C4: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
9
- - (:Agreement1 :ConsumerExample 1 930 "C3" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C3: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
10
- - (:Agreement1 :ConsumerExample 1 930 "C2" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C2: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
11
- - (:Agreement1 :ConsumerExample 1 930 "C1" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C1: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
12
- - (:Agreement1 :ConsumerExample 1 903 "C4" 1 _:risk3 _:m13) log:outputString " - mitigation for clause C4: Add an explicit consent constraint before data sharing.\n" .
13
- - (:Agreement1 :ConsumerExample 1 903 "C3" 1 _:risk3 _:m13) log:outputString " - mitigation for clause C3: Add an explicit consent constraint before data sharing.\n" .
14
-
15
- ## Explanation
16
- Starts with 38 source fact(s), applies 9 rule(s), and reaches a fixpoint.
17
- The log:query projection then keeps only the matching fact(s) shown above.
18
-
19
- Derivation steps:
20
- - Rule 1 (10 premise pattern(s) => 31 conclusion pattern(s)) derives _:src1 rdf:type risk:RiskSource ., _:src1 rdf:type risk:LegalComplianceRisk ., _:src1 dct:source :PermDeleteAccount ., _:src1 dct:description "Account removal permitted without notice safeguards." ., … +39 more
21
- - Uses: :Agreement1 :policyGraph { :Policy1 rdf:type odrl:Policy . :Policy1 odrl:permission :PermDeleteAccount . :Policy1 odrl:permission :PermChangeTerms . :Policy1 odrl:permission :PermShareData . :Policy1 odrl:prohibition :ProhibitExportData . :PermDeleteAccount rdf:type odrl:Permission . :PermDeleteAccount odrl:assigner :Provider . :PermDeleteAccount odrl:assignee :ConsumerExample . :PermDeleteAccount odrl:action tosl:removeAccount . :PermDeleteAccount odrl:target :UserAccount . :PermDeleteAccount :clause :ClauseC1 . :PermChangeTerms rdf:type odrl:Permission . :PermChangeTerms odrl:assigner :Provider . :PermChangeTerms odrl:assignee :ConsumerExample . :PermChangeTerms odrl:action tosl:changeTerms . :PermChangeTerms odrl:target :AgreementText . _:blank1 rdf:type odrl:Duty . _:blank1 odrl:action odrl:inform . _:blank2 rdf:type odrl:Constraint . _:blank2 odrl:leftOperand tosl:noticeDays . _:blank2 odrl:operator odrl:gteq . _:blank2 odrl:rightOperand 3 . _:blank1 odrl:constraint _:blank2 . :PermChangeTerms odrl:duty _:blank1 . :PermChangeTerms :clause :ClauseC2 . :PermShareData rdf:type odrl:Permission . :PermShareData odrl:assigner :Provider . :PermShareData odrl:assignee :ConsumerExample . :PermShareData odrl:action tosl:shareData . :PermShareData odrl:target :UserData . :PermShareData :clause :ClauseC3 . :ProhibitExportData rdf:type odrl:Prohibition . :ProhibitExportData odrl:assigner :Provider . :ProhibitExportData odrl:assignee :ConsumerExample . :ProhibitExportData odrl:action tosl:exportData . :ProhibitExportData odrl:target :UserData . :ProhibitExportData :clause :ClauseC4 } . _(source)_; :ConsumerExample :hasNeed :Need_DataCannotBeRemoved . _(source)_; :Need_DataCannotBeRemoved :importance 20 . _(source)_; :ClauseC1 :clauseId "C1" . _(source)_; … +7 more premise fact(s)
22
- - Rule 3 (9 premise pattern(s) => 22 conclusion pattern(s)) derives _:src3 rdf:type risk:RiskSource ., _:src3 rdf:type risk:PolicyRisk ., _:src3 dct:source :PermShareData ., _:src3 dct:description "Data sharing permitted without explicit consent constraint." ., … +27 more
23
- - Uses: :Agreement1 :policyGraph { :Policy1 rdf:type odrl:Policy . :Policy1 odrl:permission :PermDeleteAccount . :Policy1 odrl:permission :PermChangeTerms . :Policy1 odrl:permission :PermShareData . :Policy1 odrl:prohibition :ProhibitExportData . :PermDeleteAccount rdf:type odrl:Permission . :PermDeleteAccount odrl:assigner :Provider . :PermDeleteAccount odrl:assignee :ConsumerExample . :PermDeleteAccount odrl:action tosl:removeAccount . :PermDeleteAccount odrl:target :UserAccount . :PermDeleteAccount :clause :ClauseC1 . :PermChangeTerms rdf:type odrl:Permission . :PermChangeTerms odrl:assigner :Provider . :PermChangeTerms odrl:assignee :ConsumerExample . :PermChangeTerms odrl:action tosl:changeTerms . :PermChangeTerms odrl:target :AgreementText . _:blank1 rdf:type odrl:Duty . _:blank1 odrl:action odrl:inform . _:blank2 rdf:type odrl:Constraint . _:blank2 odrl:leftOperand tosl:noticeDays . _:blank2 odrl:operator odrl:gteq . _:blank2 odrl:rightOperand 3 . _:blank1 odrl:constraint _:blank2 . :PermChangeTerms odrl:duty _:blank1 . :PermChangeTerms :clause :ClauseC2 . :PermShareData rdf:type odrl:Permission . :PermShareData odrl:assigner :Provider . :PermShareData odrl:assignee :ConsumerExample . :PermShareData odrl:action tosl:shareData . :PermShareData odrl:target :UserData . :PermShareData :clause :ClauseC3 . :ProhibitExportData rdf:type odrl:Prohibition . :ProhibitExportData odrl:assigner :Provider . :ProhibitExportData odrl:assignee :ConsumerExample . :ProhibitExportData odrl:action tosl:exportData . :ProhibitExportData odrl:target :UserData . :ProhibitExportData :clause :ClauseC4 } . _(source)_; :ConsumerExample :hasNeed :Need_NoSharingWithoutConsent . _(source)_; :Need_NoSharingWithoutConsent :importance 12 . _(source)_; :ClauseC1 :clauseId "C1" . _(source)_; … +7 more premise fact(s)
24
- - Rule 4 (8 premise pattern(s) => 21 conclusion pattern(s)) derives _:src4 rdf:type risk:RiskSource ., _:src4 rdf:type risk:PolicyRisk ., _:src4 dct:source :ProhibitExportData ., _:src4 dct:description "Data export is prohibited, reducing portability." ., … +26 more
25
- - Uses: :Agreement1 :policyGraph { :Policy1 rdf:type odrl:Policy . :Policy1 odrl:permission :PermDeleteAccount . :Policy1 odrl:permission :PermChangeTerms . :Policy1 odrl:permission :PermShareData . :Policy1 odrl:prohibition :ProhibitExportData . :PermDeleteAccount rdf:type odrl:Permission . :PermDeleteAccount odrl:assigner :Provider . :PermDeleteAccount odrl:assignee :ConsumerExample . :PermDeleteAccount odrl:action tosl:removeAccount . :PermDeleteAccount odrl:target :UserAccount . :PermDeleteAccount :clause :ClauseC1 . :PermChangeTerms rdf:type odrl:Permission . :PermChangeTerms odrl:assigner :Provider . :PermChangeTerms odrl:assignee :ConsumerExample . :PermChangeTerms odrl:action tosl:changeTerms . :PermChangeTerms odrl:target :AgreementText . _:blank1 rdf:type odrl:Duty . _:blank1 odrl:action odrl:inform . _:blank2 rdf:type odrl:Constraint . _:blank2 odrl:leftOperand tosl:noticeDays . _:blank2 odrl:operator odrl:gteq . _:blank2 odrl:rightOperand 3 . _:blank1 odrl:constraint _:blank2 . :PermChangeTerms odrl:duty _:blank1 . :PermChangeTerms :clause :ClauseC2 . :PermShareData rdf:type odrl:Permission . :PermShareData odrl:assigner :Provider . :PermShareData odrl:assignee :ConsumerExample . :PermShareData odrl:action tosl:shareData . :PermShareData odrl:target :UserData . :PermShareData :clause :ClauseC3 . :ProhibitExportData rdf:type odrl:Prohibition . :ProhibitExportData odrl:assigner :Provider . :ProhibitExportData odrl:assignee :ConsumerExample . :ProhibitExportData odrl:action tosl:exportData . :ProhibitExportData odrl:target :UserData . :ProhibitExportData :clause :ClauseC4 } . _(source)_; :ConsumerExample :hasNeed :Need_DataPortability . _(source)_; :Need_DataPortability :importance 10 . _(source)_; :ClauseC1 :clauseId "C1" . _(source)_; … +7 more premise fact(s)
26
- - Rule 5 (3 premise pattern(s) => 1 conclusion pattern(s)) derives _:risk1 :score 100 .
27
- - Uses: _:risk1 rdf:type dpv:Risk . _(derived)_; _:risk1 :scoreRaw 110 . _(derived)_
28
- - Rule 6 (3 premise pattern(s) => 1 conclusion pattern(s)) derives _:risk3 :score 97 ., _:risk4 :score 70 .
29
- - Uses: _:risk3 rdf:type dpv:Risk . _(derived)_; _:risk3 :scoreRaw 97 . _(derived)_; _:risk4 rdf:type dpv:Risk . _(derived)_; _:risk4 :scoreRaw 70 . _(derived)_
30
- - Rule 7 (3 premise pattern(s) => 2 conclusion pattern(s)) derives _:risk1 dpv:hasSeverity risk:HighSeverity ., _:risk1 dpv:hasRiskLevel risk:HighRisk ., _:risk3 dpv:hasSeverity risk:HighSeverity ., _:risk3 dpv:hasRiskLevel risk:HighRisk .
31
- - Uses: _:risk1 rdf:type dpv:Risk . _(derived)_; _:risk1 :score 100 . _(derived)_; _:risk3 rdf:type dpv:Risk . _(derived)_; _:risk3 :score 97 . _(derived)_
32
-
33
- Selected explanation support:
34
- - (:Agreement1 :ConsumerExample 1 930 "C4" 1 _:risk4 _:m14) log:outputString "[authored report]" . _(authored report, no recorded rule support)_
35
- - (:Agreement1 :ConsumerExample 1 930 "C3" 1 _:risk4 _:m14) log:outputString "[authored report]" . _(authored report, no recorded rule support)_
36
- - (:Agreement1 :ConsumerExample 1 930 "C2" 1 _:risk4 _:m14) log:outputString "[authored report]" . _(authored report, no recorded rule support)_
37
- - (:Agreement1 :ConsumerExample 1 930 "C1" 1 _:risk4 _:m14) log:outputString "[authored report]" . _(authored report, no recorded rule support)_
38
- - (:Agreement1 :ConsumerExample 1 903 "C4" 1 _:risk3 _:m13) log:outputString "[authored report]" . _(authored report, no recorded rule support)_
39
- - (:Agreement1 :ConsumerExample 1 903 "C3" 1 _:risk3 _:m13) log:outputString "[authored report]" . _(authored report, no recorded rule support)_
40
-
41
- The query-selected facts are serialized in the Formal TriG Output section.
42
-
43
- ## Formal TriG Output
44
-
45
- ```trig
46
- @prefix : <https://example.org/odrl-dpv-risk-ranked#> .
47
- @prefix odrl: <http://www.w3.org/ns/odrl/2/> .
48
- @prefix dpv: <https://w3id.org/dpv#> .
49
- @prefix risk: <https://w3id.org/dpv/risk#> .
50
- @prefix dct: <http://purl.org/dc/terms/> .
51
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
52
- @prefix math: <http://www.w3.org/2000/10/swap/math#> .
53
- @prefix tosl: <https://example.org/tosl-profile#> .
54
- @prefix see: <https://example.org/see#> .
55
- @prefix in: <https://example.org/see/input#> .
56
- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
57
-
58
- (:Agreement1 :ConsumerExample 0) log:outputString "\n=== Ranked DPV Risk Report ===\nAgreement: Example Agreement\nProfile: Example consumer profile\n\n" .
59
- (:Agreement1 :ConsumerExample 1 900 "C1" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
60
- (:Agreement1 :ConsumerExample 1 900 "C1" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
61
- (:Agreement1 :ConsumerExample 1 900 "C1" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C3: Provider may share user data with partners for business purposes.\n\n" .
62
- (:Agreement1 :ConsumerExample 1 900 "C1" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C4: Users are not permitted to export their data.\n\n" .
63
- (:Agreement1 :ConsumerExample 1 900 "C2" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
64
- (:Agreement1 :ConsumerExample 1 900 "C2" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
65
- (:Agreement1 :ConsumerExample 1 900 "C2" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C3: Provider may share user data with partners for business purposes.\n\n" .
66
- (:Agreement1 :ConsumerExample 1 900 "C2" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C4: Users are not permitted to export their data.\n\n" .
67
- (:Agreement1 :ConsumerExample 1 900 "C3" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
68
- (:Agreement1 :ConsumerExample 1 900 "C3" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
69
- (:Agreement1 :ConsumerExample 1 900 "C3" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C3: Provider may share user data with partners for business purposes.\n\n" .
70
- (:Agreement1 :ConsumerExample 1 900 "C3" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C4: Users are not permitted to export their data.\n\n" .
71
- (:Agreement1 :ConsumerExample 1 900 "C4" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
72
- (:Agreement1 :ConsumerExample 1 900 "C4" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
73
- (:Agreement1 :ConsumerExample 1 900 "C4" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C3: Provider may share user data with partners for business purposes.\n\n" .
74
- (:Agreement1 :ConsumerExample 1 900 "C4" 0 _:risk1) log:outputString "score=100 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: account/data removal is permitted without notice safeguards (no notice constraint and no duty to inform). Clause C4: Users are not permitted to export their data.\n\n" .
75
- (:Agreement1 :ConsumerExample 1 903 "C1" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
76
- (:Agreement1 :ConsumerExample 1 903 "C1" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
77
- (:Agreement1 :ConsumerExample 1 903 "C1" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
78
- (:Agreement1 :ConsumerExample 1 903 "C1" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C1\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C4: Users are not permitted to export their data.\n\n" .
79
- (:Agreement1 :ConsumerExample 1 903 "C2" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
80
- (:Agreement1 :ConsumerExample 1 903 "C2" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
81
- (:Agreement1 :ConsumerExample 1 903 "C2" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
82
- (:Agreement1 :ConsumerExample 1 903 "C2" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C2\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C4: Users are not permitted to export their data.\n\n" .
83
- (:Agreement1 :ConsumerExample 1 903 "C3" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
84
- (:Agreement1 :ConsumerExample 1 903 "C3" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
85
- (:Agreement1 :ConsumerExample 1 903 "C3" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
86
- (:Agreement1 :ConsumerExample 1 903 "C3" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C3\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C4: Users are not permitted to export their data.\n\n" .
87
- (:Agreement1 :ConsumerExample 1 903 "C4" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
88
- (:Agreement1 :ConsumerExample 1 903 "C4" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
89
- (:Agreement1 :ConsumerExample 1 903 "C4" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
90
- (:Agreement1 :ConsumerExample 1 903 "C4" 0 _:risk3) log:outputString "score=97 (risk:HighRisk, risk:HighSeverity) clause C4\n Risk: user data sharing is permitted without an explicit consent constraint. Clause C4: Users are not permitted to export their data.\n\n" .
91
- (:Agreement1 :ConsumerExample 1 930 "C1" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C1\n Risk: portability is restricted because exporting user data is prohibited. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
92
- (:Agreement1 :ConsumerExample 1 930 "C1" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C1\n Risk: portability is restricted because exporting user data is prohibited. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
93
- (:Agreement1 :ConsumerExample 1 930 "C1" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C1\n Risk: portability is restricted because exporting user data is prohibited. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
94
- (:Agreement1 :ConsumerExample 1 930 "C1" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C1\n Risk: portability is restricted because exporting user data is prohibited. Clause C4: Users are not permitted to export their data.\n\n" .
95
- (:Agreement1 :ConsumerExample 1 930 "C2" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C2\n Risk: portability is restricted because exporting user data is prohibited. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
96
- (:Agreement1 :ConsumerExample 1 930 "C2" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C2\n Risk: portability is restricted because exporting user data is prohibited. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
97
- (:Agreement1 :ConsumerExample 1 930 "C2" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C2\n Risk: portability is restricted because exporting user data is prohibited. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
98
- (:Agreement1 :ConsumerExample 1 930 "C2" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C2\n Risk: portability is restricted because exporting user data is prohibited. Clause C4: Users are not permitted to export their data.\n\n" .
99
- (:Agreement1 :ConsumerExample 1 930 "C3" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C3\n Risk: portability is restricted because exporting user data is prohibited. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
100
- (:Agreement1 :ConsumerExample 1 930 "C3" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C3\n Risk: portability is restricted because exporting user data is prohibited. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
101
- (:Agreement1 :ConsumerExample 1 930 "C3" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C3\n Risk: portability is restricted because exporting user data is prohibited. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
102
- (:Agreement1 :ConsumerExample 1 930 "C3" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C3\n Risk: portability is restricted because exporting user data is prohibited. Clause C4: Users are not permitted to export their data.\n\n" .
103
- (:Agreement1 :ConsumerExample 1 930 "C4" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C4\n Risk: portability is restricted because exporting user data is prohibited. Clause C1: Provider may remove the user account (and associated data) at its discretion.\n\n" .
104
- (:Agreement1 :ConsumerExample 1 930 "C4" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C4\n Risk: portability is restricted because exporting user data is prohibited. Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
105
- (:Agreement1 :ConsumerExample 1 930 "C4" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C4\n Risk: portability is restricted because exporting user data is prohibited. Clause C3: Provider may share user data with partners for business purposes.\n\n" .
106
- (:Agreement1 :ConsumerExample 1 930 "C4" 0 _:risk4) log:outputString "score=70 (risk:ModerateRisk, risk:ModerateSeverity) clause C4\n Risk: portability is restricted because exporting user data is prohibited. Clause C4: Users are not permitted to export their data.\n\n" .
107
- (:Agreement1 :ConsumerExample 1 900 "C1" 1 _:risk1 _:m11) log:outputString " - mitigation for clause C1: Add a notice constraint (minimum noticeDays) before account removal.\n" .
108
- (:Agreement1 :ConsumerExample 1 900 "C2" 1 _:risk1 _:m11) log:outputString " - mitigation for clause C2: Add a notice constraint (minimum noticeDays) before account removal.\n" .
109
- (:Agreement1 :ConsumerExample 1 900 "C3" 1 _:risk1 _:m11) log:outputString " - mitigation for clause C3: Add a notice constraint (minimum noticeDays) before account removal.\n" .
110
- (:Agreement1 :ConsumerExample 1 900 "C4" 1 _:risk1 _:m11) log:outputString " - mitigation for clause C4: Add a notice constraint (minimum noticeDays) before account removal.\n" .
111
- (:Agreement1 :ConsumerExample 1 900 "C1" 1 _:risk1 _:m21) log:outputString " - mitigation for clause C1: Add a duty to inform the consumer prior to account removal.\n" .
112
- (:Agreement1 :ConsumerExample 1 900 "C2" 1 _:risk1 _:m21) log:outputString " - mitigation for clause C2: Add a duty to inform the consumer prior to account removal.\n" .
113
- (:Agreement1 :ConsumerExample 1 900 "C3" 1 _:risk1 _:m21) log:outputString " - mitigation for clause C3: Add a duty to inform the consumer prior to account removal.\n" .
114
- (:Agreement1 :ConsumerExample 1 900 "C4" 1 _:risk1 _:m21) log:outputString " - mitigation for clause C4: Add a duty to inform the consumer prior to account removal.\n" .
115
- (:Agreement1 :ConsumerExample 1 903 "C1" 1 _:risk3 _:m13) log:outputString " - mitigation for clause C1: Add an explicit consent constraint before data sharing.\n" .
116
- (:Agreement1 :ConsumerExample 1 903 "C2" 1 _:risk3 _:m13) log:outputString " - mitigation for clause C2: Add an explicit consent constraint before data sharing.\n" .
117
- (:Agreement1 :ConsumerExample 1 903 "C3" 1 _:risk3 _:m13) log:outputString " - mitigation for clause C3: Add an explicit consent constraint before data sharing.\n" .
118
- (:Agreement1 :ConsumerExample 1 903 "C4" 1 _:risk3 _:m13) log:outputString " - mitigation for clause C4: Add an explicit consent constraint before data sharing.\n" .
119
- (:Agreement1 :ConsumerExample 1 930 "C1" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C1: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
120
- (:Agreement1 :ConsumerExample 1 930 "C2" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C2: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
121
- (:Agreement1 :ConsumerExample 1 930 "C3" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C3: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
122
- (:Agreement1 :ConsumerExample 1 930 "C4" 1 _:risk4 _:m14) log:outputString " - mitigation for clause C4: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
123
-
124
- in:metadata {
125
- in:run a see:InputDataset .
126
- in:run see:name "odrl_dpv_risk_ranked" .
127
- in:run see:title "ODRL + DPV risk assessment with ranked, explainable output." .
128
- in:run see:sourceFile "examples/n3/odrl_dpv_risk_ranked.n3" .
129
- in:run see:sourceSHA256 "e3360556d6e82bda9f502d362cc110e2cd681608ae1388cf8071660f6fbe6200" .
130
- in:run see:description "What this file does\n- Models an agreement as an ODRL policy (odrl:Policy) containing permissions,\nprohibitions, duties, and constraints. ODRL is expressive enough to encode the\nnormative “may/must/must-not” structure of TOS clauses as RDF.\n- Links each ODRL rule to a clause resource (:Clause) to keep human-readable text\nwhile preserving machine-readable structure for reasoning.\n- Uses N3 rules with log:includes / log:notIncludes to detect missing safeguards\n(e.g., missing notice constraints, missing inform duties, missing consent constraints).\n- Generates DPV risks (dpv:Risk) and classifies them using DPV-RISK concepts:\nrisk:hasRiskSource, dpv:hasConsequence, dpv:hasImpact, dpv:hasSeverity, dpv:hasRiskLevel.\n- Produces mitigations as dpv:RiskMitigationMeasure resources and attaches them\nto risks with dpv:isMitigatedByMeasure.\n- Computes a numeric score for each risk and prints a ranked, explainable report.\nRanking / output\n- Output strings are emitted as log:outputString triples.\n- When running with Eyeling “strings” mode (-r), strings are printed in deterministic\norder based on their subject key. The program encodes ranking via an “inverse score”\nkey (e.g., 1000 - score) so higher-risk items appear first.\nReferences\n- N3 spec: https://w3c.github.io/N3/spec/\n- Eyeling builtins: https://eyereasoner.github.io/eyeling/HANDBOOK#ch11\n- ODRL vocab: https://www.w3.org/TR/odrl-vocab/\n- DPV risk module: https://dev.dpvcg.org/dpv/modules/risk\n- DPV-RISK: https://w3id.org/dpv/risk" .
131
- in:run see:compiler "see.js N3-to-JS compiler" .
132
- in:run see:inputFacts 38 .
133
- in:run see:compiledRules 9 .
134
- in:run see:compiledBackwardRules 0 .
135
- in:run see:compiledFuses 0 .
136
- in:run see:compiledQueries 3 .
137
- }
138
- ```
139
-
@@ -1,65 +0,0 @@
1
- # Path Discovery
2
-
3
- ## Entailment
4
- The derivation produced 3 new fact(s) from 96420 stated fact(s).
5
- Main entailment: **:discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Palma De Mallorca Airport" "Václav Havel Airport Prague").**
6
-
7
- Selected entailments:
8
- - :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Palma De Mallorca Airport" "Václav Havel Airport Prague") .
9
- - :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Diagoras Airport" "Václav Havel Airport Prague") .
10
- - :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Heraklion International Nikos Kazantzakis Airport" "Václav Havel Airport Prague") .
11
-
12
- ## Explanation
13
- Starts with 96420 source fact(s), applies 3 rule(s), and reaches a fixpoint.
14
-
15
- Derivation steps:
16
- - Rule 3 (4 premise pattern(s) => 1 conclusion pattern(s)) derives :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Heraklion International Nikos Kazantzakis Airport" "Václav Havel Airport Prague") ., :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Diagoras Airport" "Václav Havel Airport Prague") ., :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Palma De Mallorca Airport" "Václav Havel Airport Prague") .
17
- - Uses: res:AIRPORT_310 rdfs:label "Ostend-Bruges International Airport" . _(source)_; res:AIRPORT_1587 rdfs:label "Václav Havel Airport Prague" . _(source)_
18
-
19
- Selected explanation support:
20
- - :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Palma De Mallorca Airport" "Václav Havel Airport Prague") . _(derived by Rule 3)_
21
- - res:AIRPORT_310 rdfs:label "Ostend-Bruges International Airport" . _(source)_
22
- - res:AIRPORT_1587 rdfs:label "Václav Havel Airport Prague" . _(source)_
23
- - :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Diagoras Airport" "Václav Havel Airport Prague") . _(derived by Rule 3)_
24
- - res:AIRPORT_310 rdfs:label "Ostend-Bruges International Airport" . _(source)_
25
- - res:AIRPORT_1587 rdfs:label "Václav Havel Airport Prague" . _(source)_
26
- - :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Heraklion International Nikos Kazantzakis Airport" "Václav Havel Airport Prague") . _(derived by Rule 3)_
27
- - res:AIRPORT_310 rdfs:label "Ostend-Bruges International Airport" . _(source)_
28
- - res:AIRPORT_1587 rdfs:label "Václav Havel Airport Prague" . _(source)_
29
-
30
- The selected facts are serialized in the Formal TriG Output section.
31
-
32
- ## Formal TriG Output
33
-
34
- ```trig
35
- @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
36
- @prefix nepo: <http://neptune.aws.com/ontology/airroutes/> .
37
- @prefix res: <http://neptune.aws.com/ontology/airroutes/resource#> .
38
- @prefix math: <http://www.w3.org/2000/10/swap/math#> .
39
- @prefix list: <http://www.w3.org/2000/10/swap/list#> .
40
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
41
- @prefix : <http://example.org/#> .
42
- @prefix see: <https://example.org/see#> .
43
- @prefix in: <https://example.org/see/input#> .
44
- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
45
-
46
- :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Heraklion International Nikos Kazantzakis Airport" "Václav Havel Airport Prague") .
47
- :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Diagoras Airport" "Václav Havel Airport Prague") .
48
- :discovered :airroute ("Ostend-Bruges International Airport" "Liège Airport" "Palma De Mallorca Airport" "Václav Havel Airport Prague") .
49
-
50
- in:metadata {
51
- in:run a see:InputDataset .
52
- in:run see:name "path_discovery" .
53
- in:run see:title "Path Discovery" .
54
- in:run see:sourceFile "examples/n3/path_discovery.n3" .
55
- in:run see:sourceSHA256 "9481a2b27a6cae4d73f312c7d8403d1abd7beab573f627f591ea8301073fe4db" .
56
- in:run see:description "Full upstream Eyeling path-discovery airroutes evidence converted to TriG; rules and query are kept in examples/n3/path_discovery.n3." .
57
- in:run see:compiler "see.js N3-to-JS compiler" .
58
- in:run see:inputFacts 96420 .
59
- in:run see:compiledRules 1 .
60
- in:run see:compiledBackwardRules 2 .
61
- in:run see:compiledFuses 0 .
62
- in:run see:compiledQueries 0 .
63
- }
64
- ```
65
-
@@ -1,102 +0,0 @@
1
- # RC Discharge Envelope
2
-
3
- ## Entailment
4
- exact decay symbol : exp(-1/4)
5
- certified decay interval : [0.7788007830, 0.7788007831]
6
- first below tolerance step : 13
7
- first below tolerance time : 0.325 s
8
- upper voltage at step 13 : 0.930581 V
9
-
10
- ## Explanation
11
- The physical decay factor is exp(-1/4), but the example uses a finite double interval as the certificate. Because the interval lies strictly between 0 and 1, the capacitor voltage envelope contracts each sample. The upper envelope is the safety-relevant bound: once it falls below 1.0 V, every compatible exact trajectory is below tolerance.
12
-
13
- **Generated derivation support**
14
-
15
- Compiled support: 12 source fact(s), 6 rule(s), fixpoint reached before rendering.
16
-
17
- Derivation steps:
18
- - Rule 1 (6 premise pattern(s) => 1 conclusion pattern(s)) derives :step12 :upperVoltage 1.19488964135521 ., :step13 :upperVoltage 0.930580988405513 .
19
- - Uses: :case :initialVoltage 24 . _(source)_; :case :decayUpper 0.7788007831 . _(source)_; :case :candidateStep :step12 . _(source)_; :step12 :index 12 . _(source)_; … +2 more premise fact(s)
20
- - Rule 2 (3 premise pattern(s) => 1 conclusion pattern(s)) derives :step13 :belowTolerance true .
21
- - Uses: :case :tolerance 1 . _(source)_; :step13 :upperVoltage 0.930580988405513 . _(derived)_
22
- - Rule 3 (3 premise pattern(s) => 1 conclusion pattern(s)) derives :step12 :notBelowTolerance true .
23
- - Uses: :case :tolerance 1 . _(source)_; :step12 :upperVoltage 1.19488964135521 . _(derived)_
24
- - Rule 4 (6 premise pattern(s) => 1 conclusion pattern(s)) derives :case :firstBelowToleranceStep :step13 .
25
- - Uses: :case :maxStep 18 . _(source)_; :step13 :index 13 . _(source)_; :step13 :previousStep :step12 . _(source)_; :step13 :belowTolerance true . _(derived)_; … +1 more premise fact(s)
26
- - Rule 5 (4 premise pattern(s) => 1 conclusion pattern(s)) derives :step13 :timeSeconds 0.325 .
27
- - Uses: :case :samplePeriod 0.025 . _(source)_; :case :firstBelowToleranceStep :step13 . _(derived)_; :step13 :index 13 . _(source)_
28
- - Rule 6 (8 premise pattern(s) => 1 conclusion pattern(s)) derives :report log:outputString "[authored report]" .
29
- - Uses: :case :exactDecaySymbol "exp(-1/4)" . _(source)_; :case :decayLower 0.778800783 . _(source)_; :case :decayUpper 0.7788007831 . _(source)_; :case :firstBelowToleranceStep :step13 . _(derived)_; … +3 more premise fact(s)
30
-
31
- Selected explanation support:
32
- - :report log:outputString "[authored report]" . _(authored report, Rule 6)_
33
- - :step13 :timeSeconds 0.325 . _(derived by Rule 5)_
34
- - :case :samplePeriod 0.025 . _(source)_
35
- - :case :firstBelowToleranceStep :step13 . _(derived by Rule 4)_
36
- - :case :maxStep 18 . _(source)_
37
- - :step13 :index 13 . _(source)_
38
- - :step13 :previousStep :step12 . _(source)_
39
- - :step13 :belowTolerance true . _(derived by Rule 2)_
40
- - :case :tolerance 1 . _(source)_
41
- - :step13 :upperVoltage 0.930580988405513 . _(derived by Rule 1)_
42
- - :case :initialVoltage 24 . _(source)_
43
- - :case :decayUpper 0.7788007831 . _(source)_
44
- - :case :candidateStep :step13 . _(source)_
45
- - :step13 :index 13 . _(source)_
46
- - ... 1 more premise fact(s)
47
- - :step13 :index 13 . _(source)_
48
- - :case :firstBelowToleranceStep :step13 . _(derived by Rule 4)_
49
- - :case :maxStep 18 . _(source)_
50
- - :step13 :index 13 . _(source)_
51
- - :step13 :previousStep :step12 . _(source)_
52
- - :step13 :belowTolerance true . _(derived by Rule 2)_
53
- - :case :tolerance 1 . _(source)_
54
- - :step13 :upperVoltage 0.930580988405513 . _(derived by Rule 1)_
55
- - :case :initialVoltage 24 . _(source)_
56
- - :case :decayUpper 0.7788007831 . _(source)_
57
- - :case :candidateStep :step13 . _(source)_
58
- - :step13 :index 13 . _(source)_
59
- - ... 1 more premise fact(s)
60
- - :step12 :notBelowTolerance true . _(derived by Rule 3)_
61
- - :case :tolerance 1 . _(source)_
62
- - :step12 :upperVoltage 1.19488964135521 . _(derived by Rule 1)_
63
- - :case :initialVoltage 24 . _(source)_
64
- - :case :decayUpper 0.7788007831 . _(source)_
65
- - :case :candidateStep :step12 . _(source)_
66
- - :step12 :index 12 . _(source)_
67
-
68
- ## Formal TriG Output
69
-
70
- ```trig
71
- @prefix : <https://eyereasoner.github.io/see/examples/rc-discharge-envelope#> .
72
- @prefix math: <http://www.w3.org/2000/10/swap/math#> .
73
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
74
- @prefix string: <http://www.w3.org/2000/10/swap/string#> .
75
- @prefix see: <https://example.org/see#> .
76
- @prefix in: <https://example.org/see/input#> .
77
- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
78
-
79
- :step12 :upperVoltage 1.19488964135521 .
80
- :step13 :upperVoltage 0.930580988405513 .
81
- :step13 :belowTolerance true .
82
- :step12 :notBelowTolerance true .
83
- :case :firstBelowToleranceStep :step13 .
84
- :step13 :timeSeconds 0.325 .
85
- :report log:outputString "=== Answer ===\nexact decay symbol : exp(-1/4)\ncertified decay interval : [0.7788007830, 0.7788007831]\nfirst below tolerance step : 13\nfirst below tolerance time : 0.325 s\nupper voltage at step 13 : 0.930581 V\n\n=== Explanation ===\nThe physical decay factor is exp(-1/4), but the example uses a finite double interval as the certificate. Because the interval lies strictly between 0 and 1, the capacitor voltage envelope contracts each sample. The upper envelope is the safety-relevant bound: once it falls below 1.0 V, every compatible exact trajectory is below tolerance." .
86
-
87
- in:metadata {
88
- in:run a see:InputDataset .
89
- in:run see:name "rc_discharge_envelope" .
90
- in:run see:title "RC Discharge Envelope" .
91
- in:run see:sourceFile "examples/n3/rc_discharge_envelope.n3" .
92
- in:run see:sourceSHA256 "41acff69cd2994230faedf5a466b4c43d47cdff9dc6d834baecd9865979160b8" .
93
- in:run see:description "Certify when a sampled RC capacitor is guaranteed below tolerance using an\nupper decay bound. The witness is derived by N3 rules and compiled to SEE." .
94
- in:run see:compiler "see.js N3-to-JS compiler" .
95
- in:run see:inputFacts 12 .
96
- in:run see:compiledRules 6 .
97
- in:run see:compiledBackwardRules 0 .
98
- in:run see:compiledFuses 0 .
99
- in:run see:compiledQueries 0 .
100
- }
101
- ```
102
-
@@ -1,54 +0,0 @@
1
- # RDF dataset compatibility
2
-
3
- ## Entailment
4
- The compiled query selected 1 fact(s) after the rule closure was computed.
5
- Main entailment: **:workOrder :entails <<( :sensor :needs :inspection )>>.**
6
-
7
- Selected entailments:
8
- - :workOrder :entails <<( :sensor :needs :inspection )>> .
9
-
10
- ## Explanation
11
- Starts with 4 source fact(s), applies 1 rule(s), and reaches a fixpoint.
12
- The log:query projection then keeps only the matching fact(s) shown above.
13
-
14
- Derivation steps:
15
- - Rule 1 (3 premise pattern(s) => 2 conclusion pattern(s)) derives :workOrder :entails <<( :sensor :needs :inspection )>> ., :audit log:nameOf { :workOrder :basedOn :factoryDataset . :workOrder :checkedBy :maintenanceSystem } .
16
- - Uses: :sensor :reports :overheating . _(source)_; :overheating :requires :inspection . _(source)_; :maintenanceSystem :trusted true . _(source)_
17
-
18
- Selected explanation support:
19
- - :workOrder :entails <<( :sensor :needs :inspection )>> . _(derived by Rule 1)_
20
- - :sensor :reports :overheating . _(source)_
21
- - :overheating :requires :inspection . _(source)_
22
- - :maintenanceSystem :trusted true . _(source)_
23
-
24
- The query-selected facts are serialized in the Formal TriG Output section.
25
-
26
- ## Formal TriG Output
27
-
28
- ```trig
29
- VERSION "1.2"
30
-
31
- @prefix : <https://eyereasoner.github.io/see/examples/rdf-dataset#> .
32
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
33
- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
34
- @prefix see: <https://example.org/see#> .
35
- @prefix in: <https://example.org/see/input#> .
36
-
37
- :workOrder :entails <<( :sensor :needs :inspection )>> .
38
-
39
- in:metadata {
40
- in:run a see:InputDataset .
41
- in:run see:name "rdf_dataset" .
42
- in:run see:title "RDF dataset compatibility" .
43
- in:run see:sourceFile "examples/n3/rdf_dataset.n3" .
44
- in:run see:sourceSHA256 "76035a24eb72fc1d28a5e1f3021baefee0dde667aa8fc9f2b0a111f9c773b744" .
45
- in:run see:description "RDF 1.1 named graph data and RDF 1.2 triple terms are normalized to ordinary N3 graph terms before SEE compiles the derivation." .
46
- in:run see:compiler "see.js N3-to-JS compiler" .
47
- in:run see:inputFacts 4 .
48
- in:run see:compiledRules 1 .
49
- in:run see:compiledBackwardRules 0 .
50
- in:run see:compiledFuses 0 .
51
- in:run see:compiledQueries 1 .
52
- }
53
- ```
54
-
@@ -1,198 +0,0 @@
1
- # RDF Message Flow
2
-
3
- ## Entailment
4
- Continuous RDF Message flow accepted: 5 ordered messages moved through the ingest → validate → interpret → route → sink pipeline. The threshold was 26, so results 21 and 22 were archived, the heartbeat kept the stream alive, and results 28 and 29 were emitted as alerts.
5
-
6
- ## Explanation
7
- The N3 source starts only :m001 at ingress. Each message must reach :sink before the continuous-flow rule releases its msg:nextMessage. Observation payloads are inspected with log:includes inside each message formula, while the empty heartbeat uses the same envelope and routing stages without a payload. This models messages flowing through a live stream while preserving message boundaries.
8
-
9
- **Generated derivation support**
10
-
11
- Compiled support: 42 source fact(s), 9 rule(s), fixpoint reached before rendering.
12
-
13
- Derivation steps:
14
- - Rule 1: ?Message :atStage :ingest => ?Message :atStage :validate derives :m001 :atStage :validate ., :m002 :atStage :validate ., :m003 :atStage :validate ., :m004 :atStage :validate ., … +1 more
15
- - Uses: :m001 :atStage :ingest . _(source)_; :m002 :atStage :ingest . _(derived)_; :m003 :atStage :ingest . _(derived)_; :m004 :atStage :ingest . _(derived)_; … +1 more premise fact(s)
16
- - Rule 2 (3 premise pattern(s) => 2 conclusion pattern(s)) derives :m001 msg:boundaryExplicit true ., :m001 :atStage :interpret ., :m002 msg:boundaryExplicit true ., :m002 :atStage :interpret ., … +6 more
17
- - Uses: :m001 :atStage :validate . _(derived)_; :m001 rdf:type msg:RDFMessage . _(source)_; :m001 msg:offset 1 . _(source)_; :m002 :atStage :validate . _(derived)_; … +11 more premise fact(s)
18
- - Rule 3 (5 premise pattern(s) => 2 conclusion pattern(s)) derives :m001 msg:payloadResult 21 ., :m001 :atStage :route ., :m002 msg:payloadResult 22 ., :m002 :atStage :route ., … +4 more
19
- - Uses: :m001 :atStage :interpret . _(derived)_; :m001 msg:payloadKind :observation . _(source)_; :m001 msg:expectedResult 21 . _(source)_; :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_; … +12 more premise fact(s)
20
- - Rule 6 (4 premise pattern(s) => 3 conclusion pattern(s)) derives :m001 :route :archiveSink ., :m001 :atStage :sink ., :archiveSink :received :m001 ., :m002 :route :archiveSink ., … +2 more
21
- - Uses: :m001 :atStage :route . _(derived)_; :m001 msg:payloadResult 21 . _(derived)_; :temperatureFlow :highThreshold 26 . _(source)_; :m002 :atStage :route . _(derived)_; … +1 more premise fact(s)
22
- - Rule 8 (3 premise pattern(s) => 2 conclusion pattern(s)) derives :m001 :releases :m002 ., :m002 :atStage :ingest ., :m002 :releases :m003 ., :m003 :atStage :ingest ., … +4 more
23
- - Uses: :m001 :atStage :sink . _(derived)_; :m001 msg:nextMessage :m002 . _(source)_; :m002 rdf:type msg:RDFMessage . _(source)_; :m002 :atStage :sink . _(derived)_; … +8 more premise fact(s)
24
- - Rule 4: ?Message :atStage :interpret; ?Message msg:payloadKind :heartbeat => ?Message msg:emptyMessageAllowed true; ?Message :atStage :route derives :m003 msg:emptyMessageAllowed true ., :m003 :atStage :route .
25
- - Uses: :m003 :atStage :interpret . _(derived)_; :m003 msg:payloadKind :heartbeat . _(source)_
26
-
27
- Selected explanation support:
28
- - :rdfMessageFlowExample :demonstrates :ThresholdRouting . _(derived by Rule 9)_
29
- - :temperatureFlow msg:orderedMessages (:m001 :m002 :m003 :m004 :m005) . _(source)_
30
- - :temperatureFlow :highThreshold 26 . _(source)_
31
- - :m001 :atStage :sink . _(derived by Rule 6)_
32
- - :m001 :atStage :route . _(derived by Rule 3)_
33
- - :m001 :atStage :interpret . _(derived by Rule 2)_
34
- - :m001 :atStage :validate . _(derived by Rule 1)_
35
- - support omitted beyond depth 4
36
- - :m001 rdf:type msg:RDFMessage . _(source)_
37
- - :m001 msg:offset 1 . _(source)_
38
- - :m001 msg:payloadKind :observation . _(source)_
39
- - :m001 msg:expectedResult 21 . _(source)_
40
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
41
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
42
- - :m001 :atStage :interpret . _(derived by Rule 2)_
43
- - :m001 :atStage :validate . _(derived by Rule 1)_
44
- - support omitted beyond depth 4
45
- - :m001 rdf:type msg:RDFMessage . _(source)_
46
- - :m001 msg:offset 1 . _(source)_
47
- - :m001 msg:payloadKind :observation . _(source)_
48
- - :m001 msg:expectedResult 21 . _(source)_
49
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
50
- - :temperatureFlow :highThreshold 26 . _(source)_
51
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
52
- - :m001 :atStage :interpret . _(derived by Rule 2)_
53
- - :m001 :atStage :validate . _(derived by Rule 1)_
54
- - :m001 :atStage :ingest . _(source)_
55
- - :m001 rdf:type msg:RDFMessage . _(source)_
56
- - :m001 msg:offset 1 . _(source)_
57
- - :m001 msg:payloadKind :observation . _(source)_
58
- - :m001 msg:expectedResult 21 . _(source)_
59
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
60
- - ... 17 more premise fact(s)
61
- - :rdfMessageFlowExample :demonstrates :HeartbeatInFlow . _(derived by Rule 9)_
62
- - :temperatureFlow msg:orderedMessages (:m001 :m002 :m003 :m004 :m005) . _(source)_
63
- - :temperatureFlow :highThreshold 26 . _(source)_
64
- - :m001 :atStage :sink . _(derived by Rule 6)_
65
- - :m001 :atStage :route . _(derived by Rule 3)_
66
- - :m001 :atStage :interpret . _(derived by Rule 2)_
67
- - :m001 :atStage :validate . _(derived by Rule 1)_
68
- - support omitted beyond depth 4
69
- - :m001 rdf:type msg:RDFMessage . _(source)_
70
- - :m001 msg:offset 1 . _(source)_
71
- - :m001 msg:payloadKind :observation . _(source)_
72
- - :m001 msg:expectedResult 21 . _(source)_
73
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
74
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
75
- - :m001 :atStage :interpret . _(derived by Rule 2)_
76
- - :m001 :atStage :validate . _(derived by Rule 1)_
77
- - support omitted beyond depth 4
78
- - :m001 rdf:type msg:RDFMessage . _(source)_
79
- - :m001 msg:offset 1 . _(source)_
80
- - :m001 msg:payloadKind :observation . _(source)_
81
- - :m001 msg:expectedResult 21 . _(source)_
82
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
83
- - :temperatureFlow :highThreshold 26 . _(source)_
84
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
85
- - :m001 :atStage :interpret . _(derived by Rule 2)_
86
- - :m001 :atStage :validate . _(derived by Rule 1)_
87
- - :m001 :atStage :ingest . _(source)_
88
- - :m001 rdf:type msg:RDFMessage . _(source)_
89
- - :m001 msg:offset 1 . _(source)_
90
- - :m001 msg:payloadKind :observation . _(source)_
91
- - :m001 msg:expectedResult 21 . _(source)_
92
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
93
- - ... 17 more premise fact(s)
94
- - :rdfMessageFlowExample :demonstrates :AtomicMessageContext . _(derived by Rule 9)_
95
- - :temperatureFlow msg:orderedMessages (:m001 :m002 :m003 :m004 :m005) . _(source)_
96
- - :temperatureFlow :highThreshold 26 . _(source)_
97
- - :m001 :atStage :sink . _(derived by Rule 6)_
98
- - :m001 :atStage :route . _(derived by Rule 3)_
99
- - :m001 :atStage :interpret . _(derived by Rule 2)_
100
- - :m001 :atStage :validate . _(derived by Rule 1)_
101
- - support omitted beyond depth 4
102
- - :m001 rdf:type msg:RDFMessage . _(source)_
103
- - :m001 msg:offset 1 . _(source)_
104
- - :m001 msg:payloadKind :observation . _(source)_
105
- - :m001 msg:expectedResult 21 . _(source)_
106
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
107
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
108
- - :m001 :atStage :interpret . _(derived by Rule 2)_
109
- - :m001 :atStage :validate . _(derived by Rule 1)_
110
- - support omitted beyond depth 4
111
- - :m001 rdf:type msg:RDFMessage . _(source)_
112
- - :m001 msg:offset 1 . _(source)_
113
- - :m001 msg:payloadKind :observation . _(source)_
114
- - :m001 msg:expectedResult 21 . _(source)_
115
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
116
- - :temperatureFlow :highThreshold 26 . _(source)_
117
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
118
- - :m001 :atStage :interpret . _(derived by Rule 2)_
119
- - :m001 :atStage :validate . _(derived by Rule 1)_
120
- - :m001 :atStage :ingest . _(source)_
121
- - :m001 rdf:type msg:RDFMessage . _(source)_
122
- - :m001 msg:offset 1 . _(source)_
123
- - :m001 msg:payloadKind :observation . _(source)_
124
- - :m001 msg:expectedResult 21 . _(source)_
125
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
126
- - ... 17 more premise fact(s)
127
- - :rdfMessageFlowExample :demonstrates :BackPressureRelease . _(derived by Rule 9)_
128
- - :temperatureFlow msg:orderedMessages (:m001 :m002 :m003 :m004 :m005) . _(source)_
129
- - :temperatureFlow :highThreshold 26 . _(source)_
130
- - :m001 :atStage :sink . _(derived by Rule 6)_
131
- - :m001 :atStage :route . _(derived by Rule 3)_
132
- - :m001 :atStage :interpret . _(derived by Rule 2)_
133
- - :m001 :atStage :validate . _(derived by Rule 1)_
134
- - support omitted beyond depth 4
135
- - :m001 rdf:type msg:RDFMessage . _(source)_
136
- - :m001 msg:offset 1 . _(source)_
137
- - :m001 msg:payloadKind :observation . _(source)_
138
- - :m001 msg:expectedResult 21 . _(source)_
139
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
140
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
141
- - :m001 :atStage :interpret . _(derived by Rule 2)_
142
- - :m001 :atStage :validate . _(derived by Rule 1)_
143
- - support omitted beyond depth 4
144
- - :m001 rdf:type msg:RDFMessage . _(source)_
145
- - :m001 msg:offset 1 . _(source)_
146
- - :m001 msg:payloadKind :observation . _(source)_
147
- - :m001 msg:expectedResult 21 . _(source)_
148
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
149
- - :temperatureFlow :highThreshold 26 . _(source)_
150
- - :m001 msg:payloadResult 21 . _(derived by Rule 3)_
151
- - :m001 :atStage :interpret . _(derived by Rule 2)_
152
- - :m001 :atStage :validate . _(derived by Rule 1)_
153
- - :m001 :atStage :ingest . _(source)_
154
- - :m001 rdf:type msg:RDFMessage . _(source)_
155
- - :m001 msg:offset 1 . _(source)_
156
- - :m001 msg:payloadKind :observation . _(source)_
157
- - :m001 msg:expectedResult 21 . _(source)_
158
- - :m001 msg:payload { _:m001b0 rdf:type sosa:Observation . _:m001b0 sosa:madeBySensor :thermometerA . _:m001b0 sosa:resultTime "2026-05-12T18:20:00Z" . _:m001b0 sosa:hasSimpleResult 21 } . _(source)_
159
- - ... 17 more premise fact(s)
160
-
161
- ## Formal TriG Output
162
-
163
- ```trig
164
- @prefix : <https://eyereasoner.github.io/see/examples/rdf-message-flow#> .
165
- @prefix msg: <https://example.org/msg#> .
166
- @prefix prov: <http://www.w3.org/ns/prov#> .
167
- @prefix sosa: <http://www.w3.org/ns/sosa/> .
168
- @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
169
- @prefix math: <http://www.w3.org/2000/10/swap/math#> .
170
- @prefix list: <http://www.w3.org/2000/10/swap/list#> .
171
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
172
- @prefix string: <http://www.w3.org/2000/10/swap/string#> .
173
- @prefix see: <https://example.org/see#> .
174
- @prefix in: <https://example.org/see/input#> .
175
- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
176
-
177
- :rdfMessageFlowExample :demonstrates :ContinuousFlow .
178
- :rdfMessageFlowExample :demonstrates :BackPressureRelease .
179
- :rdfMessageFlowExample :demonstrates :AtomicMessageContext .
180
- :rdfMessageFlowExample :demonstrates :HeartbeatInFlow .
181
- :rdfMessageFlowExample :demonstrates :ThresholdRouting .
182
-
183
- in:metadata {
184
- in:run a see:InputDataset .
185
- in:run see:name "rdf_message_flow" .
186
- in:run see:title "RDF Message Flow" .
187
- in:run see:sourceFile "examples/n3/rdf_message_flow.n3" .
188
- in:run see:sourceSHA256 "e4e534c8ac3c2aa276e7158cca8d3146531879033f73685c302b486be2ab0099" .
189
- in:run see:description "A companion to rdf_messages.n3. This example focuses on a live stream where\nRDF Messages continuously flow through a small processing pipeline. The next\nmessage is released only after the current message reaches the sink, so the\nstream behaves as an ordered, replayable flow rather than a single merged RDF\ngraph." .
190
- in:run see:compiler "see.js N3-to-JS compiler" .
191
- in:run see:inputFacts 42 .
192
- in:run see:compiledRules 9 .
193
- in:run see:compiledBackwardRules 0 .
194
- in:run see:compiledFuses 0 .
195
- in:run see:compiledQueries 1 .
196
- }
197
- ```
198
-