Skip to content

Commit

Permalink
Merge pull request #24 from MinBZK/add_conformity_assessment
Browse files Browse the repository at this point in the history
Add conformity assessment to EU AI Act docs
  • Loading branch information
ravimeijerrig authored Jul 31, 2024
2 parents 3a001bf + dd61e46 commit 2b35886
Show file tree
Hide file tree
Showing 4 changed files with 164 additions and 9 deletions.
111 changes: 111 additions & 0 deletions instruments/conformity_assessment_eu_ai_act.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
systemcard_path: .assessments[]
schema_version: 1.1.0
name: "EU-conformiteitsverklaring voor hoog-risico AI-systemen"
description: "EU-conformiteitsverklaring van een AI-systeem met een hoog risico wordt ondertekend door de ontwikkelaar voordat dit systeem in de handel wordt gebracht of in gebruik wordt gesteld."
urn: "urn:nl:aivt:ir:ca:1.0"
language: "nl"
owners:
- organization: "European Union"
name: ""
email: ""
role: ""
date: ""
url: "https://www.europarl.europa.eu/doceo/document/TA-9-2024-0138-FNL-COR01_NL.pdf" #See article 11 and annex V of European AI Act

template: &assessmentcard_template
question: "$QUESTION"
answer: "$ANSWER"
remarks: "$REMARKS"
timestamp: "$TIMESTAMP"
location: "$LOCATION"
authors:
- name: "$AUTHOR.NAME"
email: "$AUTHOR.EMAIL"
role: "$AUTHOR.ROLE"

# Conformity Assessment
tasks:
- question: "De naam en het type van het AI-systeem, evenals eventuele aanvullende ondubbelzinnige verwijzingen waarmee het AI-systeem kan worden geïdentificeerd en getraceerd."
urn: "urn:nl:aivt:ir:ca:1.0:1.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: ["open_question"]
suggested_roles: ["Projectleider", "Aanbieder"]
lifecycle: [ ]
links: [ {"systemcard_path": ".name", "version": ">0.1a1"}, {"systemcard_path": ".description", "version": ">0.1a1"}]
template: *assessmentcard_template
- question: "De naam en het adres van de aanbieder en, indien van toepassing, zijn gemachtigde."
urn: "urn:nl:aivt:ir:ca:1.0:2.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: ["open_question"]
suggested_roles: [ "Projectleider", "Aanbieder"]
lifecycle: [ ]
links: [ {"systemcard_path": ".owners", "version": ">0.1a1"}, {"text": "Vraag 1.a.2 van technical docs" , "urn": "urn:nl:aivt:ir:td:1.0:1.a.2"}]
template: *assessmentcard_template
- question: "De in artikel 47 bedoelde EU-conformiteitsverklaring wordt verstrekt onder de uitsluitende verantwoordelijkheid van de aanbieder."
urn: "urn:nl:aivt:ir:ca:1.0:3.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: [ "statement" ]
suggested_roles: [ "Projectleider", "Aanbieder"]
lifecycle: [ "Validatie" ]
links: [ ]
template: *assessmentcard_template
- question: "Het AI-systeem is in overeenstemming met deze verordening en, in voorkomend geval, met eventuele andere desbetreffende Uniewetgeving die voorziet in de afgifte van de in artikel 47 bedoelde EU-conformiteitsverklaring."
urn: "urn:nl:aivt:ir:ca:1.0:4.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: ["statement"]
suggested_roles: [ "Projectleider", "Aanbieder"]
lifecycle: [ "Validatie" ]
links: [ ]
template: *assessmentcard_template
- question: "Indien een AI-systeem de verwerking van persoonsgegevens met zich meebrengt, voldoet dat AI-systeem aan de Verordeningen (EU) 2016/679 en (EU) 2018/1725 en Richtlijn (EU) 2016/680."
urn: "urn:nl:aivt:ir:ca:1.0:5.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: ["statement"]
suggested_roles: [ "Projectleider", "Aanbieder"]
lifecycle: [ "Validatie" ]
links: [ ]
template: *assessmentcard_template
- question: "Referenties van relevante gebruikte geharmoniseerde normen of andere gemeenschappelijke specificaties waarop de conformiteitsverklaring betrekking heeft."
urn: "urn:nl:aivt:ir:ca:1.0:6.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: ["open_question", "upload_document"]
suggested_roles: [ "Projectleider", "Aanbieder"]
lifecycle: [ "Validatie" ]
links: [{"text": "Vraag 7 van technical docs","urn": "urn:nl:aivt:ir:td:1.0:7"} ]
template: *assessmentcard_template
- question: "De naam en het identificatienummer van de aangemelde instantie, een beschrijving van de uitgevoerde conformiteitsbeoordelingsprocedure en identificatie van het afgegeven certificaat."
urn: "urn:nl:aivt:ir:ca:1.0:7.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: ["open_question"]
suggested_roles: [ "Projectleider", "Aanbieder"]
lifecycle: [ "Validatie" ]
links: [ {"systemcard_path": ".owners/oin", "version": ">0.1a1"}, {"systemcard_path": ".owners/organization", "version": ">0.1a1"},]
template: *assessmentcard_template
- question: "De plaats en de datum van afgifte van de verklaring, de naam en de functie van de persoon die de verklaring heeft ondertekend alsmede een vermelding van de persoon voor en namens wie die persoon ondertekent, een handtekening."
urn: "urn:nl:aivt:ir:ca:1.0:8.0"
labels:
- key: topic
value: "EU-conformiteitsverklaring"
type: ["sign_task"]
suggested_roles: [ "Projectleider", "Aanbieder"]
lifecycle: [ "Validatie" ]
links: [ {"systemcard_path": ".owners/oin", "version": ">0.1a1"}, {"systemcard_path": ".owners/organization", "version": ">0.1a1"},]
signature:
- algorithm: ""
signature_hash: ""
expiration_date: ""
template: *assessmentcard_template
9 changes: 6 additions & 3 deletions instruments/technical_docs_for_high_risk_ai.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ template: &assessmentcard_template # anchor for all fields belo
answer: "$ANSWER"
remarks: "$REMARKS"
timestamp: "$TIMESTAMP"
location: "$LOCATION"
authors:
- name: "$AUTHOR.NAME"
email: "$AUTHOR.EMAIL"
Expand All @@ -32,7 +33,7 @@ tasks:
type: [ "open_question" ]
suggested_roles: [ ]
lifecycle: [ ]
links: [ { "text": "DPIA vraag 4" }, { "urn": "urn:nl:aivt:ir:1.0:1.2.1" }, { "systemcard_path": ".goal_and_impact", "version": ">0.1a1" } ] #TO DO: find a way to link to specific system card fields
links: [ { "text": "DPIA vraag 4" }, { "urn": "urn:nl:aivt:ir:1.0:1.2.1" }, { "systemcard_path": ".goal_and_impact", "version": ">0.1a1" } ]
template: *assessmentcard_template
- question: "Wat is de naam van de aanbieder van het AI-systeem?"
urn: "urn:nl:aivt:ir:td:1.0:1.a.2"
Expand Down Expand Up @@ -288,7 +289,7 @@ tasks:
lifecycle: [ ]
links: [ ]
template: *assessmentcard_template
- question: "Geef een lijst van de geharmoniseerde normen die volledig of gedeeltelijk worden toegepast en waarvan de referenties zijn gepubliceerd in het Publicatieblad van de Europese Unie. Indien de geharmoniseerde normen niet zijn toegepast, geef dan een gedetailleerde beschrijving van de vastgestelde oplossingen om te voldoen aan de vereisten van hoog-risico AI-systemen, met inbegrip van een lijst van andere toegepaste relevante normen en technische specificaties." #to do: shorten it one and include link?
- question: "Geef een lijst van de geharmoniseerde normen die volledig of gedeeltelijk worden toegepast en waarvan de referenties zijn gepubliceerd in het Publicatieblad van de Europese Unie. Indien de geharmoniseerde normen niet zijn toegepast, geef dan een gedetailleerde beschrijving van de vastgestelde oplossingen om te voldoen aan de vereisten van hoog-risico AI-systemen, met inbegrip van een lijst van andere toegepaste relevante normen en technische specificaties."
urn: "urn:nl:aivt:ir:td:1.0:7"
labels:
- key: topic
Expand All @@ -298,7 +299,8 @@ tasks:
lifecycle: [ ]
links: [ ]
template: *assessmentcard_template
- question: "Onderteken een exemplaar van de EU-conformiteitsverklaring (raadpleeg hiervoor artikel 47 en bijlage 5 van de AI Verordening)."

