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.
- package/HANDBOOK.md +0 -99
- package/README.md +2 -2
- package/dist/browser/eyeling.browser.js +6 -0
- package/{see/examples/n3 → examples}/annotation.n3 +1 -1
- package/{see/examples/n3/backward_recursion.n3 → examples/backward-recursion.n3} +0 -2
- package/examples/collection.n3 +3 -0
- package/examples/context-association.n3 +59 -0
- package/{see/examples/n3/dijkstra_risk_path.n3 → examples/dijkstra-risk-path.n3} +3 -18
- package/{see/examples/n3/eco_route_insight.n3 → examples/eco-route-insight.n3} +2 -47
- package/{see/examples/n3/genetic_knapsack_selection.n3 → examples/genetic-knapsack-selection.n3} +2 -24
- package/{see/examples → examples}/input/annotation.trig +3 -3
- package/{see/examples/input/backward_recursion.trig → examples/input/backward-recursion.trig} +2 -2
- package/{see/examples/input/builtin_coverage.trig → examples/input/builtin-coverage.trig} +2 -2
- package/{see/examples → examples}/input/collection.trig +3 -3
- package/examples/input/context-association.trig +35 -0
- package/{see/examples/input/dijkstra_risk_path.trig → examples/input/dijkstra-risk-path.trig} +4 -4
- package/{see/examples/input/eco_route_insight.trig → examples/input/eco-route-insight.trig} +4 -4
- package/{see/examples/input/genetic_knapsack_selection.trig → examples/input/genetic-knapsack-selection.trig} +4 -4
- package/{see/examples/input/rc_discharge_envelope.trig → examples/input/rc-discharge-envelope.trig} +4 -4
- package/{see/examples/input/rdf_dataset.trig → examples/input/rdf-dataset.trig} +4 -4
- package/{see/examples/input/rdf_message_flow.trig → examples/input/rdf-message-flow.trig} +3 -3
- package/{see/examples/input/rdf_messages.trig → examples/input/rdf-messages.trig} +4 -4
- package/{see/examples/input/school_placement_audit.trig → examples/input/school-placement-audit.trig} +4 -4
- package/{see/examples/input/smoke_arithmetic.trig → examples/input/smoke-arithmetic.trig} +3 -3
- package/{see/examples/input/triple_terms.trig → examples/input/triple-terms.trig} +3 -3
- package/examples/output/annotation.n3 +0 -0
- package/examples/output/backward-recursion.n3 +4 -0
- package/examples/output/builtin-coverage.n3 +0 -0
- package/examples/output/collection.n3 +0 -0
- package/examples/output/context-association.n3 +9 -0
- package/examples/output/dijkstra-risk-path.n3 +3 -0
- package/examples/output/eco-route-insight.n3 +3 -0
- package/examples/output/genetic-knapsack-selection.n3 +3 -0
- package/examples/output/rc-discharge-envelope.n3 +9 -0
- package/examples/output/rc-discharge-envelope.txt +9 -0
- package/examples/output/rdf-dataset.n3 +5 -0
- package/examples/output/rdf-message-flow.n3 +7 -0
- package/examples/output/rdf-messages.n3 +7 -0
- package/examples/output/school-placement-audit.n3 +3 -0
- package/examples/output/smoke-arithmetic.n3 +5 -0
- package/examples/output/smoke-arithmetic.txt +5 -0
- package/examples/output/triple-terms.n3 +5 -0
- package/{see/examples/n3/rc_discharge_envelope.n3 → examples/rc-discharge-envelope.n3} +2 -15
- package/{see/examples/n3/rdf_dataset.n3 → examples/rdf-dataset.n3} +2 -11
- package/{see/examples/n3/rdf_message_flow.n3 → examples/rdf-message-flow.n3} +9 -75
- package/{see/examples/n3/rdf_messages.n3 → examples/rdf-messages.n3} +6 -43
- package/{see/examples/n3/school_placement_audit.n3 → examples/school-placement-audit.n3} +2 -14
- package/{see/examples/n3/smoke_arithmetic.n3 → examples/smoke-arithmetic.n3} +3 -5
- package/{see/examples/n3/triple_terms.n3 → examples/triple-terms.n3} +1 -4
- package/eyeling.js +6 -0
- package/lib/builtins.js +6 -0
- package/package.json +4 -7
- package/test/api.test.js +25 -8
- package/test/examples.test.js +22 -2
- package/test/package.test.js +16 -2
- package/see/README.md +0 -149
- package/see/examples/_see.js +0 -249
- package/see/examples/age.js +0 -1459
- package/see/examples/annotation.js +0 -1320
- package/see/examples/backward.js +0 -1405
- package/see/examples/backward_recursion.js +0 -1504
- package/see/examples/bayes_diagnosis.js +0 -2883
- package/see/examples/bayes_therapy.js +0 -4152
- package/see/examples/bmi.js +0 -3038
- package/see/examples/builtin_coverage.js +0 -2524
- package/see/examples/collection.js +0 -1320
- package/see/examples/complex.js +0 -3762
- package/see/examples/complex_matrix_stability.js +0 -2973
- package/see/examples/composition_of_injective_functions_is_injective.js +0 -2170
- package/see/examples/control_system.js +0 -1918
- package/see/examples/crypto_builtins_tests.js +0 -1489
- package/see/examples/delfour.js +0 -3174
- package/see/examples/digital_product_passport.js +0 -2856
- package/see/examples/dijkstra.js +0 -2070
- package/see/examples/dijkstra_risk_path.js +0 -1874
- package/see/examples/doc/age.md +0 -27
- package/see/examples/doc/annotation.md +0 -24
- package/see/examples/doc/backward.md +0 -26
- package/see/examples/doc/backward_recursion.md +0 -26
- package/see/examples/doc/bayes_diagnosis.md +0 -41
- package/see/examples/doc/bayes_therapy.md +0 -40
- package/see/examples/doc/bmi.md +0 -38
- package/see/examples/doc/builtin_coverage.md +0 -53
- package/see/examples/doc/collection.md +0 -24
- package/see/examples/doc/complex.md +0 -38
- package/see/examples/doc/complex_matrix_stability.md +0 -35
- package/see/examples/doc/composition_of_injective_functions_is_injective.md +0 -24
- package/see/examples/doc/control_system.md +0 -32
- package/see/examples/doc/crypto_builtins_tests.md +0 -27
- package/see/examples/doc/delfour.md +0 -37
- package/see/examples/doc/digital_product_passport.md +0 -36
- package/see/examples/doc/dijkstra.md +0 -28
- package/see/examples/doc/dijkstra_risk_path.md +0 -30
- package/see/examples/doc/dog.md +0 -28
- package/see/examples/doc/eco_route_insight.md +0 -33
- package/see/examples/doc/equals.md +0 -26
- package/see/examples/doc/equivalence_classes_overlap_implies_same_class.md +0 -24
- package/see/examples/doc/euler_identity.md +0 -39
- package/see/examples/doc/ev_roundtrip_planner.md +0 -32
- package/see/examples/doc/existential_rule.md +0 -24
- package/see/examples/doc/expression_eval.md +0 -26
- package/see/examples/doc/family_cousins.md +0 -24
- package/see/examples/doc/fastpow.md +0 -29
- package/see/examples/doc/fibonacci.md +0 -28
- package/see/examples/doc/french_cities.md +0 -28
- package/see/examples/doc/fundamental_theorem_arithmetic.md +0 -36
- package/see/examples/doc/genetic_knapsack_selection.md +0 -29
- package/see/examples/doc/goldbach_1000.md +0 -31
- package/see/examples/doc/good_cobbler.md +0 -27
- package/see/examples/doc/gps.md +0 -35
- package/see/examples/doc/gray_code_counter.md +0 -31
- package/see/examples/doc/greatest_lower_bound_uniqueness.md +0 -24
- package/see/examples/doc/group_inverse_uniqueness.md +0 -24
- package/see/examples/doc/hadamard_approx.md +0 -32
- package/see/examples/doc/hanoi.md +0 -26
- package/see/examples/doc/odrl_dpv_risk_ranked.md +0 -57
- package/see/examples/doc/path_discovery.md +0 -33
- package/see/examples/doc/rc_discharge_envelope.md +0 -33
- package/see/examples/doc/rdf_dataset.md +0 -26
- package/see/examples/doc/rdf_message_flow.md +0 -35
- package/see/examples/doc/rdf_messages.md +0 -37
- package/see/examples/doc/school_placement_audit.md +0 -31
- package/see/examples/doc/smoke_arithmetic.md +0 -31
- package/see/examples/doc/socrates.md +0 -24
- package/see/examples/doc/triple_terms.md +0 -26
- package/see/examples/doc/wind_turbine.md +0 -37
- package/see/examples/doc/witch.md +0 -28
- package/see/examples/dog.js +0 -1436
- package/see/examples/eco_route_insight.js +0 -2110
- package/see/examples/equals.js +0 -1363
- package/see/examples/equivalence_classes_overlap_implies_same_class.js +0 -1792
- package/see/examples/euler_identity.js +0 -2038
- package/see/examples/ev_roundtrip_planner.js +0 -2562
- package/see/examples/existential_rule.js +0 -1363
- package/see/examples/expression_eval.js +0 -1798
- package/see/examples/family_cousins.js +0 -1586
- package/see/examples/fastpow.js +0 -2207
- package/see/examples/fibonacci.js +0 -1594
- package/see/examples/french_cities.js +0 -1492
- package/see/examples/fundamental_theorem_arithmetic.js +0 -2106
- package/see/examples/genetic_knapsack_selection.js +0 -1743
- package/see/examples/goldbach_1000.js +0 -1798
- package/see/examples/good_cobbler.js +0 -1396
- package/see/examples/gps.js +0 -2813
- package/see/examples/gray_code_counter.js +0 -1641
- package/see/examples/greatest_lower_bound_uniqueness.js +0 -1918
- package/see/examples/group_inverse_uniqueness.js +0 -1897
- package/see/examples/hadamard_approx.js +0 -4417
- package/see/examples/hanoi.js +0 -1625
- package/see/examples/input/age.trig +0 -27
- package/see/examples/input/backward.trig +0 -25
- package/see/examples/input/bayes_diagnosis.trig +0 -111
- package/see/examples/input/bayes_therapy.trig +0 -130
- package/see/examples/input/bmi.trig +0 -28
- package/see/examples/input/complex.trig +0 -26
- package/see/examples/input/complex_matrix_stability.trig +0 -65
- package/see/examples/input/composition_of_injective_functions_is_injective.trig +0 -35
- package/see/examples/input/control_system.trig +0 -31
- package/see/examples/input/crypto_builtins_tests.trig +0 -25
- package/see/examples/input/delfour.trig +0 -90
- package/see/examples/input/digital_product_passport.trig +0 -116
- package/see/examples/input/dijkstra.trig +0 -34
- package/see/examples/input/dog.trig +0 -31
- package/see/examples/input/equals.trig +0 -25
- package/see/examples/input/equivalence_classes_overlap_implies_same_class.trig +0 -28
- package/see/examples/input/euler_identity.trig +0 -34
- package/see/examples/input/ev_roundtrip_planner.trig +0 -90
- package/see/examples/input/existential_rule.trig +0 -26
- package/see/examples/input/expression_eval.trig +0 -41
- package/see/examples/input/family_cousins.trig +0 -39
- package/see/examples/input/fastpow.trig +0 -25
- package/see/examples/input/fibonacci.trig +0 -51
- package/see/examples/input/french_cities.trig +0 -38
- package/see/examples/input/fundamental_theorem_arithmetic.trig +0 -42
- package/see/examples/input/goldbach_1000.trig +0 -53
- package/see/examples/input/good_cobbler.trig +0 -24
- package/see/examples/input/gps.trig +0 -35
- package/see/examples/input/gray_code_counter.trig +0 -33
- package/see/examples/input/greatest_lower_bound_uniqueness.trig +0 -29
- package/see/examples/input/group_inverse_uniqueness.trig +0 -29
- package/see/examples/input/hadamard_approx.trig +0 -32
- package/see/examples/input/hanoi.trig +0 -26
- package/see/examples/input/odrl_dpv_risk_ranked.trig +0 -107
- package/see/examples/input/path-discovery.trig +0 -96448
- package/see/examples/input/path_discovery.trig +0 -29
- package/see/examples/input/socrates.trig +0 -26
- package/see/examples/input/wind_turbine.trig +0 -48
- package/see/examples/input/witch.trig +0 -26
- package/see/examples/n3/age.n3 +0 -28
- package/see/examples/n3/backward.n3 +0 -22
- package/see/examples/n3/bayes_diagnosis.n3 +0 -122
- package/see/examples/n3/bayes_therapy.n3 +0 -149
- package/see/examples/n3/bmi.n3 +0 -145
- package/see/examples/n3/collection.n3 +0 -3
- package/see/examples/n3/complex.n3 +0 -140
- package/see/examples/n3/complex_matrix_stability.n3 +0 -113
- package/see/examples/n3/composition_of_injective_functions_is_injective.n3 +0 -27
- package/see/examples/n3/control_system.n3 +0 -59
- package/see/examples/n3/crypto_builtins_tests.n3 +0 -18
- package/see/examples/n3/delfour.n3 +0 -167
- package/see/examples/n3/digital_product_passport.n3 +0 -156
- package/see/examples/n3/dijkstra.n3 +0 -46
- package/see/examples/n3/dog.n3 +0 -20
- package/see/examples/n3/equals.n3 +0 -11
- package/see/examples/n3/equivalence_classes_overlap_implies_same_class.n3 +0 -19
- package/see/examples/n3/euler_identity.n3 +0 -41
- package/see/examples/n3/ev_roundtrip_planner.n3 +0 -82
- package/see/examples/n3/existential_rule.n3 +0 -10
- package/see/examples/n3/expression_eval.n3 +0 -21
- package/see/examples/n3/family_cousins.n3 +0 -62
- package/see/examples/n3/fastpow.n3 +0 -56
- package/see/examples/n3/fibonacci.n3 +0 -44
- package/see/examples/n3/french_cities.n3 +0 -28
- package/see/examples/n3/fundamental_theorem_arithmetic.n3 +0 -84
- package/see/examples/n3/goldbach_1000.n3 +0 -66
- package/see/examples/n3/good_cobbler.n3 +0 -10
- package/see/examples/n3/gps.n3 +0 -70
- package/see/examples/n3/gray_code_counter.n3 +0 -53
- package/see/examples/n3/greatest_lower_bound_uniqueness.n3 +0 -20
- package/see/examples/n3/group_inverse_uniqueness.n3 +0 -19
- package/see/examples/n3/hadamard_approx.n3 +0 -43
- package/see/examples/n3/hanoi.n3 +0 -16
- package/see/examples/n3/odrl_dpv_risk_ranked.n3 +0 -460
- package/see/examples/n3/path_discovery.n3 +0 -43
- package/see/examples/n3/socrates.n3 +0 -21
- package/see/examples/n3/wind_turbine.n3 +0 -85
- package/see/examples/n3/witch.n3 +0 -30
- package/see/examples/odrl_dpv_risk_ranked.js +0 -5128
- package/see/examples/output/age.md +0 -48
- package/see/examples/output/annotation.md +0 -43
- package/see/examples/output/backward.md +0 -50
- package/see/examples/output/backward_recursion.md +0 -54
- package/see/examples/output/bayes_diagnosis.md +0 -103
- package/see/examples/output/bayes_therapy.md +0 -84
- package/see/examples/output/bmi.md +0 -164
- package/see/examples/output/builtin_coverage.md +0 -99
- package/see/examples/output/collection.md +0 -44
- package/see/examples/output/complex.md +0 -61
- package/see/examples/output/complex_matrix_stability.md +0 -55
- package/see/examples/output/composition_of_injective_functions_is_injective.md +0 -62
- package/see/examples/output/control_system.md +0 -61
- package/see/examples/output/crypto_builtins_tests.md +0 -68
- package/see/examples/output/delfour.md +0 -100
- package/see/examples/output/digital_product_passport.md +0 -100
- package/see/examples/output/dijkstra.md +0 -74
- package/see/examples/output/dijkstra_risk_path.md +0 -76
- package/see/examples/output/dog.md +0 -50
- package/see/examples/output/eco_route_insight.md +0 -88
- package/see/examples/output/equals.md +0 -50
- package/see/examples/output/equivalence_classes_overlap_implies_same_class.md +0 -86
- package/see/examples/output/euler_identity.md +0 -73
- package/see/examples/output/ev_roundtrip_planner.md +0 -79
- package/see/examples/output/existential_rule.md +0 -54
- package/see/examples/output/expression_eval.md +0 -50
- package/see/examples/output/family_cousins.md +0 -187
- package/see/examples/output/fastpow.md +0 -36
- package/see/examples/output/fibonacci.md +0 -53
- package/see/examples/output/french_cities.md +0 -70
- package/see/examples/output/fundamental_theorem_arithmetic.md +0 -101
- package/see/examples/output/genetic_knapsack_selection.md +0 -66
- package/see/examples/output/goldbach_1000.md +0 -58
- package/see/examples/output/good_cobbler.md +0 -54
- package/see/examples/output/gps.md +0 -102
- package/see/examples/output/gray_code_counter.md +0 -68
- package/see/examples/output/greatest_lower_bound_uniqueness.md +0 -60
- package/see/examples/output/group_inverse_uniqueness.md +0 -60
- package/see/examples/output/hadamard_approx.md +0 -510
- package/see/examples/output/hanoi.md +0 -51
- package/see/examples/output/odrl_dpv_risk_ranked.md +0 -139
- package/see/examples/output/path_discovery.md +0 -65
- package/see/examples/output/rc_discharge_envelope.md +0 -102
- package/see/examples/output/rdf_dataset.md +0 -54
- package/see/examples/output/rdf_message_flow.md +0 -198
- package/see/examples/output/rdf_messages.md +0 -134
- package/see/examples/output/school_placement_audit.md +0 -99
- package/see/examples/output/smoke_arithmetic.md +0 -54
- package/see/examples/output/socrates.md +0 -55
- package/see/examples/output/triple_terms.md +0 -53
- package/see/examples/output/wind_turbine.md +0 -108
- package/see/examples/output/witch.md +0 -87
- package/see/examples/path_discovery.js +0 -1774
- package/see/examples/rc_discharge_envelope.js +0 -1993
- package/see/examples/rdf_dataset.js +0 -1512
- package/see/examples/rdf_message_flow.js +0 -2580
- package/see/examples/rdf_messages.js +0 -2176
- package/see/examples/school_placement_audit.js +0 -1867
- package/see/examples/smoke_arithmetic.js +0 -1483
- package/see/examples/socrates.js +0 -1420
- package/see/examples/triple_terms.js +0 -1442
- package/see/examples/wind_turbine.js +0 -2853
- package/see/examples/witch.js +0 -1519
- package/see/see.js +0 -2179
- package/test/see.test.js +0 -159
- /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
|
-
|