eyeling 1.16.4 → 1.17.0

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.
@@ -1,34 +1 @@
1
- @prefix : <https://example.org/demo#> .
2
- @prefix c: <https://example.org/appC#> .
3
- @prefix ex: <https://example.org/common#> .
4
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
5
- @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
6
-
7
- :aliceA a ex:Customer .
8
- :aliceA ex:email "alice@example.com" .
9
- :aliceA ex:lifetimeSpendEur "1200"^^xsd:decimal .
10
- :aliceB a ex:Customer .
11
- :aliceB ex:email "alice@example.com" .
12
- :aliceB ex:lifetimeSpendEur "1200.00"^^xsd:decimal .
13
- :aliceB ex:hasOpenInvoice :invoice42 .
14
- :invoice42 ex:amountDueEur "200"^^xsd:decimal .
15
- :aliceC a ex:Customer .
16
- :aliceC ex:email "alice@example.com" .
17
- :aliceC ex:marketingOptIn true .
18
- :aliceC ex:preferredChannel c:Email .
19
- :aliceA ex:sameCustomerAs :aliceA .
20
- :aliceA ex:sameCustomerAs :aliceB .
21
- :aliceA ex:sameCustomerAs :aliceC .
22
- :aliceB ex:sameCustomerAs :aliceA .
23
- :aliceB ex:sameCustomerAs :aliceB .
24
- :aliceB ex:sameCustomerAs :aliceC .
25
- :aliceC ex:sameCustomerAs :aliceA .
26
- :aliceC ex:sameCustomerAs :aliceB .
27
- :aliceC ex:sameCustomerAs :aliceC .
28
- :aliceA ex:hasOpenInvoice :invoice42 .
29
- :aliceA ex:lifetimeSpendEur "1200.00"^^xsd:decimal .
30
- :aliceA ex:marketingOptIn true .
31
- :aliceA ex:preferredChannel c:Email .
32
- :aliceA ex:eligibleFor ex:GoldDiscount .
33
- :aliceA ex:recommendedAction ex:ApplyGoldDiscountAndSendInvoiceReminder .
34
- "001" log:outputString "ACTION: apply GoldDiscount and send invoice reminder (opt-in confirmed)." .
1
+ ACTION: apply GoldDiscount and send invoice reminder (opt-in confirmed).
@@ -1,12 +1,21 @@
1
- @prefix : <https://example.org/odrl-dpv-ehds-risk-ranked#> .
2
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
3
-
4
- (:AgreementEHDS1 :PatientProfileExample 0) log:outputString "\n=== Ranked DPV Risk Report (EHDS-aligned) ===\nAgreement: EHDS Secondary Use Agreement (example)\nProfile: Example patient profile (EHDS rights expectations)\n\n" .
5
- (:AgreementEHDS1 :PatientProfileExample 1 900 "H1" 0 _:sk_1) log:outputString "score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H1\n Risk: secondary use is permitted without an EHDS Data Permit safeguard. Clause H1: Hospital may provide electronic health data for secondary use based on a bilateral data use agreement with the applicant.\n\n" .
6
- (:AgreementEHDS1 :PatientProfileExample 1 900 "H1" 1 _:sk_1 _:sk_2) log:outputString " - mitigation for clause H1: Require an EHDS Data Permit (eu-ehds:DataPermit) issued by a Health Data Access Body prior to secondary use.\n" .
7
- (:AgreementEHDS1 :PatientProfileExample 1 900 "H2" 0 _:sk_5) log:outputString "score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H2\n Risk: secondary use may include patients who opted out (EHDS A71). Clause H2: Secondary use may include all patient records for training and evaluating health-related algorithms.\n\n" .
8
- (:AgreementEHDS1 :PatientProfileExample 1 900 "H2" 1 _:sk_5 _:sk_6) log:outputString " - mitigation for clause H2: Add an explicit safeguard to exclude records of persons who exercised the EHDS opt-out from secondary use (A71).\n" .
9
- (:AgreementEHDS1 :PatientProfileExample 1 912 "H3" 0 _:sk_9) log:outputString "score=88 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H3\n Risk: the agreement permits local downloads rather than processing within a secure processing environment. Clause H3: The applicant may download a complete local copy of the dataset to its own infrastructure for analysis.\n\n" .
10
- (:AgreementEHDS1 :PatientProfileExample 1 912 "H3" 1 _:sk_9 _:sk_10) log:outputString " - mitigation for clause H3: Require processing only within a secure processing environment (e.g., eu-dga:SecureProcessingEnvironment), and prohibit local downloads of raw datasets.\n" .
11
- (:AgreementEHDS1 :PatientProfileExample 1 920 "H4" 0 _:sk_12) log:outputString "score=80 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H4\n Risk: secondary-use dataset is only described as pseudonymised, without a safeguard requiring statistically anonymised data for secondary use. Clause H4: The dataset will be provided in pseudonymised form by removing direct identifiers.\n\n" .
12
- (:AgreementEHDS1 :PatientProfileExample 1 920 "H4" 1 _:sk_12 _:sk_13) log:outputString " - mitigation for clause H4: Require an EHDS Health Data Request for statistically anonymised data (eu-ehds:HealthDataRequest), and add a constraint that secondary-use data must be statistically anonymised.\n" .
1
+
2
+ === Ranked DPV Risk Report (EHDS-aligned) ===
3
+ Agreement: EHDS Secondary Use Agreement (example)
4
+ Profile: Example patient profile (EHDS rights expectations)
5
+
6
+ score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H1
7
+ Risk: secondary use is permitted without an EHDS Data Permit safeguard. Clause H1: Hospital may provide electronic health data for secondary use based on a bilateral data use agreement with the applicant.
8
+
9
+ - mitigation for clause H1: Require an EHDS Data Permit (eu-ehds:DataPermit) issued by a Health Data Access Body prior to secondary use.
10
+ score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H2
11
+ Risk: secondary use may include patients who opted out (EHDS A71). Clause H2: Secondary use may include all patient records for training and evaluating health-related algorithms.
12
+
13
+ - mitigation for clause H2: Add an explicit safeguard to exclude records of persons who exercised the EHDS opt-out from secondary use (A71).
14
+ score=88 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H3
15
+ Risk: the agreement permits local downloads rather than processing within a secure processing environment. Clause H3: The applicant may download a complete local copy of the dataset to its own infrastructure for analysis.
16
+
17
+ - mitigation for clause H3: Require processing only within a secure processing environment (e.g., eu-dga:SecureProcessingEnvironment), and prohibit local downloads of raw datasets.
18
+ score=80 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H4
19
+ Risk: secondary-use dataset is only described as pseudonymised, without a safeguard requiring statistically anonymised data for secondary use. Clause H4: The dataset will be provided in pseudonymised form by removing direct identifiers.
20
+
21
+ - mitigation for clause H4: Require an EHDS Health Data Request for statistically anonymised data (eu-ehds:HealthDataRequest), and add a constraint that secondary-use data must be statistically anonymised.
@@ -1,117 +1,17 @@
1
- @prefix : <https://example.org/odrl-dpv-healthcare-risk-ranked#> .
2
- @prefix dct: <http://purl.org/dc/terms/> .
3
- @prefix dpv: <https://w3id.org/dpv#> .
4
- @prefix genid: <https://eyereasoner.github.io/.well-known/genid/> .
5
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
6
- @prefix odrl: <http://www.w3.org/ns/odrl/2/> .
7
- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8
- @prefix risk: <https://w3id.org/dpv/risk#> .
9
1
 