- question: "Een exemplaar van de in artikel 47 bedoelde EU-conformiteitsverklaring."
urn: "urn:nl:aivt:ir:td:1.0:8"
labels:
- key: topic
Expand All @@ -308,6 +310,7 @@ tasks:
lifecycle: [ ]
links: [ ]
template: *assessmentcard_template

- question: "Beschrijf het plan voor evaluatie en monitoring nadat het AI systeem in gebruik is genomen (raadpleeg hiervoor artikel 72, lid 3 van de AI Verordening)."
urn: "urn:nl:aivt:ir:td:1.0:9"
labels:
Expand Down
38 changes: 37 additions & 1 deletion schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@
"open_question",
"closed_question",
"sign_task",
"upload_document"
"upload_document",
"statement"
]
}
},
Expand Down Expand Up @@ -189,6 +190,26 @@
}
}
},
"signature": {
"description": "To store the user's hash and the algorithm used to hash it",
"type": "array",
"items": {
"type": "object",
"properties": {
"algorithm": {
"type": "string"
},
"signature_hash": {
"type": "string"
}
}
}
},
"expiration_date": {
"description": "To store the date until when completing this task will be valid",
"type": "string",
"format": "date-time"
},
"template": {
"type": "object",
"additionalProperties": {
Expand Down Expand Up @@ -233,6 +254,21 @@
"links",
"template"
]
},
"if": {
"properties": {
"type": {
"contains": {
"const": "sign_task"
}
}
}
},
"then": {
"required": [
"signature",
"expiration_date"
]
}
}
},
Expand Down
15 changes: 10 additions & 5 deletions script/validate
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,24 @@ import yaml
from jsonschema import validate


def extract_urns(data, urns=None):
def extract_urns(data, urns=None, seen_urns=None):
if urns is None:
urns = []
if seen_urns is None:
seen_urns = set()

if isinstance(data, dict):
for key, value in data.items():
if key == "urn":
urns.append(value)
else:
extract_urns(value, urns)
if value in seen_urns:
urns.append(value)
else:
seen_urns.add(value)
elif key != "links": # Ignore 'links' key to avoid nested urns there
extract_urns(value, urns, seen_urns)
elif isinstance(data, list):
for item in data:
extract_urns(item, urns)
extract_urns(item, urns, seen_urns)

return urns

Expand Down

0 comments on commit 2b35886

Please sign in to comment.