Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add conformity assessment to EU AI Act docs #24

Merged
merged 6 commits into from
Jul 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
ravimeijerrig marked this conversation as resolved.
Show resolved Hide resolved
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