10
- genid:499c8c88-3ef3-7ae0-932f-c74cf4fb20f4 a risk:RiskSource .
11
- genid:499c8c88-3ef3-7ae0-932f-c74cf4fb20f4 a risk:LegalComplianceRisk .
12
- genid:499c8c88-3ef3-7ae0-932f-c74cf4fb20f4 dct:source :PermResearchUse .
13
- genid:499c8c88-3ef3-7ae0-932f-c74cf4fb20f4 dct:description "Research use permitted without explicit consent constraint." .
14
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 a dpv:Risk .
15
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 a risk:PolicyRisk .
16
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 a risk:CustomerConfidenceLoss .
17
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dct:source :PermResearchUse .
18
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 risk:hasRiskSource genid:499c8c88-3ef3-7ae0-932f-c74cf4fb20f4 .
19
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dpv:hasConsequence risk:CustomerConfidenceLoss .
20
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dpv:hasImpact risk:NonMaterialDamage .
21
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dpv:hasImpact risk:FinancialLoss .
22
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 :aboutClause :ClauseH1 .
23
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 :scoreRaw 120 .
24
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 :violatesNeed :Need_ConsentForResearch .
25
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dct:description "Risk: health/genomic data may be used for research without explicit opt-in consent. Clause H1: Hospital may use EHR and genomic data for internal clinical research and publication." .
26
- :ProcessContextHC1 dpv:hasRisk genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 .
27
- genid:d8249b0c-66d8-73a8-c1d0-8c7c5256b338 a dpv:RiskMitigationMeasure .
28
- genid:d8249b0c-66d8-73a8-c1d0-8c7c5256b338 dct:description "Add an explicit consent constraint for secondary research use." .
29
- genid:d8249b0c-66d8-73a8-c1d0-8c7c5256b338 dpv:mitigatesRisk genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 .
30
- genid:d8249b0c-66d8-73a8-c1d0-8c7c5256b338 :suggestAdd {
31
- :PermResearchUse odrl:constraint _:sk_0 .
32
- _:sk_0 a odrl:Constraint .
33
- _:sk_0 odrl:leftOperand :explicitConsent .
34
- _:sk_0 odrl:operator odrl:eq .
35
- _:sk_0 odrl:rightOperand true .
36
- } .
37
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dpv:isMitigatedByMeasure genid:d8249b0c-66d8-73a8-c1d0-8c7c5256b338 .
38
- genid:3c85dd80-8e33-c0fa-8b1c-89f4c16ca4cc a risk:RiskSource .
39
- genid:3c85dd80-8e33-c0fa-8b1c-89f4c16ca4cc a risk:LegalComplianceRisk .
40
- genid:3c85dd80-8e33-c0fa-8b1c-89f4c16ca4cc dct:source :PermShareWithPharma .
41
- genid:3c85dd80-8e33-c0fa-8b1c-89f4c16ca4cc dct:description "External sharing permitted without de-identification/pseudonymisation requirement." .
42
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 a dpv:Risk .
43
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 a risk:UnwantedDisclosureData .
44
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 a risk:ReputationalRisk .
45
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dct:source :PermShareWithPharma .
46
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 risk:hasRiskSource genid:3c85dd80-8e33-c0fa-8b1c-89f4c16ca4cc .
47
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dpv:hasConsequence risk:CustomerConfidenceLoss .
48
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dpv:hasImpact risk:NonMaterialDamage .
49
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dpv:hasImpact risk:FinancialLoss .
50
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dpv:hasImpact risk:Discrimination .
51
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 :aboutClause :ClauseH2 .
52
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 :scoreRaw 125 .
53
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 :violatesNeed :Need_DeIdentifyBeforeSharing .
54
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dct:description "Risk: genomic data may be shared with external pharma partners without a de-identification/pseudonymisation requirement. Clause H2: Hospital may share genomic data with pharmaceutical partners for drug discovery and R&D." .
55
- :ProcessContextHC1 dpv:hasRisk genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 .
56
- genid:be734cc0-bf89-eac8-fa57-8bfba350cb64 a dpv:RiskMitigationMeasure .
57
- genid:be734cc0-bf89-eac8-fa57-8bfba350cb64 dct:description "Require de-identification/pseudonymisation before external sharing of genomic data." .
58
- genid:be734cc0-bf89-eac8-fa57-8bfba350cb64 dpv:mitigatesRisk genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 .
59
- genid:be734cc0-bf89-eac8-fa57-8bfba350cb64 :suggestAdd {
60
- :PermShareWithPharma odrl:constraint _:sk_1 .
61
- _:sk_1 a odrl:Constraint .
62
- _:sk_1 odrl:leftOperand :deIdentified .
63
- _:sk_1 odrl:operator odrl:eq .
64
- _:sk_1 odrl:rightOperand true .
65
- :PermShareWithPharma odrl:duty _:sk_2 .
66
- _:sk_2 a odrl:Duty .
67
- _:sk_2 odrl:action :deIdentify .
68
- _:sk_2 odrl:constraint _:sk_3 .
69
- _:sk_3 a odrl:Constraint .
70
- _:sk_3 odrl:leftOperand :deIdentificationStandard .
71
- _:sk_3 odrl:operator odrl:eq .
72
- _:sk_3 odrl:rightOperand :StateOfTheArt .
73
- } .
74
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dpv:isMitigatedByMeasure genid:be734cc0-bf89-eac8-fa57-8bfba350cb64 .
75
- genid:fc8b3e87-761e-e430-a338-09d827d7d764 a risk:RiskSource .
76
- genid:fc8b3e87-761e-e430-a338-09d827d7d764 a risk:PolicyRisk .
77
- genid:fc8b3e87-761e-e430-a338-09d827d7d764 dct:source :PermRetention10y .
78
- genid:fc8b3e87-761e-e430-a338-09d827d7d764 dct:description "Retention period exceeds patient preference." .
79
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec a dpv:Risk .
80
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec a risk:PolicyRisk .
81
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec a risk:CustomerConfidenceLoss .
82
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec dct:source :PermRetention10y .
83
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec risk:hasRiskSource genid:fc8b3e87-761e-e430-a338-09d827d7d764 .
84
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec dpv:hasConsequence risk:CustomerConfidenceLoss .
85
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec dpv:hasImpact risk:NonMaterialDamage .
86
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec :aboutClause :ClauseH4 .
87
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec :scoreRaw 70 .
88
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec :violatesNeed :Need_RetentionLimit3y .
89
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec dct:description "Risk: retention (3650 days) exceeds patient preference (1095 days). Clause H4: Hospital retains patient health records for 10 years." .
90
- :ProcessContextHC1 dpv:hasRisk genid:e333f4ec-b543-e01c-ae40-fce8760f4fec .
91
- genid:4576211e-2495-d7a8-ebb0-5eb4707c9ce4 a dpv:RiskMitigationMeasure .
92
- genid:4576211e-2495-d7a8-ebb0-5eb4707c9ce4 dct:description "Limit retention to 3 years (or document the legal obligation requiring longer retention)." .
93
- genid:4576211e-2495-d7a8-ebb0-5eb4707c9ce4 dpv:mitigatesRisk genid:e333f4ec-b543-e01c-ae40-fce8760f4fec .
94
- genid:4576211e-2495-d7a8-ebb0-5eb4707c9ce4 :suggestAdd {
95
- :PermRetention10y odrl:constraint _:sk_4 .
96
- _:sk_4 a odrl:Constraint .
97
- _:sk_4 odrl:leftOperand :retentionDays .
98
- _:sk_4 odrl:operator odrl:lteq .
99
- _:sk_4 odrl:rightOperand 1095 .
100
- } .
101
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec dpv:isMitigatedByMeasure genid:4576211e-2495-d7a8-ebb0-5eb4707c9ce4 .
102
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 :score 100 .
103
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 :score 100 .
104
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec :score 70 .
105
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dpv:hasSeverity risk:HighSeverity .
106
- genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 dpv:hasRiskLevel risk:HighRisk .
107
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dpv:hasSeverity risk:HighSeverity .
108
- genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 dpv:hasRiskLevel risk:HighRisk .
109
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec dpv:hasSeverity risk:ModerateSeverity .
110
- genid:e333f4ec-b543-e01c-ae40-fce8760f4fec dpv:hasRiskLevel risk:ModerateRisk .
111
- (:AgreementHC1 :PatientExample 0) log:outputString "\n=== Ranked DPV Risk Report (Healthcare & Life Sciences) ===\nAgreement: Example Healthcare & Life-Sciences Data Use Agreement\nProfile: Example patient profile\n\n" .
112
- (:AgreementHC1 :PatientExample 1 900 "H1" 0 genid:6e6083d0-be14-5284-ce15-b2f04cc273c8) log:outputString "score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H1\n Risk: health/genomic data may be used for research without explicit opt-in consent. Clause H1: Hospital may use EHR and genomic data for internal clinical research and publication.\n\n" .
113
- (:AgreementHC1 :PatientExample 1 900 "H2" 0 genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280) log:outputString "score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H2\n Risk: genomic data may be shared with external pharma partners without a de-identification/pseudonymisation requirement. Clause H2: Hospital may share genomic data with pharmaceutical partners for drug discovery and R&D.\n\n" .
114
- (:AgreementHC1 :PatientExample 1 930 "H4" 0 genid:e333f4ec-b543-e01c-ae40-fce8760f4fec) log:outputString "score=70 (https://w3id.org/dpv/risk#ModerateRisk, https://w3id.org/dpv/risk#ModerateSeverity) clause H4\n Risk: retention (3650 days) exceeds patient preference (1095 days). Clause H4: Hospital retains patient health records for 10 years.\n\n" .
115
- (:AgreementHC1 :PatientExample 1 900 "H1" 1 genid:6e6083d0-be14-5284-ce15-b2f04cc273c8 genid:d8249b0c-66d8-73a8-c1d0-8c7c5256b338) log:outputString " - mitigation for clause H1: Add an explicit consent constraint for secondary research use.\n" .
116
- (:AgreementHC1 :PatientExample 1 900 "H2" 1 genid:b9e2eab8-2d4b-c4a4-50ea-6468777be280 genid:be734cc0-bf89-eac8-fa57-8bfba350cb64) log:outputString " - mitigation for clause H2: Require de-identification/pseudonymisation before external sharing of genomic data.\n" .
117
- (:AgreementHC1 :PatientExample 1 930 "H4" 1 genid:e333f4ec-b543-e01c-ae40-fce8760f4fec genid:4576211e-2495-d7a8-ebb0-5eb4707c9ce4) log:outputString " - mitigation for clause H4: Limit retention to 3 years (or document the legal obligation requiring longer retention).\n" .
2
+ === Ranked DPV Risk Report (Healthcare & Life Sciences) ===
3
+ Agreement: Example Healthcare & Life-Sciences Data Use Agreement
4
+ Profile: Example patient profile
5
+
6
+ score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H1
7
+ Risk: health/genomic data may be used for research without explicit opt-in consent. Clause H1: Hospital may use EHR and genomic data for internal clinical research and publication.
8
+
9
+ - mitigation for clause H1: Add an explicit consent constraint for secondary research use.
10
+ score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause H2
11
+ Risk: genomic data may be shared with external pharma partners without a de-identification/pseudonymisation requirement. Clause H2: Hospital may share genomic data with pharmaceutical partners for drug discovery and R&D.
12
+
13
+ - mitigation for clause H2: Require de-identification/pseudonymisation before external sharing of genomic data.
14
+ score=70 (https://w3id.org/dpv/risk#ModerateRisk, https://w3id.org/dpv/risk#ModerateSeverity) clause H4
15
+ Risk: retention (3650 days) exceeds patient preference (1095 days). Clause H4: Hospital retains patient health records for 10 years.
16
+
17
+ - mitigation for clause H4: Limit retention to 3 years (or document the legal obligation requiring longer retention).
@@ -1,13 +1,22 @@
1
- @prefix : <https://example.org/odrl-dpv-risk-ranked#> .
2
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
3
-
4
- (:Agreement1 :ConsumerExample 0) log:outputString "\n=== Ranked DPV Risk Report ===\nAgreement: Example Agreement\nProfile: Example consumer profile\n\n" .
5
- (:Agreement1 :ConsumerExample 1 900 "C1" 0 _:sk_1) log:outputString "score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/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" .
6
- (:Agreement1 :ConsumerExample 1 900 "C1" 1 _:sk_1 _:sk_2) log:outputString " - mitigation for clause C1: Add a notice constraint (minimum noticeDays) before account removal.\n" .
7
- (:Agreement1 :ConsumerExample 1 900 "C1" 1 _:sk_1 _:sk_4) log:outputString " - mitigation for clause C1: Add a duty to inform the consumer prior to account removal.\n" .
8
- (:Agreement1 :ConsumerExample 1 903 "C3" 0 _:sk_12) log:outputString "score=97 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/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" .
9
- (:Agreement1 :ConsumerExample 1 903 "C3" 1 _:sk_12 _:sk_13) log:outputString " - mitigation for clause C3: Add an explicit consent constraint before data sharing.\n" .
10
- (:Agreement1 :ConsumerExample 1 915 "C2" 0 _:sk_7) log:outputString "score=85 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause C2\n Risk: terms may change with notice (3 days) below consumer requirement (14 days). Clause C2: Provider may change terms by informing users at least 3 days in advance.\n\n" .
11
- (:Agreement1 :ConsumerExample 1 915 "C2" 1 _:sk_7 _:sk_8) log:outputString " - mitigation for clause C2: Increase minimum noticeDays in the inform duty to meet the consumer requirement.\n" .
12
- (:Agreement1 :ConsumerExample 1 930 "C4" 0 _:sk_16) log:outputString "score=70 (https://w3id.org/dpv/risk#ModerateRisk, https://w3id.org/dpv/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" .
13
- (:Agreement1 :ConsumerExample 1 930 "C4" 1 _:sk_16 _:sk_17) log:outputString " - mitigation for clause C4: Add a permission allowing data export (or remove the prohibition) to support portability.\n" .
1
+
2
+ === Ranked DPV Risk Report ===
3
+ Agreement: Example Agreement
4
+ Profile: Example consumer profile
5
+
6
+ score=100 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause C1
7
+ 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.
8
+
9
+ - mitigation for clause C1: Add a notice constraint (minimum noticeDays) before account removal.
10
+ - mitigation for clause C1: Add a duty to inform the consumer prior to account removal.
11
+ score=97 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause C3
12
+ Risk: user data sharing is permitted without an explicit consent constraint. Clause C3: Provider may share user data with partners for business purposes.
13
+
14
+ - mitigation for clause C3: Add an explicit consent constraint before data sharing.
15
+ score=85 (https://w3id.org/dpv/risk#HighRisk, https://w3id.org/dpv/risk#HighSeverity) clause C2
16
+ Risk: terms may change with notice (3 days) below consumer requirement (14 days). Clause C2: Provider may change terms by informing users at least 3 days in advance.
17
+
18
+ - mitigation for clause C2: Increase minimum noticeDays in the inform duty to meet the consumer requirement.
19
+ score=70 (https://w3id.org/dpv/risk#ModerateRisk, https://w3id.org/dpv/risk#ModerateSeverity) clause C4
20
+ Risk: portability is restricted because exporting user data is prohibited. Clause C4: Users are not permitted to export their data.
21
+
22
+ - mitigation for clause C4: Add a permission allowing data export (or remove the prohibition) to support portability.
@@ -1,207 +1,18 @@
1
- @prefix : <https://example.org/odrl-mitigation-demo#> .
2
- @prefix genid: <https://eyereasoner.github.io/.well-known/genid/> .
3
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
4
- @prefix odrl: <http://www.w3.org/ns/odrl/2/> .
5
- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
6
1
 
7
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c a :Risk .
8
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :aboutAgreement :Agreement3 .
9
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :forProfile :ConsumerCarol .
10
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :aboutClause :ClauseD1 .
11
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :clauseId "D1" .
12
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :issue :NoticeTooShort .
13
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :baseScore 70 .
14
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :needWeight 15 .
15
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :rawScore 85 .
16
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :title "Notice period too short" .
17
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :explanation "This clause is risky because the notice period (3 days) is below the consumer requirement (14 days). Clause D1: We may change these terms with notice. Notice may be as short as 3 days." .
18
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :violatesNeed :Need_ChangeOnlyWithPriorNotice .
19
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 a :Risk .
20
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :aboutAgreement :Agreement3 .
21
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :forProfile :ConsumerCarol .
22
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :aboutClause :ClauseD2 .
23
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :clauseId "D2" .
24
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :issue :AutoRenewNoReminder .
25
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :baseScore 75 .
26
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :needWeight 10 .
27
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :rawScore 85 .
28
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :title "Auto-renewal without reminder" .
29
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :explanation "This clause is risky because it allows auto-renewal without a reminder. Consumer needs at least 7 days reminder. Clause D2: Your subscription renews automatically unless you cancel." .
30
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :violatesNeed :Need_ReminderBeforeAutoRenew .
31
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 a :Risk .
32
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :aboutAgreement :Agreement3 .
33
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :forProfile :ConsumerCarol .
34
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :aboutClause :ClauseD3 .
35
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :clauseId "D3" .
36
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :issue :NonRefundableFee .
37
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :baseScore 70 .
38
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :needWeight 9 .
39
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :rawScore 79 .
40
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :title "Non-refundable fees" .
41
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :explanation "This clause is risky because it declares fees non-refundable, conflicting with a refund/cooling-off expectation (>= 14 days). Clause D3: All fees are non-refundable." .
42
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :violatesNeed :Need_RefundRequired .
43
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 a :Risk .
44
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :aboutAgreement :Agreement3 .
45
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :forProfile :ConsumerCarol .
46
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :aboutClause :ClauseD4 .
47
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :clauseId "D4" .
48
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :issue :TrackingNoOptIn .
49
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :baseScore 80 .
50
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :needWeight 9 .
51
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :rawScore 89 .
52
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :title "Tracking without opt-in" .
53
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :explanation "This clause is risky because it permits tracking without explicit opt-in consent. Clause D4: We may track your activity to improve services." .
54
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :violatesNeed :Need_NoTrackingWithoutOptIn .
55
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 a :Risk .
56
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :aboutAgreement :Agreement3 .
57
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :forProfile :ConsumerCarol .
58
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :aboutClause :ClauseD5 .
59
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :clauseId "D5" .
60
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :issue :NoDataExport .
61
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :baseScore 85 .
62
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :needWeight 8 .
63
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :rawScore 93 .
64
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :title "No data export / portability" .
65
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :explanation "This clause is risky because it prohibits exporting data, undermining portability. Clause D5: You may not export or download your data from the service." .
66
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :violatesNeed :Need_DataPortability .
67
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 a :Risk .
68
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :aboutAgreement :Agreement3 .
69
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :forProfile :ConsumerCarol .
70
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :aboutClause :ClauseD6 .
71
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :clauseId "D6" .
72
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :issue :ProviderMayDeleteData .
73
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :baseScore 90 .
74
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :needWeight 12 .
75
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :rawScore 102 .
76
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :title "Provider can delete user data" .
77
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :explanation "This clause is risky because it allows the provider to delete the consumer’s data. Clause D6: We may delete your data at our discretion." .
78
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :violatesNeed :Need_DataNotRemoved .
79
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 a :Risk .
80
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :aboutAgreement :Agreement3 .
81
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :forProfile :ConsumerCarol .
82
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :aboutClause :ClauseD2 .
83
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :clauseId "D2" .
84
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :issue :LiabilityCapTooLow .
85
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :baseScore 65 .
86
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :needWeight 8 .
87
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :rawScore 73 .
88
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :title "Liability cap too low" .
89
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :explanation "This clause is risky because the liability cap (20 EUR) is below the consumer minimum (200 EUR). Clause D2: Your subscription renews automatically unless you cancel." .
90
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :violatesNeed :Need_MinLiabilityCap .
91
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :hasMitigation genid:b3e644a0-842d-779a-8ba9-1dc01addf40c .
92
- genid:b3e644a0-842d-779a-8ba9-1dc01addf40c a :Mitigation .
93
- genid:b3e644a0-842d-779a-8ba9-1dc01addf40c :forRisk genid:3f3359e8-5625-adf0-e2cd-874038dc706c .
94
- genid:b3e644a0-842d-779a-8ba9-1dc01addf40c :fixText "Suggested fix: ensure prior-notice duty specifies noticeDays >= 14." .
95
- genid:b3e644a0-842d-779a-8ba9-1dc01addf40c :suggestAdd {
96
- :PermChangeTerms odrl:duty _:sk_0 .
97
- _:sk_0 a odrl:Duty .
98
- _:sk_0 odrl:action :notifyPriorNotice .
99
- _:sk_0 odrl:constraint _:sk_1 .
100
- _:sk_1 a odrl:Constraint .
101
- _:sk_1 odrl:leftOperand :noticeDays .
102
- _:sk_1 odrl:operator odrl:gteq .
103
- _:sk_1 odrl:rightOperand 14 .
104
- } .
105
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :hasMitigation genid:53e75400-cf4d-9998-7ed7-3eeae4d6be7c .
106
- genid:53e75400-cf4d-9998-7ed7-3eeae4d6be7c a :Mitigation .
107
- genid:53e75400-cf4d-9998-7ed7-3eeae4d6be7c :forRisk genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 .
108
- genid:53e75400-cf4d-9998-7ed7-3eeae4d6be7c :fixText "Suggested fix: add a reminder duty for auto-renewal with reminderDays >= 7." .
109
- genid:53e75400-cf4d-9998-7ed7-3eeae4d6be7c :suggestAdd {
110
- :PermAutoRenew odrl:duty _:sk_2 .
111
- _:sk_2 a odrl:Duty .
112
- _:sk_2 odrl:action :sendRenewalReminder .
113
- _:sk_2 odrl:constraint _:sk_3 .
114
- _:sk_3 a odrl:Constraint .
115
- _:sk_3 odrl:leftOperand :reminderDays .
116
- _:sk_3 odrl:operator odrl:gteq .
117
- _:sk_3 odrl:rightOperand 7 .
118
- } .
119
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :hasMitigation genid:585ce30c-2b91-8280-fe57-6f28f39a3ed8 .
120
- genid:585ce30c-2b91-8280-fe57-6f28f39a3ed8 a :Mitigation .
121
- genid:585ce30c-2b91-8280-fe57-6f28f39a3ed8 :forRisk genid:3a9b6398-3d57-879a-90e6-498980eeaf08 .
122
- genid:585ce30c-2b91-8280-fe57-6f28f39a3ed8 :fixText "Suggested fix: allow refunds (e.g., refundAllowed=true) or define a cooling-off period >= 14 days." .
123
- genid:585ce30c-2b91-8280-fe57-6f28f39a3ed8 :suggestAdd {
124
- :PermChargeFee odrl:constraint _:sk_4 .
125
- _:sk_4 a odrl:Constraint .
126
- _:sk_4 odrl:leftOperand :refundAllowed .
127
- _:sk_4 odrl:operator odrl:eq .
128
- _:sk_4 odrl:rightOperand true .
129
- :PermChargeFee odrl:constraint _:sk_5 .
130
- _:sk_5 a odrl:Constraint .
131
- _:sk_5 odrl:leftOperand :coolingOffDays .
132
- _:sk_5 odrl:operator odrl:gteq .
133
- _:sk_5 odrl:rightOperand 14 .
134
- } .
135
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :hasMitigation genid:622a8baf-e258-fe50-fb3b-81463784ae40 .
136
- genid:622a8baf-e258-fe50-fb3b-81463784ae40 a :Mitigation .
137
- genid:622a8baf-e258-fe50-fb3b-81463784ae40 :forRisk genid:8468c67c-e2dd-8af8-fa31-006485a75788 .
138
- genid:622a8baf-e258-fe50-fb3b-81463784ae40 :fixText "Suggested fix: require opt-in consent for tracking (optInConsent=true)." .
139
- genid:622a8baf-e258-fe50-fb3b-81463784ae40 :suggestAdd {
140
- :PermTrackUser odrl:constraint _:sk_6 .
141
- _:sk_6 a odrl:Constraint .
142
- _:sk_6 odrl:leftOperand :optInConsent .
143
- _:sk_6 odrl:operator odrl:eq .
144
- _:sk_6 odrl:rightOperand true .
145
- } .
146
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :hasMitigation genid:4728cce8-e55c-33a6-ff43-0284c37b050c .
147
- genid:4728cce8-e55c-33a6-ff43-0284c37b050c a :Mitigation .
148
- genid:4728cce8-e55c-33a6-ff43-0284c37b050c :forRisk genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 .
149
- genid:4728cce8-e55c-33a6-ff43-0284c37b050c :fixText "Suggested fix: add a permission to export/download user data (data portability)." .
150
- genid:4728cce8-e55c-33a6-ff43-0284c37b050c :suggestAdd {
151
- :Policy3 odrl:permission _:sk_7 .
152
- _:sk_7 a odrl:Permission .
153
- _:sk_7 odrl:action :exportData .
154
- _:sk_7 odrl:target :UserData .
155
- } .
156
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :hasMitigation genid:33f8e7b9-1987-7832-0892-a8ec90448424 .
157
- genid:33f8e7b9-1987-7832-0892-a8ec90448424 a :Mitigation .
158
- genid:33f8e7b9-1987-7832-0892-a8ec90448424 :forRisk genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 .
159
- genid:33f8e7b9-1987-7832-0892-a8ec90448424 :fixText "Suggested fix: remove provider discretion to delete data; allow deletion only on consumer request or legal obligation." .
160
- genid:33f8e7b9-1987-7832-0892-a8ec90448424 :suggestAdd {
161
- :PermDeleteUserData odrl:constraint _:sk_8 .
162
- _:sk_8 a odrl:Constraint .
163
- _:sk_8 odrl:leftOperand :deletionGround .
164
- _:sk_8 odrl:operator odrl:isAnyOf .
165
- _:sk_8 odrl:rightOperand (:consumerRequest :legalObligation) .
166
- } .
167
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :hasMitigation genid:478eac18-8c36-6188-b439-dda12b98fac8 .
168
- genid:478eac18-8c36-6188-b439-dda12b98fac8 a :Mitigation .
169
- genid:478eac18-8c36-6188-b439-dda12b98fac8 :forRisk genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 .
170
- genid:478eac18-8c36-6188-b439-dda12b98fac8 :fixText "Suggested fix: raise liabilityCapEuro so it is >= 200 EUR (or remove the cap where inappropriate)." .
171
- genid:478eac18-8c36-6188-b439-dda12b98fac8 :suggestAdd {
172
- :PermAutoRenew odrl:constraint _:sk_9 .
173
- _:sk_9 a odrl:Constraint .
174
- _:sk_9 odrl:leftOperand :liabilityCapEuro .
175
- _:sk_9 odrl:operator odrl:gteq .
176
- _:sk_9 odrl:rightOperand 200 .
177
- } .
178
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :score 100 .
179
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :score 85 .
180
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :score 85 .
181
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :score 79 .
182
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :score 89 .
183
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :score 93 .
184
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :score 73 .
185
- genid:3f3359e8-5625-adf0-e2cd-874038dc706c :severity :High .
186
- genid:d48f3244-c9ff-62e2-46d1-44d4c6a9c3d8 :severity :High .
187
- genid:8468c67c-e2dd-8af8-fa31-006485a75788 :severity :High .
188
- genid:e1830d38-0c5f-d24e-add5-a27d9cf99088 :severity :High .
189
- genid:c5c6e14a-6858-7d40-10ca-c460597f1ae8 :severity :High .
190
- genid:3a9b6398-3d57-879a-90e6-498980eeaf08 :severity :Medium .
191
- genid:9bdfab08-d724-d5c8-ba20-5e23053c80f4 :severity :Medium .
192
- (:Agreement3 :ConsumerCarol 0) log:outputString "\n=== Risk report for Example Platform Agreement (with fixes) (profile: Carol (example consumer)) ===\n" .
193
- (:Agreement3 :ConsumerCarol 999) log:outputString "\n--- Suggested mitigations (highest risk first) ---\n" .
194
- (:Agreement3 :ConsumerCarol 1) log:outputString "1) score=100 (https://example.org/odrl-mitigation-demo#High), clause D6 — Provider can delete user data. This clause is risky because it allows the provider to delete the consumer’s data. Clause D6: We may delete your data at our discretion.\n" .
195
- (:Agreement3 :ConsumerCarol 2) log:outputString "2) score=93 (https://example.org/odrl-mitigation-demo#High), clause D5 — No data export / portability. This clause is risky because it prohibits exporting data, undermining portability. Clause D5: You may not export or download your data from the service.\n" .
196
- (:Agreement3 :ConsumerCarol 3) log:outputString "3) score=89 (https://example.org/odrl-mitigation-demo#High), clause D4 — Tracking without opt-in. This clause is risky because it permits tracking without explicit opt-in consent. Clause D4: We may track your activity to improve services.\n" .
197
- (:Agreement3 :ConsumerCarol 4) log:outputString "4) score=85 (https://example.org/odrl-mitigation-demo#High), clause D2 — Auto-renewal without reminder. This clause is risky because it allows auto-renewal without a reminder. Consumer needs at least 7 days reminder. Clause D2: Your subscription renews automatically unless you cancel.\n" .
198
- (:Agreement3 :ConsumerCarol 5) log:outputString "5) score=85 (https://example.org/odrl-mitigation-demo#High), clause D1 — Notice period too short. This clause is risky because the notice period (3 days) is below the consumer requirement (14 days). Clause D1: We may change these terms with notice. Notice may be as short as 3 days.\n" .
199
- (:Agreement3 :ConsumerCarol 6) log:outputString "6) score=79 (https://example.org/odrl-mitigation-demo#Medium), clause D3 — Non-refundable fees. This clause is risky because it declares fees non-refundable, conflicting with a refund/cooling-off expectation (>= 14 days). Clause D3: All fees are non-refundable.\n" .
200
- (:Agreement3 :ConsumerCarol 7) log:outputString "7) score=73 (https://example.org/odrl-mitigation-demo#Medium), clause D2 — Liability cap too low. This clause is risky because the liability cap (20 EUR) is below the consumer minimum (200 EUR). Clause D2: Your subscription renews automatically unless you cancel.\n" .
201
- (:Agreement3 :ConsumerCarol (1000 1)) log:outputString "1) clause D6 — Provider can delete user data (score=100). Suggested fix: remove provider discretion to delete data; allow deletion only on consumer request or legal obligation.\n" .
202
- (:Agreement3 :ConsumerCarol (1000 2)) log:outputString "2) clause D5 — No data export / portability (score=93). Suggested fix: add a permission to export/download user data (data portability).\n" .
203
- (:Agreement3 :ConsumerCarol (1000 3)) log:outputString "3) clause D4 — Tracking without opt-in (score=89). Suggested fix: require opt-in consent for tracking (optInConsent=true).\n" .
204
- (:Agreement3 :ConsumerCarol (1000 4)) log:outputString "4) clause D2 — Auto-renewal without reminder (score=85). Suggested fix: add a reminder duty for auto-renewal with reminderDays >= 7.\n" .
205
- (:Agreement3 :ConsumerCarol (1000 5)) log:outputString "5) clause D1 — Notice period too short (score=85). Suggested fix: ensure prior-notice duty specifies noticeDays >= 14.\n" .
206
- (:Agreement3 :ConsumerCarol (1000 6)) log:outputString "6) clause D3 — Non-refundable fees (score=79). Suggested fix: allow refunds (e.g., refundAllowed=true) or define a cooling-off period >= 14 days.\n" .
207
- (:Agreement3 :ConsumerCarol (1000 7)) log:outputString "7) clause D2 — Liability cap too low (score=73). Suggested fix: raise liabilityCapEuro so it is >= 200 EUR (or remove the cap where inappropriate).\n" .
2
+ === Risk report for Example Platform Agreement (with fixes) (profile: Carol (example consumer)) ===
3
+ 1) score=100 (https://example.org/odrl-mitigation-demo#High), clause D6 — Provider can delete user data. This clause is risky because it allows the provider to delete the consumer’s data. Clause D6: We may delete your data at our discretion.
4
+ 2) score=93 (https://example.org/odrl-mitigation-demo#High), clause D5 — No data export / portability. This clause is risky because it prohibits exporting data, undermining portability. Clause D5: You may not export or download your data from the service.
5
+ 3) score=89 (https://example.org/odrl-mitigation-demo#High), clause D4 — Tracking without opt-in. This clause is risky because it permits tracking without explicit opt-in consent. Clause D4: We may track your activity to improve services.
6
+ 4) score=85 (https://example.org/odrl-mitigation-demo#High), clause D2 — Auto-renewal without reminder. This clause is risky because it allows auto-renewal without a reminder. Consumer needs at least 7 days reminder. Clause D2: Your subscription renews automatically unless you cancel.
7
+ 5) score=85 (https://example.org/odrl-mitigation-demo#High), clause D1 — Notice period too short. This clause is risky because the notice period (3 days) is below the consumer requirement (14 days). Clause D1: We may change these terms with notice. Notice may be as short as 3 days.
8
+ 6) score=79 (https://example.org/odrl-mitigation-demo#Medium), clause D3 — Non-refundable fees. This clause is risky because it declares fees non-refundable, conflicting with a refund/cooling-off expectation (>= 14 days). Clause D3: All fees are non-refundable.
9
+ 7) score=73 (https://example.org/odrl-mitigation-demo#Medium), clause D2 — Liability cap too low. This clause is risky because the liability cap (20 EUR) is below the consumer minimum (200 EUR). Clause D2: Your subscription renews automatically unless you cancel.
10
+
11
+ --- Suggested mitigations (highest risk first) ---
12
+ 1) clause D6 Provider can delete user data (score=100). Suggested fix: remove provider discretion to delete data; allow deletion only on consumer request or legal obligation.
13
+ 2) clause D5 — No data export / portability (score=93). Suggested fix: add a permission to export/download user data (data portability).
14
+ 3) clause D4 — Tracking without opt-in (score=89). Suggested fix: require opt-in consent for tracking (optInConsent=true).
15
+ 4) clause D2 — Auto-renewal without reminder (score=85). Suggested fix: add a reminder duty for auto-renewal with reminderDays >= 7.
16
+ 5) clause D1 — Notice period too short (score=85). Suggested fix: ensure prior-notice duty specifies noticeDays >= 14.
17
+ 6) clause D3 — Non-refundable fees (score=79). Suggested fix: allow refunds (e.g., refundAllowed=true) or define a cooling-off period >= 14 days.
18
+ 7) clause D2 — Liability cap too low (score=73). Suggested fix: raise liabilityCapEuro so it is >= 200 EUR (or remove the cap where inappropriate).
@@ -1,64 +1,6 @@
1
- @prefix : <https://example.org/agreement#> .
2
- @prefix genid: <https://eyereasoner.github.io/.well-known/genid/> .
3
- @prefix log: <http://www.w3.org/2000/10/swap/log#> .
4
1
 
