diff --git a/Dockerfile b/Dockerfile index 7b80118a..106a13c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,7 +62,7 @@ RUN pyright FROM development AS test COPY ./example/ ./example/ -COPY ./example_system_card/ ./example_system_card/ +COPY ./resources/ ./resources/ COPY ./example_registry/ ./example_registry/ RUN npm run build @@ -81,7 +81,7 @@ USER amt COPY --chown=root:root --chmod=755 amt /app/amt COPY --chown=root:root --chmod=755 alembic.ini /app/alembic.ini COPY --chown=root:root --chmod=755 prod.env /app/.env -COPY --chown=root:root --chmod=755 example_system_card /app/example_system_card +COPY --chown=root:root --chmod=755 resources /app/resources COPY --chown=root:root --chmod=755 example_registry /app/example_registry COPY --chown=root:root --chmod=755 LICENSE /app/LICENSE COPY --chown=amt:amt --chmod=755 docker-entrypoint.sh /app/docker-entrypoint.sh diff --git a/amt/api/deps.py b/amt/api/deps.py index 3bc6fec8..7cc6f388 100644 --- a/amt/api/deps.py +++ b/amt/api/deps.py @@ -2,6 +2,7 @@ from collections.abc import Sequence from enum import Enum from os import PathLike +from pyclbr import Class from typing import Any, AnyStr, TypeVar from fastapi import Request @@ -28,6 +29,7 @@ time_ago, ) from amt.schema.localized_value_item import LocalizedValueItem +from amt.schema.shared import IterMixin T = TypeVar("T", bound=Enum | LocalizableEnum) @@ -135,6 +137,20 @@ def Redirect(self, request: Request, url: str) -> HTMLResponse: return self.TemplateResponse(request, "redirect.html.j2", headers=headers) +def instance(obj: Class, type_string: str) -> bool: + match type_string: + case "str": + return isinstance(obj, str) + case "list": + return isinstance(obj, list) + case "IterMixin": + return isinstance(obj, IterMixin) + case "dict": + return isinstance(obj, dict) + case _: + raise TypeError("Unsupported type: " + type_string) + + templates = LocaleJinja2Templates( directory="amt/site/templates/", context_processors=[custom_context_processor], undefined=get_undefined_behaviour() ) @@ -146,3 +162,4 @@ def Redirect(self, request: Request, url: str) -> HTMLResponse: templates.env.globals.update(is_nested_enum=is_nested_enum) # pyright: ignore [reportUnknownMemberType] templates.env.globals.update(nested_enum=nested_enum) # pyright: ignore [reportUnknownMemberType] templates.env.globals.update(nested_enum_value=nested_enum_value) # pyright: ignore [reportUnknownMemberType] +templates.env.globals.update(isinstance=instance) # pyright: ignore [reportUnknownMemberType] diff --git a/amt/api/routes/project.py b/amt/api/routes/project.py index 58a5d5b4..8acc230c 100644 --- a/amt/api/routes/project.py +++ b/amt/api/routes/project.py @@ -1,8 +1,6 @@ import asyncio -import functools import logging from collections.abc import Sequence -from pathlib import Path from typing import Annotated, Any, cast from fastapi import APIRouter, Depends, Request @@ -28,26 +26,15 @@ from amt.services import task_registry from amt.services.instruments_and_requirements_state import InstrumentStateService, RequirementsStateService from amt.services.projects import ProjectsService -from amt.services.storage import StorageFactory from amt.services.task_registry import fetch_measures, fetch_requirements from amt.services.tasks import TasksService -from amt.utils.storage import get_include_content router = APIRouter() logger = logging.getLogger(__name__) -def get_system_card_data() -> SystemCard: - # TODO: This now loads an example system card independent of the project ID. - path = Path("example_system_card/system_card.yaml") - system_card: Any = StorageFactory.init(storage_type="file", location=path.parent, filename=path.name).read() - return SystemCard(**system_card) - - -@functools.lru_cache -def get_instrument_state() -> dict[str, Any]: - system_card_data = get_system_card_data() - instrument_state = InstrumentStateService(system_card_data) +def get_instrument_state(system_card: SystemCard) -> dict[str, Any]: + instrument_state = InstrumentStateService(system_card) instrument_states = instrument_state.get_state_per_instrument() return { "instrument_states": instrument_states, @@ -117,7 +104,7 @@ async def get_tasks( tasks_service: Annotated[TasksService, Depends(TasksService)], ) -> HTMLResponse: project = await get_project_or_error(project_id, projects_service, request) - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) tab_items = get_project_details_tabs(request) tasks_by_status = await gather_project_tasks(project_id, task_service=tasks_service) @@ -181,14 +168,12 @@ async def get_project_context( project_id: int, projects_service: ProjectsService, request: Request ) -> tuple[Project, dict[str, Any]]: project = await get_project_or_error(project_id, projects_service, request) - system_card_data = get_system_card_data() - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) tab_items = get_project_details_tabs(request) - project.system_card = system_card_data return project, { "last_edited": project.last_edited, - "system_card": system_card_data, + "system_card": project.system_card, "instrument_state": instrument_state, "requirements_state": requirements_state, "project": project, @@ -285,11 +270,6 @@ async def get_project_update( return templates.TemplateResponse(request, "parts/view_cell.html.j2", context) -# !!! -# Implementation of this endpoint is for now independent of the project ID, meaning -# that the same system card is rendered for all project ID's. This is due to the fact -# that the logical process flow of a system card is not complete. -# !!! @router.get("/{project_id}/details/system_card") async def get_system_card( request: Request, @@ -297,7 +277,7 @@ async def get_system_card( projects_service: Annotated[ProjectsService, Depends(ProjectsService)], ) -> HTMLResponse: project = await get_project_or_error(project_id, projects_service, request) - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) tab_items = get_project_details_tabs(request) @@ -313,15 +293,8 @@ async def get_system_card( request, ) - # TODO: This now loads an example system card independent of the project ID. - filepath = Path("example_system_card/system_card.yaml") - file_system_storage_service = StorageFactory.init( - storage_type="file", location=filepath.parent, filename=filepath.name - ) - system_card_data = file_system_storage_service.read() - context = { - "system_card": system_card_data, + "system_card": project.system_card, "instrument_state": instrument_state, "requirements_state": requirements_state, "last_edited": project.last_edited, @@ -351,15 +324,14 @@ async def get_project_inference( request, ) - system_card_data = get_system_card_data() - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) tab_items = get_project_details_tabs(request) context = { "last_edited": project.last_edited, - "system_card": system_card_data, + "system_card": project.system_card, "instrument_state": instrument_state, "requirements_state": requirements_state, "project": project, @@ -371,11 +343,6 @@ async def get_project_inference( return templates.TemplateResponse(request, "projects/details_inference.html.j2", context) -# !!! -# Implementation of this endpoint is for now independent of the project ID, meaning -# that the same system card is rendered for all project ID's. This is due to the fact -# that the logical process flow of a system card is not complete. -# !!! @router.get("/{project_id}/details/system_card/requirements") async def get_system_card_requirements( request: Request, @@ -383,9 +350,8 @@ async def get_system_card_requirements( projects_service: Annotated[ProjectsService, Depends(ProjectsService)], ) -> HTMLResponse: project = await get_project_or_error(project_id, projects_service, request) - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) - # TODO: This tab is fairly slow, fix in later releases tab_items = get_project_details_tabs(request) breadcrumbs = resolve_base_navigation_items( @@ -399,11 +365,7 @@ async def get_system_card_requirements( request, ) - # TODO: This is only for the demo of 18 Oct. In reality one would load the requirements from the requirement - # field in the system card, but one would load the AI Act Profile and determine the requirements from - # the labels in this field. - system_card = project.system_card - requirements = fetch_requirements([requirement.urn for requirement in system_card.requirements]) + requirements = fetch_requirements([requirement.urn for requirement in project.system_card.requirements]) # Get measures that correspond to the requirements and merge them with the measuretasks requirements_and_measures = [] @@ -412,7 +374,7 @@ async def get_system_card_requirements( linked_measures = fetch_measures(requirement.links) extended_linked_measures: list[ExtendedMeasureTask] = [] for measure in linked_measures: - measure_task = find_measure_task(system_card, measure.urn) + measure_task = find_measure_task(project.system_card, measure.urn) if measure_task: ext_measure_task = ExtendedMeasureTask( name=measure.name, @@ -546,7 +508,7 @@ async def get_system_card_data_page( projects_service: Annotated[ProjectsService, Depends(ProjectsService)], ) -> HTMLResponse: project = await get_project_or_error(project_id, projects_service, request) - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) tab_items = get_project_details_tabs(request) @@ -586,7 +548,7 @@ async def get_system_card_instruments( projects_service: Annotated[ProjectsService, Depends(ProjectsService)], ) -> HTMLResponse: project = await get_project_or_error(project_id, projects_service, request) - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) tab_items = get_project_details_tabs(request) @@ -614,11 +576,6 @@ async def get_system_card_instruments( return templates.TemplateResponse(request, "projects/details_instruments.html.j2", context) -# !!! -# Implementation of this endpoint is for now independent of the project ID, meaning -# that the same system card is rendered for all project ID's. This is due to the fact -# that the logical process flow of a system card is not complete. -# !!! @router.get("/{project_id}/details/system_card/assessments/{assessment_card}") async def get_assessment_card( request: Request, @@ -627,7 +584,7 @@ async def get_assessment_card( projects_service: Annotated[ProjectsService, Depends(ProjectsService)], ) -> HTMLResponse: project = await get_project_or_error(project_id, projects_service, request) - instrument_state = get_instrument_state() + instrument_state = get_instrument_state(project.system_card) requirements_state = get_requirements_state(project.system_card) request.state.path_variables.update({"assessment_card": assessment_card}) @@ -645,9 +602,10 @@ async def get_assessment_card( request, ) - # TODO: This now loads an example system card independent of the project ID. - filepath = Path("example_system_card/system_card.yaml") - assessment_card_data = get_include_content(filepath.parent, filepath.name, "assessments", assessment_card) + assessment_card_data = next( + (assessment for assessment in project.system_card.assessments if assessment.name.lower() == assessment_card), + None, + ) if not assessment_card_data: logger.warning("assessment card not found") @@ -678,13 +636,9 @@ async def get_model_card( projects_service: Annotated[ProjectsService, Depends(ProjectsService)], ) -> HTMLResponse: project = await get_project_or_error(project_id, projects_service, request) - instrument_state = get_instrument_state() - requirements_state = get_requirements_state(project.system_card) - - # TODO: This now loads an example system card independent of the project ID. - filepath = Path("example_system_card/system_card.yaml") - model_card_data = get_include_content(filepath.parent, filepath.name, "models", model_card) request.state.path_variables.update({"model_card": model_card}) + instrument_state = get_instrument_state(project.system_card) + requirements_state = get_requirements_state(project.system_card) tab_items = get_project_details_tabs(request) @@ -699,6 +653,15 @@ async def get_model_card( request, ) + model_card_data = next( + ( + model + for model in project.system_card.models + if (model.name is not None and model.name.lower() == model_card) + ), + None, + ) + if not model_card_data: logger.warning("model card not found") raise AMTNotFound() diff --git a/amt/api/routes/projects.py b/amt/api/routes/projects.py index 7a83393b..cb9d45e9 100644 --- a/amt/api/routes/projects.py +++ b/amt/api/routes/projects.py @@ -18,7 +18,7 @@ from amt.schema.localized_value_item import LocalizedValueItem from amt.schema.project import ProjectNew from amt.services.instruments import InstrumentsService -from amt.services.projects import ProjectsService +from amt.services.projects import ProjectsService, get_template_files router = APIRouter() logger = logging.getLogger(__name__) @@ -130,12 +130,15 @@ async def get_new( ai_act_profile = get_ai_act_profile_selector(request) + template_files = get_template_files() + context: dict[str, Any] = { "instruments": instrument_service.fetch_instruments(), "ai_act_profile": ai_act_profile, "breadcrumbs": breadcrumbs, "sub_menu_items": {}, # sub_menu_items disabled for now, "lifecycles": get_localized_lifecycles(request), + "template_files": template_files, } response = templates.TemplateResponse(request, "projects/new.html.j2", context) @@ -148,15 +151,6 @@ async def post_new( project_new: ProjectNew, projects_service: Annotated[ProjectsService, Depends(ProjectsService)], ) -> HTMLResponse: - # TODO: FOR DEMO 18 OCT - # Override AI Act Profile for demo purposes to values: - project_new.type = "AI-systeem" - project_new.publication_category = "hoog-risico AI" - project_new.transparency_obligations = "geen transparantieverplichtingen" - project_new.role = "gebruiksverantwoordelijke" - project_new.systemic_risk = "geen systeemrisico" - project_new.open_source = "open-source" - project = await projects_service.create(project_new) response = templates.Redirect(request, f"/algorithm-system/{project.id}/details/tasks") return response diff --git a/amt/locale/base.pot b/amt/locale/base.pot index 29176b03..47fbbbd5 100644 --- a/amt/locale/base.pot +++ b/amt/locale/base.pot @@ -44,7 +44,7 @@ msgstr "" #: amt/api/group_by_category.py:15 #: amt/site/templates/parts/filter_list.html.j2:94 #: amt/site/templates/projects/details_info.html.j2:24 -#: amt/site/templates/projects/new.html.j2:38 +#: amt/site/templates/projects/new.html.j2:40 msgid "Lifecycle" msgstr "" @@ -140,7 +140,7 @@ msgstr "" msgid "Model" msgstr "" -#: amt/api/navigation.py:59 amt/site/templates/projects/new.html.j2:147 +#: amt/api/navigation.py:59 amt/site/templates/projects/new.html.j2:149 msgid "Instruments" msgstr "" @@ -286,7 +286,7 @@ msgstr "" msgid "There is one error:" msgstr "" -#: amt/site/templates/layouts/base.html.j2:11 +#: amt/site/templates/layouts/base.html.j2:1 msgid "Algorithmic Management Toolkit (AMT)" msgstr "" @@ -338,7 +338,7 @@ msgstr "" #: amt/site/templates/pages/model_card.html.j2:6 #: amt/site/templates/pages/system_card.html.j2:4 #: amt/site/templates/parts/filter_list.html.j2:98 -#: amt/site/templates/parts/filter_list.html.j2:122 +#: amt/site/templates/parts/filter_list.html.j2:120 #: amt/site/templates/projects/details_info.html.j2:28 msgid "Last updated" msgstr "" @@ -414,6 +414,14 @@ msgstr "" msgid "for more information on how the toolkit can support your organization." msgstr "" +#: amt/site/templates/pages/system_card.html.j2:9 +msgid "Assessment cards " +msgstr "" + +#: amt/site/templates/pages/system_card.html.j2:27 +msgid "Model cards" +msgstr "" + #: amt/site/templates/parts/filter_list.html.j2:32 #, python-format msgid "" @@ -440,7 +448,7 @@ msgid "" msgstr "" #: amt/site/templates/parts/filter_list.html.j2:90 -#: amt/site/templates/parts/filter_list.html.j2:117 +#: amt/site/templates/parts/filter_list.html.j2:116 msgid "Algorithm system name" msgstr "" @@ -642,31 +650,31 @@ msgstr "" msgid "Create a Algorithm System" msgstr "" -#: amt/site/templates/projects/new.html.j2:23 +#: amt/site/templates/projects/new.html.j2:25 msgid "Algorithm System name" msgstr "" -#: amt/site/templates/projects/new.html.j2:27 +#: amt/site/templates/projects/new.html.j2:29 msgid "Name of the algorithm system" msgstr "" -#: amt/site/templates/projects/new.html.j2:41 +#: amt/site/templates/projects/new.html.j2:43 msgid "Select the lifecycle your algorithm system is currently in." msgstr "" -#: amt/site/templates/projects/new.html.j2:42 +#: amt/site/templates/projects/new.html.j2:44 msgid "For more information on lifecycle, read the" msgstr "" -#: amt/site/templates/projects/new.html.j2:45 +#: amt/site/templates/projects/new.html.j2:47 msgid "Algorithm Framework" msgstr "" -#: amt/site/templates/projects/new.html.j2:63 +#: amt/site/templates/projects/new.html.j2:65 msgid "AI Act Profile" msgstr "" -#: amt/site/templates/projects/new.html.j2:65 +#: amt/site/templates/projects/new.html.j2:67 msgid "" "The AI Act profile provides insight into, among other things, the type of" " AI system and the associated obligations from the European AI Act. If " @@ -675,33 +683,33 @@ msgid "" "tree." msgstr "" -#: amt/site/templates/projects/new.html.j2:72 +#: amt/site/templates/projects/new.html.j2:74 msgid "Find your AI Act profile" msgstr "" -#: amt/site/templates/projects/new.html.j2:130 +#: amt/site/templates/projects/new.html.j2:132 msgid "Yes" msgstr "" -#: amt/site/templates/projects/new.html.j2:140 +#: amt/site/templates/projects/new.html.j2:142 msgid "No" msgstr "" -#: amt/site/templates/projects/new.html.j2:149 +#: amt/site/templates/projects/new.html.j2:151 msgid "" "Overview of instruments for the responsible development, deployment, " "assessment and monitoring of algorithms and AI-systems." msgstr "" -#: amt/site/templates/projects/new.html.j2:157 +#: amt/site/templates/projects/new.html.j2:159 msgid "Choose one or more instruments" msgstr "" -#: amt/site/templates/projects/new.html.j2:181 +#: amt/site/templates/projects/new.html.j2:183 msgid "Create Algorithm System" msgstr "" -#: amt/site/templates/projects/new.html.j2:198 +#: amt/site/templates/projects/new.html.j2:200 msgid "Copy results and close" msgstr "" diff --git a/amt/locale/en_US/LC_MESSAGES/messages.mo b/amt/locale/en_US/LC_MESSAGES/messages.mo index 05ae7e7d..bc095a96 100644 Binary files a/amt/locale/en_US/LC_MESSAGES/messages.mo and b/amt/locale/en_US/LC_MESSAGES/messages.mo differ diff --git a/amt/locale/en_US/LC_MESSAGES/messages.po b/amt/locale/en_US/LC_MESSAGES/messages.po index d0243d33..bc11273b 100644 --- a/amt/locale/en_US/LC_MESSAGES/messages.po +++ b/amt/locale/en_US/LC_MESSAGES/messages.po @@ -45,7 +45,7 @@ msgstr "" #: amt/api/group_by_category.py:15 #: amt/site/templates/parts/filter_list.html.j2:94 #: amt/site/templates/projects/details_info.html.j2:24 -#: amt/site/templates/projects/new.html.j2:38 +#: amt/site/templates/projects/new.html.j2:40 msgid "Lifecycle" msgstr "" @@ -141,7 +141,7 @@ msgstr "" msgid "Model" msgstr "" -#: amt/api/navigation.py:59 amt/site/templates/projects/new.html.j2:147 +#: amt/api/navigation.py:59 amt/site/templates/projects/new.html.j2:149 msgid "Instruments" msgstr "" @@ -287,7 +287,7 @@ msgstr "" msgid "There is one error:" msgstr "" -#: amt/site/templates/layouts/base.html.j2:11 +#: amt/site/templates/layouts/base.html.j2:1 msgid "Algorithmic Management Toolkit (AMT)" msgstr "" @@ -339,7 +339,7 @@ msgstr "" #: amt/site/templates/pages/model_card.html.j2:6 #: amt/site/templates/pages/system_card.html.j2:4 #: amt/site/templates/parts/filter_list.html.j2:98 -#: amt/site/templates/parts/filter_list.html.j2:122 +#: amt/site/templates/parts/filter_list.html.j2:120 #: amt/site/templates/projects/details_info.html.j2:28 msgid "Last updated" msgstr "" @@ -415,6 +415,14 @@ msgstr "" msgid "for more information on how the toolkit can support your organization." msgstr "" +#: amt/site/templates/pages/system_card.html.j2:9 +msgid "Assessment cards " +msgstr "" + +#: amt/site/templates/pages/system_card.html.j2:27 +msgid "Model cards" +msgstr "" + #: amt/site/templates/parts/filter_list.html.j2:32 #, python-format msgid "" @@ -441,7 +449,7 @@ msgid "" msgstr "" #: amt/site/templates/parts/filter_list.html.j2:90 -#: amt/site/templates/parts/filter_list.html.j2:117 +#: amt/site/templates/parts/filter_list.html.j2:116 msgid "Algorithm system name" msgstr "" @@ -643,31 +651,31 @@ msgstr "" msgid "Create a Algorithm System" msgstr "" -#: amt/site/templates/projects/new.html.j2:23 +#: amt/site/templates/projects/new.html.j2:25 msgid "Algorithm System name" msgstr "" -#: amt/site/templates/projects/new.html.j2:27 +#: amt/site/templates/projects/new.html.j2:29 msgid "Name of the algorithm system" msgstr "" -#: amt/site/templates/projects/new.html.j2:41 +#: amt/site/templates/projects/new.html.j2:43 msgid "Select the lifecycle your algorithm system is currently in." msgstr "" -#: amt/site/templates/projects/new.html.j2:42 +#: amt/site/templates/projects/new.html.j2:44 msgid "For more information on lifecycle, read the" msgstr "" -#: amt/site/templates/projects/new.html.j2:45 +#: amt/site/templates/projects/new.html.j2:47 msgid "Algorithm Framework" msgstr "" -#: amt/site/templates/projects/new.html.j2:63 +#: amt/site/templates/projects/new.html.j2:65 msgid "AI Act Profile" msgstr "" -#: amt/site/templates/projects/new.html.j2:65 +#: amt/site/templates/projects/new.html.j2:67 msgid "" "The AI Act profile provides insight into, among other things, the type of" " AI system and the associated obligations from the European AI Act. If " @@ -676,33 +684,33 @@ msgid "" "tree." msgstr "" -#: amt/site/templates/projects/new.html.j2:72 +#: amt/site/templates/projects/new.html.j2:74 msgid "Find your AI Act profile" msgstr "" -#: amt/site/templates/projects/new.html.j2:130 +#: amt/site/templates/projects/new.html.j2:132 msgid "Yes" msgstr "" -#: amt/site/templates/projects/new.html.j2:140 +#: amt/site/templates/projects/new.html.j2:142 msgid "No" msgstr "" -#: amt/site/templates/projects/new.html.j2:149 +#: amt/site/templates/projects/new.html.j2:151 msgid "" "Overview of instruments for the responsible development, deployment, " "assessment and monitoring of algorithms and AI-systems." msgstr "" -#: amt/site/templates/projects/new.html.j2:157 +#: amt/site/templates/projects/new.html.j2:159 msgid "Choose one or more instruments" msgstr "" -#: amt/site/templates/projects/new.html.j2:181 +#: amt/site/templates/projects/new.html.j2:183 msgid "Create Algorithm System" msgstr "" -#: amt/site/templates/projects/new.html.j2:198 +#: amt/site/templates/projects/new.html.j2:200 msgid "Copy results and close" msgstr "" diff --git a/amt/locale/nl_NL/LC_MESSAGES/messages.mo b/amt/locale/nl_NL/LC_MESSAGES/messages.mo index 8741e0e1..03c49a4d 100644 Binary files a/amt/locale/nl_NL/LC_MESSAGES/messages.mo and b/amt/locale/nl_NL/LC_MESSAGES/messages.mo differ diff --git a/amt/locale/nl_NL/LC_MESSAGES/messages.po b/amt/locale/nl_NL/LC_MESSAGES/messages.po index c1b8dc15..4ee93cf0 100644 --- a/amt/locale/nl_NL/LC_MESSAGES/messages.po +++ b/amt/locale/nl_NL/LC_MESSAGES/messages.po @@ -45,7 +45,7 @@ msgstr "Rol" #: amt/api/group_by_category.py:15 #: amt/site/templates/parts/filter_list.html.j2:94 #: amt/site/templates/projects/details_info.html.j2:24 -#: amt/site/templates/projects/new.html.j2:38 +#: amt/site/templates/projects/new.html.j2:40 msgid "Lifecycle" msgstr "Levenscyclus" @@ -141,7 +141,7 @@ msgstr "Data" msgid "Model" msgstr "Model" -#: amt/api/navigation.py:59 amt/site/templates/projects/new.html.j2:147 +#: amt/api/navigation.py:59 amt/site/templates/projects/new.html.j2:149 msgid "Instruments" msgstr "Instrumenten" @@ -295,7 +295,7 @@ msgstr "Er zijn enkele fouten" msgid "There is one error:" msgstr "Er is één fout:" -#: amt/site/templates/layouts/base.html.j2:11 +#: amt/site/templates/layouts/base.html.j2:1 msgid "Algorithmic Management Toolkit (AMT)" msgstr "Algoritme Management Toolkit (AMT)" @@ -347,7 +347,7 @@ msgstr "Onbekend" #: amt/site/templates/pages/model_card.html.j2:6 #: amt/site/templates/pages/system_card.html.j2:4 #: amt/site/templates/parts/filter_list.html.j2:98 -#: amt/site/templates/parts/filter_list.html.j2:122 +#: amt/site/templates/parts/filter_list.html.j2:120 #: amt/site/templates/projects/details_info.html.j2:28 msgid "Last updated" msgstr "Laatst bijgewerkt" @@ -430,6 +430,14 @@ msgstr "neem contact op" msgid "for more information on how the toolkit can support your organization." msgstr "voor meer informatie over hoe de toolkit uw organisatie kan ondersteunen." +#: amt/site/templates/pages/system_card.html.j2:9 +msgid "Assessment cards " +msgstr "Assessmentkaart" + +#: amt/site/templates/pages/system_card.html.j2:27 +msgid "Model cards" +msgstr "Modelkaart" + #: amt/site/templates/parts/filter_list.html.j2:32 #, python-format msgid "" @@ -465,7 +473,7 @@ msgstr "" "zien." #: amt/site/templates/parts/filter_list.html.j2:90 -#: amt/site/templates/parts/filter_list.html.j2:117 +#: amt/site/templates/parts/filter_list.html.j2:116 msgid "Algorithm system name" msgstr "Algoritmesysteem naam" @@ -669,33 +677,33 @@ msgstr "maatregelen uitgevoerd" msgid "Create a Algorithm System" msgstr "Creëer een Algoritmesysteem" -#: amt/site/templates/projects/new.html.j2:23 +#: amt/site/templates/projects/new.html.j2:25 msgid "Algorithm System name" msgstr "Algoritmesysteem naam" -#: amt/site/templates/projects/new.html.j2:27 +#: amt/site/templates/projects/new.html.j2:29 msgid "Name of the algorithm system" msgstr "Nieuw algoritmesysteem" -#: amt/site/templates/projects/new.html.j2:41 +#: amt/site/templates/projects/new.html.j2:43 msgid "Select the lifecycle your algorithm system is currently in." msgstr "" "Selecteer de levenscyclus waarin uw algoritmesysteem zich momenteel " "bevindt." -#: amt/site/templates/projects/new.html.j2:42 +#: amt/site/templates/projects/new.html.j2:44 msgid "For more information on lifecycle, read the" msgstr "Lees voor meer meer informatie over levenscyclus het" -#: amt/site/templates/projects/new.html.j2:45 +#: amt/site/templates/projects/new.html.j2:47 msgid "Algorithm Framework" msgstr "Algoritmekader" -#: amt/site/templates/projects/new.html.j2:63 +#: amt/site/templates/projects/new.html.j2:65 msgid "AI Act Profile" msgstr "AI Verordening Profiel" -#: amt/site/templates/projects/new.html.j2:65 +#: amt/site/templates/projects/new.html.j2:67 msgid "" "The AI Act profile provides insight into, among other things, the type of" " AI system and the associated obligations from the European AI Act. If " @@ -707,19 +715,19 @@ msgstr "" "onder andere het type AI systeem, de regelgeving die van toepassing is en" " de risicocategorie." -#: amt/site/templates/projects/new.html.j2:72 +#: amt/site/templates/projects/new.html.j2:74 msgid "Find your AI Act profile" msgstr "Vind uw AI Act profiel" -#: amt/site/templates/projects/new.html.j2:130 +#: amt/site/templates/projects/new.html.j2:132 msgid "Yes" msgstr "Ja" -#: amt/site/templates/projects/new.html.j2:140 +#: amt/site/templates/projects/new.html.j2:142 msgid "No" msgstr "Nee" -#: amt/site/templates/projects/new.html.j2:149 +#: amt/site/templates/projects/new.html.j2:151 msgid "" "Overview of instruments for the responsible development, deployment, " "assessment and monitoring of algorithms and AI-systems." @@ -727,15 +735,15 @@ msgstr "" "Overzicht van aanbevolen instrument voor het verantwoord ontwikkelen, " "gebruiken, beoordelen en monitoren van algoritmes en AI-systemen." -#: amt/site/templates/projects/new.html.j2:157 +#: amt/site/templates/projects/new.html.j2:159 msgid "Choose one or more instruments" msgstr "Kies één of meerdere instrumenten" -#: amt/site/templates/projects/new.html.j2:181 +#: amt/site/templates/projects/new.html.j2:183 msgid "Create Algorithm System" msgstr "Creëer Algoritmesysteem" -#: amt/site/templates/projects/new.html.j2:198 +#: amt/site/templates/projects/new.html.j2:200 msgid "Copy results and close" msgstr "Resultaten overnemen en sluiten" diff --git a/amt/models/project.py b/amt/models/project.py index b56f0b4d..aa351552 100644 --- a/amt/models/project.py +++ b/amt/models/project.py @@ -85,12 +85,12 @@ def system_card(self, value: SystemCard | None) -> None: if value is None: self._system_card = ProjectSystemCard(self) else: - self._system_card = ProjectSystemCard(self, **value.model_dump(exclude_unset=True)) + self._system_card = ProjectSystemCard(self, **value.model_dump(exclude_unset=True, by_alias=True)) self.sync_system_card() def sync_system_card(self) -> None: if self._system_card is not None: - self.system_card_json = self._system_card.model_dump(exclude_unset=True) + self.system_card_json = self._system_card.model_dump(exclude_unset=True, by_alias=True) Project.__mapper_args__ = {"exclude_properties": ["_system_card"]} diff --git a/amt/schema/ai_act_profile.py b/amt/schema/ai_act_profile.py index 4d7bf193..8ada8949 100644 --- a/amt/schema/ai_act_profile.py +++ b/amt/schema/ai_act_profile.py @@ -1,4 +1,6 @@ -from pydantic import BaseModel, field_validator +from pydantic import field_validator + +from amt.schema.shared import BaseModel class AiActProfile(BaseModel): diff --git a/amt/schema/assessment_card.py b/amt/schema/assessment_card.py index 1b102508..3466d160 100644 --- a/amt/schema/assessment_card.py +++ b/amt/schema/assessment_card.py @@ -1,9 +1,8 @@ from datetime import datetime -from pydantic import ( - BaseModel, - Field, # pyright: ignore [reportUnknownMemberType] -) +from pydantic import Field # pyright: ignore [reportUnknownMemberType] + +from amt.schema.shared import BaseModel class AssessmentAuthor(BaseModel): diff --git a/amt/schema/instrument.py b/amt/schema/instrument.py index 8b79bea0..2bb98f70 100644 --- a/amt/schema/instrument.py +++ b/amt/schema/instrument.py @@ -1,4 +1,6 @@ -from pydantic import BaseModel, Field +from pydantic import Field + +from amt.schema.shared import BaseModel class Owner(BaseModel): diff --git a/amt/schema/measure.py b/amt/schema/measure.py index 05eb2cef..33a95b70 100644 --- a/amt/schema/measure.py +++ b/amt/schema/measure.py @@ -1,4 +1,6 @@ -from pydantic import BaseModel, Field +from pydantic import Field + +from amt.schema.shared import BaseModel class MeasureBase(BaseModel): diff --git a/amt/schema/model_card.py b/amt/schema/model_card.py new file mode 100644 index 00000000..b9fabb75 --- /dev/null +++ b/amt/schema/model_card.py @@ -0,0 +1,161 @@ +from __future__ import annotations + +from datetime import datetime + +from pydantic import Field + +from amt.schema.shared import BaseModel + + +class Provenance(BaseModel): + git_commit_hash: str | None = Field( + None, + description="Git commit hash of the commit which contains the transformation file used to create this card", + ) + timestamp: datetime | None = Field( + None, + description="A timestamp of the date, time and timezone of generation of this Model Card in ISO 8601 format", + ) + uri: str | None = Field(None, description="URI to the tool that was used to perform the transformations") + author: str | None = Field(None, description="Name of person that initiated the transformations") + + +class License(BaseModel): + license_name: str = Field(..., description="Any license from the open source license list") + license_link: str | None = Field( + None, + description="A link to a file of that name inside the repo," + "or a URL to a remote file containing the license contents", + ) + + +class Owner(BaseModel): + oin: str | None = Field(None, description="If applicable the Organisatie-identificatienummer (OIN)") + organization: str | None = Field( + None, + description="Name of the organization that owns the model. If ion is NOT provided this field is REQUIRED", + ) + name: str | None = Field(None, description="Name of a contact person within the organization") + email: str | None = Field(None, description="Email address of the contact person or organization") + role: str | None = Field( + None, + description="Role of the contact person. This field should only be set when the name field is set", + ) + + +class Artifact(BaseModel): + uri: str | None = Field(None, description="The URI of the model artifact") + content_type: str | None = Field( + None, + alias="content-type", # pyright: ignore [reportGeneralTypeIssues] + description="The content type of the model artifact.Recognized values are 'application/onnx'," + "to refer to an ONNX representation of the model", + ) + md5_checksum: str | None = Field( + None, + alias="md5-checksum", # pyright: ignore [reportGeneralTypeIssues] + description="Optional checksum for the content of the file", + ) + + +class Label(BaseModel): + name: str = Field(..., description="The name of the label.") + dtype: str = Field(..., description="The data type of the label.") + value: str = Field(..., description="The value of the label.") + + +class Parameter(BaseModel): + name: str = Field(..., description="The name of the parameter.") + dtype: str | None = Field(None, description="The data type of the parameter.") + value: str | None = Field(None, description="The value of the parameter.") + labels: list[Label] | None = None + + +class TaskItem(BaseModel): + type: str = Field(..., description="The task of the model") + name: str | None = Field(None, description="The (pretty) name for the model tasks") + + +class Dataset(BaseModel): + type: str = Field(..., description="The type of the dataset") + name: str = Field(..., description="The name of the dataset") + split: str | None = Field(None, description="The dataset split (e.g., train, test, validation).") + features: list[str] | None = None + revision: str | None = Field(None, description="Version of the dataset") + + +class Label1(BaseModel): + name: str | None = Field(None, description="The name of the feature") + type: str | None = Field(None, description="The type of the label") + dtype: str | None = Field(None, description="The data type of the feature") + value: str | None = Field(None, description="The value of the feature.") + + +class Metric(BaseModel): + type: str = Field(..., description="Metric-id from Hugging Face Metrics") + name: str = Field(..., description="A descriptive name of the metric.") + dtype: str = Field(..., description="The data type of the metric") + value: str | int | float = Field(..., description="The value of the metric") + labels: list[Label1] | None = Field(None, description="This field allows to store meta information about a metric") + + +class Result1(BaseModel): + name: str = Field(..., description="The name of the bar") + value: float = Field(..., description="The value of the corresponding bar") + + +class BarPlot(BaseModel): + type: str = Field(..., description="The type of the bar plot") + name: str | None = Field(None, description="A (pretty) name for the plot") + results: list[Result1] + + +class Datum(BaseModel): + x_value: float = Field(..., description="The x-value of the graph") + y_value: float = Field(..., description="The y-value of the graph") + + +class Result2(BaseModel): + class_: str | int | float | bool | None = Field( + None, + alias="class", + description="The output class name that the graph corresponds to", + ) + feature: str = Field(..., description="The feature the graph corresponds to") + data: list[Datum] + + +class GraphPlot(BaseModel): + type: str = Field(..., description="The type of the graph plot") + name: str | None = Field(None, description="A (pretty) name of the graph") + results: list[Result2] + + +class Measurements(BaseModel): + bar_plots: list[BarPlot] | None = None + graph_plots: list[GraphPlot] | None = None + + +class Result(BaseModel): + task: list[TaskItem] + datasets: list[Dataset] + metrics: list[Metric] + measurements: Measurements + + +class ModelIndexItem(BaseModel): + name: str | None = Field(None, description="The name of the model") + model: str | None = Field(None, description="A URI pointing to a repository containing the model file") + artifacts: list[Artifact] | None = None + parameters: list[Parameter] | None = None + results: list[Result] + + +class ModelCardSchema(BaseModel): + provenance: Provenance | None = None + name: str | None = Field(None, description="Name of the model") + language: list[str] | None = Field(None, description="The natural languages the model supports in ISO 639") + license: License + tags: list[str] | None = Field(None, description="Tags with keywords to describe the project") + owners: list[Owner] | None = None + model_index: list[ModelIndexItem] = Field(alias="model-index") # pyright: ignore [reportGeneralTypeIssues] diff --git a/amt/schema/project.py b/amt/schema/project.py index f9ea2ff9..5bfddfd3 100644 --- a/amt/schema/project.py +++ b/amt/schema/project.py @@ -15,6 +15,7 @@ class ProjectNew(ProjectBase): systemic_risk: str = Field(default=None) transparency_obligations: str = Field(default=None) role: list[str] | str = [] + template_id: str = Field(default=None) @field_validator("instruments", "role") def ensure_list(cls, v: list[str] | str) -> list[str]: diff --git a/amt/schema/requirement.py b/amt/schema/requirement.py index 1e13351d..99a06b12 100644 --- a/amt/schema/requirement.py +++ b/amt/schema/requirement.py @@ -1,4 +1,6 @@ -from pydantic import BaseModel, Field +from pydantic import Field + +from amt.schema.shared import BaseModel class RequirementBase(BaseModel): diff --git a/amt/schema/shared.py b/amt/schema/shared.py new file mode 100644 index 00000000..edbf52cd --- /dev/null +++ b/amt/schema/shared.py @@ -0,0 +1,12 @@ +from collections.abc import Generator +from typing import Any + +from pydantic import BaseModel as PydanticBaseModel + + +class IterMixin: + def __iter__(self) -> Generator[tuple[str, Any], Any, Any]: + yield from self.__dict__.items() + + +class BaseModel(PydanticBaseModel, IterMixin): ... diff --git a/amt/schema/system_card.py b/amt/schema/system_card.py index f72312b0..1a68b35e 100644 --- a/amt/schema/system_card.py +++ b/amt/schema/system_card.py @@ -1,15 +1,14 @@ from typing import Any -from pydantic import ( - BaseModel, - Field, # pyright: ignore [reportUnknownMemberType] -) +from pydantic import Field from amt.schema.ai_act_profile import AiActProfile from amt.schema.assessment_card import AssessmentCard from amt.schema.instrument import InstrumentBase from amt.schema.measure import MeasureTask +from amt.schema.model_card import ModelCardSchema from amt.schema.requirement import RequirementTask +from amt.schema.shared import BaseModel class Reference(BaseModel): @@ -30,3 +29,4 @@ class SystemCard(BaseModel): measures: list[MeasureTask] = Field(default=[]) assessments: list[AssessmentCard] = Field(default=[]) references: list[Reference] = Field(default=[]) + models: list[ModelCardSchema] = Field(default=[]) diff --git a/amt/services/projects.py b/amt/services/projects.py index 42b1be95..1af5ea1e 100644 --- a/amt/services/projects.py +++ b/amt/services/projects.py @@ -1,8 +1,14 @@ +import json import logging +from functools import lru_cache +from os import listdir +from os.path import isfile, join +from pathlib import Path from typing import Annotated from fastapi import Depends +from amt.core.exceptions import AMTNotFound from amt.models import Project from amt.repositories.projects import ProjectsRepository from amt.schema.instrument import InstrumentBase @@ -14,6 +20,8 @@ logger = logging.getLogger(__name__) +template_path = "resources/system_card_templates" + class ProjectsService: def __init__( @@ -31,6 +39,15 @@ async def get(self, project_id: int) -> Project: return project async def create(self, project_new: ProjectNew) -> Project: + system_card_from_template = None + if project_new.template_id: + template_files = get_template_files() + if project_new.template_id in template_files: + with open(Path(template_path) / Path(template_files[project_new.template_id]["value"])) as f: + system_card_from_template = json.load(f) + else: + raise AMTNotFound() + instruments: list[InstrumentBase] = [ InstrumentBase(urn=instrument_urn) for instrument_urn in project_new.instruments ] @@ -54,10 +71,32 @@ async def create(self, project_new: ProjectNew) -> Project: measures=measures, ) + if system_card_from_template is not None: + system_card_dict = system_card.model_dump() + system_card_merged = { + k: ( + system_card_dict[k] + if k in system_card_dict and system_card_dict.get(k) + else system_card_from_template.get(k) + ) + for k in set(system_card_dict) | set(system_card_from_template) + } + system_card_merged["ai_act_profile"] = { + k: ( + system_card_dict["ai_act_profile"][k] + if k in system_card_dict["ai_act_profile"] and system_card_dict["ai_act_profile"].get(k) + else system_card_from_template["ai_act_profile"].get(k) + ) + for k in set(system_card_dict["ai_act_profile"]) | set(system_card_from_template["ai_act_profile"]) + } + system_card = SystemCard.model_validate(system_card_merged) + project = Project(name=project_new.name, lifecycle=project_new.lifecycle, system_card=system_card) project = await self.update(project) - selected_instruments = self.instrument_service.fetch_instruments(project_new.instruments) # type: ignore + selected_instruments = self.instrument_service.fetch_instruments( + [instrument.urn for instrument in project.system_card.instruments] + ) for instrument in selected_instruments: await self.task_service.create_instrument_tasks(instrument.tasks, project) @@ -74,3 +113,12 @@ async def update(self, project: Project) -> Project: project.sync_system_card() project = await self.repository.save(project) return project + + +@lru_cache +def get_template_files() -> dict[str, dict[str, str]]: + return { + str(i): {"display_value": k.split(".")[0].replace("_", " "), "value": k} + for i, k in enumerate(listdir(template_path)) + if isfile(join(template_path, k)) + } diff --git a/amt/services/task_registry.py b/amt/services/task_registry.py index adb5dce2..4e8e289d 100644 --- a/amt/services/task_registry.py +++ b/amt/services/task_registry.py @@ -18,22 +18,10 @@ def get_requirements_and_measures( list[RequirementTask], list[MeasureTask], ]: - # TODO: This now loads measures & requirements from the example system card independent of the project ID. - # TODO: Refactor to call the task registry api here (based on the ai_act_profile) NOT the system card which is very - # artificial and has extra information like status and value. - # TODO: Refactor and merge both the InstrumentService and this TaskRegsitryService to make use of the TaskRegistry - measure_path = Path("example_system_card/measures/measures.yaml") - requirements_path = Path("example_system_card/requirements/requirements.yaml") - measures: Any = StorageFactory.init( - storage_type="file", location=measure_path.parent, filename=measure_path.name - ).read() - requirements: Any = StorageFactory.init( - storage_type="file", location=requirements_path.parent, filename=requirements_path.name - ).read() - measure_card = [MeasureTask(**measure) for measure in measures] - requirements_card = [RequirementTask(**requirement) for requirement in requirements] - - # TODO: After calling the Task Registry API this should return a MeasureBase and RequirementBase + # TODO (Robbert): the body of this method will be added later (another ticket) + measure_card: list[MeasureTask] = [] + requirements_card: list[RequirementTask] = [] + return requirements_card, measure_card diff --git a/amt/site/templates/macros/cards.html.j2 b/amt/site/templates/macros/cards.html.j2 index 9cfdf0fe..b8e53135 100644 --- a/amt/site/templates/macros/cards.html.j2 +++ b/amt/site/templates/macros/cards.html.j2 @@ -5,16 +5,19 @@ {{ attribute.capitalize().replace("_", " ") }} {%- endmacro %} {% macro render_value(key, value, depth) -%} - {% if value.__class__.__name__ == 'dict' %} + {% if isinstance(value, 'IterMixin') or isinstance(value, 'dict') %}
- {% for subkey, subvalue in value.items() %} + {% if value.__class__.__name__ == 'dict' %} + {% set value = value.items() %} + {% endif %} + {% for subkey, subvalue in value %} {% if subvalue %} {{ render_attribute(subkey) }}: {{ render_value(subkey, subvalue, depth+1) }} {% endif %} {% if not loop.last %}
{% endif %} {% endfor %}
- {% elif value.__class__.__name__ == 'list' %} + {% elif isinstance(value, 'list') %} {% if key == "assessments" %} {% for assessment in value %}{{ assessment["name"] }}{% endfor %} {% elif key == "models" %} diff --git a/amt/site/templates/pages/assessment_card.html.j2 b/amt/site/templates/pages/assessment_card.html.j2 index d0547dcb..427e9f9c 100644 --- a/amt/site/templates/pages/assessment_card.html.j2 +++ b/amt/site/templates/pages/assessment_card.html.j2 @@ -13,7 +13,7 @@ {% trans %}Value{% endtrans %} - {% for key, value in assessment_card.items() %} + {% for key, value in assessment_card %} {% if key != "contents" %} diff --git a/amt/site/templates/pages/model_card.html.j2 b/amt/site/templates/pages/model_card.html.j2 index 1dd78a97..4793c629 100644 --- a/amt/site/templates/pages/model_card.html.j2 +++ b/amt/site/templates/pages/model_card.html.j2 @@ -13,8 +13,8 @@ {% trans %}Value{% endtrans %} - {% for key, value in model_card.items() %} - {% if key != "model-index" %} + {% for key, value in model_card %} + {% if key != "model_index" %} @@ -27,7 +27,7 @@ - {% for model in model_card["model-index"] %} + {% for model in model_card["model_index"] %}

{{ model["name"] }}

@@ -37,7 +37,7 @@ - {% for key, value in model.items() %} + {% for key, value in model %} {% if key != "name" %} diff --git a/amt/site/templates/pages/system_card.html.j2 b/amt/site/templates/pages/system_card.html.j2 index 58e3afc6..c14d9616 100644 --- a/amt/site/templates/pages/system_card.html.j2 +++ b/amt/site/templates/pages/system_card.html.j2 @@ -4,11 +4,11 @@ {% trans %}Last updated{% endtrans %}: {{ last_edited | time_ago(language) }} {% trans %}ago{% endtrans %}
- {% if system_card["assessments"] %} + {% if system_card.assessments is defined and system_card.assessments|length > 0 %}
-

Assessment cards

+

{% trans %}Assessment cards {% endtrans %}

    - {% for assessment in system_card["assessments"] %} + {% for assessment in system_card.assessments %}
  • @@ -22,11 +22,11 @@
{% endif %} - {% if system_card["models"] %} + {% if system_card.models is defined and system_card.models|length > 0 %}
-

Model cards

+

{% trans %}Model cards{% endtrans %}

- {% for key, value in system_card.items() %} + {% for key, value in system_card %}
{% trans %}Value{% endtrans %}
{% trans %}Value{% endtrans %}
diff --git a/amt/site/templates/projects/new.html.j2 b/amt/site/templates/projects/new.html.j2 index 94f22c47..ea03c657 100644 --- a/amt/site/templates/projects/new.html.j2 +++ b/amt/site/templates/projects/new.html.j2 @@ -14,6 +14,8 @@ hx-swap="innerHTML" method="post" id="form-new-project"> + +
{% endfor %} -
- + +