5
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c a :Risk .
6
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :aboutAgreement :Agreement1 .
7
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :forProfile :ConsumerAlice .
8
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :aboutClause :ClauseC1 .
9
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :clauseId "C1" .
10
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :issue :UnilateralChangeNoNotice .
11
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :baseScore 80 .
12
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :needWeight 15 .
13
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :rawScore 95 .
14
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :title "Unilateral change without notice" .
15
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :explanation "This clause is risky because it allows unilateral changes without any prior notice. Clause C1: We may change these terms at any time. Continued use means acceptance." .
16
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :violatesNeed :Need_ChangeOnlyWithPriorNotice .
17
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 a :Risk .
18
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :aboutAgreement :Agreement1 .
19
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :forProfile :ConsumerAlice .
20
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :aboutClause :ClauseC2 .
21
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :clauseId "C2" .
22
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :issue :ProviderMayDeleteData .
23
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :baseScore 90 .
24
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :needWeight 20 .
25
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :rawScore 110 .
26
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :title "Provider can delete user data" .
27
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :explanation "This clause is risky because it allows the provider to remove (delete) the consumer’s data. Clause C2: We may delete your data at our discretion, with or without notice." .
28
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :violatesNeed :Need_DataNotRemoved .
29
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c a :Risk .
30
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :aboutAgreement :Agreement1 .
31
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :forProfile :ConsumerAlice .
32
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :aboutClause :ClauseC3 .
33
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :clauseId "C3" .
34
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :issue :ShareDataNoConsent .
35
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :baseScore 85 .
36
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :needWeight 10 .
37
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :rawScore 95 .
38
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :title "Data sharing without consent" .
39
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :explanation "This clause is risky because it permits data sharing without an explicit consent requirement. Clause C3: We may share your data with partners for any purpose." .
40
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :violatesNeed :Need_NoDataSharingWithoutConsent .
41
- genid:17ae61d8-580b-ff0e-b030-955c75047eac a :Risk .
42
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :aboutAgreement :Agreement1 .
43
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :forProfile :ConsumerAlice .
44
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :aboutClause :ClauseC4 .
45
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :clauseId "C4" .
46
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :issue :CourtAccessWaiver .
47
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :baseScore 60 .
48
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :needWeight 0 .
49
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :rawScore 60 .
50
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :title "Court access waiver / mandatory arbitration" .
51
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :explanation "This clause is risky because it restricts access to court (mandatory arbitration / waiver). Clause C4: You waive your right to go to court; disputes must be arbitrated." .
52
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :score 100 .
53
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :score 95 .
54
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :score 95 .
55
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :score 60 .
56
- genid:9e402628-fc3c-e85a-350e-f368732d4b0c :severity :High .
57
- genid:0d0c3c78-2199-4018-1033-0b0c76a92e40 :severity :High .
58
- genid:ebe89ac4-7141-3050-6326-e52c9c7bc26c :severity :High .
59
- genid:17ae61d8-580b-ff0e-b030-955c75047eac :severity :Medium .
60
- (:Agreement1 :ConsumerAlice 0) log:outputString "\n=== Risk report for Example SaaS Agreement (profile: Alice (example consumer)) ===\n" .
61
- (:Agreement1 :ConsumerAlice 1) log:outputString "1) score=100 (https://example.org/agreement#High), clause C2 — Provider can delete user data. This clause is risky because it allows the provider to remove (delete) the consumer’s data. Clause C2: We may delete your data at our discretion, with or without notice.\n" .
62
- (:Agreement1 :ConsumerAlice 2) log:outputString "2) score=95 (https://example.org/agreement#High), clause C3 — Data sharing without consent. This clause is risky because it permits data sharing without an explicit consent requirement. Clause C3: We may share your data with partners for any purpose.\n" .
63
- (:Agreement1 :ConsumerAlice 3) log:outputString "3) score=95 (https://example.org/agreement#High), clause C1 — Unilateral change without notice. This clause is risky because it allows unilateral changes without any prior notice. Clause C1: We may change these terms at any time. Continued use means acceptance.\n" .
64
- (:Agreement1 :ConsumerAlice 4) log:outputString "4) score=60 (https://example.org/agreement#Medium), clause C4 — Court access waiver / mandatory arbitration. This clause is risky because it restricts access to court (mandatory arbitration / waiver). Clause C4: You waive your right to go to court; disputes must be arbitrated.\n" .
2
+ === Risk report for Example SaaS Agreement (profile: Alice (example consumer)) ===
3
+ 1) score=100 (https://example.org/agreement#High), clause C2 — Provider can delete user data. This clause is risky because it allows the provider to remove (delete) the consumer’s data. Clause C2: We may delete your data at our discretion, with or without notice.
4
+ 2) score=95 (https://example.org/agreement#High), clause C3 — Data sharing without consent. This clause is risky because it permits data sharing without an explicit consent requirement. Clause C3: We may share your data with partners for any purpose.
5
+ 3) score=95 (https://example.org/agreement#High), clause C1 — Unilateral change without notice. This clause is risky because it allows unilateral changes without any prior notice. Clause C1: We may change these terms at any time. Continued use means acceptance.
6
+ 4) score=60 (https://example.org/agreement#Medium), clause C4 — Court access waiver / mandatory arbitration. This clause is risky because it restricts access to court (mandatory arbitration / waiver). Clause C4: You waive your right to go to court; disputes must be arbitrated.
@@ -0,0 +1,20 @@
1
+ ParcelLocker — One-time parcel pickup by a friend
2
+
3
+ Answer
4
+ PERMIT
5
+ Noah may collect Maya's parcel from locker B17.
6
+
7
+ Reason Why
8
+ Maya created a one-time authorization for Noah only, for this parcel only, at this locker only, and for pickup only. The token is active, the parcel is ready, and the same authorization does not reveal billing details or allow redirection.
9
+
10
+ Check
11
+ C1 OK - requester matches the named delegate
12
+ C2 OK - requested parcel matches the authorized parcel
13
+ C3 OK - requested locker matches the authorized locker
14
+ C4 OK - requested action is parcel collection
15
+ C5 OK - requested purpose is pickup only
16
+ C6 OK - authorization is active
17
+ C7 OK - authorization is single-use
18
+ C8 OK - parcel is ready for pickup
19
+ C9 OK - billing details stay hidden
20
+ C10 OK - parcel redirection is not allowed