{% trans %}Instruments{% endtrans %}

{% trans %}Overview of instruments for the responsible development, deployment, assessment and monitoring of algorithms and AI-systems.{% endtrans %} diff --git a/example_system_card/assessments/aiia.yaml b/example_system_card/assessments/aiia.yaml deleted file mode 100644 index 40938e10..00000000 --- a/example_system_card/assessments/aiia.yaml +++ /dev/null @@ -1,16 +0,0 @@ -provenance: - git_commit_hash: 3eb1f1b - timestamp: 2024-04-16T16:48:14Z - uri: https://github.com/MinBZK/tad-conversion-tool - author: John Doe -name: AIIA -urn: "urn:nl:aivt:tr:aiia:1.0" -date: "2025-03-25" -contents: - - question: "Geef een korte beschrijving van het beoogde AI-systeem (titel, algemene omschrijving, probleemstelling, en het domein)" - answer: "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: Remark - authors: - - name: "John Doe" - - name: "Jane Doe" - timestamp: "2024-04-17T12:03:23Z" diff --git a/example_system_card/assessments/iama.yaml b/example_system_card/assessments/iama.yaml deleted file mode 100644 index e0c36783..00000000 --- a/example_system_card/assessments/iama.yaml +++ /dev/null @@ -1,387 +0,0 @@ -provenance: - git_commit_hash: 3eb1f1b - timestamp: 2024-04-16T16:48:14Z - uri: https://github.com/MinBZK/tad-conversion-tool - author: John Doe -name: IAMA -urn: "urn:nl:aivt:tr:iama:1.0" -date: "2025-03-25" -contents: - - question: "Licht uw voorstel voor het gebruik/de inzet van een algoritme toe. Wat is de aanleiding hiervoor geweest? Voor welk probleem moet het algoritme een oplossing bieden?" - answer: "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: Remark - authors: - - name: "John Doe" - - name: "Jane Doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wat is het doel dat bereikt dient te worden met de inzet van het algoritme? Wat is hierbij het hoofddoel en wat zijn subdoelen?" - answer: "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: Remark - authors: - - name: "John Doe" - - name: "Jane Doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wat zijn de publieke waarden die de inzet van het algoritme ingeven? Indien meerdere publieke waarden de inzet van het algoritme ingeven, kan daar een rangschikking in aangebracht worden?" - answer: "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: Remark - authors: - - name: "John Doe" - - name: "Jane Doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wat zijn de publieke waarden die mogelijk in het gedrang komen door de inzet van het algoritme?" - answer: "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: Remark - authors: - - name: "John Doe" - - name: "Jane Doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wat is de wettelijke grondslag van de inzet van dit algoritme en van de beoogde besluiten die genomen zullen worden op basis van dit algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke partijen en personen zijn er bij de ontwikkeling/het gebruik/het onderhoud van het algoritme betrokken?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe zijn de verantwoordelijkheden belegd ten aanzien van de ontwikkeling en de inzet van het algoritme, ook nadat het algoritme eenmaal is afgerond?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wie is eindverantwoordelijk voor het algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: " Wat voor type algoritme wordt gebruikt, of wat voor type algoritme gaat ontwikkeld worden?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wat voor type data gaat gebruikt worden als input voor het algoritme en uit welke bronnen is de data afkomstig? Indien geen gebruik wordt gemaakt van inputdata, ga door naar onderwerp 2A.4" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Is de kwaliteit en betrouwbaarheid van de data voldoende voor de beoogde datatoepassing? Leg uit." - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke aannames en bias liggen in de data besloten en hoe wordt de invloed daarvan op de output van het algoritme gecorrigeerd of anderszins ondervangen of gemitigeerd (zie ook bijlage 2)?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Indien gebruik wordt gemaakt van trainingsdata: is de data representatief voor de context waarin het algoritme ingezet gaat worden?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Is de data voldoende beveiligd? Maak hierin onderscheid tussen de inputdata en de outputdata." - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Is er controle op de toegang tot de data? Maak hierin onderscheid tussen de inputdata en de outputdata." - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe worden relevante regels over archivering in acht genomen, zoals die in de Archiefwet zijn vastgelegd?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Type algoritme: wat voor soort algoritme wordt gebruikt of gaat worden gebruikt? Hoe werkt het?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Waarom wordt voor dit type algoritme gekozen?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Waarom is dit type algoritme het meest geschikt om de bij vraag 1.2 geformuleerde doelstellingen te bereiken?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke alternatieven zijn er en waarom zijn die minder passend of bruikbaar?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Indien het algoritme is ontwikkeld door een externe partij: zijn er heldere afspraken gemaakt over eigenaarschap en beheer van het algoritme? Wat zijn die afspraken?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke maatregelen kunnen worden getroffen om de risico’s van reproductie of zelfs versterking van biases tegen te gaan (bijv. andere samplingstrategie, feature modification, ...)?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke aannames liggen ten grondslag aan de selectie en weging van de indicatoren? Zijn die aannames terecht? Waarom wel/niet?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe vaak/erg zit het algoritme ernaast? (bijv. in termen van aantal false positives, false negatives, R-squared, ...)" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Is het duidelijk wat het algoritme doet, hoe het dit doet, en op basis waarvan (welke data) het dit doet? Leg uit." - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Voor welke personen en groepen binnen en buiten de eigen organisatie wordt de werking van het algoritme transparant gemaakt en hoe gebeurt dit?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Voor welke doelgroepen moet het algoritme uitlegbaar zijn?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Kan de werking van het algoritme voor de bij vraag B.4.3 geïdentificeerde doelgroepen op een voldoende begrijpelijke manier worden uitgelegd?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wat gebeurt er met de uitkomsten van het algoritme? Welke beslissingen worden daarop gebaseerd?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke rol spelen mensen bij het nemen van beslissingen op basis van de output van het algoritme (‘human in the loop’) en hoe worden zij in staat gesteld om die rol te spelen?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Is er nu en in de toekomst voldoende gekwalificeerd personeel aanwezig om het algoritme te beheren, te herzien en aan te passen indien gewenst/nodig?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wat zullen de effecten zijn van de inzet van het algoritme voor burgersen hoe wordt rekening gehouden met de ‘menselijke maat’ bij het nemen van beslissingen op basis van de output van het algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke risico’s voor stigmatiserende, discriminerende of anderszins schadelijke of nadelige effecten zijn er voor de burger en hoe zullen die worden bestreden of gemitigeerd?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe zullen de verwachte effecten bijdragen aan de oplossing van het probleem dat de aanleiding is voor de ontwikkeling/inzet van het algoritme (zie vraag 1.1) en het bereiken van de daarbij gestelde doelen (zie vraag 1.2)?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe verhouden de verwachte effecten zich tot de waarden die worden gediend (zie vraag 1.3)? Welke risico’s zijn er dat bepaalde waarden onder druk komen te staan en hoe wordt daarmee dan omgegaan?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Via welke procedures zullen beslissingen op basis van het algoritme worden genomen?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe worden verschillende relevante actoren (bestuurlijke en politiek verantwoordelijken, burgers) bij de besluitvorming betrokken?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe wordt gegarandeerd dat in deze procedures wordt voldaan aan de eisen van goed en behoorlijk bestuur en – waar nodig – rechtsbescherming? Hebben burgers een effectieve mogelijkheid om een klacht in te dienen of bezwaar te maken? Zo ja, op welke manier?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Tijd/periode: wanneer gaat het algoritme ingezet worden? Hoe lang is de periode dat het ingezet wordt?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Plaats: waar vindt inzet van het algoritme plaats? Is dat in een bepaald geografisch gebied, is dat bij een bepaalde groep personen of dossiers?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Kan het algoritme ook nog worden ingezet als contextfactoren veranderen of als het algoritme gebruikt wordt in een andere context dan waarvoor het is ontwikkeld?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe open kunt u zijn over de werking van het algoritme in het licht van de doelstellingen en context van de inzet ervan?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Op welke manier beoogt u te communiceren over de inzet van het algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wordt de output van het algoritme gevisualiseerd, bijvoorbeeld in een tabel, grafiek of dashboard? Zo ja: is de vorm van visualisatie of weergave een correcte representatie van de output van het algoritme? Is de visualisatie makkelijk te lezen voor verschillende gebruikersgroepen?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Is voorzien in goede instrumenten voor evaluatie, auditing en borging van het algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Zijn er voldoende mogelijkheden om rekenschap en verantwoording af te leggen over het algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke mogelijkheden zijn er voor auditors en toezichthouders om (formele) consequenties te verbinden aan de inzet van een algoritme door de overheid (bijv. terugkoppeling van bevindingen, doen van aanbevelingen, budgettaire consequenties, ...)" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Wordt er een grondrecht geraakt door het in te zetten algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Zijn er specifieke wettelijke bepalingen of richtsnoeren van toepassing op de grondrechteninbreuk?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Hoe zwaar wordt een grondrecht geraakt door het algoritme?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Welke doelen worden met inzet van het algoritme nagestreefd? Kijk hierbij naar uw antwoord op vraag 1.2" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Vormt het in te zetten algoritme een doeltreffend middel om de gestelde doelen te realiseren? Leg uit." - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Is inzet van dit specifieke algoritme noodzakelijk om dit doel te bereiken en zijn er geen andere of mitigerende maatregelen beschikbaar om dit te doen? Leg uit" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" - - question: "Levert inzet van het algoritme een redelijk evenwicht op tussen de te realiseren doelen en de grondrechten die worden geraakt, en waarom is dat zo?" - answer: "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis." - remarks: remark - authors: - - name: "john doe" - - name: "jane doe" - timestamp: "2024-04-17T12:03:23Z" diff --git a/example_system_card/measures/measures.yaml b/example_system_card/measures/measures.yaml deleted file mode 100644 index 4de3f43a..00000000 --- a/example_system_card/measures/measures.yaml +++ /dev/null @@ -1,228 +0,0 @@ -- urn: "urn:nl:ak:mtr:bnd-01" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:bnd-02" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:dat-01" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:fur-01" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-01" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-02" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-03" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-04" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-05" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-06" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-07" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-08" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-09" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-10" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-11" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-12" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-13" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-14" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-15" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-16" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-17" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-18" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-19" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:gov-20" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-01" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-02" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-03" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-04" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-05" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-06" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-07" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pgb-08" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-01" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-02" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-03" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-04" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-05" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-06" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-07" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-08" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-09" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-10" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-11" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-14" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-15" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-16" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-17" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-18" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-19" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-20" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-21" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-22" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-23" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-24" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:pin-25" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:tra-01" - state: "to do" - version: "" - value: "" -- urn: "urn:nl:ak:mtr:tra-02" - state: "to do" - version: "" - value: "" diff --git a/example_system_card/models/logres_iris.yaml b/example_system_card/models/logres_iris.yaml deleted file mode 100644 index b7758de6..00000000 --- a/example_system_card/models/logres_iris.yaml +++ /dev/null @@ -1,90 +0,0 @@ -language: - - nl -name: logres_iris -license: EUPL-1.2 -tags: - - "Iris Flower Classifcation" - - "Logistic Regression" - -owners: - - organization: Ministerie van Binnenlandse Zaken en Koninkrijksrelaties - oin: "0000001003214345000" - name: John Doe - email: johndoe@email.com - role: Engineer - -model-index: - - name: Logistic Regression Iris - model: https://github.com/MinBZK/poc-kijkdoos-wasm-models - artifacts: - - uri: "https://raw.githubusercontent.com/MinBZK/poc-kijkdoos-wasm-models/main/logres_iris/logreg_iris.onnx" - type: "onnx" - example: - - sepal_length: 1 - - sepal_width: 2 - - petal_length: 3 - - petal_width: 4 - parameters: - - name: epochs - dtype: int - value: "100" - labels: - - name: "param_label_name" - dtype: "param_label_dtype" - value: "param_label_value" - results: - - task: - type: tabular-classification - name: Classification of Iris Flowers - datasets: - - type: "https://huggingface.co/datasets/scikit-learn/iris/viewer" - name: "Iris Species Dataset" - split: "train" - features: - - "sepal_length" - - "sepal_width" - - "petal_length" - - "petal_width" - revision: "5503434ddd753f426f4b38109466949a1217c2bb" - metrics: - - type: accuracy - name: "Training Accuracy" - dtype: "float" - value: "1.0" - labels: - - name: "split" - type: "metadata" - dtype: "string" - value: "training" - measurements: - bar_plots: - - type: SHAP - name: Mean Absolute Shap Values - results: - - name: age - value: "2.7313991690892594e-08" - - name: gender - value: "2.1010905880210835e-11" - - name: income - value: "0.027878870612476556" - - name: race - value: "1.9742755605937866e-11" - - name: home_ownership - value: "4.98389997821369e-12" - - name: prior_count - value: "2.7000142407680143e-08" - - name: loan_amount - value: "0.03782010359850043" - - name: loan_interests - value: "3.5613580001571624e-12" - graph_plots: - - type: "partial_dependence" - name: "Partial Dependence Plot" - results: - - class: "1" - feature: "gender" - data: - - x_value: "0" - y_value: "1" - - x_value: "1" - y_value: "1" diff --git a/example_system_card/requirements/requirements.yaml b/example_system_card/requirements/requirements.yaml deleted file mode 100644 index 441eda94..00000000 --- a/example_system_card/requirements/requirements.yaml +++ /dev/null @@ -1,114 +0,0 @@ -- urn: "urn:nl:ak:ver:awb-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-03" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-05" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-7" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-10" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-13" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-22" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-23" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-24" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-25" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-26" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-27" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-28" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-29" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-35" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aia-38" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:arc-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:aut-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-03" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-04" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-05" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-06" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-07" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-08" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-09" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-10" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-11" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-12" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:avg-13" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:awb-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:awb-02" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:bio-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:bzk-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:dat-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:grw-01" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:grw-02" - state: "to do" - version: "" -- urn: "urn:nl:ak:ver:woo-01" - state: "to do" - version: "" diff --git a/example_system_card/system_card.yaml b/example_system_card/system_card.yaml deleted file mode 100644 index afe89584..00000000 --- a/example_system_card/system_card.yaml +++ /dev/null @@ -1,84 +0,0 @@ -version: "0.1a10" -provenance: - git_commit_hash: 3eb1f1b - timestamp: 2024-10-15T16:48:14Z - uri: https://github.com/Oirschot/woz - author: Wouter Beek -name: "Waarderen WOZ-objecten" -instruments: - - urn: "urn:nl:aivt:tr:iama:1.0" - version: "1.0" - required: True - - urn: "urn:nl:aivt:tr:aiia:1.0" - version: "1.0" - required: True -upl: "https://standaarden.overheid.nl/owms/terms/woz-beschikking" -owners: - - oin: "00000003273808340000" - organization: "Gemeente Oirschot - Directie Belastingen, afdeling Waarderen, Heffen en Toezicht" - name: "Piet van Haaren" - email: "p.vanhaaren@oirschot.nl" - role: "Manager WOZ beschikking" - - oin: "00000003273808340000" - organization: "Gemeente Oirschot" - name: "Ellen Rokven" - email: "info@oirschot.nl" - role: "Medewerkster Klantcontactcentrum" -description: "Het bepalen en fiatteren van de WOZ-waarde." -labels: - - name: "WOZ Waardering" - value: "Automatiseert het proces van waardebepaling van onroerend goed op basis van marktontwikkelingen." - - name: "Marktanalyse" - value: "Maakt gebruik van marktgegevens en statistische modellen om de WOZ-waarde te bepalen." - - name: "Juridische Naleving" - value: "Voldoet aan de Wet WOZ en relevante regelgeving omtrent waardebepaling en proceskostenvergoedingen." -status: "ontwikkeling" -publication_category: "Hoog-risico AI" -begin_date: "2023-10-01" -goal_and_impact: "Automatisering van de werkprocessen; de applicatie ondersteunt in het taxatieproces ten behoeve van de uitvoering van de wet WOZ." -considerations: "Bij het bepalen van de WOZ-waarde worden de marktontwikkelingen nauwkeurig geanalyseerd en verwerkt in een taxatiemodel. Dit model zorgt ervoor dat de WOZ-waarde van een groot aantal woningen efficiënt kan worden berekend. De berekende modelwaarden worden vervolgens gecontroleerd door een taxateur en door statistische tests, zoals ratio-analyses. Het streven is om de WOZ-waarden zo dicht mogelijk bij de marktwaarde te laten aansluiten, binnen een toegestane bandbreedte." -risk_management: "Transactieruis en afwijkende ratio’s worden beheerst door het gebruik van meerdere verkoopprijzen en de voortdurende aanpassing van het taxatiemodel, om fouten in de waardebepaling te minimaliseren." -human_intervention: "Na berekening van de modelwaarde wordt deze gecontroleerd door een taxateur, die waar nodig aanpassingen maakt op basis van specifieke kenmerken van het object​." -legal_base: - - name: "Wet waardering onroerende zaken" - link: "https://wetten.overheid.nl/BWBR0007119/2024-01-01/0" - - name: "Wet herwaardering proceskostenvergoedingen WOZ en bpm" - link: "https://wetten.overheid.nl/BWBR0049132/2024-01-01/0" -used_data: "WOZ-waarde: grootte, bouwjaar, adres, type objecten en bijgebouwen" -technical_design: "De iObjecten-WOZ/WOZ Raadplegen is een computermodel dat grote hoeveelheden gegevens verwerkt om voor elk object een modelwaarde te berekenen, met correcties voor objectkenmerken zoals grootte en ligging​." -external_providers: - - "Civision Pink Roccade" -references: - - name: "Civision Pink Roccade" - link: "https://www.pinkroccadelocalgovernment.nl/beleidsterreinen/ruimte-omgeving/iobjecten/woz-raadplegen/?bu=1250" - - name: "Algoritmeregister Overheid.nl" - link: "https://algoritmes.overheid.nl/nl/algoritme/wozwaarde-uitrekenen-gemeente-oirschot/12626742#algemeneInformatie" -interaction_details: - - "Met iObjecten-WOZ/WOZ Raadplegen doorzoek, raadpleeg én vergelijk je heel eenvoudig WOZ-objecten, sluimerende objecten en WOZ-waarden." -version_requirements: - - v0.1a0 -deployment_variants: - - Webtoepassing - - Mobiele applicatie -hardware_requirements: - - "2.0 GHz dual-core+ processor" - - "4 GB RAM geheugen" - - "500 MB vrije schijfruimte" -product_markings: - - Algemene gebruiksvoorwaarden - - Privacyverklaring - - ISO -user_interface: - - description: "Een intuïtieve gebruikersinterface waarmee WOZ-objecten op een efficiënte, betrouwbare en transparante wijze worden gewaardeerd." - link: "https://www.pinkroccadelocalgovernment.nl/beleidsterreinen/ruimte-omgeving/iobjecten/woz-raadplegen/?bu=1250" - snapshot: "https://www.pinkroccadelocalgovernment.nl/beleidsterreinen/ruimte-omgeving/iobjecten/woz-raadplegen/?bu=1250" - -measures: !include measures/measures.yaml -requirements: !include requirements/requirements.yaml - -models: - - !include models/logres_iris.yaml - -assessments: - - !include assessments/iama.yaml - - !include assessments/aiia.yaml diff --git a/resources/system_card_templates/AMT_Template_1.json b/resources/system_card_templates/AMT_Template_1.json new file mode 100644 index 00000000..1f21da14 --- /dev/null +++ b/resources/system_card_templates/AMT_Template_1.json @@ -0,0 +1,1611 @@ +{ + "version": "0.1a10", + "provenance": { + "git_commit_hash": "3eb1f1b", + "timestamp": "2024-10-15T16:48:14+00:00", + "uri": "https://github.com/Oirschot/woz", + "author": "Wouter Beek" + }, + "name": "Waarderen WOZ-objecten", + "ai_act_profile": { + "type": "AI-systeem", + "open_source": "open-source", + "publication_category": "hoog-risico AI", + "systemic_risk": "geen systeemrisico", + "transparency_obligations": "geen transparantieverplichtingen", + "role": "gebruiksverantwoordelijke" + }, + "instruments": [ + { + "urn": "urn:nl:aivt:tr:iama:1.0", + "version": "1.0", + "required": true + }, + { + "urn": "urn:nl:aivt:tr:aiia:1.0", + "version": "1.0", + "required": true + } + ], + "upl": "https://standaarden.overheid.nl/owms/terms/woz-beschikking", + "owners": [ + { + "oin": "00000003273808340000", + "organization": "Gemeente Oirschot - Directie Belastingen, afdeling Waarderen, Heffen en Toezicht", + "name": "Piet van Haaren", + "email": "p.vanhaaren@oirschot.nl", + "role": "Manager WOZ beschikking" + }, + { + "oin": "00000003273808340000", + "organization": "Gemeente Oirschot", + "name": "Ellen Rokven", + "email": "info@oirschot.nl", + "role": "Medewerkster Klantcontactcentrum" + } + ], + "description": "Het bepalen en fiatteren van de WOZ-waarde.", + "labels": [ + { + "name": "WOZ Waardering", + "value": "Automatiseert het proces van waardebepaling van onroerend goed op basis van marktontwikkelingen." + }, + { + "name": "Marktanalyse", + "value": "Maakt gebruik van marktgegevens en statistische modellen om de WOZ-waarde te bepalen." + }, + { + "name": "Juridische Naleving", + "value": "Voldoet aan de Wet WOZ en relevante regelgeving omtrent waardebepaling en proceskostenvergoedingen." + } + ], + "status": "ontwikkeling", + "publication_category": "Hoog-risico AI", + "begin_date": "2023-10-01", + "goal_and_impact": "Automatisering van de werkprocessen; de applicatie ondersteunt in het taxatieproces ten behoeve van de uitvoering van de wet WOZ.", + "considerations": "Bij het bepalen van de WOZ-waarde worden de marktontwikkelingen nauwkeurig geanalyseerd en verwerkt in een taxatiemodel. Dit model zorgt ervoor dat de WOZ-waarde van een groot aantal woningen effici\u00ebnt kan worden berekend. De berekende modelwaarden worden vervolgens gecontroleerd door een taxateur en door statistische tests, zoals ratio-analyses. Het streven is om de WOZ-waarden zo dicht mogelijk bij de marktwaarde te laten aansluiten, binnen een toegestane bandbreedte.", + "risk_management": "Transactieruis en afwijkende ratio\u2019s worden beheerst door het gebruik van meerdere verkoopprijzen en de voortdurende aanpassing van het taxatiemodel, om fouten in de waardebepaling te minimaliseren.", + "human_intervention": "Na berekening van de modelwaarde wordt deze gecontroleerd door een taxateur, die waar nodig aanpassingen maakt op basis van specifieke kenmerken van het object\u200b.", + "legal_base": [ + { + "name": "Wet waardering onroerende zaken", + "link": "https://wetten.overheid.nl/BWBR0007119/2024-01-01/0" + }, + { + "name": "Wet herwaardering proceskostenvergoedingen WOZ en bpm", + "link": "https://wetten.overheid.nl/BWBR0049132/2024-01-01/0" + } + ], + "used_data": "WOZ-waarde: grootte, bouwjaar, adres, type objecten en bijgebouwen", + "technical_design": "De iObjecten-WOZ/WOZ Raadplegen is een computermodel dat grote hoeveelheden gegevens verwerkt om voor elk object een modelwaarde te berekenen, met correcties voor objectkenmerken zoals grootte en ligging\u200b.", + "external_providers": ["Civision Pink Roccade"], + "references": [ + { + "name": "Civision Pink Roccade", + "link": "https://www.pinkroccadelocalgovernment.nl/beleidsterreinen/ruimte-omgeving/iobjecten/woz-raadplegen/?bu=1250" + }, + { + "name": "Algoritmeregister Overheid.nl", + "link": "https://algoritmes.overheid.nl/nl/algoritme/wozwaarde-uitrekenen-gemeente-oirschot/12626742#algemeneInformatie" + } + ], + "interaction_details": [ + "Met iObjecten-WOZ/WOZ Raadplegen doorzoek, raadpleeg \u00e9n vergelijk je heel eenvoudig WOZ-objecten, sluimerende objecten en WOZ-waarden." + ], + "version_requirements": ["v0.1a0"], + "deployment_variants": ["Webtoepassing", "Mobiele applicatie"], + "hardware_requirements": [ + "2.0 GHz dual-core+ processor", + "4 GB RAM geheugen", + "500 MB vrije schijfruimte" + ], + "product_markings": [ + "Algemene gebruiksvoorwaarden", + "Privacyverklaring", + "ISO" + ], + "user_interface": [ + { + "description": "Een intu\u00eftieve gebruikersinterface waarmee WOZ-objecten op een effici\u00ebnte, betrouwbare en transparante wijze worden gewaardeerd.", + "link": "https://www.pinkroccadelocalgovernment.nl/beleidsterreinen/ruimte-omgeving/iobjecten/woz-raadplegen/?bu=1250", + "snapshot": "https://www.pinkroccadelocalgovernment.nl/beleidsterreinen/ruimte-omgeving/iobjecten/woz-raadplegen/?bu=1250" + } + ], + "measures": [ + { + "urn": "urn:nl:ak:mtr:bnd-01", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:bnd-02", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:dat-01", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:fur-01", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-01", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-02", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-03", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-04", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-05", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-06", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-07", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-08", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-09", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-10", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-11", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-12", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-13", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-14", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-15", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-16", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-17", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-18", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-19", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:gov-20", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-01", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-02", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-03", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-04", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-05", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-06", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-07", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pgb-08", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-01", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-02", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-03", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-04", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-05", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-06", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-07", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-08", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-09", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-10", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-11", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-14", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-15", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-16", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-17", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-18", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-19", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-20", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-21", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-22", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-23", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-24", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:pin-25", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:tra-01", + "state": "to do", + "version": "", + "value": "" + }, + { + "urn": "urn:nl:ak:mtr:tra-02", + "state": "to do", + "version": "", + "value": "" + } + ], + "requirements": [ + { + "urn": "urn:nl:ak:ver:awb-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-03", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-05", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-7", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-10", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-13", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-22", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-23", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-24", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-25", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-26", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-27", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-28", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-29", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-35", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aia-38", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:arc-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:aut-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-03", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-04", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-05", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-06", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-07", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-08", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-09", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-10", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-11", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-12", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:avg-13", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:awb-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:awb-02", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:bio-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:bzk-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:dat-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:grw-01", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:grw-02", + "state": "to do", + "version": "" + }, + { + "urn": "urn:nl:ak:ver:woo-01", + "state": "to do", + "version": "" + } + ], + "models": [ + { + "language": ["nl"], + "name": "logres_iris", + "license": { + "license_name": "EUPL-1.2" + }, + "tags": ["Iris Flower Classifcation", "Logistic Regression"], + "owners": [ + { + "organization": "Ministerie van Binnenlandse Zaken en Koninkrijksrelaties", + "oin": "0000001003214345000", + "name": "John Doe", + "email": "johndoe@email.com", + "role": "Engineer" + } + ], + "model-index": [ + { + "name": "Logistic Regression Iris", + "model": "https://github.com/MinBZK/poc-kijkdoos-wasm-models", + "artifacts": [ + { + "uri": "https://raw.githubusercontent.com/MinBZK/poc-kijkdoos-wasm-models/main/logres_iris/logreg_iris.onnx", + "type": "onnx", + "example": [ + { + "sepal_length": 1 + }, + { + "sepal_width": 2 + }, + { + "petal_length": 3 + }, + { + "petal_width": 4 + } + ] + } + ], + "parameters": [ + { + "name": "epochs", + "dtype": "int", + "value": "100", + "labels": [ + { + "name": "param_label_name", + "dtype": "param_label_dtype", + "value": "param_label_value" + } + ] + } + ], + "results": [ + { + "task": [ + { + "type": "tabular-classification", + "name": "Classification of Iris Flowers" + } + ], + "datasets": [ + { + "type": "https://huggingface.co/datasets/scikit-learn/iris/viewer", + "name": "Iris Species Dataset", + "split": "train", + "features": [ + "sepal_length", + "sepal_width", + "petal_length", + "petal_width" + ], + "revision": "5503434ddd753f426f4b38109466949a1217c2bb" + } + ], + "metrics": [ + { + "type": "accuracy", + "name": "Training Accuracy", + "dtype": "float", + "value": "1.0", + "labels": [ + { + "name": "split", + "type": "metadata", + "dtype": "string", + "value": "training" + } + ] + } + ], + "measurements": { + "bar_plots": [ + { + "type": "SHAP", + "name": "Mean Absolute Shap Values", + "results": [ + { + "name": "age", + "value": "2.7313991690892594e-08" + }, + { + "name": "gender", + "value": "2.1010905880210835e-11" + }, + { + "name": "income", + "value": "0.027878870612476556" + }, + { + "name": "race", + "value": "1.9742755605937866e-11" + }, + { + "name": "home_ownership", + "value": "4.98389997821369e-12" + }, + { + "name": "prior_count", + "value": "2.7000142407680143e-08" + }, + { + "name": "loan_amount", + "value": "0.03782010359850043" + }, + { + "name": "loan_interests", + "value": "3.5613580001571624e-12" + } + ] + } + ], + "graph_plots": [ + { + "type": "partial_dependence", + "name": "Partial Dependence Plot", + "results": [ + { + "class": "1", + "feature": "gender", + "data": [ + { + "x_value": "0", + "y_value": "1" + }, + { + "x_value": "1", + "y_value": "1" + } + ] + } + ] + } + ] + } + } + ] + } + ] + } + ], + "assessments": [ + { + "provenance": { + "git_commit_hash": "3eb1f1b", + "timestamp": "2024-04-16T16:48:14+00:00", + "uri": "https://github.com/MinBZK/tad-conversion-tool", + "author": "John Doe" + }, + "name": "IAMA", + "urn": "urn:nl:aivt:tr:iama:1.0", + "date": "2025-03-25", + "contents": [ + { + "question": "Licht uw voorstel voor het gebruik/de inzet van een algoritme toe. Wat is de aanleiding hiervoor geweest? Voor welk probleem moet het algoritme een oplossing bieden?", + "answer": "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "Remark", + "authors": [ + { + "name": "John Doe" + }, + { + "name": "Jane Doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wat is het doel dat bereikt dient te worden met de inzet van het algoritme? Wat is hierbij het hoofddoel en wat zijn subdoelen?", + "answer": "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "Remark", + "authors": [ + { + "name": "John Doe" + }, + { + "name": "Jane Doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wat zijn de publieke waarden die de inzet van het algoritme ingeven? Indien meerdere publieke waarden de inzet van het algoritme ingeven, kan daar een rangschikking in aangebracht worden?", + "answer": "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "Remark", + "authors": [ + { + "name": "John Doe" + }, + { + "name": "Jane Doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wat zijn de publieke waarden die mogelijk in het gedrang komen door de inzet van het algoritme?", + "answer": "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "Remark", + "authors": [ + { + "name": "John Doe" + }, + { + "name": "Jane Doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wat is de wettelijke grondslag van de inzet van dit algoritme en van de beoogde besluiten die genomen zullen worden op basis van dit algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke partijen en personen zijn er bij de ontwikkeling/het gebruik/het onderhoud van het algoritme betrokken?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe zijn de verantwoordelijkheden belegd ten aanzien van de ontwikkeling en de inzet van het algoritme, ook nadat het algoritme eenmaal is afgerond?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wie is eindverantwoordelijk voor het algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": " Wat voor type algoritme wordt gebruikt, of wat voor type algoritme gaat ontwikkeld worden?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wat voor type data gaat gebruikt worden als input voor het algoritme en uit welke bronnen is de data afkomstig? Indien geen gebruik wordt gemaakt van inputdata, ga door naar onderwerp 2A.4", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Is de kwaliteit en betrouwbaarheid van de data voldoende voor de beoogde datatoepassing? Leg uit.", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke aannames en bias liggen in de data besloten en hoe wordt de invloed daarvan op de output van het algoritme gecorrigeerd of anderszins ondervangen of gemitigeerd (zie ook bijlage 2)?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Indien gebruik wordt gemaakt van trainingsdata: is de data representatief voor de context waarin het algoritme ingezet gaat worden?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Is de data voldoende beveiligd? Maak hierin onderscheid tussen de inputdata en de outputdata.", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Is er controle op de toegang tot de data? Maak hierin onderscheid tussen de inputdata en de outputdata.", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe worden relevante regels over archivering in acht genomen, zoals die in de Archiefwet zijn vastgelegd?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Type algoritme: wat voor soort algoritme wordt gebruikt of gaat worden gebruikt? Hoe werkt het?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Waarom wordt voor dit type algoritme gekozen?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Waarom is dit type algoritme het meest geschikt om de bij vraag 1.2 geformuleerde doelstellingen te bereiken?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke alternatieven zijn er en waarom zijn die minder passend of bruikbaar?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Indien het algoritme is ontwikkeld door een externe partij: zijn er heldere afspraken gemaakt over eigenaarschap en beheer van het algoritme? Wat zijn die afspraken?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke maatregelen kunnen worden getroffen om de risico\u2019s van reproductie of zelfs versterking van biases tegen te gaan (bijv. andere samplingstrategie, feature modification, ...)?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke aannames liggen ten grondslag aan de selectie en weging van de indicatoren? Zijn die aannames terecht? Waarom wel/niet?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe vaak/erg zit het algoritme ernaast? (bijv. in termen van aantal false positives, false negatives, R-squared, ...)", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Is het duidelijk wat het algoritme doet, hoe het dit doet, en op basis waarvan (welke data) het dit doet? Leg uit.", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Voor welke personen en groepen binnen en buiten de eigen organisatie wordt de werking van het algoritme transparant gemaakt en hoe gebeurt dit?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Voor welke doelgroepen moet het algoritme uitlegbaar zijn?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Kan de werking van het algoritme voor de bij vraag B.4.3 ge\u00efdentificeerde doelgroepen op een voldoende begrijpelijke manier worden uitgelegd?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wat gebeurt er met de uitkomsten van het algoritme? Welke beslissingen worden daarop gebaseerd?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke rol spelen mensen bij het nemen van beslissingen op basis van de output van het algoritme (\u2018human in the loop\u2019) en hoe worden zij in staat gesteld om die rol te spelen?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Is er nu en in de toekomst voldoende gekwalificeerd personeel aanwezig om het algoritme te beheren, te herzien en aan te passen indien gewenst/nodig?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wat zullen de effecten zijn van de inzet van het algoritme voor burgersen hoe wordt rekening gehouden met de \u2018menselijke maat\u2019 bij het nemen van beslissingen op basis van de output van het algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke risico\u2019s voor stigmatiserende, discriminerende of anderszins schadelijke of nadelige effecten zijn er voor de burger en hoe zullen die worden bestreden of gemitigeerd?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe zullen de verwachte effecten bijdragen aan de oplossing van het probleem dat de aanleiding is voor de ontwikkeling/inzet van het algoritme (zie vraag 1.1) en het bereiken van de daarbij gestelde doelen (zie vraag 1.2)?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe verhouden de verwachte effecten zich tot de waarden die worden gediend (zie vraag 1.3)? Welke risico\u2019s zijn er dat bepaalde waarden onder druk komen te staan en hoe wordt daarmee dan omgegaan?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Via welke procedures zullen beslissingen op basis van het algoritme worden genomen?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe worden verschillende relevante actoren (bestuurlijke en politiek verantwoordelijken, burgers) bij de besluitvorming betrokken?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe wordt gegarandeerd dat in deze procedures wordt voldaan aan de eisen van goed en behoorlijk bestuur en \u2013 waar nodig \u2013 rechtsbescherming? Hebben burgers een effectieve mogelijkheid om een klacht in te dienen of bezwaar te maken? Zo ja, op welke manier?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Tijd/periode: wanneer gaat het algoritme ingezet worden? Hoe lang is de periode dat het ingezet wordt?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Plaats: waar vindt inzet van het algoritme plaats? Is dat in een bepaald geografisch gebied, is dat bij een bepaalde groep personen of dossiers?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Kan het algoritme ook nog worden ingezet als contextfactoren veranderen of als het algoritme gebruikt wordt in een andere context dan waarvoor het is ontwikkeld?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe open kunt u zijn over de werking van het algoritme in het licht van de doelstellingen en context van de inzet ervan?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Op welke manier beoogt u te communiceren over de inzet van het algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wordt de output van het algoritme gevisualiseerd, bijvoorbeeld in een tabel, grafiek of dashboard? Zo ja: is de vorm van visualisatie of weergave een correcte representatie van de output van het algoritme? Is de visualisatie makkelijk te lezen voor verschillende gebruikersgroepen?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Is voorzien in goede instrumenten voor evaluatie, auditing en borging van het algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Zijn er voldoende mogelijkheden om rekenschap en verantwoording af te leggen over het algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke mogelijkheden zijn er voor auditors en toezichthouders om (formele) consequenties te verbinden aan de inzet van een algoritme door de overheid (bijv. terugkoppeling van bevindingen, doen van aanbevelingen, budgettaire consequenties, ...)", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Wordt er een grondrecht geraakt door het in te zetten algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Zijn er specifieke wettelijke bepalingen of richtsnoeren van toepassing op de grondrechteninbreuk?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Hoe zwaar wordt een grondrecht geraakt door het algoritme?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Welke doelen worden met inzet van het algoritme nagestreefd? Kijk hierbij naar uw antwoord op vraag 1.2", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Vormt het in te zetten algoritme een doeltreffend middel om de gestelde doelen te realiseren? Leg uit.", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Is inzet van dit specifieke algoritme noodzakelijk om dit doel te bereiken en zijn er geen andere of mitigerende maatregelen beschikbaar om dit te doen? Leg uit", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + }, + { + "question": "Levert inzet van het algoritme een redelijk evenwicht op tussen de te realiseren doelen en de grondrechten die worden geraakt, en waarom is dat zo?", + "answer": "lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi lorem pariatur mollit ex esse exercitation amet. nisi anim cupidatat excepteur officia. reprehenderit nostrud nostrud ipsum lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. nostrud officia pariatur ut officia. sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor lorem duis laboris cupidatat officia voluptate. culpa proident adipisicing id nulla nisi laboris ex in lorem sunt duis officia eiusmod. aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "remark", + "authors": [ + { + "name": "john doe" + }, + { + "name": "jane doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + } + ] + }, + { + "provenance": { + "git_commit_hash": "3eb1f1b", + "timestamp": "2024-04-16T16:48:14+00:00", + "uri": "https://github.com/MinBZK/tad-conversion-tool", + "author": "John Doe" + }, + "name": "AIIA", + "urn": "urn:nl:aivt:tr:aiia:1.0", + "date": "2025-03-25", + "contents": [ + { + "question": "Geef een korte beschrijving van het beoogde AI-systeem (titel, algemene omschrijving, probleemstelling, en het domein)", + "answer": "Lorem ipsum dolor sit amet, officia excepteur ex fugiat reprehenderit enim labore culpa sint ad nisi Lorem pariatur mollit ex esse exercitation amet. Nisi anim cupidatat excepteur officia. Reprehenderit nostrud nostrud ipsum Lorem est aliquip amet voluptate voluptate dolor minim nulla est proident. Nostrud officia pariatur ut officia. Sit irure elit esse ea nulla sunt ex occaecat reprehenderit commodo officia dolor Lorem duis laboris cupidatat officia voluptate. Culpa proident adipisicing id nulla nisi laboris ex in Lorem sunt duis officia eiusmod. Aliqua reprehenderit commodo ex non excepteur duis sunt velit enim. Voluptate laboris sint cupidatat ullamco ut ea consectetur et est culpa et culpa duis.", + "remarks": "Remark", + "authors": [ + { + "name": "John Doe" + }, + { + "name": "Jane Doe" + } + ], + "timestamp": "2024-04-17T12:03:23Z" + } + ] + } + ] +} diff --git a/tests/api/routes/test_project.py b/tests/api/routes/test_project.py index 8e662279..8e230c96 100644 --- a/tests/api/routes/test_project.py +++ b/tests/api/routes/test_project.py @@ -6,7 +6,7 @@ from httpx import AsyncClient from pytest_mock import MockFixture -from tests.constants import default_project, default_task +from tests.constants import default_project, default_project_with_system_card, default_task from tests.database_test_utils import DatabaseTestUtils @@ -66,13 +66,10 @@ async def test_get_system_card_unknown_project(client: AsyncClient) -> None: assert b"The requested page or resource could not be found." in response.content -# TODO: Test are now have hard coded URL paths because the system card -# is fixed for now. Tests need to be refactored and made proper once -# the actual stored system card in a project is being rendered. @pytest.mark.asyncio async def test_get_assessment_card(client: AsyncClient, db: DatabaseTestUtils) -> None: # given - await db.given([default_project("testproject1")]) + await db.given([default_project_with_system_card("testproject1")]) # when response = await client.get("/algorithm-system/1/details/system_card/assessments/iama") @@ -83,11 +80,11 @@ async def test_get_assessment_card(client: AsyncClient, db: DatabaseTestUtils) - assert b"Assessment card" in response.content -# TODO: Test are now have hard coded URL paths because the system card -# is fixed for now. Tests need to be refactored and made proper once -# the actual stored system card in a project is being rendered. @pytest.mark.asyncio -async def test_get_assessment_card_unknown_project(client: AsyncClient) -> None: +async def test_get_assessment_card_unknown_project(client: AsyncClient, db: DatabaseTestUtils) -> None: + # given + await db.given([default_project("testproject1")]) + # when response = await client.get("/algorithm-system/1/details/system_card/assessments/iama") @@ -97,9 +94,6 @@ async def test_get_assessment_card_unknown_project(client: AsyncClient) -> None: assert b"The requested page or resource could not be found." in response.content -# TODO: Test are now have hard coded URL paths because the system card -# is fixed for now. Tests need to be refactored and made proper once -# the actual stored system card in a project is being rendered. @pytest.mark.asyncio async def test_get_assessment_card_unknown_assessment(client: AsyncClient, db: DatabaseTestUtils) -> None: # given @@ -114,13 +108,10 @@ async def test_get_assessment_card_unknown_assessment(client: AsyncClient, db: D assert b"The requested page or resource could not be found." in response.content -# TODO: Test are now have hard coded URL paths because the system card -# is fixed for now. Tests need to be refactored and made proper once -# the actual stored system card in a project is being rendered. @pytest.mark.asyncio async def test_get_model_card(client: AsyncClient, db: DatabaseTestUtils) -> None: # given - await db.given([default_project("testproject1")]) + await db.given([default_project_with_system_card("testproject1")]) # when response = await client.get("/algorithm-system/1/details/system_card/models/logres_iris") @@ -131,10 +122,6 @@ async def test_get_model_card(client: AsyncClient, db: DatabaseTestUtils) -> Non assert b"Model card" in response.content -# TODO: Test are now have hard coded URL paths because the system card -# is fixed for now. Tests need to be refactored and made proper once -# the actual stored system card in a project is being rendered. -@pytest.mark.asyncio async def test_get_model_card_unknown_project(client: AsyncClient) -> None: # when response = await client.get("/algorithm-system/1/details/system_card/models/logres_iris") @@ -145,9 +132,6 @@ async def test_get_model_card_unknown_project(client: AsyncClient) -> None: assert b"The requested page or resource could not be found." in response.content -# TODO: Test are now have hard coded URL paths because the system card -# is fixed for now. Tests need to be refactored and made proper once -# the actual stored system card in a project is being rendered. @pytest.mark.asyncio async def test_get_assessment_card_unknown_model_card(client: AsyncClient, db: DatabaseTestUtils) -> None: # given @@ -179,7 +163,7 @@ async def test_get_project_details(client: AsyncClient, db: DatabaseTestUtils) - @pytest.mark.asyncio async def test_get_system_card_requirements(client: AsyncClient, db: DatabaseTestUtils) -> None: # given - await db.given([default_project("testproject1"), default_task(project_id=1, status_id=1)]) + await db.given([default_project_with_system_card("testproject1"), default_task(project_id=1, status_id=1)]) # when response = await client.get("/algorithm-system/1/details/system_card/requirements") @@ -193,7 +177,7 @@ async def test_get_system_card_requirements(client: AsyncClient, db: DatabaseTes @pytest.mark.asyncio async def test_get_system_card_data_page(client: AsyncClient, db: DatabaseTestUtils) -> None: # given - await db.given([default_project("testproject1"), default_task(project_id=1, status_id=1)]) + await db.given([default_project_with_system_card("testproject1"), default_task(project_id=1, status_id=1)]) # when response = await client.get("/algorithm-system/1/details/system_card/data") @@ -207,7 +191,7 @@ async def test_get_system_card_data_page(client: AsyncClient, db: DatabaseTestUt @pytest.mark.asyncio async def test_get_system_card_instruments(client: AsyncClient, db: DatabaseTestUtils) -> None: # given - await db.given([default_project("testproject1"), default_task(project_id=1, status_id=1)]) + await db.given([default_project_with_system_card("testproject1"), default_task(project_id=1, status_id=1)]) # when response = await client.get("/algorithm-system/1/details/system_card/instruments") diff --git a/tests/api/routes/test_projects.py b/tests/api/routes/test_projects.py index a18b1235..2becd077 100644 --- a/tests/api/routes/test_projects.py +++ b/tests/api/routes/test_projects.py @@ -124,6 +124,7 @@ async def test_post_new_projects(client: AsyncClient, mocker: MockFixture) -> No systemic_risk="geen systeemrisico", transparency_obligations="geen transparantieverplichtingen", role="gebruiksverantwoordelijke", + template_id="0", ) # given mocker.patch("fastapi_csrf_protect.CsrfProtect.validate_csrf", new_callable=mocker.AsyncMock) @@ -165,6 +166,7 @@ async def test_post_new_projects_write_system_card( systemic_risk="geen systeemrisico", transparency_obligations="geen transparantieverplichtingen", role="gebruiksverantwoordelijke", + template_id="", ) ai_act_profile = AiActProfile( @@ -176,8 +178,6 @@ async def test_post_new_projects_write_system_card( role=project_new.role, ) - # This should be refactored; this is here because for the demo of 18 oct the requirements and - # measures are hardcoded requirements, measures = get_requirements_and_measures(ai_act_profile) system_card = SystemCard( diff --git a/tests/constants.py b/tests/constants.py index c37114cd..9c88c1fd 100644 --- a/tests/constants.py +++ b/tests/constants.py @@ -1,7 +1,10 @@ +import json + from amt.api.lifecycles import Lifecycles from amt.api.navigation import BaseNavigationItem, DisplayText from amt.models import Project, Task, User from amt.schema.instrument import Instrument, InstrumentTask, Owner +from amt.schema.system_card import SystemCard from fastapi import Request from starlette.datastructures import URL @@ -23,6 +26,14 @@ def default_project(name: str = "default project") -> Project: return Project(name=name) +def default_project_with_system_card(name: str = "default project") -> Project: + with open("resources/system_card_templates/AMT_Template_1.json") as f: + system_card_from_template = json.load(f) + system_card_from_template["name"] = name + system_card = SystemCard.model_validate(system_card_from_template) + return Project(name=name, lifecycle=Lifecycles.DEVELOPMENT, system_card=system_card) + + def default_project_with_lifecycle(name: str = "default project", lifecycle: Lifecycles = Lifecycles.DESIGN) -> Project: return Project(name=name, lifecycle=lifecycle) diff --git a/tests/schema/test_schema_system_cards.py b/tests/schema/test_schema_system_cards.py index 3cc96ea1..e7d44726 100644 --- a/tests/schema/test_schema_system_cards.py +++ b/tests/schema/test_schema_system_cards.py @@ -25,6 +25,7 @@ def test_get_system_card(setup: SystemCard) -> None: "requirements": [], "measures": [], "references": [], + "models": [], } assert system_card.model_dump() == expected @@ -42,6 +43,7 @@ def test_system_card_update(setup: SystemCard) -> None: "requirements": [], "measures": [], "references": [], + "models": [], } system_card.name = "IAMA 1.1" assert system_card.model_dump(exclude_none=True) == expected diff --git a/tests/services/test_projects_service.py b/tests/services/test_projects_service.py index 02bd592c..06f2d09b 100644 --- a/tests/services/test_projects_service.py +++ b/tests/services/test_projects_service.py @@ -1,4 +1,6 @@ import pytest +from amt.api.lifecycles import Lifecycles +from amt.core.exceptions import AMTNotFound from amt.models.project import Project from amt.repositories.projects import ProjectsRepository from amt.schema.project import ProjectNew @@ -71,3 +73,29 @@ async def test_create_project(mocker: MockFixture): assert project.name == project_name assert project.lifecycle == project_lifecycle projects_service.repository.save.assert_awaited() # type: ignore + + +@pytest.mark.asyncio +async def test_create_project_unknown_template_id(mocker: MockFixture): + # When + project_new = ProjectNew( + template_id="1", + name="test", + lifecycle=Lifecycles.DEVELOPMENT.name, + instruments=[], + type="project_type", + open_source="project_open_source", + publication_category="project_publication_category", + systemic_risk="project_systemic_risk", + transparency_obligations="project_transparency_obligations", + role="project_role", + ) + + projects_service = ProjectsService( + repository=mocker.AsyncMock(spec=ProjectsRepository), + task_service=mocker.AsyncMock(spec=TasksService), + instrument_service=mocker.AsyncMock(spec=InstrumentsService), + ) + + with pytest.raises(AMTNotFound): + await projects_service.create(project_new)