From f447867c5b89cff05561345452250c79ed15b3bb Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Thu, 16 Mar 2023 18:25:04 -0700 Subject: [PATCH 01/76] upgrade to latest linkml --- CODE_OF_CONDUCT.md | 76 ++ CONTRIBUTING.md | 80 +- LICENSE | 13 +- Makefile | 114 +- README.md | 30 +- about.yaml | 8 +- examples/README.md | 6 +- examples/census-income-classifier.json | 35 - mkdocs.yml | 24 +- project/excel/model_card_schema.xlsx | Bin 0 -> 12604 bytes project/excel/modelcards.xlsx | Bin 11406 -> 0 bytes project/graphql/model_card_schema.graphql | 67 ++ project/graphql/modelcards.graphql | 55 - .../jsonld/model_card_schema.context.jsonld | 76 ++ project/jsonld/model_card_schema.jsonld | 824 +++++++++++++ project/jsonld/modelcards.context.jsonld | 17 - project/jsonld/modelcards.jsonld | 1071 ----------------- .../jsonschema/model_card_schema.schema.json | 243 ++++ project/jsonschema/modelcards.schema.json | 222 ---- project/owl/model_card_schema.owl.ttl | 343 ++++++ project/owl/modelcards.owl.ttl | 317 ----- project/prefixmap/model_card_schema.yaml | 19 + project/prefixmap/modelcards.yaml | 4 - project/protobuf/model_card_schema.proto | 60 + project/protobuf/modelcards.proto | 48 - project/shacl/model_card_schema.shacl.ttl | 164 +++ project/shacl/modelcards.shacl.ttl | 143 --- project/shex/model_card_schema.shex | 124 ++ project/sqlschema/model_card_schema.sql | 75 ++ project/sqlschema/modelcards.sql | 56 - pyproject.toml | 24 +- src/data/examples/Person-001.yaml | 4 +- src/docs/about.md | 4 +- src/linkml/modelcards.yaml | 173 --- src/modelcards/_version.py | 7 + src/modelcards/datamodel/__init__.py | 1 + src/modelcards/schema/modelcards.yaml | 23 + tests/__init__.py | 1 + tests/test_data.py | 22 + utils/get-value.sh | 4 +- 40 files changed, 2378 insertions(+), 2199 deletions(-) create mode 100644 CODE_OF_CONDUCT.md delete mode 100644 examples/census-income-classifier.json create mode 100644 project/excel/model_card_schema.xlsx delete mode 100644 project/excel/modelcards.xlsx create mode 100644 project/graphql/model_card_schema.graphql delete mode 100644 project/graphql/modelcards.graphql create mode 100644 project/jsonld/model_card_schema.context.jsonld create mode 100644 project/jsonld/model_card_schema.jsonld delete mode 100644 project/jsonld/modelcards.context.jsonld delete mode 100644 project/jsonld/modelcards.jsonld create mode 100644 project/jsonschema/model_card_schema.schema.json delete mode 100644 project/jsonschema/modelcards.schema.json create mode 100644 project/owl/model_card_schema.owl.ttl delete mode 100644 project/owl/modelcards.owl.ttl create mode 100644 project/prefixmap/model_card_schema.yaml delete mode 100644 project/prefixmap/modelcards.yaml create mode 100644 project/protobuf/model_card_schema.proto delete mode 100644 project/protobuf/modelcards.proto create mode 100644 project/shacl/model_card_schema.shacl.ttl delete mode 100644 project/shacl/modelcards.shacl.ttl create mode 100644 project/shex/model_card_schema.shex create mode 100644 project/sqlschema/model_card_schema.sql delete mode 100644 project/sqlschema/modelcards.sql delete mode 100644 src/linkml/modelcards.yaml create mode 100644 src/modelcards/_version.py create mode 100644 src/modelcards/datamodel/__init__.py create mode 100644 src/modelcards/schema/modelcards.yaml create mode 100644 tests/__init__.py create mode 100644 tests/test_data.py diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..2b301c6 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, +body size, disability, ethnicity, gender identity and expression, level of +experience, nationality, personal appearance, race, religion, or sexual +identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an +appointed representative at an online or offline event. Representation of a +project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by [contacting the project team](contact.md). All complaints will be +reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated +to maintain confidentiality with regard to the reporter of an incident. Further +details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This code of conduct has been derived from the excellent code of conduct of the +[ATOM project](https://github.com/atom/atom/blob/master/CODE_OF_CONDUCT.md) +which in turn is adapted from the [Contributor Covenant][homepage], version +1.4, available at [https://contributor-covenant.org/version/1/4][version] + +[homepage]: https://contributor-covenant.org +[version]: https://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 648f4b7..939735e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,73 @@ -# Contributing - -## Create an issue in the GitHub repository - -## Create a Pull Request (PR) - -Thank you for contributing to modelcards \ No newline at end of file +# Contributing to model-card-schema + +:+1: First of all: Thank you for taking the time to contribute! + +The following is a set of guidelines for contributing to +model-card-schema. These guidelines are not strict rules. +Use your best judgment, and feel free to propose changes to this document +in a pull request. + +## Table Of Contents + +* [Code of Conduct](#code-of-conduct) +* [Guidelines for Contributions and Requests](#contributions) + * [Reporting problems with the data model](#reporting-bugs) + * [Requesting new terms](#requesting-terms) + * [Adding new terms yourself](#adding-terms) +* [Best Practices](#best-practices) + * [How to write a great issue](#great-issues) + * [How to create a great pull/merge request](#great-pulls) + + + +## Code of Conduct + +The model-card-schema team strives to create a +welcoming environment for editors, users and other contributors. +Please carefully read our [Code of Conduct](CODE_OF_CONDUCT.md). + + + +## Guidelines for Contributions and Requests + + + +### Reporting problems with the data model + +Please use our [Issue Tracker][issues] to report problems with the ontology. + + + +### Requesting new terms + +Please use our [Issue Tracker][issues] to request a new term for the ontology. + + + +### Adding new terms yourself + +Please submit a [Pull Request][pulls] to submit a new term for consideration. + + + +## Best Practices + + + +### How to write a great issue + +Please review GitHub's overview article, +["Tracking Your Work with Issues"][about-issues]. + + + +### How to create a great pull/merge request + +Please review GitHub's article, ["About Pull Requests"][about-pulls], +and make your changes on a [new branch][about-branches]. + +[about-branches]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches +[about-issues]: https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues +[about-pulls]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests +[issues]: https://github.com/bbop/model-card-schema/issues/ +[pulls]: https://github.com/bbop/model-card-schema/pulls/ diff --git a/LICENSE b/LICENSE index d0e2447..b14805b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ -MIT License -Copyright (c) 2022 Mark A. Miller +The MIT License (MIT) + +Copyright (c) 2023 marcin p. joachimiak Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -9,13 +10,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Makefile b/Makefile index fb4f28a..bbe8f66 100644 --- a/Makefile +++ b/Makefile @@ -8,22 +8,43 @@ SHELL := bash RUN = poetry run # get values from about.yaml file -SCHEMA_NAME = $(shell sh ./utils/get-value.sh name) -SOURCE_SCHEMA_PATH = $(shell sh ./utils/get-value.sh source_schema_path) +SCHEMA_NAME = $(shell ${SHELL} ./utils/get-value.sh name) +SOURCE_SCHEMA_PATH = $(shell ${SHELL} ./utils/get-value.sh source_schema_path) +SOURCE_SCHEMA_DIR = $(dir $(SOURCE_SCHEMA_PATH)) SRC = src DEST = project PYMODEL = $(SRC)/$(SCHEMA_NAME)/datamodel DOCDIR = docs +EXAMPLEDIR = examples +SHEET_MODULE = personinfo_enums +SHEET_ID = $(shell ${SHELL} ./utils/get-value.sh google_sheet_id) +SHEET_TABS = $(shell ${SHELL} ./utils/get-value.sh google_sheet_tabs) +SHEET_MODULE_PATH = $(SOURCE_SCHEMA_DIR)/$(SHEET_MODULE).yaml + +# environment variables +GEN_PARGS = +ifdef LINKML_COOKIECUTTER_GEN_PROJECT_ARGS +GEN_PARGS = ${LINKML_COOKIECUTTER_GEN_PROJECT_ARGS} +endif + +GEN_DARGS = +ifdef LINKML_COOKIECUTTER_GEN_DOC_ARGS +GEN_DARGS = ${LINKML_COOKIECUTTER_GEN_DOC_ARGS} +endif + # basename of a YAML file in model/ .PHONY: all clean +# note: "help" MUST be the first target in the file, +# when the user types "make" they should get help info help: status @echo "" - @echo "make all -- makes site locally" + @echo "make setup -- initial setup (run this first)" + @echo "make site -- makes site locally" @echo "make install -- install dependencies" - @echo "make setup -- initial setup" @echo "make test -- runs tests" + @echo "make lint -- perfom linting" @echo "make testdoc -- builds docs and runs local test server" @echo "make deploy -- deploys site" @echo "make update -- updates linkml version" @@ -34,28 +55,72 @@ status: check-config @echo "Project: $(SCHEMA_NAME)" @echo "Source: $(SOURCE_SCHEMA_PATH)" -setup: install gen-project gendoc git-init-add +# generate products and add everything to github +setup: install gen-project gen-examples gendoc git-init-add +# install any dependencies required for building install: + git init # issues/33 poetry install .PHONY: install -all: gen-project gendoc +# --- +# Project Syncronization +# --- +# +# check we are up to date +check: cruft-check +cruft-check: + cruft check +cruft-diff: + cruft diff + +update: update-template update-linkml +update-template: + cruft update + +# todo: consider pinning to template +update-linkml: + poetry add -D linkml@latest + +# EXPERIMENTAL +create-data-harmonizer: + npm init data-harmonizer $(SOURCE_SCHEMA_PATH) + +all: site +site: gen-project gendoc %.yaml: gen-project deploy: all mkd-gh-deploy +compile-sheets: + $(RUN) sheets2linkml --gsheet-id $(SHEET_ID) $(SHEET_TABS) > $(SHEET_MODULE_PATH).tmp && mv $(SHEET_MODULE_PATH).tmp $(SHEET_MODULE_PATH) + +# In future this will be done by conversion +gen-examples: + cp src/data/examples/* $(EXAMPLEDIR) + # generates all project files -gen-project: $(PYMODEL) - $(RUN) gen-project --exclude shex -d $(DEST) $(SOURCE_SCHEMA_PATH) && mv $(DEST)/*.py $(PYMODEL) -test: - $(RUN) gen-project -d tmp $(SOURCE_SCHEMA_PATH) +gen-project: $(PYMODEL) compile-sheets + $(RUN) gen-project ${GEN_PARGS} -d $(DEST) $(SOURCE_SCHEMA_PATH) && mv $(DEST)/*.py $(PYMODEL) + + +test: test-schema test-python test-examples + +test-schema: + $(RUN) gen-project ${GEN_PARGS} -d tmp $(SOURCE_SCHEMA_PATH) + +test-python: + $(RUN) python -m unittest discover + +lint: + $(RUN) linkml-lint $(SOURCE_SCHEMA_PATH) check-config: @(grep my-datamodel about.yaml > /dev/null && printf "\n**Project not configured**:\n\n - Remember to edit 'about.yaml'\n\n" || exit 0) convert-examples-to-%: - $(patsubst %, $(RUN) linkml-convert % -s $(SOURCE_SCHEMA_PATH) -C Person, $(shell find src/data/examples -name "*.yaml")) + $(patsubst %, $(RUN) linkml-convert % -s $(SOURCE_SCHEMA_PATH) -C Person, $(shell ${SHELL} find src/data/examples -name "*.yaml")) examples/%.yaml: src/data/examples/%.yaml $(RUN) linkml-convert -s $(SOURCE_SCHEMA_PATH) -C Person $< -o $@ @@ -64,8 +129,17 @@ examples/%.json: src/data/examples/%.yaml examples/%.ttl: src/data/examples/%.yaml $(RUN) linkml-convert -P EXAMPLE=http://example.org/ -s $(SOURCE_SCHEMA_PATH) -C Person $< -o $@ -upgrade: - poetry add -D linkml@latest +test-examples: examples/output + +examples/output: src/model_card_schema/schema/model_card_schema.yaml + mkdir -p $@ + $(RUN) linkml-run-examples \ + --output-formats json \ + --output-formats yaml \ + --counter-example-input-directory src/data/examples/invalid \ + --input-directory src/data/examples/valid \ + --output-directory $@ \ + --schema $< > $@/README.md # Test documentation locally serve: mkd-serve @@ -80,7 +154,7 @@ $(DOCDIR): gendoc: $(DOCDIR) cp $(SRC)/docs/*md $(DOCDIR) ; \ - $(RUN) gen-doc -d $(DOCDIR) $(SOURCE_SCHEMA_PATH) + $(RUN) gen-doc ${GEN_DARGS} -d $(DOCDIR) $(SOURCE_SCHEMA_PATH) testdoc: gendoc serve @@ -92,16 +166,22 @@ PROJECT_FOLDERS = sqlschema shex shacl protobuf prefixmap owl jsonschema jsonld git-init-add: git-init git-add git-commit git-status git-init: git init -git-add: - git add .gitignore .github Makefile LICENSE *.md examples utils about.yaml mkdocs.yml poetry.lock project.Makefile pyproject.toml src/linkml/*yaml src/*/datamodel/*py src/data +git-add: .cruft.json + git add .gitignore .github .cruft.json Makefile LICENSE *.md examples utils about.yaml mkdocs.yml poetry.lock project.Makefile pyproject.toml src/model_card_schema/schema/*yaml src/*/datamodel/*py src/data src/docs tests src/*/_version.py git add $(patsubst %, project/%, $(PROJECT_FOLDERS)) git-commit: - git commit -m 'Initial commit' -a + git commit -m 'chore: initial commit' -a git-status: git status +# only necessary if setting up via cookiecutter +.cruft.json: + echo "creating a stub for .cruft.json. IMPORTANT: setup via cruft not cookiecutter recommended!" ; \ + touch $@ + clean: rm -rf $(DEST) rm -rf tmp + rm -fr docs/* include project.Makefile diff --git a/README.md b/README.md index 417f70a..c4897fe 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,33 @@ -# modelcards +# model-card-schema modelcards linkml rendering -This was seeded from https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/schema/v0.0.1/model_card.schema.json +## Website +[https://bbop.github.io/model-card-schema](https://bbop.github.io/model-card-schema) +## Repository Structure + +* [examples/](examples/) - example data +* [project/](project/) - project files (do not edit these) +* [src/](src/) - source files (edit these) + * [model_card_schema](src/model_card_schema) + * [schema](src/model_card_schema/schema) -- LinkML schema + (edit this) + * [datamodel](src/model_card_schema/datamodel) -- generated + Python datamodel +* [tests/](tests/) - Python tests + +## Developer Documentation + +
+Use the `make` command to generate project artefacts: + +* `make all`: make everything +* `make deploy`: deploys site +
+ +## Credits + +This project was made with +[linkml-project-cookiecutter](https://github.com/linkml/linkml-project-cookiecutter). diff --git a/about.yaml b/about.yaml index 675bb49..8e30d77 100644 --- a/about.yaml +++ b/about.yaml @@ -1,3 +1,7 @@ -name: modelcards +--- +name: model_card_schema +author: marcin p. joachimiak description: modelcards linkml rendering -source_schema_path: src/linkml/modelcards.yaml +source_schema_path: src/model_card_schema/schema/model_card_schema.yaml +google_sheet_id: 1wVoaiFg47aT9YWNeRfTZ8tYHN8s8PAuDx5i2HUcDpvQ +google_sheet_tabs: personinfo enums diff --git a/examples/README.md b/examples/README.md index f5e10c3..9cb166f 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,5 +1,5 @@ -# Examples of use of modelcards +# Examples of use of model_card_schema -This folder contains example data conforming to modelcards +This folder contains example data conforming to model_card_schema -The source for these is in [src/data](../src/data/examples) \ No newline at end of file +The source for these is in [src/data](../src/data/examples) diff --git a/examples/census-income-classifier.json b/examples/census-income-classifier.json deleted file mode 100644 index 84ae233..0000000 --- a/examples/census-income-classifier.json +++ /dev/null @@ -1,35 +0,0 @@ -{'model_details': {'name': 'Census Income Classifier'}, - 'model_details': {'overview': - 'This is a wide and deep Keras model which aims to classify whether or not ' - 'an individual has an income of over $50,000 based on various demographic ' - 'features. The model is trained on the UCI Census Income Dataset. This is ' - 'not a production model, and this dataset has traditionally only been used ' - 'for research purposes. In this Model Card, you can review quantitative ' - 'components of the model’s performance and data, as well as information ' - 'about the model’s intended uses, limitations, and ethical considerations.'}, - 'model_details': {'owners': [{"name": "Model Cards Team", "contact": "model-cards@google.com"}]}, - 'considerations': {'use_cases':[{"description":'This dataset that this model was trained on was originally created to ' - 'support the machine learning community in conducting empirical analysis ' - 'of ML algorithms. The Adult Data Set can be used in fairness-related ' - 'studies that compare inequalities across sex and race, based on ' - 'people’s annual incomes.'}]}, - 'considerations': {'limitations': [{'description': - 'This is a class-imbalanced dataset across a variety of sensitive classes.' - ' The ratio of male-to-female examples is about 2:1 and there are far more' - ' examples with the “white” attribute than every other race combined. ' - 'Furthermore, the ratio of $50,000 or less earners to $50,000 or more ' - 'earners is just over 3:1. Due to the imbalance across income levels, we ' - 'can see that our true negative rate seems quite high, while our true ' - 'positive rate seems quite low. This is true to an even greater degree ' - 'when we only look at the “female” sub-group, because there are even ' - 'fewer female examples in the $50,000+ earner group, causing our model to ' - 'overfit these examples. To avoid this, we can try various remediation ' - 'strategies in future iterations (e.g. undersampling, hyperparameter ' - 'tuning, etc), but we may not be able to fix all of the fairness issues.'}]}, - 'considerations': {'ethical_considerations': [ - {'name': 'We risk expressing the viewpoint that the attributes in this dataset ' - 'are the only ones that are predictive of someone’s income, even ' - 'though we know this is not the case.', - 'mitigation_strategy': 'As mentioned, some interventions may need to be ' - 'performed to address the class imbalances in the dataset.'}]} - } diff --git a/mkdocs.yml b/mkdocs.yml index eccdcf0..a336981 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,19 +1,25 @@ -site_name: "Model-Card-Schema" +--- +site_name: "model-card-schema" theme: name: material - analytics: - gtag: G-2SYBSJVZ23 -# palette: -# scheme: slate -# primary: cyan + # palette: + # scheme: slate + # primary: cyan features: - content.tabs.link plugins: - search - mermaid2 nav: -# - Home: home.md + # - Home: home.md - Index: index.md - About: about.md -site_url: https://linkml.github.io/model-card-schema/ -repo_url: https://github.com/linkml/model-card-schema/ +site_url: https://bbop.github.io/model-card-schema +repo_url: https://github.com/bbop/model-card-schema + +# Uncomment this block to enable use of Google Analytics. +# Replace the property value with your own ID. +# extra: +# analytics: +# provider: google +# property: G-XXXXXXXXXX diff --git a/project/excel/model_card_schema.xlsx b/project/excel/model_card_schema.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b170d1d5b1520d37caac5171baafb6fd434f2b26 GIT binary patch literal 12604 zcmeHtbx<5y^Cj-??k)j>yE`EScL);P-8J~&?(Q1gLm&hRPH=|=3j`0&4!nI|URYAK z|NOq%+ImwpGfWkI=FUBRZ};hL1zB(i3=j|y7!V!>Divtq7Y2U7Pc^_N3h-%UW2j(n zW9z{5+Sc}&tCi)8NPc)Q78J3&0lW4_;Vuyap;5)^cgP<2OwmT7??k*ixVxgPiEMBr zmf=k3)=H2VgOsDz$zqW~FtNiLNJsf>VVfwSK+tiwonWk>;RWJ2nqs% z`p@MW+SnW4ueTtkOTL>KAxO`7r`>7p14ZsLY!vF~=wygBEbb+&vAS0VllyzpgHwJh zy)3taJ`D*_?L7jcN?ZJp4H#;97Oga6Ht)b|lR!|BHyjzz#tLkwp^LcryNTL*UD~OO z1Jwh_rzC2Fq?4~cCTGM$VHe!N>@hIIOvdI#lE;g~Vkgozott#0Gi>1Oi6C|>Ae??K z0LZv{dAepMjaXr8xJad#Bgi1+HzS+3^bvn*@U!{&jqR#T=uHBZlz{u3(dI@$NBjJe zNhz92LU@{XdE?i5jDoh(Wvc0@+wjrT-u>@_5hi}-E7P4NFMr>d6zz0!6etjobZQU~ zbl}FgS~5AB8e19v^~!R;HG7&`4s%=>-ao2FT}{rc;Cngz8tTv;%$(=zQUdqniQl5C z11#N)Vgh|SB{@(A6A|}fU$mt0K`?Az4U0=|ZgIIC?>{rx3JQroa@C(@nxATIWLjEL zdrpBW%#2%9b?_dpKu)(_(+s4W%c~z9t$V>g97fg^V{l4)MGKFKd}^m|eo-~h%rXZ@ z(n#M+m%&tMRQZ*rjUGweS7O$4%t2*LfnHHbooqnjx#oA9~)Kn+U2}d>R{<^7Zfciid2GKFgcHgn5q0%afr#?Cg2gvzHYy zFz3i-g}1VP=*rbFI38|G0I~9_HSHe601#pBHqwk`^5AE@thhoav0euS7Z8^=v#ld#W-hC~A4>=~0&@T?MU z2wV9OJFXo)H9}jjfCrP>=XWaUPx^78>gF`5wLhQLJ;RG<*dpG?tPHehuQhEX?%H8% zBdaKG`i01_Z5spZ;T5^o>tJeYUUYjN0uvF>k+ZXy0?OwjKQ7>Q<@rpARTHaqMn*O= zBkajr7thqa&R$AdlTVktuO*v~m!J^O>SJu#K;^2JMtqJg2$K<%Y_326mJiF4m=knf z*ISOdg6`GW0n@h(2>DrNlgh7_qb@xcc#a~0x0dek&0);)3c5gI>`bL?AumZC6Eq2D znXQza;p3ER!u!LDbUs3Kw4r!-DB++a3M#Y`ZtoXT=(qF*bGPXeLI?3o6qhnFQD(K| zMUGTMTda6p5>@z4!KUMU?zfN^>FjU>G5CaFCit}yq=9Cw2SimAk*O6QQ0YYk3~)K{ z?CY`o8th5}^)=CY$6V#d>rk&X%Gu)t^!vUK#W)R5#UP=^>T&}AcQ`y6wUa1_OD1(M z*G?VcCR4Xtx@*gS@Xbw=chDDBONPjwl9Sjn8^}~eg4@s8pz~5SVA}&#&9h2_*#wG- zp2I;NHWLYab$5m1Ozdq_sPy*$y&Ie3{7`o8|DN0Dnb%0ckLDBpobg6ZaxasviEynY z32UvMt4fx+X|`uHhHCaheV>%8;%H~Mv)+HdF%`%>+`F8m2&_ugU?j(imi4O@rf9kj zA2^`vf!#9FqJ$k(o-pPNL(3Gwx87Ddl}VWXTGdR`#HY2fU6tb~z%X*br?*)*1kWnk zXfM0d5Z_Tx#U*o6^VwFOXb^$dgfEt`!6loJ{pw7|d4s%wSt&`h2~VU0+^QvGfrl$I zIi?wILNVH=`(pc}E8ZISEJU+cvYOTA%-Gn~X4k9gydQjtgr7o=a!L1df|5tNMT6Zu z^pZ^ydKK6(tSrkZ7$h3?o2CyLFjkE88MC1Ss$PK|DXQqRX!U~AN9TIVMTl?NZYF8# zt&hd7&leikTUXJ#;98L>a(^&OMmH%NSTe5ZQXw2s(K@Q`Fz2tslpnd(sOZZ=K$XXW zN0Ty)$1aq~J;qh)*rb>4QQ_(oXKg@B!f9Lo_Q_6OsR_-w0U7Lhb1Qd=yD^JN;n6Z9 z0xW}8hz8o)3!S|$n`!Bl?qtrFNiJRbM>n?plE`0qH}y_*L@T||7S}JW<9May(%n9y zf;x(WktYy9VPQYtP}q-+hC&A&itiUY0P{C0B=AkXgl|7WXr{#+t`Ok%5oZVplGh!l zM8gQHMt~&6wqO78BhK6 zg<()pSX0qE$AaMItA31-^M-3VSUeSv^-Fj;HvrB?_>0h2!TCu<(=$Xif*43$mXrpL zybXCczJ=Q#h}9o@B3JjqJ3)UBAd11x!ivDC>Int{g7a4Zaj~(ta4+&_}FLBt=jfE5!!W1+Mr7&Q;9%opkx!lD-Y>jmOkBB%0TeE-SAgFaD^F z2((atBm1+BT=E?g#h_B~vJVg*whLyXTH@)KszFNurIOL?M|3Z2@>S+S$?z@U^^BS* z^9UI{(Hf@cI@1EWNU@dd7#N)9$JC?6r^>KYg{t_$xe}-|HMMMo^JMwhnwzqQ2lx%r zT_>0W_3Y4w%27F4+$tSnBwpxe=StM+|;(!!ztvt zO|v^SH=#=-0_N~E*A5_{Urw8ZB8Mr*xDlWc4`FFw1~kP&*M}$7k&QSFr4_?$;KoZE zAl8tTfg5!oi3 zq~AZOX_KSQv3x&w@r?psutC|5@39c@YFdN-od;RMYVq$t9tt7;$iwsdX#Pcc-g=%H z;RaK5L^J_n7t+rvySV~%?wM4}K8wBq6&9Inrr5~ta@4yxHuzLfkA?7|a3nXWurP~V zX93ClEwvoLOEG!nvx1Xd0{8>92C?o;fD{cn|_>q zV$9_}EUiAHw#Nw5&}fApV3QT2wiN+bz>)g;2-<~c21|Y3_#{y5`Vud?=!o<>za(qB z;{E#Q&JVggK2#U70bB5d!sZHMTfK=>-jAp#`8Bmp8zMDkZAcaq%h~py67e)ah{xSval;Q!M}4Vxj4Mpx;u|gC z<1oda^V1V_e!joAgqEI%-T&Jl@2I{r0IyUoP&Je5m3oAXC?{t4_KMx*wef}1k(sj~ zv0x{J**UWpK@Ew48z1hV;Ovc!wtR?iAOfw%GXf_ zRh%}PBcf8NXy8|+#X(~a)mV$%`>`oBe+p_B$@J+{kimP~5Io;^#3o)0Z>e^$6?-)U zln|!zDMB&%GeRMQOjS z5zHjZPvAtWjFllZ2>syaWKO`&=;b;X%N_x%D^MTC9xO2|KWAp{p-(R`J_`vJ(@j&{ z=toyCrj@4g_UeW!ebh1T z<#`uxwLBH`OUYKE-_}{GOv2{JXq$TSj3biPz zb~!)8`e&htiRWjAI)=27{aNAU&vJp)#5V1cWRB#M*NCL~V8e|ej-=Z-Nz1vH;JGk~$|D}#8D9uGf?_2FUu|>H7g$8|0+!}Jvwr_rP}#+RLlyB@e0=${*XB639hjt0mWRL zfX|(WuWro_M%JxVd?8bjbzY@~L&qp9l(pxupN-faIC>D-l}KTxd=fYuvy4e#31P%7 z*3ljh;+tl7$rVvcq1Y#8)gT%@wlFPX(0rC(JmDt3HiicWkEO&FQC!F2a3rm{f z>bYL5sdFOfp>m=X9Eq9LodJ7tpE?XQhiNAOhhnN+fy-0^3{hj-340}hI z*4Hnmr2?&)wU&HfVBh~_C)>-Yle%J3xdr*1x?sn!uqGgN*nf_39QV|DDbLF<2mucg z4Y5$7%qSdXj6N-7z6`y>;Cf%09S8ZhSogLU7gz4Fi*IG5vkW|jxf@Kr$BSl9&yd=m zebOKYn-?qxM$Uv$e!0&)W>#5`qI6-_u&4>G2rfU>t7|7ea|BLr@NLoQ6{LNs7^ega(H?oO>W z8$`Pzwgc@c8(9WgMck?-6q@0K{Uq0+Oc;Lp(NyN)SHy|MgkoR(S*Lte036mfS`K2BfNUH7`P$^XXZx+<;D0j9Mk&6)SgAUgF3=J> zu*g0uj!>0({3$Jw3-_sQC2cM@;>_8U`ePz9LM@Qtj&}GO1x5##GAHf&l@|oBp@n(a zV>uaU*?F8H3h{)Nw!;t4WjqW6=#FzZihu`|7hhjqW5LzNlovACD~D=FL4Bt1YfkoH z8!KWPNT)Mcv@)?9-7cwEI4OBCyc1`0#y(0nfD_(}FTB?1O=y#RzmiI^-8cl2YC25> zfgUsXCR!ZL#X?-^#AqO26!HmjfKN;#8|s^_C998CIo8Um!d4uS*fWA3mL|SRueHBc z`WEOV(Qlbjr5G(SAdWvCtDBr}ZH$%#0RYI&M@1pg7=$#xiHS>fuZMnl2R%riqVFU3 z?j~3yJTagvqp9xNL==F?;-CP3>gvddWxDw$iP^c^kTC}L2BqN$)^{9odpg8ZZk!|P zuJju6cOs~Xt^vA0BHI5<1lPl{`(ymF8&GWoB=%4q(p-6@@6+|ThS_Y+e6pL$Sq_Bq zjkU4R?h_ZCjLb*ag(`;wx9qYj6tTgq*|oscL@xa95S;|PD5{<<6&rDFxlE8ZgmyU#2p|{p5TQ!?^QjERUuMqOd{+&Rk_e?jm9ZX zrY2lCw!ij%=@DGLH=_Sm%+#ZH^%#s8o=cB(yg&5Lv1R6Qy8nM6ySN{s*uS#te^hqe z9Y5oC2A&NlBI{wN)Dj|Up7S0sJO-!i@)=UMU@cJL*?b+!!XsQ0`ThCJC}~G ztr91gOi-<^`X*+{++$kyM5Q8#u~cv+>RO4DO^M)tz`jhFemAftQtd(j&Yk!DEMu z3ued;o>>!-X@SK;TY!zfwS|M>bxLjPiGVXIveSP8zw-@e2PwS<>N{JGacd3BUPR~I zvgYz_xKSSURf*&vR^!WBT??KxNf_C6!#6dFSOIae8s6%i-E*(auUOO2S(}$EH#}ML z!TP7g+8o9Szu$%&;s1V-{Zj$`iL8fW#fyI>(EpqS`qR!olqdexK>uwG^d~wVY5`8a z-&+5Qp#Qf-(4V+_C@1`@g8qL~L4TtApHMv(bDv; zjpF9goMN*fZC&wFHEkt@n}^jTpJlkzg}OfrIlXnGIDdb7yQ_I$De<%wT&?_0pQn<4 z9Iq_-xN_0N%Y@s)os2ex@l7q6lH8VK?RdZ(-83~Xt7)UWiCL_bYQ@;}C?5c{Gm$p4 z?Rm32J(akXxc2Ax=pr1wz`kKAL-frrwz*2hcbM3pC6n?ao8w1&gG{jo10{c;!_zX+ zVVNOVsuDUxYPFxrQ@q{su&mRQ&rqvr{LZH5DQAPTx;i-7%dxOjk1v{*uu(xCgn1>( zoW8yF3V$<#tPIuChAmuXxNhvA*+qN6gr|ylPsh(Ntp{*79>`x5IZ~*`p2{+`rQkR3 z$a2xSxz|%>mj%5XjdVNG#dT}sMjzQF*kA*pZ4OQ8@|9^UP{KIFy9hO&lY2*4iuz=W zP;A2Xrh_+Yxn>UeLIT0@L443ufHD#%DnAuGtMBm=N1@Xe2ue(@?&h>N+0Hjv7TH>4;V}NOtokTd{gLVUP@1lVb94KVCFrE zDXQ#UW+r15GF!GYfx~=(WiNA&_N*#<1;{%KTK!DBTy;8jSs}(8w&>B*85D+Z$CQ1H z-PTi$at_zhCvY*lEe>_YE^rv9py!p{spK-EnzMGktg?4Q3nOrosToz}->-|<4+=jY zpOQr9N{ZVuoW$hIg*(Sr31lvIa_jmM6E5`LheCF(Zi#7=|Z9CL1t@0+d&Pbcs=yhVI=ByJo3$29}9P)Xh ztt($?D(nWir@%qmx(((1#gU`YDCWq+;=kLe1%^7fuMJn1PnBfXgVvZ>)KK z{w{6e#-)g5en(Aw8lx82exb1vJj;u>Kq7gi5p$ac-VY&z;R>P}1MJ(YT=5nhX6F}N zH&2BfhsAgI(3^%kVR)aJb&LYG$rG)oI=+Q5z(ZRq;LlfWT})D5AX(RFwc2)PsBrc% zZdsVGs+Q>l+s`{_6S^r#Er%awNYiDLB}JGq_nNHw|FrDu<55(|(#=U5{b{KmbY)X) zyO`}sn63ztMyX#5<19H;5P%DF%q>q6N!}y)(}<~JSI9S+8s!+~u((lqEr*HPmjNwW z9KsFEifTS7bZ^k~3a`Pm{1yR(8uooZlds;$IvXfAfJDze9(08PlwL$eMg*aGhN=saP-sI<``JRl1uO&68BH}BJzgxJ9)JDf0H4yX+ zeF}do9DtVmqv{ZSKeKF+a#v3@cr$!ldi*TU#tA#$ zO-PgOHx-ea+E?qi_5L>Dic~U?A>ZWKut_wT$3%Qh`^98Ib0b2ZgXUtQS3rbJ$<<+z z%rTEi_`;xP_KEp#GtQ&60QeSYau)g~0BCanz9pKRrM_bT+9iN*<$TOP_}r9MF5B*# zZxj?S(#ZJ9?Issdhu4l_zTZvgzR#n%iQ}*w5*6SMeg$3}_k(v@qBho!#@3E{%5JvC z4m$V8YAA7D9ymh@oJp*03}h7lDC&!Us@i-2xwFqOKdQt7xw@C36DSry*45KI`-YeG z?yf#gj>mfz;=QF6pj&z=A7el8{X5XI>H|;$adYAdnG^g?vSRz3ZzMqhT~hH&l(r>V zngCB8Z(mKu7Xw7ob%426X`(Lu%tae?tt#nC5#|=<&^3dvrA*Imkc0i{S_v#2-xE=8 zq;Q#zz3p(C!4#+>kS^*fr|ZX$?5>MW7~pXk_&)%CurLn*PtM{z zMtM9t@(U#f_DPh7Qq5zOe^%G-CxQNc`1;iXeH{2>9pn(#+~oa*(t`9P%7cV@jPkhO_zT4eIP?6(S{~B>$0(2cSievV(Vj$k=xRMidEA8g zh4LMEeLS(2hnCD^lt256FXodd4^4!}D36QYzt#eS{Ui#@Lkavb%s(CGUQqr0@b#+) z`p*+TiRGa<`xxe*9`id46EHMA1@ol){?lcChv~q78s0U&Ojd2>;8C)O%%COV{E@gCzjF-xq4#C!1<&3vsf z_GAu((u>HJ3@dNZnSwQAR;l7K0C)u9waSJ?_9U-B1?FA=f%Uk7$U#{-lj1S5H%JAk z-;}P=qouQ*(aB0ZmA`FOIs)n23Mk>wZk+8F-i~qY(VZldPwWd=8L9quyMr}(nOor7 z?1KUTu>O9#<_^xl+xsnuYgKMzMGZCv_I`Amp+Hxg=o?a&5I4gP)lc-)ml~A}Q){fF zXVOOqAnrQ5xt!KcL>f5@RT)Nz95d64D*K+mY1*$WDF#jBB3`7C8YUcqK%QB687YG} z)AXHMy#HK?m&T6EDkV@#H*!0-`l(uQ%v3+L4M4zkN+aN1$xjYicr z*2I@74NYorOE%+6SRNqVTJCEj4E6iMq#9&UW5NRf z8T0@E4tQZaZCPAFKs(@HpKP~Fv!kc)GQ*4eVy}G2)AG~~rIXvgwi?I9%6+yvHE>6n zJP1oS%GS#wF3`6{h8wdl8Eq$C=|j38EaT?S0V$dF4PLLKU1qb5;LyZFPm^hu*@?zF zmW3r9b{Z@()(1u9`=5{t6pd>1tN?AiK0P?tZF2z;hzg##eG>*t`a~?$6I<1@^V)${ zwmF0{7A8JMj3Ch=O*K6SV~Xmpcex}j?0+^Vc_5Dge4rB2Run0 zQ3`;rqx-~{5twA7M;C61MAM{=^I``3y1RT~Sl68$uoG4z50W{hoik(M&;dN{!-}fj z(^M>BB!@ljv(z3{|w#m_C?r z>9VnwU6e4XBtGES#E5k8lUm<2gx+2N$C;nRQrvs+^fa!3mVI#V9QnJlpe4C>a)sgG z;96FsGj-$qsjkndii|z=J{N4=Q}ROjtS4CPY0zLf}}Xu{fQ{>V!^Ly=&;}Ny-#?}7 z*#mAO=Nf$fTBo;xCVJSN!=B0`)mWELO1Kh)O}e-H!b^Nm1Wc>*SZnV_w=g%MesO>Eo1Z#nK1(SH4M5Ukxh0^guJvTNFM{Wt+U^S za00!bFW9tKeTH zMpJ(o(Yw#kja1t;cIpuAird?rYQqtQxN*>WRdgVeCF+ z&hhhRrNlKLkE+Kyw4HBucoMDfO~W?$r0CeKPYn$E)KXkLFT*RI9eBE?aQ{fe+@^;?&dvPM0&do2budqX4N+h;&F z%fiD&CR8Lw{m>`aD@uktq1<-~0M>HHF^_gJxBfyHAi5d{Qq@_2aj zNd03@;}~4C(!$Ep&KWjTFF)NQ)SRchiy=~JL>%K0C45oH4r1e?Uqxoe&_JhXoFs8@ zMr^6I+<9xt$bxg%duSD(+oP9vB3d94h$p-9dpmGeMTP+Y2>(hT9uCenE+8P#)rIBm z>n@7~#m`#bC0N=ssBf+nFtkV|A(e)x@_n^^D|GT^TM|zn_nn?5BxJz{89a$U=^1gL z&2)Qi3}bSfmvr!`7%TnJx^TG|imy2_tE+}y5nTLthFxNW+zraoGdq$+7p8pECnH_j z%nG&<@KLlWajfqNAY!%5`Q9gc_a?}h{fMy=p*gh3Eg9>ZA3c0)?R_LF-zaw6DmHs8P*WAE{o|=pBQi71kdGBpR>uBj z(aGR7;P)J_x%D7Q0Zfr1^dBi=zfJUR>a({R=qibUyuwx1fU_oP12X_2-wJ0x^!# z7nbBrCfnf!+HQ)BIgZKmO|H{|N(L>sDH$^FN~%lbod!?v3bwY6o;+E3Nu^~$7Sb+L zC8ga#5xpk9vl7p}##iozji>yio2D`#6zKMb<)+x-r2BinJ_A1 zYa0f3!HQw@iNv#)HQ_IkO)3V#>yJV_UoD7h5$E>KpK0HQ06>{UpCzyFXq2abxMeUm zNYIDHrr2b)aV3=@$sy40qnK4}kgtYA_>fQi&Hi}+9wAO@K>T2sX2vV&HK2FCFUci> zm%vxkpl^mcbKh2!Y4FCjOgvv+;V5R64Puky7E@7g%Z~4{DiUMcCPK)D%e3GlEnUx)5T&|h(c2QE$=(L@q zXkIFt>2|Phjl|PxiK$>704{=fi}acXc8u3EZAcbU(#K@-!7RYS{?QFMZ&`>+P*YiD zMeS;lAIA{wlp~=Z(++T|crGeVQQy^LGtW&Grm!+HTPIR94=CW0T4-5cO;6&F=0V{9>2 zHH=Q~gZ<2=)xlwCD7I*QQ+Pi=J-N$|;XOK$xAcq6d{G0pCC!;!lr)2t%7M}EN5$is zY)_l4Nj?(@gtgg*F615+^^QtyBcUaeU{Pda8050W(PTF5z200es5~tG*tHmSr0|>= zv7Y8g2h7H1Ip^Do;Dvo0w8wM(t_RaAOsu%6MU)3lQ&f-hu*wr9cUGu{s$SJ6r`LPF zM()SPz48~1&VH0!W){uh5t+Val5+BY!=)7|3l$J;lV&;G@A%dF3TH^8B&RFY=@9|K%bb5hQa*IQVB4{$U01~`=40EhqY z00&Tp3~=I+qz**Ej#%`=U+|p>68;$AB#k;{F1m(A`exq&6gc-j6fzTdP`%AjdoE!^ zlC`w7dBJ!f7RSIIBe9Yc%wZMQ_(H9DoS6omh)&V6u4GDOr6{n1eDP_7B&e%ml?Q>G_^eqhUjzG< z$AvVcXKhO=#rcERKmN}efctj+lM?!G6O5m6K`%_Ke|wCoJ`y(_F9jv0W5)XlLvVs| z5=3^08NC9GFbj3KZx6a}uL+It*8(zpya>#4^uF!teb=p7QW9)M518YWU8s0dJyJ={ zdV;x@DV(mzT+PG%hMnA2Me|#|sU?h{8a~eg@kKLSh)<64_`<%e4ig5v;kV2uttk68 z^ia85Fh#Xw;?;!g0fnkOMUzK%?Mnwwb7Fkg7`dt>4d}n-FptrU!=f`NBT{$KE4DUB z#>)%4tDdBDN?j-YI6EI|Nvz|$l4()6|wQ=Z?;7XSY|}mrme6$Djqq}Ghe*F+@{qgDT31) z8irN|886yF*N-jk(Zh58`0&1=DKFCOjckM)u?1}}-Ph-1cy$e)m~wD6GsH%wH_$RF zbp&B5;aYK6r$|y@UC>DpjT$u5L0g(CZWJPCzzd{IAi@&Z*YJC=`cE|6 z9rync(f>b-=s!_=S0?yJMgPyM=syu~S0?yJM*pvs(SPFYuCVZrj{cw3(IapN(zhi5 z8Dsze?Jtes;_77!bh*_9^V+lFv#gj`c&iw15>nFYX}sQ0s)G7H?@Abd)m4W5Q2)M( z=IX+lX1z9jRsBLceJPcXpTjbrZQz{;eNQ${N2gT)`ne;oz5C~mk`jl7&;n4}lr0M#j5TE*LGmkv)32}VJ+BtOb( zVsB7>OebY0W$-02wusO;uzNt(9A|ypF<0Zw4IaT4nOFJI4T(dY!65v;K$$%plt(NK z_*SU4+N3Vg`X5h}X@WMM+g2MZXX;eeZF3rXD>@J^FZYdga?dT)5KE*dt(8&-MZX?w<-NA>dK}#}ABE}d$Rn?JytYs-C2E{lkVjWCgG?b~>S1H;P3?VEz;*_&Vv zqn|~nHg(uOfCGCP%L_z;2TV|*3*z#s(Lj&os=<^97P$l?FN1sHNwk3=+16uxxS2Nr z_KrsTw7o~~VKMzhrL!bLji!(gd%-n|-lH>0pCh5ZfyIXHi%F*=;@=N(bu!<>KY=$L zK6nG7fWM8MfwnFz%(tJJ@e20PY^b8;*g#{&x9!kuB~uj=p(yoX>v^f|apvvEr%_X% zC_q>WH(6Os@=Z629qIpyjya4Co~<#5IholIdeemkP= zW@@vas8e*glsiU_`~JbD8t8$HdjfS<)|N&sFQGT>-VWHdjWz}&3bb8+M5Xy^^D(0NNHYeCq^q!bdJL&Z7V z?+-dy4`0>`t{Ozb0RR|(dD(5l$IQXO=GM=m5@+q_C@_PKJ652qpR34eJJ}O)MU8Q) zsejGtSoN$XDe>>G^|}a{x2qh=H8O?29_09fF)1VQGn4J-N>Tib{ae$IE^W1pr5j>S zKYLJLU+G!OI;|HSYp0b-K-Ec;;DU6R-&t#5%kB<=W>-z7C4Z79lOlTBJO>o51*(&9 zH8uzXPbH-u3`W9WUE}6b9)>$s-*5+79Yo`MJRH8Vo;qXl$3x~~xb&+v#d~b)5N(XM z95Ni;M<6EM8$3Sx`Ejg7T%fUdn#kEeG**|#V9vK-I|hvH*b-uoNblVQZ-kcVJ;RI5 z)>M{$G)diKkHZ^Kvs*erASg6yG9!SW&07bm;-<=J6 z@O>{7LnvIfrF(;5{g@k?k;4xN?a9j2J(w{QTG5NCjkJ95#-HkhKhKDMi~jYno8BiF z-Zat*;(iEl5-K zoVV9eW2-DOpRrqQq9#{aW?pc(x)lzlR%OjS$+EXbA+-jzJda01xn9P+9!GA|oU%6j zsqBidsiG7vbJf3px;HK&WWWR2=W|GSxp)Jn+X)E(Ao`2;zqa__$-mp~{S$p<0j!vQ z%Q{vU0CcGih4v)kI{IeOmuTUhqL8i|TUX#T zuBT&1OsOP6MI6T{S@a`|xj z;X?5ht1&6`*oW2q9-8MW`hhwmA4BDG;grIKaw}G2QLrPaSWvYdC)**-a|_N%i#MRD z)Wr?ix2@U<>+Q+L;IG0GS)!kTN~}Ebi++f79qjMmkinpBW7yoF{O&Dt4fG$C!QL_q z&PliPHTn_`_O3vCS7S{tN1%)0t;h5y&)R>!9X%@8V#>|2HAjHrnYHI(K81eredG<_ zBW~1%7xoWi(+LsStQxGwrmk;TDlLGQwWoePy`YGMYPv%VaTB$daVdNl$<#?G(%3h_ z4g2pwYb5QCtb}2opFk`4SaXeRo*^+b3?&MddlDyAC2;z6a(d0t)EXsdJ}cLv3|lp` z>LX{qVhM?S+(=TA)I~<0A2ww(9Q49%3cs0|5>`u`J;C27f0?s#1lp<;s;Z6X`9njk zx6txBjHs_HHekB3Z2;{2v!SQax;Vz{w$0}qfXpvqGRm27>v4_vOWrMZ`ZHV2mXwJ3 z(In26Ju?K^m^0C@RI{uHcrKU4M^9j->I`1=FaB&A6(O)7MCsOIq?oMqn`?(=4~JXh z#*b~(72P$5>OmNemE_Pr0tMTU^}F`pxHUBkOkSR#6dQ6-C(T2J?$Qce!Kx}iLF2;w zc~A|^!QIObOv-;9TZ6QQoE!Vg769;rD*wCnzoy6_%^|0&ewlZJfBv3XD@Xvy(%`=V z{E-mv0PgLzL!v-7fPbNsfV~-f8;~e>=R8Oh$S&qD6ee)Oy9ed&umXt!*@gRsQiXai z%AItEM1k!1{6dLBzZd1M{{x8v*|+$Gf(D*xyyuDTx)_iskY)5=DDB`;!+TKfit3Ok ze`Z<{95?Pkxhn}nqWqcZJ+MpMgK}53ghcr})3+y@f4%(t9r5o)VY@56LBjl<>fd30 z5Zn)QS2}`(`8(IY!;FA0?|CM+d$;f3$^IQigZO@!d-w0(+5Q~{h4g-ydp9uTS>@kL z43$WB2lMOX0=XWLO7oW~7Ugfc6Veb;x&1P{02}`2LjFs~K^jBm|6j%j)OW^zPy>)S gkO}b@&O_RJ)1#^a9C$tzEUdwQ!(h!>M0b1jAK+bE@Bjb+ diff --git a/project/graphql/model_card_schema.graphql b/project/graphql/model_card_schema.graphql new file mode 100644 index 0000000..8680e33 --- /dev/null +++ b/project/graphql/model_card_schema.graphql @@ -0,0 +1,67 @@ +type Address + { + street: String + city: String + postalCode: String + } + +type FamilialRelationship + { + startedAtTime: Date + endedAtTime: Date + relatedTo: String + type: FamilialRelationshipType! + relatedTo: Person! + } + +interface HasAliases + { + aliases: [String] + } + +type NamedThing + { + id: String! + name: String + description: String + image: String + } + +type Organization implements HasAliases + { + id: String! + name: String + description: String + image: String + missionStatement: String + foundingDate: String + aliases: [String] + } + +type Person implements HasAliases + { + id: String! + name: String + description: String + image: String + primaryEmail: String + birthDate: String + ageInYears: Integer + currentAddress: Address + hasFamilialRelationships: [FamilialRelationship] + aliases: [String] + } + +type Registry + { + persons: [Person] + organizations: [Organization] + } + +type Relationship + { + startedAtTime: Date + endedAtTime: Date + relatedTo: String + type: String + } diff --git a/project/graphql/modelcards.graphql b/project/graphql/modelcards.graphql deleted file mode 100644 index fae2fc7..0000000 --- a/project/graphql/modelcards.graphql +++ /dev/null @@ -1,55 +0,0 @@ -type Dataset - { - name: String - link: String - sensitive: Boolean - graphics: Graphics - biasInput: String - } - -type Graphic - { - name: String - image: String - } - -type Graphics - { - description: String - collection: [String] - } - -type ModelCard - { - schemaVersion: String - modelDetails: String! - modelParameters: String - quantitativeAnalysis: String - considerations: String - modelCategory: String - biasModel: String - biasOutput: String - } - -type Owner - { - name: String - contact: String - } - -type PerformanceMetric - { - type: String! - value: String - confidenceInterval: String - threshold: Float - slice: String - valueError: String - } - -type Risk - { - name: String - mitigationStrategy: String - } - diff --git a/project/jsonld/model_card_schema.context.jsonld b/project/jsonld/model_card_schema.context.jsonld new file mode 100644 index 0000000..26dfcef --- /dev/null +++ b/project/jsonld/model_card_schema.context.jsonld @@ -0,0 +1,76 @@ +{ + "_comments": "Auto generated from model_card_schema.yaml by jsonldcontextgen.py version: 0.1.1\n Generation date: 2022-09-06T10:01:44\n Schema: my_datamodel\n metamodel version: 1.7.0\n model version: None\n \n id: https://w3id.org/my_org/my_datamodel\n description: Enter a detailed description of your project here\n license: https://creativecommons.org/publicdomain/zero/1.0/\n ", + "@context": { + "PATO": { + "@id": "http://purl.obolibrary.org/obo/PATO_", + "@prefix": true + }, + "biolink": "https://w3id.org/biolink/", + "famrel": "http://example.org/famrel/", + "linkml": "https://w3id.org/linkml/", + "my_datamodel": { + "@id": "https://w3id.org/my_org/my_datamodel", + "@prefix": true + }, + "prov": "http://www.w3.org/ns/prov#", + "schema": "http://schema.org/", + "@vocab": "https://w3id.org/my_org/my_datamodel", + "age_in_years": { + "@type": "xsd:integer" + }, + "birth_date": { + "@id": "schema:birthDate" + }, + "current_address": { + "@type": "@id" + }, + "description": { + "@id": "schema:description" + }, + "employed_at": { + "@type": "@id" + }, + "ended_at_time": { + "@type": "xsd:date", + "@id": "prov:endedAtTime" + }, + "has_familial_relationships": { + "@type": "@id" + }, + "id": "@id", + "image": { + "@id": "schema:image" + }, + "is_current": { + "@type": "xsd:boolean" + }, + "name": { + "@id": "schema:name" + }, + "primary_email": { + "@id": "schema:email" + }, + "organizations": { + "@type": "@id" + }, + "persons": { + "@type": "@id" + }, + "related_to": { + "@type": "@id" + }, + "started_at_time": { + "@type": "xsd:date", + "@id": "prov:startedAtTime" + }, + "Address": { + "@id": "schema:PostalAddress" + }, + "Organization": { + "@id": "schema:Organization" + }, + "Person": { + "@id": "schema:Person" + } + } +} diff --git a/project/jsonld/model_card_schema.jsonld b/project/jsonld/model_card_schema.jsonld new file mode 100644 index 0000000..f4abb4d --- /dev/null +++ b/project/jsonld/model_card_schema.jsonld @@ -0,0 +1,824 @@ +{ + "name": "my_datamodel", + "description": "Enter a detailed description of your project here", + "title": "My Datamodel", + "see_also": [ + "https://example.org/" + ], + "id": "https://w3id.org/my_org/my_datamodel", + "imports": [ + "linkml:types" + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "prefixes": [ + { + "prefix_prefix": "my_datamodel", + "prefix_reference": "https://w3id.org/my_org/my_datamodel" + }, + { + "prefix_prefix": "linkml", + "prefix_reference": "https://w3id.org/linkml/" + }, + { + "prefix_prefix": "biolink", + "prefix_reference": "https://w3id.org/biolink/" + }, + { + "prefix_prefix": "schema", + "prefix_reference": "http://schema.org/" + }, + { + "prefix_prefix": "PATO", + "prefix_reference": "http://purl.obolibrary.org/obo/PATO_" + }, + { + "prefix_prefix": "famrel", + "prefix_reference": "http://example.org/famrel/" + } + ], + "default_curi_maps": [ + "semweb_context" + ], + "default_prefix": "my_datamodel", + "default_range": "string", + "types": [ + { + "name": "string", + "definition_uri": "https://w3id.org/linkml/String", + "description": "A character string", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "str", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "@type": "TypeDefinition" + }, + { + "name": "integer", + "definition_uri": "https://w3id.org/linkml/Integer", + "description": "An integer", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "int", + "uri": "http://www.w3.org/2001/XMLSchema#integer", + "@type": "TypeDefinition" + }, + { + "name": "boolean", + "definition_uri": "https://w3id.org/linkml/Boolean", + "description": "A binary (true or false) value", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "Bool", + "uri": "http://www.w3.org/2001/XMLSchema#boolean", + "repr": "bool", + "@type": "TypeDefinition" + }, + { + "name": "float", + "definition_uri": "https://w3id.org/linkml/Float", + "description": "A real number that conforms to the xsd:float specification", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "float", + "uri": "http://www.w3.org/2001/XMLSchema#float", + "@type": "TypeDefinition" + }, + { + "name": "double", + "definition_uri": "https://w3id.org/linkml/Double", + "description": "A real number that conforms to the xsd:double specification", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "float", + "uri": "http://www.w3.org/2001/XMLSchema#double", + "@type": "TypeDefinition" + }, + { + "name": "decimal", + "definition_uri": "https://w3id.org/linkml/Decimal", + "description": "A real number with arbitrary precision that conforms to the xsd:decimal specification", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "Decimal", + "uri": "http://www.w3.org/2001/XMLSchema#decimal", + "@type": "TypeDefinition" + }, + { + "name": "time", + "definition_uri": "https://w3id.org/linkml/Time", + "description": "A time object represents a (local) time of day, independent of any particular day", + "notes": [ + "URI is dateTime because OWL reasoners do not work with straight date or time" + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "XSDTime", + "uri": "http://www.w3.org/2001/XMLSchema#dateTime", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "date", + "definition_uri": "https://w3id.org/linkml/Date", + "description": "a date (year, month and day) in an idealized calendar", + "notes": [ + "URI is dateTime because OWL reasoners don't work with straight date or time" + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "XSDDate", + "uri": "http://www.w3.org/2001/XMLSchema#date", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "datetime", + "definition_uri": "https://w3id.org/linkml/Datetime", + "description": "The combination of a date and time", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "XSDDateTime", + "uri": "http://www.w3.org/2001/XMLSchema#dateTime", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "date_or_datetime", + "definition_uri": "https://w3id.org/linkml/DateOrDatetime", + "description": "Either a date or a datetime", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "str", + "uri": "https://w3id.org/linkml/DateOrDatetime", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "uriorcurie", + "definition_uri": "https://w3id.org/linkml/Uriorcurie", + "description": "a URI or a CURIE", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "URIorCURIE", + "uri": "http://www.w3.org/2001/XMLSchema#anyURI", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "uri", + "definition_uri": "https://w3id.org/linkml/Uri", + "description": "a complete URI", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "URI", + "uri": "http://www.w3.org/2001/XMLSchema#anyURI", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "ncname", + "definition_uri": "https://w3id.org/linkml/Ncname", + "description": "Prefix part of CURIE", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "NCName", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "objectidentifier", + "definition_uri": "https://w3id.org/linkml/Objectidentifier", + "description": "A URI or CURIE that represents an object in the model.", + "comments": [ + "Used for inheritence and type checking" + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "ElementIdentifier", + "uri": "http://www.w3.org/ns/shex#iri", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "nodeidentifier", + "definition_uri": "https://w3id.org/linkml/Nodeidentifier", + "description": "A URI, CURIE or BNODE that represents a node in a model.", + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "NodeIdentifier", + "uri": "http://www.w3.org/ns/shex#nonLiteral", + "repr": "str", + "@type": "TypeDefinition" + } + ], + "enums": [ + { + "name": "PersonStatus", + "definition_uri": "https://w3id.org/my_org/my_datamodelPersonStatus", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "permissible_values": [ + { + "text": "ALIVE", + "description": "the person is living", + "meaning": "PATO:0001421" + }, + { + "text": "DEAD", + "description": "the person is deceased", + "meaning": "PATO:0001422" + }, + { + "text": "UNKNOWN", + "description": "the vital status is not known", + "todos": [ + "map this to an ontology" + ] + } + ] + }, + { + "name": "FamilialRelationshipType", + "definition_uri": "https://w3id.org/my_org/my_datamodelFamilialRelationshipType", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "permissible_values": [ + { + "text": "SIBLING_OF", + "meaning": "famrel:01" + }, + { + "text": "PARENT_OF", + "meaning": "famrel:02" + }, + { + "text": "CHILD_OF", + "meaning": "famrel:01" + } + ] + } + ], + "slots": [ + { + "name": "id", + "definition_uri": "https://w3id.org/my_org/my_datamodelid", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://schema.org/identifier" + ], + "slot_uri": "http://schema.org/identifier", + "identifier": true, + "owner": "NamedThing", + "domain_of": [ + "NamedThing" + ], + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "name", + "definition_uri": "https://w3id.org/my_org/my_datamodelname", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://schema.org/name" + ], + "slot_uri": "http://schema.org/name", + "owner": "NamedThing", + "domain_of": [ + "NamedThing" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "description", + "definition_uri": "https://w3id.org/my_org/my_datamodeldescription", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://schema.org/description" + ], + "slot_uri": "http://schema.org/description", + "owner": "NamedThing", + "domain_of": [ + "NamedThing" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "image", + "definition_uri": "https://w3id.org/my_org/my_datamodelimage", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://schema.org/image" + ], + "slot_uri": "http://schema.org/image", + "owner": "NamedThing", + "domain_of": [ + "NamedThing" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "primary_email", + "definition_uri": "https://w3id.org/my_org/my_datamodelprimary_email", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://schema.org/email" + ], + "slot_uri": "http://schema.org/email", + "owner": "Person", + "domain_of": [ + "Person" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "birth_date", + "definition_uri": "https://w3id.org/my_org/my_datamodelbirth_date", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://schema.org/birthDate" + ], + "slot_uri": "http://schema.org/birthDate", + "owner": "Person", + "domain_of": [ + "Person" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "employed_at", + "definition_uri": "https://w3id.org/my_org/my_datamodelemployed_at", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelemployed_at", + "range": "Organization", + "@type": "SlotDefinition" + }, + { + "name": "is_current", + "definition_uri": "https://w3id.org/my_org/my_datamodelis_current", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelis_current", + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "has_familial_relationships", + "definition_uri": "https://w3id.org/my_org/my_datamodelhas_familial_relationships", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelhas_familial_relationships", + "multivalued": true, + "owner": "Person", + "domain_of": [ + "Person" + ], + "range": "FamilialRelationship", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "current_address", + "definition_uri": "https://w3id.org/my_org/my_datamodelcurrent_address", + "description": "The address at which a person currently lives", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelcurrent_address", + "owner": "Person", + "domain_of": [ + "Person" + ], + "range": "Address", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "age_in_years", + "definition_uri": "https://w3id.org/my_org/my_datamodelage_in_years", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelage_in_years", + "owner": "Person", + "domain_of": [ + "Person" + ], + "range": "integer", + "minimum_value": 0, + "maximum_value": 999, + "@type": "SlotDefinition" + }, + { + "name": "related_to", + "definition_uri": "https://w3id.org/my_org/my_datamodelrelated_to", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelrelated_to", + "owner": "Relationship", + "domain_of": [ + "Relationship" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "type", + "definition_uri": "https://w3id.org/my_org/my_datamodeltype", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodeltype", + "owner": "Relationship", + "domain_of": [ + "Relationship" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "street", + "definition_uri": "https://w3id.org/my_org/my_datamodelstreet", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelstreet", + "owner": "Address", + "domain_of": [ + "Address" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "city", + "definition_uri": "https://w3id.org/my_org/my_datamodelcity", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelcity", + "owner": "Address", + "domain_of": [ + "Address" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "mission_statement", + "definition_uri": "https://w3id.org/my_org/my_datamodelmission_statement", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelmission_statement", + "owner": "Organization", + "domain_of": [ + "Organization" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "founding_date", + "definition_uri": "https://w3id.org/my_org/my_datamodelfounding_date", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelfounding_date", + "owner": "Organization", + "domain_of": [ + "Organization" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "postal_code", + "definition_uri": "https://w3id.org/my_org/my_datamodelpostal_code", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelpostal_code", + "owner": "Address", + "domain_of": [ + "Address" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "started_at_time", + "definition_uri": "https://w3id.org/my_org/my_datamodelstarted_at_time", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://www.w3.org/ns/prov#startedAtTime" + ], + "slot_uri": "http://www.w3.org/ns/prov#startedAtTime", + "owner": "Relationship", + "domain_of": [ + "Relationship" + ], + "range": "date", + "@type": "SlotDefinition" + }, + { + "name": "ended_at_time", + "definition_uri": "https://w3id.org/my_org/my_datamodelended_at_time", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://www.w3.org/ns/prov#endedAtTime" + ], + "slot_uri": "http://www.w3.org/ns/prov#endedAtTime", + "owner": "Relationship", + "domain_of": [ + "Relationship" + ], + "range": "date", + "@type": "SlotDefinition" + }, + { + "name": "registry__persons", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelpersons", + "multivalued": true, + "alias": "persons", + "owner": "Registry", + "domain_of": [ + "Registry" + ], + "range": "Person", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "registry__organizations", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelorganizations", + "multivalued": true, + "alias": "organizations", + "owner": "Registry", + "domain_of": [ + "Registry" + ], + "range": "Organization", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "hasAliases__aliases", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "exact_mappings": [ + "http://schema.org/alternateName" + ], + "slot_uri": "https://w3id.org/my_org/my_datamodelaliases", + "multivalued": true, + "alias": "aliases", + "owner": "HasAliases", + "domain_of": [ + "HasAliases" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "related_to", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slot_uri": "https://w3id.org/my_org/my_datamodelrelated_to", + "range": "Person", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "Person_primary_email", + "definition_uri": "https://w3id.org/my_org/my_datamodelprimary_email", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "http://schema.org/email" + ], + "is_a": "primary_email", + "domain": "Person", + "slot_uri": "http://schema.org/email", + "alias": "primary_email", + "owner": "Person", + "domain_of": [ + "Person" + ], + "is_usage_slot": true, + "usage_slot_name": "primary_email", + "range": "string", + "pattern": "^\\S+@[\\S+\\.]+\\S+", + "@type": "SlotDefinition" + }, + { + "name": "FamilialRelationship_type", + "definition_uri": "https://w3id.org/my_org/my_datamodeltype", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "is_a": "type", + "domain": "FamilialRelationship", + "slot_uri": "https://w3id.org/my_org/my_datamodeltype", + "alias": "type", + "owner": "FamilialRelationship", + "domain_of": [ + "FamilialRelationship" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "FamilialRelationshipType", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "FamilialRelationship_related_to", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "is_a": "related_to", + "domain": "FamilialRelationship", + "slot_uri": "https://w3id.org/my_org/my_datamodelrelated_to", + "alias": "related to", + "owner": "FamilialRelationship", + "domain_of": [ + "FamilialRelationship" + ], + "is_usage_slot": true, + "usage_slot_name": "related to", + "range": "Person", + "required": true, + "@type": "SlotDefinition" + } + ], + "classes": [ + { + "name": "Registry", + "definition_uri": "https://w3id.org/my_org/my_datamodelRegistry", + "description": "Top level data container", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slots": [ + "registry__persons", + "registry__organizations" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "persons", + "multivalued": true, + "range": "Person", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "organizations", + "multivalued": true, + "range": "Organization", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/my_org/my_datamodelRegistry", + "tree_root": true, + "@type": "ClassDefinition" + }, + { + "name": "NamedThing", + "definition_uri": "https://w3id.org/my_org/my_datamodelNamedThing", + "description": "A generic grouping for any identifiable entity", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "close_mappings": [ + "schema:Thing" + ], + "slots": [ + "id", + "name", + "description", + "image" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/my_org/my_datamodelNamedThing", + "@type": "ClassDefinition" + }, + { + "name": "Person", + "definition_uri": "https://w3id.org/my_org/my_datamodelPerson", + "description": "A person (alive, dead, undead, or fictional).", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "schema:Person" + ], + "is_a": "NamedThing", + "mixins": [ + "HasAliases" + ], + "slots": [ + "id", + "name", + "description", + "image", + "Person_primary_email", + "birth_date", + "age_in_years", + "current_address", + "has_familial_relationships", + "hasAliases__aliases" + ], + "slot_usage": {}, + "class_uri": "http://schema.org/Person", + "@type": "ClassDefinition" + }, + { + "name": "HasAliases", + "definition_uri": "https://w3id.org/my_org/my_datamodelHasAliases", + "description": "A mixin applied to any class that can have aliases/alternateNames", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mixin": true, + "slots": [ + "hasAliases__aliases" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "aliases", + "exact_mappings": [ + "schema:alternateName" + ], + "multivalued": true, + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/my_org/my_datamodelHasAliases", + "@type": "ClassDefinition" + }, + { + "name": "Organization", + "definition_uri": "https://w3id.org/my_org/my_datamodelOrganization", + "description": "An organization such as a company or university", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "schema:Organization" + ], + "is_a": "NamedThing", + "mixins": [ + "HasAliases" + ], + "slots": [ + "id", + "name", + "description", + "image", + "mission_statement", + "founding_date", + "hasAliases__aliases" + ], + "slot_usage": {}, + "class_uri": "http://schema.org/Organization", + "@type": "ClassDefinition" + }, + { + "name": "Address", + "definition_uri": "https://w3id.org/my_org/my_datamodelAddress", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "mappings": [ + "schema:PostalAddress" + ], + "slots": [ + "street", + "city", + "postal_code" + ], + "slot_usage": {}, + "class_uri": "http://schema.org/PostalAddress", + "@type": "ClassDefinition" + }, + { + "name": "Relationship", + "definition_uri": "https://w3id.org/my_org/my_datamodelRelationship", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "slots": [ + "started_at_time", + "ended_at_time", + "related_to", + "type" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/my_org/my_datamodelRelationship", + "@type": "ClassDefinition" + }, + { + "name": "FamilialRelationship", + "definition_uri": "https://w3id.org/my_org/my_datamodelFamilialRelationship", + "from_schema": "https://w3id.org/my_org/my_datamodel", + "is_a": "Relationship", + "slots": [ + "started_at_time", + "ended_at_time", + "related_to", + "FamilialRelationship_type", + "FamilialRelationship_related_to" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/my_org/my_datamodelFamilialRelationship", + "@type": "ClassDefinition" + } + ], + "metamodel_version": "1.7.0", + "source_file": "model_card_schema.yaml", + "source_file_date": "2022-09-06T10:00:58", + "source_file_size": 3771, + "generation_date": "2022-09-06T10:01:45", + "@type": "SchemaDefinition", + "@context": [ + "project/jsonld/model_card_schema.context.jsonld", + "https://w3id.org/linkml/types.context.jsonld", + { + "@base": "https://w3id.org/my_org/my_datamodel" + } + ] +} diff --git a/project/jsonld/modelcards.context.jsonld b/project/jsonld/modelcards.context.jsonld deleted file mode 100644 index d05cc9b..0000000 --- a/project/jsonld/modelcards.context.jsonld +++ /dev/null @@ -1,17 +0,0 @@ -{ - "_comments": "Auto generated from modelcards.yaml by jsonldcontextgen.py version: 0.1.1\n Generation date: 2022-10-04T16:30:04\n Schema: Model_Card\n metamodel version: 1.7.0\n model version: None\n \n id: https://w3id.org/linkml/modelcard\n description: An EXPERIMENTAL rendering of the model card schema in LinkML\n\nThis is not the official model card schema!\n license: https://creativecommons.org/publicdomain/zero/1.0/\n ", - "@context": { - "linkml": "https://w3id.org/linkml/", - "modelcard": "https://w3id.org/linkml/modelcard/", - "@vocab": "https://w3id.org/linkml/modelcard/", - "graphics": { - "@type": "@id" - }, - "sensitive": { - "@type": "xsd:boolean" - }, - "threshold": { - "@type": "xsd:float" - } - } -} diff --git a/project/jsonld/modelcards.jsonld b/project/jsonld/modelcards.jsonld deleted file mode 100644 index 78b90e9..0000000 --- a/project/jsonld/modelcards.jsonld +++ /dev/null @@ -1,1071 +0,0 @@ -{ - "name": "Model_Card", - "description": "An EXPERIMENTAL rendering of the model card schema in LinkML\n\nThis is not the official model card schema!", - "id": "https://w3id.org/linkml/modelcard", - "imports": [ - "linkml:types" - ], - "license": "https://creativecommons.org/publicdomain/zero/1.0/", - "prefixes": [ - { - "prefix_prefix": "modelcard", - "prefix_reference": "https://w3id.org/linkml/modelcard/" - }, - { - "prefix_prefix": "linkml", - "prefix_reference": "https://w3id.org/linkml/" - } - ], - "default_prefix": "modelcard", - "default_range": "string", - "types": [ - { - "name": "string", - "definition_uri": "https://w3id.org/linkml/String", - "description": "A character string", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "str", - "uri": "http://www.w3.org/2001/XMLSchema#string", - "@type": "TypeDefinition" - }, - { - "name": "integer", - "definition_uri": "https://w3id.org/linkml/Integer", - "description": "An integer", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "int", - "uri": "http://www.w3.org/2001/XMLSchema#integer", - "@type": "TypeDefinition" - }, - { - "name": "boolean", - "definition_uri": "https://w3id.org/linkml/Boolean", - "description": "A binary (true or false) value", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "Bool", - "uri": "http://www.w3.org/2001/XMLSchema#boolean", - "repr": "bool", - "@type": "TypeDefinition" - }, - { - "name": "float", - "definition_uri": "https://w3id.org/linkml/Float", - "description": "A real number that conforms to the xsd:float specification", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "float", - "uri": "http://www.w3.org/2001/XMLSchema#float", - "@type": "TypeDefinition" - }, - { - "name": "double", - "definition_uri": "https://w3id.org/linkml/Double", - "description": "A real number that conforms to the xsd:double specification", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "float", - "uri": "http://www.w3.org/2001/XMLSchema#double", - "@type": "TypeDefinition" - }, - { - "name": "decimal", - "definition_uri": "https://w3id.org/linkml/Decimal", - "description": "A real number with arbitrary precision that conforms to the xsd:decimal specification", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "Decimal", - "uri": "http://www.w3.org/2001/XMLSchema#decimal", - "@type": "TypeDefinition" - }, - { - "name": "time", - "definition_uri": "https://w3id.org/linkml/Time", - "description": "A time object represents a (local) time of day, independent of any particular day", - "notes": [ - "URI is dateTime because OWL reasoners do not work with straight date or time" - ], - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "XSDTime", - "uri": "http://www.w3.org/2001/XMLSchema#dateTime", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "date", - "definition_uri": "https://w3id.org/linkml/Date", - "description": "a date (year, month and day) in an idealized calendar", - "notes": [ - "URI is dateTime because OWL reasoners don't work with straight date or time" - ], - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "XSDDate", - "uri": "http://www.w3.org/2001/XMLSchema#date", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "datetime", - "definition_uri": "https://w3id.org/linkml/Datetime", - "description": "The combination of a date and time", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "XSDDateTime", - "uri": "http://www.w3.org/2001/XMLSchema#dateTime", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "date_or_datetime", - "definition_uri": "https://w3id.org/linkml/DateOrDatetime", - "description": "Either a date or a datetime", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "str", - "uri": "https://w3id.org/linkml/DateOrDatetime", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "uriorcurie", - "definition_uri": "https://w3id.org/linkml/Uriorcurie", - "description": "a URI or a CURIE", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "URIorCURIE", - "uri": "http://www.w3.org/2001/XMLSchema#anyURI", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "uri", - "definition_uri": "https://w3id.org/linkml/Uri", - "description": "a complete URI", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "URI", - "uri": "http://www.w3.org/2001/XMLSchema#anyURI", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "ncname", - "definition_uri": "https://w3id.org/linkml/Ncname", - "description": "Prefix part of CURIE", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "NCName", - "uri": "http://www.w3.org/2001/XMLSchema#string", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "objectidentifier", - "definition_uri": "https://w3id.org/linkml/Objectidentifier", - "description": "A URI or CURIE that represents an object in the model.", - "comments": [ - "Used for inheritence and type checking" - ], - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "ElementIdentifier", - "uri": "http://www.w3.org/ns/shex#iri", - "repr": "str", - "@type": "TypeDefinition" - }, - { - "name": "nodeidentifier", - "definition_uri": "https://w3id.org/linkml/Nodeidentifier", - "description": "A URI, CURIE or BNODE that represents a node in a model.", - "from_schema": "https://w3id.org/linkml/types", - "imported_from": "linkml:types", - "base": "NodeIdentifier", - "uri": "http://www.w3.org/ns/shex#nonLiteral", - "repr": "str", - "@type": "TypeDefinition" - } - ], - "slots": [ - { - "name": "name", - "definition_uri": "https://w3id.org/linkml/modelcard/name", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/name", - "owner": "Risk", - "domain_of": [ - "Owner", - "Dataset", - "Graphic", - "Risk" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "contact", - "definition_uri": "https://w3id.org/linkml/modelcard/contact", - "description": "The contact information of the owner.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/contact", - "owner": "Owner", - "domain_of": [ - "Owner" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "link", - "definition_uri": "https://w3id.org/linkml/modelcard/link", - "description": "A link to the dataset.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/link", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "sensitive", - "definition_uri": "https://w3id.org/linkml/modelcard/sensitive", - "description": "Does this dataset contain human or other sensitive data?", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/sensitive", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "range": "boolean", - "@type": "SlotDefinition" - }, - { - "name": "graphics", - "definition_uri": "https://w3id.org/linkml/modelcard/graphics", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/graphics", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "range": "Graphics", - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "type", - "definition_uri": "https://w3id.org/linkml/modelcard/type", - "description": "The type of performance metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/type", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "range": "string", - "required": true, - "@type": "SlotDefinition" - }, - { - "name": "value", - "definition_uri": "https://w3id.org/linkml/modelcard/value", - "description": "The value of the performance metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/value", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "value_error", - "definition_uri": "https://w3id.org/linkml/modelcard/value_error", - "description": "The estimated error for the performance metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/value_error", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "confidence_interval", - "definition_uri": "https://w3id.org/linkml/modelcard/confidence_interval", - "description": "The confidence interval of the metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/confidence_interval", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "threshold", - "definition_uri": "https://w3id.org/linkml/modelcard/threshold", - "description": "The decision threshold the metric was computed on.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/threshold", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "range": "float", - "@type": "SlotDefinition" - }, - { - "name": "slice", - "definition_uri": "https://w3id.org/linkml/modelcard/slice", - "description": "The name of the slice this metric was computed on. By default, assume this metric is not sliced.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/slice", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "description", - "definition_uri": "https://w3id.org/linkml/modelcard/description", - "description": "A description of this collection of graphics.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/description", - "owner": "Graphics", - "domain_of": [ - "Graphics" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "collection", - "definition_uri": "https://w3id.org/linkml/modelcard/collection", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/collection", - "multivalued": true, - "owner": "Graphics", - "domain_of": [ - "Graphics" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "image", - "definition_uri": "https://w3id.org/linkml/modelcard/image", - "description": "The graphic, encoded as a base64 string.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/image", - "owner": "Graphic", - "domain_of": [ - "Graphic" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "bias_input", - "definition_uri": "https://w3id.org/linkml/modelcard/bias_input", - "description": "A known bias in the input data.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/bias_input", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "bias_model", - "definition_uri": "https://w3id.org/linkml/modelcard/bias_model", - "description": "A known bias in the model that was applied to the input data.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/bias_model", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "bias_output", - "definition_uri": "https://w3id.org/linkml/modelcard/bias_output", - "description": "A known bias in the output of the model that was applied to the input data.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/bias_output", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "mitigation_strategy", - "definition_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", - "description": "Strategy used to address this risk.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", - "owner": "Risk", - "domain_of": [ - "Risk" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "schema_version", - "definition_uri": "https://w3id.org/linkml/modelcard/schema_version", - "description": "The version of the schema.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/schema_version", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "model_category", - "definition_uri": "https://w3id.org/linkml/modelcard/model_category", - "description": "The category or parent class of the model.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/model_category", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "model_details", - "definition_uri": "https://w3id.org/linkml/modelcard/model_details", - "description": "Metadata about the model.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/model_details", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "required": true, - "@type": "SlotDefinition" - }, - { - "name": "model_parameters", - "definition_uri": "https://w3id.org/linkml/modelcard/model_parameters", - "description": "Parameters for construction of the model.", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/model_parameters", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "quantitative_analysis", - "definition_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", - "description": "A quantitative analysis of the model", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "considerations", - "definition_uri": "https://w3id.org/linkml/modelcard/considerations", - "description": "What considerations should be taken into account regarding the model's construction, training, and application?", - "from_schema": "https://w3id.org/linkml/modelcard", - "slot_uri": "https://w3id.org/linkml/modelcard/considerations", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "owner_name", - "definition_uri": "https://w3id.org/linkml/modelcard/name", - "description": "The name of the owner.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "name", - "domain": "Owner", - "slot_uri": "https://w3id.org/linkml/modelcard/name", - "alias": "name", - "owner": "Owner", - "domain_of": [ - "Owner" - ], - "is_usage_slot": true, - "usage_slot_name": "name", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "owner_contact", - "definition_uri": "https://w3id.org/linkml/modelcard/contact", - "description": "The contact information of the owner.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "contact", - "domain": "Owner", - "slot_uri": "https://w3id.org/linkml/modelcard/contact", - "alias": "contact", - "owner": "Owner", - "domain_of": [ - "Owner" - ], - "is_usage_slot": true, - "usage_slot_name": "contact", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "dataset_name", - "definition_uri": "https://w3id.org/linkml/modelcard/name", - "description": "The name of the dataset.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "name", - "domain": "Dataset", - "slot_uri": "https://w3id.org/linkml/modelcard/name", - "alias": "name", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "is_usage_slot": true, - "usage_slot_name": "name", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "dataset_link", - "definition_uri": "https://w3id.org/linkml/modelcard/link", - "description": "A link to the dataset.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "link", - "domain": "Dataset", - "slot_uri": "https://w3id.org/linkml/modelcard/link", - "alias": "link", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "is_usage_slot": true, - "usage_slot_name": "link", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "dataset_sensitive", - "definition_uri": "https://w3id.org/linkml/modelcard/sensitive", - "description": "Does this dataset contain human or other sensitive data?", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "sensitive", - "domain": "Dataset", - "slot_uri": "https://w3id.org/linkml/modelcard/sensitive", - "alias": "sensitive", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "is_usage_slot": true, - "usage_slot_name": "sensitive", - "range": "boolean", - "@type": "SlotDefinition" - }, - { - "name": "dataset_graphics", - "definition_uri": "https://w3id.org/linkml/modelcard/graphics", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "graphics", - "domain": "Dataset", - "slot_uri": "https://w3id.org/linkml/modelcard/graphics", - "alias": "graphics", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "is_usage_slot": true, - "usage_slot_name": "graphics", - "range": "Graphics", - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "dataset_bias_input", - "definition_uri": "https://w3id.org/linkml/modelcard/bias_input", - "description": "A known bias in the input data.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "bias_input", - "domain": "Dataset", - "slot_uri": "https://w3id.org/linkml/modelcard/bias_input", - "alias": "bias_input", - "owner": "Dataset", - "domain_of": [ - "Dataset" - ], - "is_usage_slot": true, - "usage_slot_name": "bias_input", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "performance_metric_type", - "definition_uri": "https://w3id.org/linkml/modelcard/type", - "description": "The type of performance metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "type", - "domain": "PerformanceMetric", - "slot_uri": "https://w3id.org/linkml/modelcard/type", - "alias": "type", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "is_usage_slot": true, - "usage_slot_name": "type", - "range": "string", - "required": true, - "@type": "SlotDefinition" - }, - { - "name": "performance_metric_value", - "definition_uri": "https://w3id.org/linkml/modelcard/value", - "description": "The value of the performance metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "value", - "domain": "PerformanceMetric", - "slot_uri": "https://w3id.org/linkml/modelcard/value", - "alias": "value", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "is_usage_slot": true, - "usage_slot_name": "value", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "performance_metric_confidence_interval", - "definition_uri": "https://w3id.org/linkml/modelcard/confidence_interval", - "description": "The confidence interval of the metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "confidence_interval", - "domain": "PerformanceMetric", - "slot_uri": "https://w3id.org/linkml/modelcard/confidence_interval", - "alias": "confidence_interval", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "is_usage_slot": true, - "usage_slot_name": "confidence_interval", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "performance_metric_value_error", - "definition_uri": "https://w3id.org/linkml/modelcard/value_error", - "description": "The estimated error for the performance metric.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "value_error", - "domain": "PerformanceMetric", - "slot_uri": "https://w3id.org/linkml/modelcard/value_error", - "alias": "value_error", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "is_usage_slot": true, - "usage_slot_name": "value_error", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "performance_metric_threshold", - "definition_uri": "https://w3id.org/linkml/modelcard/threshold", - "description": "The decision threshold the metric was computed on.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "threshold", - "domain": "PerformanceMetric", - "slot_uri": "https://w3id.org/linkml/modelcard/threshold", - "alias": "threshold", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "is_usage_slot": true, - "usage_slot_name": "threshold", - "range": "float", - "@type": "SlotDefinition" - }, - { - "name": "performance_metric_slice", - "definition_uri": "https://w3id.org/linkml/modelcard/slice", - "description": "The name of the slice this metric was computed on. By default, assume this metric is not sliced.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "slice", - "domain": "PerformanceMetric", - "slot_uri": "https://w3id.org/linkml/modelcard/slice", - "alias": "slice", - "owner": "PerformanceMetric", - "domain_of": [ - "PerformanceMetric" - ], - "is_usage_slot": true, - "usage_slot_name": "slice", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "graphics_description", - "definition_uri": "https://w3id.org/linkml/modelcard/description", - "description": "A description of this collection of graphics.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "description", - "domain": "Graphics", - "slot_uri": "https://w3id.org/linkml/modelcard/description", - "alias": "description", - "owner": "Graphics", - "domain_of": [ - "Graphics" - ], - "is_usage_slot": true, - "usage_slot_name": "description", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "graphics_collection", - "definition_uri": "https://w3id.org/linkml/modelcard/collection", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "collection", - "domain": "Graphics", - "slot_uri": "https://w3id.org/linkml/modelcard/collection", - "multivalued": true, - "alias": "collection", - "owner": "Graphics", - "domain_of": [ - "Graphics" - ], - "is_usage_slot": true, - "usage_slot_name": "collection", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "graphic_image", - "definition_uri": "https://w3id.org/linkml/modelcard/image", - "description": "The graphic, encoded as a base64 string.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "image", - "domain": "Graphic", - "slot_uri": "https://w3id.org/linkml/modelcard/image", - "alias": "image", - "owner": "Graphic", - "domain_of": [ - "Graphic" - ], - "is_usage_slot": true, - "usage_slot_name": "image", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "risk_mitigation_strategy", - "definition_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", - "description": "Strategy used to address this risk.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "mitigation_strategy", - "domain": "Risk", - "slot_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", - "alias": "mitigation_strategy", - "owner": "Risk", - "domain_of": [ - "Risk" - ], - "is_usage_slot": true, - "usage_slot_name": "mitigation_strategy", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_schema_version", - "definition_uri": "https://w3id.org/linkml/modelcard/schema_version", - "description": "The version of the schema.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "schema_version", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/schema_version", - "alias": "schema_version", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "schema_version", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_model_details", - "definition_uri": "https://w3id.org/linkml/modelcard/model_details", - "description": "Metadata about the model.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "model_details", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/model_details", - "alias": "model_details", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "model_details", - "range": "string", - "required": true, - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_model_parameters", - "definition_uri": "https://w3id.org/linkml/modelcard/model_parameters", - "description": "Parameters for construction of the model.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "model_parameters", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/model_parameters", - "alias": "model_parameters", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "model_parameters", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_quantitative_analysis", - "definition_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", - "description": "A quantitative analysis of the model", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "quantitative_analysis", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", - "alias": "quantitative_analysis", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "quantitative_analysis", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_considerations", - "definition_uri": "https://w3id.org/linkml/modelcard/considerations", - "description": "What considerations should be taken into account regarding the model's construction, training, and application?", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "considerations", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/considerations", - "alias": "considerations", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "considerations", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_model_category", - "definition_uri": "https://w3id.org/linkml/modelcard/model_category", - "description": "The category or parent class of the model.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "model_category", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/model_category", - "alias": "model_category", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "model_category", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_bias_model", - "definition_uri": "https://w3id.org/linkml/modelcard/bias_model", - "description": "A known bias in the model that was applied to the input data.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "bias_model", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/bias_model", - "alias": "bias_model", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "bias_model", - "range": "string", - "@type": "SlotDefinition" - }, - { - "name": "ModelCard_bias_output", - "definition_uri": "https://w3id.org/linkml/modelcard/bias_output", - "description": "A known bias in the output of the model that was applied to the input data.", - "from_schema": "https://w3id.org/linkml/modelcard", - "is_a": "bias_output", - "domain": "ModelCard", - "slot_uri": "https://w3id.org/linkml/modelcard/bias_output", - "alias": "bias_output", - "owner": "ModelCard", - "domain_of": [ - "ModelCard" - ], - "is_usage_slot": true, - "usage_slot_name": "bias_output", - "range": "string", - "@type": "SlotDefinition" - } - ], - "classes": [ - { - "name": "Owner", - "definition_uri": "https://w3id.org/linkml/modelcard/Owner", - "from_schema": "https://w3id.org/linkml/modelcard", - "slots": [ - "owner_name", - "owner_contact" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/linkml/modelcard/Owner", - "@type": "ClassDefinition" - }, - { - "name": "Dataset", - "definition_uri": "https://w3id.org/linkml/modelcard/Dataset", - "from_schema": "https://w3id.org/linkml/modelcard", - "slots": [ - "dataset_name", - "dataset_link", - "dataset_sensitive", - "dataset_graphics", - "dataset_bias_input" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/linkml/modelcard/Dataset", - "@type": "ClassDefinition" - }, - { - "name": "PerformanceMetric", - "definition_uri": "https://w3id.org/linkml/modelcard/PerformanceMetric", - "from_schema": "https://w3id.org/linkml/modelcard", - "slots": [ - "performance_metric_type", - "performance_metric_value", - "performance_metric_confidence_interval", - "performance_metric_threshold", - "performance_metric_slice", - "performance_metric_value_error" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/linkml/modelcard/PerformanceMetric", - "@type": "ClassDefinition" - }, - { - "name": "Graphics", - "definition_uri": "https://w3id.org/linkml/modelcard/Graphics", - "from_schema": "https://w3id.org/linkml/modelcard", - "slots": [ - "graphics_description", - "graphics_collection" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/linkml/modelcard/Graphics", - "@type": "ClassDefinition" - }, - { - "name": "Graphic", - "definition_uri": "https://w3id.org/linkml/modelcard/Graphic", - "from_schema": "https://w3id.org/linkml/modelcard", - "slots": [ - "name", - "graphic_image" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/linkml/modelcard/Graphic", - "@type": "ClassDefinition" - }, - { - "name": "Risk", - "definition_uri": "https://w3id.org/linkml/modelcard/Risk", - "from_schema": "https://w3id.org/linkml/modelcard", - "slots": [ - "name", - "risk_mitigation_strategy" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/linkml/modelcard/Risk", - "@type": "ClassDefinition" - }, - { - "name": "ModelCard", - "definition_uri": "https://w3id.org/linkml/modelcard/ModelCard", - "from_schema": "https://w3id.org/linkml/modelcard", - "slots": [ - "ModelCard_schema_version", - "ModelCard_model_details", - "ModelCard_model_parameters", - "ModelCard_quantitative_analysis", - "ModelCard_considerations", - "ModelCard_model_category", - "ModelCard_bias_model", - "ModelCard_bias_output" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/linkml/modelcard/ModelCard", - "tree_root": true, - "@type": "ClassDefinition" - } - ], - "metamodel_version": "1.7.0", - "source_file": "modelcards.yaml", - "source_file_date": "2022-10-04T16:19:56", - "source_file_size": 5082, - "generation_date": "2022-10-04T16:30:04", - "@type": "SchemaDefinition", - "@context": [ - "project/jsonld/modelcards.context.jsonld", - "https://w3id.org/linkml/types.context.jsonld", - { - "@base": "https://w3id.org/linkml/modelcard/" - } - ] -} diff --git a/project/jsonschema/model_card_schema.schema.json b/project/jsonschema/model_card_schema.schema.json new file mode 100644 index 0000000..4295c76 --- /dev/null +++ b/project/jsonschema/model_card_schema.schema.json @@ -0,0 +1,243 @@ +{ + "$defs": { + "Address": { + "additionalProperties": false, + "description": "", + "properties": { + "city": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "street": { + "type": "string" + } + }, + "required": [], + "title": "Address", + "type": "object" + }, + "FamilialRelationship": { + "additionalProperties": false, + "description": "", + "properties": { + "ended_at_time": { + "format": "date", + "type": "string" + }, + "related_to": { + "type": "string" + }, + "started_at_time": { + "format": "date", + "type": "string" + }, + "type": { + "$ref": "#/$defs/FamilialRelationshipType" + } + }, + "required": [ + "type", + "related_to" + ], + "title": "FamilialRelationship", + "type": "object" + }, + "FamilialRelationshipType": { + "description": "", + "enum": [ + "SIBLING_OF", + "PARENT_OF", + "CHILD_OF" + ], + "title": "FamilialRelationshipType", + "type": "string" + }, + "NamedThing": { + "additionalProperties": false, + "description": "A generic grouping for any identifiable entity", + "properties": { + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "NamedThing", + "type": "object" + }, + "Organization": { + "additionalProperties": false, + "description": "An organization such as a company or university", + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "founding_date": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image": { + "type": "string" + }, + "mission_statement": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Organization", + "type": "object" + }, + "Person": { + "additionalProperties": false, + "description": "A person (alive, dead, undead, or fictional).", + "properties": { + "age_in_years": { + "maximum": 999, + "minimum": 0, + "type": "integer" + }, + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "birth_date": { + "type": "string" + }, + "current_address": { + "$ref": "#/$defs/Address", + "description": "The address at which a person currently lives" + }, + "description": { + "type": "string" + }, + "has_familial_relationships": { + "items": { + "$ref": "#/$defs/FamilialRelationship" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "image": { + "type": "string" + }, + "name": { + "type": "string" + }, + "primary_email": { + "pattern": "^\\S+@[\\S+\\.]+\\S+", + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Person", + "type": "object" + }, + "PersonStatus": { + "description": "", + "enum": [ + "ALIVE", + "DEAD", + "UNKNOWN" + ], + "title": "PersonStatus", + "type": "string" + }, + "Registry": { + "additionalProperties": false, + "description": "Top level data container", + "properties": { + "organizations": { + "items": { + "$ref": "#/$defs/Organization" + }, + "type": "array" + }, + "persons": { + "items": { + "$ref": "#/$defs/Person" + }, + "type": "array" + } + }, + "required": [], + "title": "Registry", + "type": "object" + }, + "Relationship": { + "additionalProperties": false, + "description": "", + "properties": { + "ended_at_time": { + "format": "date", + "type": "string" + }, + "related_to": { + "type": "string" + }, + "started_at_time": { + "format": "date", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [], + "title": "Relationship", + "type": "object" + } + }, + "$id": "https://w3id.org/my_org/my_datamodel", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "metamodel_version": "1.7.0", + "properties": { + "organizations": { + "items": { + "$ref": "#/$defs/Organization" + }, + "type": "array" + }, + "persons": { + "items": { + "$ref": "#/$defs/Person" + }, + "type": "array" + } + }, + "required": [], + "title": "my_datamodel", + "type": "object", + "version": null +} diff --git a/project/jsonschema/modelcards.schema.json b/project/jsonschema/modelcards.schema.json deleted file mode 100644 index 6af4283..0000000 --- a/project/jsonschema/modelcards.schema.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "$defs": { - "Dataset": { - "additionalProperties": false, - "description": "", - "properties": { - "bias_input": { - "description": "A known bias in the input data.", - "type": "string" - }, - "graphics": { - "$ref": "#/$defs/Graphics" - }, - "link": { - "description": "A link to the dataset.", - "type": "string" - }, - "name": { - "description": "The name of the dataset.", - "type": "string" - }, - "sensitive": { - "description": "Does this dataset contain human or other sensitive data?", - "type": "boolean" - } - }, - "required": [], - "title": "Dataset", - "type": "object" - }, - "Graphic": { - "additionalProperties": false, - "description": "", - "properties": { - "image": { - "description": "The graphic, encoded as a base64 string.", - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [], - "title": "Graphic", - "type": "object" - }, - "Graphics": { - "additionalProperties": false, - "description": "", - "properties": { - "collection": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "description": "A description of this collection of graphics.", - "type": "string" - } - }, - "required": [], - "title": "Graphics", - "type": "object" - }, - "ModelCard": { - "additionalProperties": false, - "description": "", - "properties": { - "bias_model": { - "description": "A known bias in the model that was applied to the input data.", - "type": "string" - }, - "bias_output": { - "description": "A known bias in the output of the model that was applied to the input data.", - "type": "string" - }, - "considerations": { - "description": "What considerations should be taken into account regarding the model's construction, training, and application?", - "type": "string" - }, - "model_category": { - "description": "The category or parent class of the model.", - "type": "string" - }, - "model_details": { - "description": "Metadata about the model.", - "type": "string" - }, - "model_parameters": { - "description": "Parameters for construction of the model.", - "type": "string" - }, - "quantitative_analysis": { - "description": "A quantitative analysis of the model", - "type": "string" - }, - "schema_version": { - "description": "The version of the schema.", - "type": "string" - } - }, - "required": [ - "model_details" - ], - "title": "ModelCard", - "type": "object" - }, - "Owner": { - "additionalProperties": false, - "description": "", - "properties": { - "contact": { - "description": "The contact information of the owner.", - "type": "string" - }, - "name": { - "description": "The name of the owner.", - "type": "string" - } - }, - "required": [], - "title": "Owner", - "type": "object" - }, - "PerformanceMetric": { - "additionalProperties": false, - "description": "", - "properties": { - "confidence_interval": { - "description": "The confidence interval of the metric.", - "type": "string" - }, - "slice": { - "description": "The name of the slice this metric was computed on. By default, assume this metric is not sliced.", - "type": "string" - }, - "threshold": { - "description": "The decision threshold the metric was computed on.", - "type": "number" - }, - "type": { - "description": "The type of performance metric.", - "type": "string" - }, - "value": { - "description": "The value of the performance metric.", - "type": "string" - }, - "value_error": { - "description": "The estimated error for the performance metric.", - "type": "string" - } - }, - "required": [ - "type" - ], - "title": "PerformanceMetric", - "type": "object" - }, - "Risk": { - "additionalProperties": false, - "description": "", - "properties": { - "mitigation_strategy": { - "description": "Strategy used to address this risk.", - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [], - "title": "Risk", - "type": "object" - } - }, - "$id": "https://w3id.org/linkml/modelcard", - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "metamodel_version": "1.7.0", - "properties": { - "bias_model": { - "description": "A known bias in the model that was applied to the input data.", - "type": "string" - }, - "bias_output": { - "description": "A known bias in the output of the model that was applied to the input data.", - "type": "string" - }, - "considerations": { - "description": "What considerations should be taken into account regarding the model's construction, training, and application?", - "type": "string" - }, - "model_category": { - "description": "The category or parent class of the model.", - "type": "string" - }, - "model_details": { - "description": "Metadata about the model.", - "type": "string" - }, - "model_parameters": { - "description": "Parameters for construction of the model.", - "type": "string" - }, - "quantitative_analysis": { - "description": "A quantitative analysis of the model", - "type": "string" - }, - "schema_version": { - "description": "The version of the schema.", - "type": "string" - } - }, - "required": [ - "model_details" - ], - "title": "Model_Card", - "type": "object", - "version": null -} diff --git a/project/owl/model_card_schema.owl.ttl b/project/owl/model_card_schema.owl.ttl new file mode 100644 index 0000000..eb097de --- /dev/null +++ b/project/owl/model_card_schema.owl.ttl @@ -0,0 +1,343 @@ +@prefix IAO: . +@prefix PATO: . +@prefix dcterms: . +@prefix famrel: . +@prefix linkml: . +@prefix my_datamodel: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix schema: . +@prefix skos: . +@prefix xsd: . + +linkml:SubsetDefinition a owl:Class ; + rdfs:label "subset_definition" . + +linkml:TypeDefinition a owl:Class ; + rdfs:label "type_definition" . + +linkml:topValue a owl:DatatypeProperty ; + rdfs:label "value" . + +my_datamodel: a owl:Ontology ; + rdfs:label "my_datamodel" ; + IAO:0000700 my_datamodel:Address, + my_datamodel:HasAliases, + my_datamodel:NamedThing, + my_datamodel:Registry, + my_datamodel:Relationship ; + dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; + dcterms:title "My Datamodel" ; + rdfs:seeAlso "https://example.org/" ; + linkml:generation_date "2022-09-06T10:01:46" ; + linkml:metamodel_version "1.7.0" ; + linkml:source_file "model_card_schema.yaml" ; + linkml:source_file_date "2022-09-06T10:00:58" ; + linkml:source_file_size 3771 . + +my_datamodel:employed_at a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "employed_at" ; + rdfs:range my_datamodel:Organization . + +my_datamodel:is_current a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "is_current" ; + rdfs:range linkml:Boolean . + +my_datamodel:Registry a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Registry" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom my_datamodel:Person ; + owl:onProperty my_datamodel:persons ], + [ a owl:Restriction ; + owl:allValuesFrom my_datamodel:Organization ; + owl:onProperty my_datamodel:organizations ] ; + skos:definition "Top level data container" . + +my_datamodel:age_in_years a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "age_in_years" ; + rdfs:range linkml:Integer . + +my_datamodel:city a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "city" ; + rdfs:range linkml:String . + +my_datamodel:current_address a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "current_address" ; + rdfs:range my_datamodel:Address ; + skos:definition "The address at which a person currently lives" . + +my_datamodel:founding_date a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "founding_date" ; + rdfs:range linkml:String . + +my_datamodel:has_familial_relationships a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "has_familial_relationships" ; + rdfs:range my_datamodel:FamilialRelationship . + +my_datamodel:mission_statement a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "mission_statement" ; + rdfs:range linkml:String . + +my_datamodel:organizations a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "organizations" ; + rdfs:range my_datamodel:Organization . + +my_datamodel:persons a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "persons" ; + rdfs:range my_datamodel:Person . + +my_datamodel:postal_code a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "postal_code" ; + rdfs:range linkml:String . + +my_datamodel:street a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "street" ; + rdfs:range linkml:String . + +famrel:02 a owl:Class, + my_datamodel:FamilialRelationshipType ; + rdfs:label "PARENT_OF" . + +PATO:0001421 a owl:Class, + my_datamodel:PersonStatus ; + rdfs:label "ALIVE" . + +PATO:0001422 a owl:Class, + my_datamodel:PersonStatus ; + rdfs:label "DEAD" . + +schema:birthDate a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "birth_date" ; + rdfs:range linkml:String ; + skos:exactMatch schema:birthDate . + +schema:description a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "description" ; + rdfs:range linkml:String ; + skos:exactMatch schema:description . + +schema:email a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "primary_email" ; + rdfs:range linkml:String ; + skos:exactMatch schema:email . + +schema:identifier a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "id" ; + rdfs:range linkml:String ; + skos:exactMatch schema:identifier . + +schema:image a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "image" ; + rdfs:range linkml:String ; + skos:exactMatch schema:image . + +schema:name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "name" ; + rdfs:range linkml:String ; + skos:exactMatch schema:name . + + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "ended_at_time" ; + rdfs:range linkml:Date ; + skos:exactMatch . + + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "started_at_time" ; + rdfs:range linkml:Date ; + skos:exactMatch . + +my_datamodel:FamilialRelationship a owl:Class, + linkml:ClassDefinition ; + rdfs:label "FamilialRelationship" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onClass my_datamodel:FamilialRelationshipType ; + owl:onProperty my_datamodel:type ; + owl:qualifiedCardinality 1 ], + [ a owl:Restriction ; + owl:onClass my_datamodel:Person ; + owl:onProperty my_datamodel:related_to ; + owl:qualifiedCardinality 1 ], + my_datamodel:Relationship . + + a owl:Class, + my_datamodel:PersonStatus ; + rdfs:label "UNKNOWN" . + +my_datamodel:Relationship a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Relationship" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty my_datamodel:related_to ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty my_datamodel:type ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:Date ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:Date ; + owl:onProperty ] . + +my_datamodel:related_to a owl:ObjectProperty, + linkml:SlotDefinition . + +my_datamodel:type a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "type" ; + rdfs:range linkml:String . + +famrel:01 a owl:Class, + my_datamodel:FamilialRelationshipType ; + rdfs:label "CHILD_OF", + "SIBLING_OF" . + +my_datamodel:Address a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Address" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty my_datamodel:city ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty my_datamodel:street ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty my_datamodel:postal_code ] ; + skos:exactMatch schema:PostalAddress . + +my_datamodel:FamilialRelationshipType a owl:Class, + linkml:EnumDefinition ; + rdfs:label "FamilialRelationshipType" ; + owl:unionOf ( famrel:01 famrel:02 famrel:01 ) ; + linkml:permissible_values famrel:01, + famrel:02 . + +my_datamodel:HasAliases a owl:Class, + linkml:ClassDefinition ; + rdfs:label "HasAliases" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty my_datamodel:aliases ], + linkml:mixin ; + skos:definition "A mixin applied to any class that can have aliases/alternateNames" . + +my_datamodel:NamedThing a owl:Class, + linkml:ClassDefinition ; + rdfs:label "NamedThing" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty schema:description ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty schema:name ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty schema:image ], + [ a owl:Restriction ; + owl:onClass linkml:String ; + owl:onProperty schema:identifier ; + owl:qualifiedCardinality 1 ] ; + skos:closeMatch schema:Thing ; + skos:definition "A generic grouping for any identifiable entity" . + +my_datamodel:Organization a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Organization" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty my_datamodel:mission_statement ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty my_datamodel:founding_date ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty my_datamodel:aliases ], + my_datamodel:HasAliases, + my_datamodel:NamedThing ; + skos:definition "An organization such as a company or university" ; + skos:exactMatch schema:Organization . + +my_datamodel:Person a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Person" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty my_datamodel:aliases ], + [ a owl:Restriction ; + owl:allValuesFrom my_datamodel:FamilialRelationship ; + owl:onProperty my_datamodel:has_familial_relationships ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:Integer ; + owl:onProperty my_datamodel:age_in_years ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass my_datamodel:Address ; + owl:onProperty my_datamodel:current_address ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty schema:birthDate ], + [ a owl:Restriction ; + owl:maxQualifiedCardinality 1 ; + owl:onClass linkml:String ; + owl:onProperty schema:email ], + my_datamodel:HasAliases, + my_datamodel:NamedThing ; + skos:definition "A person (alive, dead, undead, or fictional)." ; + skos:exactMatch schema:Person . + +my_datamodel:PersonStatus a owl:Class, + linkml:EnumDefinition ; + rdfs:label "PersonStatus" ; + owl:unionOf ( PATO:0001421 PATO:0001422 ) ; + linkml:permissible_values PATO:0001421, + PATO:0001422, + . + +my_datamodel:aliases a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "aliases" ; + rdfs:range linkml:String ; + skos:exactMatch schema:alternateName . + +linkml:ClassDefinition a owl:Class ; + rdfs:label "class_definition" . + +linkml:SlotDefinition a owl:Class ; + rdfs:label "slot_definition" . diff --git a/project/owl/modelcards.owl.ttl b/project/owl/modelcards.owl.ttl deleted file mode 100644 index 5f89f4b..0000000 --- a/project/owl/modelcards.owl.ttl +++ /dev/null @@ -1,317 +0,0 @@ -@prefix IAO: . -@prefix dcterms: . -@prefix linkml: . -@prefix modelcard: . -@prefix owl: . -@prefix rdfs: . -@prefix skos: . -@prefix xsd: . - -linkml:SubsetDefinition a owl:Class ; - rdfs:label "subset_definition" . - -linkml:TypeDefinition a owl:Class ; - rdfs:label "type_definition" . - -linkml:modelcard a owl:Ontology ; - rdfs:label "Model_Card" ; - IAO:0000700 modelcard:Dataset, - modelcard:Graphic, - modelcard:Graphics, - modelcard:ModelCard, - modelcard:Owner, - modelcard:PerformanceMetric, - modelcard:Risk ; - dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; - linkml:generation_date "2022-10-04T16:30:06" ; - linkml:metamodel_version "1.7.0" ; - linkml:source_file "modelcards.yaml" ; - linkml:source_file_date "2022-10-04T16:19:56" ; - linkml:source_file_size 5082 . - -linkml:topValue a owl:DatatypeProperty ; - rdfs:label "value" . - -modelcard:Dataset a owl:Class, - linkml:ClassDefinition ; - rdfs:label "dataset" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:Boolean ; - owl:onProperty modelcard:sensitive ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass modelcard:Graphics ; - owl:onProperty modelcard:graphics ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:bias_input ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:link ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:name ] . - -modelcard:Graphic a owl:Class, - linkml:ClassDefinition ; - rdfs:label "graphic" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:name ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:image ] . - -modelcard:ModelCard a owl:Class, - linkml:ClassDefinition ; - rdfs:label "ModelCard" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:model_category ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:model_parameters ], - [ a owl:Restriction ; - owl:onClass linkml:String ; - owl:onProperty modelcard:model_details ; - owl:qualifiedCardinality 1 ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:bias_output ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:bias_model ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:quantitative_analysis ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:schema_version ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:considerations ] . - -modelcard:Owner a owl:Class, - linkml:ClassDefinition ; - rdfs:label "owner" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:name ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:contact ] . - -modelcard:PerformanceMetric a owl:Class, - linkml:ClassDefinition ; - rdfs:label "performance_metric" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:Float ; - owl:onProperty modelcard:threshold ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:value ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:confidence_interval ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:slice ], - [ a owl:Restriction ; - owl:onClass linkml:String ; - owl:onProperty modelcard:type ; - owl:qualifiedCardinality 1 ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:value_error ] . - -modelcard:Risk a owl:Class, - linkml:ClassDefinition ; - rdfs:label "risk" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:mitigation_strategy ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:name ] . - -modelcard:bias_input a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "bias_input" ; - rdfs:range linkml:String ; - skos:definition "A known bias in the input data." . - -modelcard:bias_model a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "bias_model" ; - rdfs:range linkml:String ; - skos:definition "A known bias in the model that was applied to the input data." . - -modelcard:bias_output a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "bias_output" ; - rdfs:range linkml:String ; - skos:definition "A known bias in the output of the model that was applied to the input data." . - -modelcard:collection a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "collection" ; - rdfs:range linkml:String . - -modelcard:confidence_interval a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "confidence_interval" ; - rdfs:range linkml:String ; - skos:definition "The confidence interval of the metric." . - -modelcard:considerations a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "considerations" ; - rdfs:range linkml:String ; - skos:definition "What considerations should be taken into account regarding the model's construction, training, and application?" . - -modelcard:contact a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "contact" ; - rdfs:range linkml:String ; - skos:definition "The contact information of the owner." . - -modelcard:description a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "description" ; - rdfs:range linkml:String ; - skos:definition "A description of this collection of graphics." . - -modelcard:graphics a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "graphics" ; - rdfs:range modelcard:Graphics . - -modelcard:image a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "image" ; - rdfs:range linkml:String ; - skos:definition "The graphic, encoded as a base64 string." . - -modelcard:link a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "link" ; - rdfs:range linkml:String ; - skos:definition "A link to the dataset." . - -modelcard:mitigation_strategy a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "mitigation_strategy" ; - rdfs:range linkml:String ; - skos:definition "Strategy used to address this risk." . - -modelcard:model_category a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "model_category" ; - rdfs:range linkml:String ; - skos:definition "The category or parent class of the model." . - -modelcard:model_details a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "model_details" ; - rdfs:range linkml:String ; - skos:definition "Metadata about the model." . - -modelcard:model_parameters a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "model_parameters" ; - rdfs:range linkml:String ; - skos:definition "Parameters for construction of the model." . - -modelcard:quantitative_analysis a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "quantitative_analysis" ; - rdfs:range linkml:String ; - skos:definition "A quantitative analysis of the model" . - -modelcard:schema_version a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "schema_version" ; - rdfs:range linkml:String ; - skos:definition "The version of the schema." . - -modelcard:sensitive a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "sensitive" ; - rdfs:range linkml:Boolean ; - skos:definition "Does this dataset contain human or other sensitive data?" . - -modelcard:slice a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "slice" ; - rdfs:range linkml:String ; - skos:definition "The name of the slice this metric was computed on. By default, assume this metric is not sliced." . - -modelcard:threshold a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "threshold" ; - rdfs:range linkml:Float ; - skos:definition "The decision threshold the metric was computed on." . - -modelcard:type a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "type" ; - rdfs:range linkml:String ; - skos:definition "The type of performance metric." . - -modelcard:value a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "value" ; - rdfs:range linkml:String ; - skos:definition "The value of the performance metric." . - -modelcard:value_error a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "value_error" ; - rdfs:range linkml:String ; - skos:definition "The estimated error for the performance metric." . - -modelcard:Graphics a owl:Class, - linkml:ClassDefinition ; - rdfs:label "graphics" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty modelcard:collection ], - [ a owl:Restriction ; - owl:maxQualifiedCardinality 1 ; - owl:onClass linkml:String ; - owl:onProperty modelcard:description ] . - -modelcard:name a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "name" ; - rdfs:range linkml:String . - -linkml:ClassDefinition a owl:Class ; - rdfs:label "class_definition" . - -linkml:SlotDefinition a owl:Class ; - rdfs:label "slot_definition" . - - diff --git a/project/prefixmap/model_card_schema.yaml b/project/prefixmap/model_card_schema.yaml new file mode 100644 index 0000000..c498d30 --- /dev/null +++ b/project/prefixmap/model_card_schema.yaml @@ -0,0 +1,19 @@ +--- +{ + "PATO": "http://purl.obolibrary.org/obo/PATO_", + "biolink": "https://w3id.org/biolink/", + "famrel": "http://example.org/famrel/", + "linkml": "https://w3id.org/linkml/", + "my_datamodel": "https://w3id.org/my_org/my_datamodel", + "prov": "http://www.w3.org/ns/prov#", + "schema": "http://schema.org/", + "Address": { + "@id": "schema:PostalAddress" + }, + "Organization": { + "@id": "schema:Organization" + }, + "Person": { + "@id": "schema:Person" + } +} diff --git a/project/prefixmap/modelcards.yaml b/project/prefixmap/modelcards.yaml deleted file mode 100644 index 5758295..0000000 --- a/project/prefixmap/modelcards.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{ - "linkml": "https://w3id.org/linkml/", - "modelcard": "https://w3id.org/linkml/modelcard/" -} diff --git a/project/protobuf/model_card_schema.proto b/project/protobuf/model_card_schema.proto new file mode 100644 index 0000000..99e0098 --- /dev/null +++ b/project/protobuf/model_card_schema.proto @@ -0,0 +1,60 @@ +message Address + { + string street = 0 + string city = 0 + string postalCode = 0 + } +message FamilialRelationship + { + date startedAtTime = 0 + date endedAtTime = 0 + string relatedTo = 0 + familialRelationshipType type = 0 + person relatedTo = 0 + } +// A generic grouping for any identifiable entity +message NamedThing + { + string id = 0 + string name = 0 + string description = 0 + string image = 0 + } +// An organization such as a company or university +message Organization + { + string id = 0 + string name = 0 + string description = 0 + string image = 0 + string missionStatement = 0 + string foundingDate = 0 + repeated string aliases = 0 + } +// A person (alive, dead, undead, or fictional). +message Person + { + string id = 0 + string name = 0 + string description = 0 + string image = 0 + string primaryEmail = 0 + string birthDate = 0 + integer ageInYears = 0 + address currentAddress = 0 + repeated familialRelationship hasFamilialRelationships = 0 + repeated string aliases = 0 + } +// Top level data container +message Registry + { + repeated person persons = 0 + repeated organization organizations = 0 + } +message Relationship + { + date startedAtTime = 0 + date endedAtTime = 0 + string relatedTo = 0 + string type = 0 + } diff --git a/project/protobuf/modelcards.proto b/project/protobuf/modelcards.proto deleted file mode 100644 index 04c810c..0000000 --- a/project/protobuf/modelcards.proto +++ /dev/null @@ -1,48 +0,0 @@ -message Dataset - { - string name = 0 - string link = 0 - boolean sensitive = 0 - graphics graphics = 0 - string biasInput = 0 - } -message Graphic - { - string name = 0 - string image = 0 - } -message Graphics - { - string description = 0 - repeated string collection = 0 - } -message ModelCard - { - string schemaVersion = 0 - string modelDetails = 0 - string modelParameters = 0 - string quantitativeAnalysis = 0 - string considerations = 0 - string modelCategory = 0 - string biasModel = 0 - string biasOutput = 0 - } -message Owner - { - string name = 0 - string contact = 0 - } -message PerformanceMetric - { - string type = 0 - string value = 0 - string confidenceInterval = 0 - float threshold = 0 - string slice = 0 - string valueError = 0 - } -message Risk - { - string name = 0 - string mitigationStrategy = 0 - } diff --git a/project/shacl/model_card_schema.shacl.ttl b/project/shacl/model_card_schema.shacl.ttl new file mode 100644 index 0000000..9af53eb --- /dev/null +++ b/project/shacl/model_card_schema.shacl.ttl @@ -0,0 +1,164 @@ +@prefix famrel: . +@prefix my_datamodel: . +@prefix rdf: . +@prefix schema: . +@prefix sh: . +@prefix xsd: . + +my_datamodel:HasAliases a sh:NodeShape ; + sh:closed true ; + sh:description "A mixin applied to any class that can have aliases/alternateNames" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:order 0 ; + sh:path my_datamodel:aliases ] ; + sh:targetClass my_datamodel:HasAliases . + +my_datamodel:NamedThing a sh:NodeShape ; + sh:closed true ; + sh:description "A generic grouping for any identifiable entity" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:maxCount 1 ; + sh:order 0 ; + sh:path schema:identifier ], + [ sh:maxCount 1 ; + sh:order 1 ; + sh:path schema:name ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path schema:image ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path schema:description ] ; + sh:targetClass my_datamodel:NamedThing . + +my_datamodel:Registry a sh:NodeShape ; + sh:closed true ; + sh:description "Top level data container" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class schema:Person ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path my_datamodel:persons ], + [ sh:class schema:Organization ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path my_datamodel:organizations ] ; + sh:targetClass my_datamodel:Registry . + +my_datamodel:Relationship a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path my_datamodel:type ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path my_datamodel:related_to ], + [ sh:maxCount 1 ; + sh:order 1 ; + sh:path ] ; + sh:targetClass my_datamodel:Relationship . + +schema:Organization a sh:NodeShape ; + sh:closed true ; + sh:description "An organization such as a company or university" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:maxCount 1 ; + sh:order 1 ; + sh:path my_datamodel:founding_date ], + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path schema:description ], + [ sh:order 2 ; + sh:path my_datamodel:aliases ], + [ sh:maxCount 1 ; + sh:order 6 ; + sh:path schema:image ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path my_datamodel:mission_statement ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path schema:identifier ], + [ sh:maxCount 1 ; + sh:order 4 ; + sh:path schema:name ] ; + sh:targetClass schema:Organization . + +schema:Person a sh:NodeShape ; + sh:closed true ; + sh:description "A person (alive, dead, undead, or fictional)." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:maxCount 1 ; + sh:order 6 ; + sh:path schema:identifier ], + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path schema:description ], + [ sh:maxCount 1 ; + sh:order 9 ; + sh:path schema:image ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path schema:email ; + sh:pattern "^\\S+@[\\S+\\.]+\\S+" ], + [ sh:maxCount 1 ; + sh:maxInclusive 999 ; + sh:minInclusive 0 ; + sh:order 2 ; + sh:path my_datamodel:age_in_years ], + [ sh:class schema:PostalAddress ; + sh:description "The address at which a person currently lives" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNode ; + sh:order 3 ; + sh:path my_datamodel:current_address ], + [ sh:class my_datamodel:FamilialRelationship ; + sh:nodeKind sh:BlankNode ; + sh:order 4 ; + sh:path my_datamodel:has_familial_relationships ], + [ sh:maxCount 1 ; + sh:order 1 ; + sh:path schema:birthDate ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path schema:name ], + [ sh:order 5 ; + sh:path my_datamodel:aliases ] ; + sh:targetClass schema:Person . + +schema:PostalAddress a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:maxCount 1 ; + sh:order 1 ; + sh:path my_datamodel:city ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path my_datamodel:postal_code ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path my_datamodel:street ] ; + sh:targetClass schema:PostalAddress . + +my_datamodel:FamilialRelationship a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ], + [ sh:in ( famrel:01 famrel:02 famrel:01 ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path my_datamodel:type ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path my_datamodel:related_to ] ; + sh:targetClass my_datamodel:FamilialRelationship . diff --git a/project/shacl/modelcards.shacl.ttl b/project/shacl/modelcards.shacl.ttl deleted file mode 100644 index 0799edd..0000000 --- a/project/shacl/modelcards.shacl.ttl +++ /dev/null @@ -1,143 +0,0 @@ -@prefix modelcard: . -@prefix rdf: . -@prefix sh: . -@prefix xsd: . - -modelcard:Dataset a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A known bias in the input data." ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path modelcard:bias_input ], - [ sh:description "The name of the dataset." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path modelcard:name ], - [ sh:class modelcard:Graphics ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNode ; - sh:order 3 ; - sh:path modelcard:graphics ], - [ sh:description "Does this dataset contain human or other sensitive data?" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path modelcard:sensitive ], - [ sh:description "A link to the dataset." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path modelcard:link ] ; - sh:targetClass modelcard:Dataset . - -modelcard:Graphic a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:maxCount 1 ; - sh:order 0 ; - sh:path modelcard:name ], - [ sh:description "The graphic, encoded as a base64 string." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path modelcard:image ] ; - sh:targetClass modelcard:Graphic . - -modelcard:ModelCard a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Parameters for construction of the model." ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path modelcard:model_parameters ], - [ sh:description "Metadata about the model." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 1 ; - sh:path modelcard:model_details ], - [ sh:description "The category or parent class of the model." ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path modelcard:model_category ], - [ sh:description "A quantitative analysis of the model" ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path modelcard:quantitative_analysis ], - [ sh:description "The version of the schema." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path modelcard:schema_version ], - [ sh:description "What considerations should be taken into account regarding the model's construction, training, and application?" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path modelcard:considerations ], - [ sh:description "A known bias in the output of the model that was applied to the input data." ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path modelcard:bias_output ], - [ sh:description "A known bias in the model that was applied to the input data." ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path modelcard:bias_model ] ; - sh:targetClass modelcard:ModelCard . - -modelcard:Owner a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "The contact information of the owner." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path modelcard:contact ], - [ sh:description "The name of the owner." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path modelcard:name ] ; - sh:targetClass modelcard:Owner . - -modelcard:PerformanceMetric a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "The value of the performance metric." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path modelcard:value ], - [ sh:description "The name of the slice this metric was computed on. By default, assume this metric is not sliced." ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path modelcard:slice ], - [ sh:description "The type of performance metric." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path modelcard:type ], - [ sh:description "The decision threshold the metric was computed on." ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path modelcard:threshold ], - [ sh:description "The confidence interval of the metric." ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path modelcard:confidence_interval ] ; - sh:targetClass modelcard:PerformanceMetric . - -modelcard:Risk a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Strategy used to address this risk." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path modelcard:mitigation_strategy ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path modelcard:name ] ; - sh:targetClass modelcard:Risk . - -modelcard:Graphics a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:order 1 ; - sh:path modelcard:collection ], - [ sh:description "A description of this collection of graphics." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path modelcard:description ] ; - sh:targetClass modelcard:Graphics . - diff --git a/project/shex/model_card_schema.shex b/project/shex/model_card_schema.shex new file mode 100644 index 0000000..6cd9b11 --- /dev/null +++ b/project/shex/model_card_schema.shex @@ -0,0 +1,124 @@ +BASE +PREFIX rdf: +PREFIX xsd: +PREFIX linkml: +PREFIX schema: +PREFIX prov: + + +linkml:String xsd:string + +linkml:Integer xsd:integer + +linkml:Boolean xsd:boolean + +linkml:Float xsd:float + +linkml:Double xsd:double + +linkml:Decimal xsd:decimal + +linkml:Time xsd:dateTime + +linkml:Date xsd:date + +linkml:Datetime xsd:dateTime + +linkml:DateOrDatetime linkml:DateOrDatetime + +linkml:Uriorcurie IRI + +linkml:Uri IRI + +linkml:Ncname xsd:string + +linkml:Objectidentifier IRI + +linkml:Nodeidentifier NONLITERAL + + CLOSED { + ( $ ( @linkml:String ? ; + @linkml:String ? ; + @linkml:String ? + ) ; + rdf:type [ schema:PostalAddress ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + @ ; + @ + ) ; + rdf:type [ ] ? + ) +} + + { + ( $ @linkml:String * ; + rdf:type [ ] ? + ) +} + + ( + CLOSED { + ( $ ( schema:name @linkml:String ? ; + schema:description @linkml:String ? ; + schema:image @linkml:String ? + ) ; + rdf:type [ ] + ) + } OR @ OR @ +) + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + & ; + rdf:type [ ] ? ; + @linkml:String ? ; + @linkml:String ? ; + @linkml:String * + ) ; + rdf:type [ schema:Organization ] + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + & ; + rdf:type [ ] ? ; + schema:email @linkml:String ? ; + schema:birthDate @linkml:String ? ; + @linkml:Integer ? ; + @ ? ; + + @ * ; + @linkml:String * + ) ; + rdf:type [ schema:Person ] + ) +} + + CLOSED { + ( $ ( + @ * ; + @ * + ) ; + rdf:type [ ] ? + ) +} + + ( + CLOSED { + ( $ ( prov:startedAtTime @linkml:Date ? ; + prov:endedAtTime @linkml:Date ? ; + @linkml:String ? ; + @linkml:String ? + ) ; + rdf:type [ ] ? + ) + } OR @ +) diff --git a/project/sqlschema/model_card_schema.sql b/project/sqlschema/model_card_schema.sql new file mode 100644 index 0000000..6a24581 --- /dev/null +++ b/project/sqlschema/model_card_schema.sql @@ -0,0 +1,75 @@ +CREATE TABLE "Address" ( + street TEXT, + city TEXT, + postal_code TEXT, + PRIMARY KEY (street, city, postal_code) +); + +CREATE TABLE "NamedThing" ( + id TEXT NOT NULL, + name TEXT, + description TEXT, + image TEXT, + PRIMARY KEY (id) +); + +CREATE TABLE "Organization" ( + id TEXT NOT NULL, + name TEXT, + description TEXT, + image TEXT, + mission_statement TEXT, + founding_date TEXT, + PRIMARY KEY (id) +); + +CREATE TABLE "Person" ( + id TEXT NOT NULL, + name TEXT, + description TEXT, + image TEXT, + primary_email TEXT, + birth_date TEXT, + age_in_years INTEGER, + current_address TEXT, + PRIMARY KEY (id) +); + +CREATE TABLE "Registry" ( + persons TEXT, + organizations TEXT, + PRIMARY KEY (persons, organizations) +); + +CREATE TABLE "Relationship" ( + started_at_time DATE, + ended_at_time DATE, + related_to TEXT, + type TEXT, + PRIMARY KEY (started_at_time, ended_at_time, related_to, type) +); + +CREATE TABLE "FamilialRelationship" ( + started_at_time DATE, + ended_at_time DATE, + related_to TEXT NOT NULL, + type VARCHAR(10) NOT NULL, + "Person_id" TEXT, + PRIMARY KEY (started_at_time, ended_at_time, related_to, type, "Person_id"), + FOREIGN KEY(related_to) REFERENCES "Person" (id), + FOREIGN KEY("Person_id") REFERENCES "Person" (id) +); + +CREATE TABLE "Organization_aliases" ( + backref_id TEXT, + aliases TEXT, + PRIMARY KEY (backref_id, aliases), + FOREIGN KEY(backref_id) REFERENCES "Organization" (id) +); + +CREATE TABLE "Person_aliases" ( + backref_id TEXT, + aliases TEXT, + PRIMARY KEY (backref_id, aliases), + FOREIGN KEY(backref_id) REFERENCES "Person" (id) +); diff --git a/project/sqlschema/modelcards.sql b/project/sqlschema/modelcards.sql deleted file mode 100644 index 5eb1a86..0000000 --- a/project/sqlschema/modelcards.sql +++ /dev/null @@ -1,56 +0,0 @@ - - -CREATE TABLE dataset ( - name TEXT, - link TEXT, - sensitive BOOLEAN, - graphics TEXT, - bias_input TEXT, - PRIMARY KEY (name, link, sensitive, graphics, bias_input) -); - -CREATE TABLE graphic ( - name TEXT, - image TEXT, - PRIMARY KEY (name, image) -); - -CREATE TABLE graphics ( - description TEXT, - collection TEXT, - PRIMARY KEY (description, collection) -); - -CREATE TABLE "ModelCard" ( - schema_version TEXT, - model_details TEXT NOT NULL, - model_parameters TEXT, - quantitative_analysis TEXT, - considerations TEXT, - model_category TEXT, - bias_model TEXT, - bias_output TEXT, - PRIMARY KEY (schema_version, model_details, model_parameters, quantitative_analysis, considerations, model_category, bias_model, bias_output) -); - -CREATE TABLE owner ( - name TEXT, - contact TEXT, - PRIMARY KEY (name, contact) -); - -CREATE TABLE performance_metric ( - type TEXT NOT NULL, - value TEXT, - confidence_interval TEXT, - threshold FLOAT, - slice TEXT, - value_error TEXT, - PRIMARY KEY (type, value, confidence_interval, threshold, slice, value_error) -); - -CREATE TABLE risk ( - name TEXT, - mitigation_strategy TEXT, - PRIMARY KEY (name, mitigation_strategy) -); diff --git a/pyproject.toml b/pyproject.toml index b775f20..7216db2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,20 +1,30 @@ [tool.poetry] -name = "linkml-project-template" +name = "model_card_schema" version = "0.1.0" -description = "Enter description of your project here" -authors = ["Mark A. Miller "] +description = "modelcards linkml rendering" +authors = ["marcin p. joachimiak "] license = "MIT" -include = ["README.md", "src/linkml", "project"] +readme = "README.md" +include = ["README.md", "src/model_card_schema/schema", "project"] [tool.poetry.dependencies] python = "^3.9" linkml-runtime = "^1.1.24" +[tool.poetry-dynamic-versioning] +enable = true +vcs = "git" +style = "pep440" + [tool.poetry.dev-dependencies] -linkml = "^1.2.6" +linkml = "^1.3.5" mkdocs-material = "^8.2.8" mkdocs-mermaid2-plugin = "^0.6.0" +schemasheets = "^0.1.14" [build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"] +build-backend = "poetry_dynamic_versioning.backend" + +[tool.poetry.extras] +docs = ["linkml", "mkdocs-material"] \ No newline at end of file diff --git a/src/data/examples/Person-001.yaml b/src/data/examples/Person-001.yaml index 20b1982..c9461f3 100644 --- a/src/data/examples/Person-001.yaml +++ b/src/data/examples/Person-001.yaml @@ -1,4 +1,6 @@ -id: EXAMPLE:001 +# Example data object +--- +id: example:Person001 name: foo bar primary_email: foo.bar@example.com age_in_years: 33 diff --git a/src/docs/about.md b/src/docs/about.md index 3180836..6ca30ff 100644 --- a/src/docs/about.md +++ b/src/docs/about.md @@ -1,3 +1,3 @@ -# About my-project +# model-card-schema -... +modelcards linkml rendering diff --git a/src/linkml/modelcards.yaml b/src/linkml/modelcards.yaml deleted file mode 100644 index 15d5d4f..0000000 --- a/src/linkml/modelcards.yaml +++ /dev/null @@ -1,173 +0,0 @@ -id: https://w3id.org/linkml/modelcard -name: Model_Card -description: |- - An EXPERIMENTAL rendering of the model card schema in LinkML - - This is not the official model card schema! - -imports: -- linkml:types -prefixes: - modelcard: https://w3id.org/linkml/modelcard/ - linkml: https://w3id.org/linkml/ -default_prefix: modelcard -slots: - name: - range: string - contact: - description: The contact information of the owner. - link: - description: A link to the dataset. - sensitive: - description: Does this dataset contain human or other sensitive data? - range: boolean - graphics: - range: Graphics - type: - description: The type of performance metric. - required: true - value: - description: The value of the performance metric. - value_error: - description: The estimated error for the performance metric. - confidence_interval: - description: The confidence interval of the metric. - threshold: - description: The decision threshold the metric was computed on. - range: float - slice: - description: The name of the slice this metric was computed on. By default, assume - this metric is not sliced. - description: - description: A description of this collection of graphics. - collection: - multivalued: true - image: - description: The graphic, encoded as a base64 string. - bias_input: - description: A known bias in the input data. - bias_model: - description: A known bias in the model that was applied to the input data. - bias_output: - description: A known bias in the output of the model that was applied to the input data. - mitigation_strategy: - description: Strategy used to address this risk. - schema_version: - description: The version of the schema. - model_category: - description: The category or parent class of the model. - model_details: - description: Metadata about the model. - required: true - model_parameters: - description: Parameters for construction of the model. - quantitative_analysis: - description: A quantitative analysis of the model - considerations: - description: What considerations should be taken into account regarding the model's - construction, training, and application? -classes: - owner: - slots: - - name - - contact - slot_usage: - name: - description: The name of the owner. - contact: - description: The contact information of the owner. - dataset: - slots: - - name - - link - - sensitive - - graphics - - bias_input - slot_usage: - name: - description: The name of the dataset. - link: - description: A link to the dataset. - sensitive: - description: Does this dataset contain human or other sensitive data? - range: boolean - graphics: - range: Graphics - bias_input: - description: A known bias in the input data. - performance_metric: - slots: - - type - - value - - confidence_interval - - threshold - - slice - slot_usage: - type: - description: The type of performance metric. - required: true - value: - description: The value of the performance metric. - confidence_interval: - description: The confidence interval of the metric. - value_error: - description: The estimated error for the performance metric. - threshold: - description: The decision threshold the metric was computed on. - range: float - slice: - description: The name of the slice this metric was computed on. By default, - assume this metric is not sliced. - Graphics: - slots: - - description - - collection - slot_usage: - description: - description: A description of this collection of graphics. - collection: - multivalued: true - graphic: - slots: - - name - - image - slot_usage: - image: - description: The graphic, encoded as a base64 string. - risk: - slots: - - name - - mitigation_strategy - slot_usage: - mitigation_strategy: - description: Strategy used to address this risk. - ModelCard: - tree_root: true - slots: - - schema_version - - model_details - - model_parameters - - quantitative_analysis - - considerations - - model_category - - bias_model - - bias_output - slot_usage: - schema_version: - description: The version of the schema. - model_details: - description: Metadata about the model. - required: true - model_parameters: - description: Parameters for construction of the model. - quantitative_analysis: - description: A quantitative analysis of the model - considerations: - description: What considerations should be taken into account regarding the - model's construction, training, and application? - model_category: - description: The category or parent class of the model. - bias_model: - description: A known bias in the model that was applied to the input data. - bias_output: - description: A known bias in the output of the model that was applied to the input data. diff --git a/src/modelcards/_version.py b/src/modelcards/_version.py new file mode 100644 index 0000000..7edc9ee --- /dev/null +++ b/src/modelcards/_version.py @@ -0,0 +1,7 @@ +from importlib.metadata import version, PackageNotFoundError + +try: + __version__ = version(__name__) +except PackageNotFoundError: + # package not installed + __version__ = "0.0.0" diff --git a/src/modelcards/datamodel/__init__.py b/src/modelcards/datamodel/__init__.py new file mode 100644 index 0000000..2b4c425 --- /dev/null +++ b/src/modelcards/datamodel/__init__.py @@ -0,0 +1 @@ +from .model_card_schema import * diff --git a/src/modelcards/schema/modelcards.yaml b/src/modelcards/schema/modelcards.yaml new file mode 100644 index 0000000..b798ab8 --- /dev/null +++ b/src/modelcards/schema/modelcards.yaml @@ -0,0 +1,23 @@ +--- +id: https://w3id.org/bbop/model-card-schema +name: model-card-schema +title: model-card-schema +description: |- + modelcards linkml rendering +license: MIT +see_also: + - https://bbop.github.io/model-card-schema + +prefixes: + model_card_schema: https://w3id.org/bbop/model-card-schema/ + linkml: https://w3id.org/linkml/ + biolink: https://w3id.org/biolink/ + schema: http://schema.org/ + PATO: http://purl.obolibrary.org/obo/PATO_ + example: https://example.org/ +default_prefix: model_card_schema +default_range: string + +imports: + - linkml:types + - personinfo_enums diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..5759f7f --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +"""Tests for model-card-schema.""" diff --git a/tests/test_data.py b/tests/test_data.py new file mode 100644 index 0000000..8012387 --- /dev/null +++ b/tests/test_data.py @@ -0,0 +1,22 @@ +"""Data test.""" +import os +import glob +import unittest + +from linkml_runtime.loaders import yaml_loader +from model_card_schema.datamodel.model_card_schema import Person + +ROOT = os.path.join(os.path.dirname(__file__), '..') +DATA_DIR = os.path.join(ROOT, "src", "data", "examples") + +EXAMPLE_FILES = glob.glob(os.path.join(DATA_DIR, '*.yaml')) + + +class TestData(unittest.TestCase): + """Test data and datamodel.""" + + def test_data(self): + """Date test.""" + for path in EXAMPLE_FILES: + obj = yaml_loader.load(path, target_class=Person) + assert obj diff --git a/utils/get-value.sh b/utils/get-value.sh index bc10236..88f3b67 100644 --- a/utils/get-value.sh +++ b/utils/get-value.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # get the value of a key in the about.yaml file # https://stackoverflow.com/questions/1221833/pipe-output-and-capture-exit-status-in-bash -grep $1 about.yaml | sed "s/$1:[[:space:]]//" ; test ${PIPESTATUS[0]} -eq 0 +grep "^$1:" about.yaml | sed "s/$1:[[:space:]]//" ; test "${PIPESTATUS[0]}" -eq 0 From b5daf348f73b8f2fd2b85ee1990d7dca3e2f630c Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Wed, 21 Jun 2023 12:42:56 -0700 Subject: [PATCH 02/76] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index c4897fe..78d603d 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,6 @@ modelcards linkml rendering -## Website - -[https://bbop.github.io/model-card-schema](https://bbop.github.io/model-card-schema) - ## Repository Structure * [examples/](examples/) - example data From f5ca8c9c786822464c6c80d01a47ef8db11e432c Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Mon, 14 Aug 2023 12:58:01 -0700 Subject: [PATCH 03/76] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 78d603d..531e39c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ # model-card-schema -modelcards linkml rendering + +A LinkML schema for Model Cards model as published in [Model Cards for Model Reporting](https://arxiv.org/abs/1810.03993). Inspired by datasheets as used in the electronics and other industries, Gebru et al. proposed that every dataset "be accompanied with a datasheet that documents its motivation, composition, collection process, recommended uses, and so on". To this end the authors create a series of topics and over 50 questions addressing different aspects of datasets, also useful in an AI/ML context. An example of completed datasheet for datasets can be found here: Structured dataset documentation: a datasheet for CheXpert + +Google is working with a different model called Data Cards, which in practice is close to the original Datasheets for Datasets template. + +This repository stores a LinkML schema representation for the original Datasheets for Datasets model, representing the topics, sets of questions, and expectations about entities and fields expected in the answers (work in progress). Beyond a less structured markdown template for this model (e.g. template for datasheet for dataset) we are not aware of any other structured form representing Datasheets for Datasets. ## Repository Structure From cd9837daa0ddb28bf389a6e145ecd4a3d74de409 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Mon, 14 Aug 2023 13:07:22 -0700 Subject: [PATCH 04/76] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 531e39c..299e2ae 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # model-card-schema -A LinkML schema for Model Cards model as published in [Model Cards for Model Reporting](https://arxiv.org/abs/1810.03993). Inspired by datasheets as used in the electronics and other industries, Gebru et al. proposed that every dataset "be accompanied with a datasheet that documents its motivation, composition, collection process, recommended uses, and so on". To this end the authors create a series of topics and over 50 questions addressing different aspects of datasets, also useful in an AI/ML context. An example of completed datasheet for datasets can be found here: Structured dataset documentation: a datasheet for CheXpert +A LinkML schema for the Model Cards model as published in [Model Cards for Model Reporting](https://arxiv.org/abs/1810.03993), which is an effort to democratize AI/ML technologies including increasing transparency. Model Cards represent information about trained machine learning models and can provide data on benchmarked model evaluations across a variety of conditions, including varying cultural, demographic, or phenotypic factors. Model Cards can also specify the applicable contexts for using the trained model and other relevant information. -Google is working with a different model called Data Cards, which in practice is close to the original Datasheets for Datasets template. +This repository stores a LinkML schema representation for the original Model Cards model, representing the topics, sets of questions, and expectations about entities and fields expected in the answers (work in progress). -This repository stores a LinkML schema representation for the original Datasheets for Datasets model, representing the topics, sets of questions, and expectations about entities and fields expected in the answers (work in progress). Beyond a less structured markdown template for this model (e.g. template for datasheet for dataset) we are not aware of any other structured form representing Datasheets for Datasets. +The Google Model Card model is also supported by the Model Card Toolkit for creating Model Card instances for trained models [Introducing the Model Card Toolkit for Easier Model Transparency Reporting](https://ai.googleblog.com/2020/07/introducing-model-card-toolkit-for.html). In addition HuggingFace has adopted Model Cards and has released a [Model Cart Writing Tool](https://huggingface.co/spaces/huggingface/Model_Cards_Writing_Tool). ## Repository Structure From 3e96d2ffadda6230a0e080fc7ad938873286925b Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Mon, 14 Aug 2023 13:14:16 -0700 Subject: [PATCH 05/76] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 299e2ae..039245f 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ A LinkML schema for the Model Cards model as published in [Model Cards for Model Reporting](https://arxiv.org/abs/1810.03993), which is an effort to democratize AI/ML technologies including increasing transparency. Model Cards represent information about trained machine learning models and can provide data on benchmarked model evaluations across a variety of conditions, including varying cultural, demographic, or phenotypic factors. Model Cards can also specify the applicable contexts for using the trained model and other relevant information. -This repository stores a LinkML schema representation for the original Model Cards model, representing the topics, sets of questions, and expectations about entities and fields expected in the answers (work in progress). +This repository stores a LinkML schema representation for the original Model Cards model, representing the topics, sets of questions, and expectations about entities and fields expected in the answers (work in progress). [HuggingFace provides a markdown Model Card template](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/templates/modelcard_template.md) and their are [JSON and Proto versions provided by the Model Card Toolkit](https://www.tensorflow.org/responsible_ai/model_card_toolkit/guide/concepts###schema). -The Google Model Card model is also supported by the Model Card Toolkit for creating Model Card instances for trained models [Introducing the Model Card Toolkit for Easier Model Transparency Reporting](https://ai.googleblog.com/2020/07/introducing-model-card-toolkit-for.html). In addition HuggingFace has adopted Model Cards and has released a [Model Cart Writing Tool](https://huggingface.co/spaces/huggingface/Model_Cards_Writing_Tool). +The Google Model Card model is also supported by the Model Card Toolkit for creating Model Card instances for trained models [Introducing the Model Card Toolkit for Easier Model Transparency Reporting](https://ai.googleblog.com/2020/07/introducing-model-card-toolkit-for.html). In addition HuggingFace has adopted Model Cards and has released a [Model Cart Writing Tool](https://huggingface.co/spaces/huggingface/Model_Cards_Writing_Tool), Amazon AWS also has support for [Amazon SageMaker Model Cards](https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards.html) including creation of Model Card instances using the [SageMaker Python SDK](https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-create.html), and Model Cards can also be generated via scikit-learn [How to create and deploy a model card in the cloud with Scikit-Learn](https://cloud.google.com/blog/products/ai-machine-learning/create-a-model-card-with-scikit-learn). ## Repository Structure From 82895eb9ab6db69113bb6ea7971d4535395b437f Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:50:48 -0700 Subject: [PATCH 06/76] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 039245f..bb2b04e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +Executive Order 14168: This repository is under review for potential modification in compliance with Administration directives. + # model-card-schema From 97643a5882ef511155c02ff57d4ecafc87c73890 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Wed, 19 Nov 2025 21:19:09 -0800 Subject: [PATCH 07/76] Enhance LinkML schema to 100% Google MCT coverage with HuggingFace and Papers with Code integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This comprehensive enhancement upgrades the model card schema from experimental (~20% coverage) to a production-ready implementation with complete Google Model Card Toolkit v0.0.2 support plus community integrations. Schema enhancements: - Added 22 new classes (7 → 27 total) organized into 8 functional groups - Complete ModelDetails structure with version, license, citations, references - Full ModelParameters with architecture, datasets, I/O format specifications - QuantitativeAnalysis with confidence intervals for metrics - Comprehensive Considerations with users, use cases, limitations, tradeoffs, ethical risks - Benchmark integration (model-index) for Papers with Code leaderboards - HuggingFace metadata fields (framework, pipeline_tag, base_model, tags, etc.) New classes: - Core: Version, License, Reference, Citation, CitationStyleEnum - Structures: ModelDetails, ModelParameters, QuantitativeAnalysis, Considerations - Data: ConfidenceInterval, SensitiveData, KeyVal, GraphicsCollection - Considerations: User, UseCase, Limitation, Tradeoff - Benchmarking: Task, BenchmarkDataset, BenchmarkMetric, BenchmarkSource, BenchmarkResult, ModelIndex Enhanced existing classes: - dataSet: Added description field, changed sensitive to SensitiveData object - performanceMetric: Added value_error field, structured confidence_interval - modelCard: Added all HuggingFace and benchmark fields Generated artifacts: - Python datamodel (76KB, 2,300+ lines) - JSON Schema, SQL DDL, Protocol Buffers, GraphQL, OWL, ShEx, SHACL, Excel, JSON-LD Documentation: - Added CLAUDE.md with comprehensive repository guidance - Added SCHEMA_ENHANCEMENT_SUMMARY.md with complete enhancement details - Schema now supports research, community, and enterprise use cases Schema validation: ✓ Passes linkml-lint with minor naming warnings (non-blocking) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CLAUDE.md | 171 + SCHEMA_ENHANCEMENT_SUMMARY.md | 335 ++ poetry.lock | 2130 ++++++++++-- project/excel/modelcards.xlsx | Bin 0 -> 18274 bytes project/graphql/modelcards.graphql | 220 ++ project/jsonld/modelcards.context.jsonld | 335 ++ project/jsonld/modelcards.jsonld | 3660 +++++++++++++++++++++ project/jsonschema/modelcards.schema.json | 1210 +++++++ project/modelcards.py | 1535 +++++++++ project/owl/modelcards.owl.ttl | 1544 +++++++++ project/prefixmap/modelcards.yaml | 4 + project/protobuf/modelcards.proto | 215 ++ project/shacl/modelcards.shacl.ttl | 754 +++++ project/shex/modelcards.shex | 309 ++ project/sqlschema/modelcards.sql | 552 ++++ src/linkml/modelcards.yaml | 964 +++++- src/modelcards/datamodel/__init__.py | 2 +- src/modelcards/datamodel/modelcards.py | 1449 +++++++- 18 files changed, 14879 insertions(+), 510 deletions(-) create mode 100644 CLAUDE.md create mode 100644 SCHEMA_ENHANCEMENT_SUMMARY.md create mode 100644 project/excel/modelcards.xlsx create mode 100644 project/graphql/modelcards.graphql create mode 100644 project/jsonld/modelcards.context.jsonld create mode 100644 project/jsonld/modelcards.jsonld create mode 100644 project/jsonschema/modelcards.schema.json create mode 100644 project/modelcards.py create mode 100644 project/owl/modelcards.owl.ttl create mode 100644 project/prefixmap/modelcards.yaml create mode 100644 project/protobuf/modelcards.proto create mode 100644 project/shacl/modelcards.shacl.ttl create mode 100644 project/shex/modelcards.shex create mode 100644 project/sqlschema/modelcards.sql diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..3bd510e --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,171 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a LinkML schema repository for Model Cards as described in the paper "Model Cards for Model Reporting" (https://arxiv.org/abs/1810.03993). Model Cards provide standardized documentation for trained machine learning models including benchmarks, applicable contexts, and demographic considerations. + +The project uses the LinkML (Linked Data Modeling Language) framework to define schemas that can be automatically compiled into multiple target formats (JSON Schema, Python datamodels, SQL, GraphQL, OWL, etc.). + +## Architecture + +### Schema Source Files + +**Primary Schema**: **`src/linkml/modelcards.yaml`** - Comprehensive LinkML schema incorporating: +- **Google Model Card Toolkit v0.0.2** - Complete implementation with all core classes +- **HuggingFace Model Cards** - Community metadata fields (framework, pipeline_tag, base_model, etc.) +- **Papers with Code** - Benchmark integration (model-index structure) + +The schema includes 27 classes organized into functional groups: + +**Core Metadata**: Version, License, owner, Reference, Citation +**Model Details**: ModelDetails (with overview, documentation, owners, version, licenses, references, citations) +**Datasets**: dataSet, SensitiveData, GraphicsCollection, graphic +**Model Parameters**: ModelParameters, KeyVal +**Performance**: performanceMetric, ConfidenceInterval, QuantitativeAnalysis +**Considerations**: User, UseCase, Limitation, Tradeoff, risk, Considerations +**Benchmarking**: Task, BenchmarkDataset, BenchmarkMetric, BenchmarkSource, BenchmarkResult, ModelIndex +**Root**: modelCard + +**Legacy Schema**: `src/modelcards/schema/modelcards.yaml` exists but is a minimal stub version. + +**IMPORTANT**: The `about.yaml` configuration references `src/model_card_schema/schema/model_card_schema.yaml` but this path does NOT exist. The actual schema paths use `modelcards` (not `model_card_schema`). This discrepancy means some make targets may not work correctly. + +### Generated Artifacts + +The `project/` directory contains auto-generated files and should NEVER be edited directly: +- `project/jsonschema/` - JSON Schema files +- `project/protobuf/` - Protocol Buffer definitions +- `project/sqlschema/` - SQL DDL +- `project/owl/` - OWL ontology +- `project/graphql/` - GraphQL schema +- `project/shex/`, `project/shacl/` - Shape expressions +- `project/excel/` - Excel representation + +### Python Datamodel + +Generated Python classes are in `src/modelcards/datamodel/modelcards.py` and should not be edited directly. They are regenerated from the LinkML schema via `make gen-project`. + +## Common Commands + +### Build and Generation + +```bash +# Generate all project artifacts from schema +make gen-project + +# Generate documentation +make gendoc + +# Generate everything (project + docs) +make all + +# Build and serve documentation locally +make testdoc +``` + +### Testing + +```bash +# Run all tests (schema validation + Python tests + example validation) +make test + +# Run only Python unit tests +make test-python + +# Run schema validation +make test-schema + +# Validate example data files +make test-examples +``` + +### Development + +```bash +# Install dependencies with Poetry +make install + +# Lint the schema +make lint + +# Serve docs locally (on http://127.0.0.1:8000) +make serve +``` + +### Schema Updates + +When modifying the LinkML schema in `src/linkml/modelcards.yaml`: + +1. Edit the schema YAML file +2. Run `poetry run gen-project -d project src/linkml/modelcards.yaml` to generate artifacts +3. Run `cp project/modelcards.py src/modelcards/datamodel/` to update Python datamodel +4. Run `poetry run linkml-lint src/linkml/modelcards.yaml` to validate the schema +5. Run `make gendoc` to update documentation + +**Note**: Direct usage of `make gen-project` may fail due to path discrepancies in `about.yaml`. Use the direct `poetry run gen-project` command instead. + +### Google Sheets Integration + +The project is configured to compile schemas from Google Sheets: + +```bash +# Compile schema from Google Sheets (requires Sheet ID in about.yaml) +make compile-sheets +``` + +## Dependency Management + +This project uses **Poetry** for Python dependency management: + +- Dependencies are defined in `pyproject.toml` +- Lock file is `poetry.lock` +- All commands should be run via `poetry run` (the Makefile handles this with `RUN = poetry run`) + +## Testing + +The test suite in `tests/test_data.py` loads example YAML files from `src/data/examples/` and validates them against the Python datamodel using `linkml_runtime.loaders.yaml_loader`. + +To add new test cases, place valid YAML examples in `src/data/examples/`. + +## Documentation + +Documentation is built with MkDocs Material theme: +- Configuration: `mkdocs.yml` +- Source markdown: `src/docs/` +- Generated docs: `docs/` (created by `make gendoc`) +- Published to: https://bbop.github.io/model-card-schema + +## Schema Coverage + +The enhanced schema provides comprehensive model card capabilities: + +### Google Model Card Toolkit v0.0.2 (100% coverage) +- Complete ModelDetails with version, license, citations +- Full ModelParameters with architecture, data, I/O formats +- QuantitativeAnalysis with metrics and confidence intervals +- Considerations with users, use cases, limitations, tradeoffs, ethical risks +- Graphics support with base64 PNG encoding + +### HuggingFace/Community Integration +- Framework metadata (framework, framework_version, library_name) +- Task classification (pipeline_tag) +- Language support +- Fine-tuning provenance (base_model) +- Discovery metadata (tags, datasets, metrics) + +### Papers with Code Benchmark Integration +- Complete model-index structure +- Task, dataset, and metric specifications +- Source attribution +- Leaderboard compatibility + +## Important Notes + +- The project follows the LinkML project cookiecutter structure +- Never edit files in `project/` directory - they are auto-generated +- The schema name discrepancy (`model_card_schema` in config vs `modelcards` in actual files) may cause issues with some make targets +- Generated Python datamodels must be manually copied to `src/modelcards/datamodel/` after generation +- The schema passes linting with minor naming convention warnings (stylistic only, not functional) +- Runtime dependencies (linkml-runtime, jsonasobj2) required for Python datamodel usage diff --git a/SCHEMA_ENHANCEMENT_SUMMARY.md b/SCHEMA_ENHANCEMENT_SUMMARY.md new file mode 100644 index 0000000..98d13fd --- /dev/null +++ b/SCHEMA_ENHANCEMENT_SUMMARY.md @@ -0,0 +1,335 @@ +# Model Card Schema Enhancement Summary + +## Overview + +This document summarizes the comprehensive enhancement of the LinkML model card schema implemented on 2025-11-19. + +## What Was Done + +### 1. Comprehensive Schema Analysis + +Performed web-enabled analysis of model card schemas from multiple authoritative sources: +- **Google Model Card Toolkit v0.0.2** (JSON Schema, Protocol Buffers) +- **HuggingFace Model Cards** (YAML metadata + Papers with Code integration) +- **AWS SageMaker Model Cards** (JSON API schema) +- **NVIDIA Model Card++** (Extended governance framework) +- **OpenAI Model/System Cards** (Narrative approach) +- **Papers with Code model-index** (Benchmark tracking) +- **Google Vertex AI ML Metadata** (Cloud platform integration) + +### 2. Schema Enhancement Implementation + +Upgraded `src/linkml/modelcards.yaml` from ~20% to **100% Google Model Card Toolkit v0.0.2 coverage** plus community integrations. + +#### Added Classes (22 new classes) + +**Core Metadata (5 classes):** +- `Version` - Model version with name, date, changelog +- `License` - SPDX identifier or custom license text +- `Reference` - Related resources and citations +- `Citation` - Formatted citations (MLA, APA, Chicago, IEEE) +- `CitationStyleEnum` - Citation format enumeration + +**Structured Parent Classes (4 classes):** +- `ModelDetails` - Comprehensive metadata container with overview, documentation, owners, version, licenses, references, citations, path +- `ModelParameters` - Architecture, datasets, input/output format specifications +- `QuantitativeAnalysis` - Performance metrics and visualizations container +- `Considerations` - Users, use cases, limitations, tradeoffs, ethical considerations + +**Data Structures (4 classes):** +- `ConfidenceInterval` - Statistical confidence bounds (lower_bound, upper_bound) +- `SensitiveData` - PII and sensitive information tracking +- `KeyVal` - Key-value pairs for format mappings +- `GraphicsCollection` - Organized visualization collections + +**Considerations (4 classes):** +- `User` - Intended user type descriptions +- `UseCase` - Application scenario descriptions +- `Limitation` - Known constraint descriptions +- `Tradeoff` - Performance tradeoff descriptions + +**Benchmark Integration (5 classes):** +- `Task` - ML task specification (type, name) +- `BenchmarkDataset` - Dataset with config, split, revision +- `BenchmarkMetric` - Metric results with configuration +- `BenchmarkSource` - Source attribution (name, URL) +- `BenchmarkResult` - Complete benchmark entry +- `ModelIndex` - Papers with Code model-index structure + +#### Enhanced Existing Classes + +**dataSet:** +- Added `description` field +- Changed `sensitive` from boolean to `SensitiveData` object +- Updated `graphics` range to `GraphicsCollection` + +**performanceMetric:** +- Added missing `value_error` field to class slots +- Changed `confidence_interval` from undefined to `ConfidenceInterval` object + +**modelCard (root):** +- Added structured ranges for all parent sections +- Added HuggingFace metadata fields (framework, framework_version, library_name, pipeline_tag, language, base_model, tags, datasets, metrics) +- Added `model_index` for Papers with Code integration + +#### Added Enums + +- `CitationStyleEnum` - MLA, APA, Chicago, IEEE + +### 3. Generated Artifacts + +Successfully generated all target formats: +- ✓ Python datamodel (`project/modelcards.py` → `src/modelcards/datamodel/modelcards.py`) +- ✓ JSON Schema (`project/jsonschema/`) +- ✓ SQL DDL (`project/sqlschema/`) +- ✓ Protocol Buffers (`project/protobuf/`) +- ✓ GraphQL schema (`project/graphql/`) +- ✓ OWL ontology (`project/owl/`) +- ✓ ShEx expressions (`project/shex/`) +- ✓ SHACL shapes (`project/shacl/`) +- ✓ Excel representation (`project/excel/`) +- ✓ JSON-LD context (`project/jsonld/`) +- ✓ YAML prefixes (`project/prefixmap/`) + +### 4. Documentation Updates + +Updated `CLAUDE.md` with: +- Comprehensive schema coverage breakdown +- Corrected schema file locations and workflow +- Detailed class organization (27 classes in 8 functional groups) +- Schema update procedures with direct commands +- Coverage summaries for each integration (Google MCT, HuggingFace, Papers with Code) + +## Schema Statistics + +### Before Enhancement +- **Classes**: 7 (modelCard, owner, dataSet, performanceMetric, graphics, graphic, risk) +- **Coverage**: ~20% of Google MCT v0.0.2 +- **Integrations**: None +- **Lines of Code**: 185 + +### After Enhancement +- **Classes**: 27 (organized into 8 functional groups) +- **Enums**: 1 (CitationStyleEnum) +- **Slots**: 90+ global slot definitions +- **Coverage**: 100% Google MCT v0.0.2 + HuggingFace + Papers with Code +- **Lines of Code**: 967 +- **Generated Python**: 76KB (2,300+ lines) + +## Coverage Breakdown + +### Google Model Card Toolkit v0.0.2 (100%) +✓ Complete ModelDetails structure +✓ Full ModelParameters with I/O formats +✓ QuantitativeAnalysis with confidence intervals +✓ Considerations with all subcategories +✓ Version, License, Citation management +✓ Graphics with base64 encoding +✓ Sensitive data tracking + +### HuggingFace Model Cards +✓ Framework metadata (framework, framework_version, library_name) +✓ Task classification (pipeline_tag) +✓ Language support (multivalued) +✓ Fine-tuning provenance (base_model) +✓ Discovery metadata (tags, datasets, metrics) + +### Papers with Code +✓ Complete model-index structure +✓ Task, dataset, metric specifications +✓ Source attribution +✓ Benchmark results tracking +✓ Leaderboard compatibility + +## Validation Results + +### Schema Linting +- **Status**: ✓ Valid with minor warnings +- **Warnings**: 10 naming convention suggestions (stylistic only, not functional) + - 6 class names (owner, graphic, dataSet, performanceMetric, risk, modelCard) + - 4 enum values (MLA, APA, Chicago, IEEE) +- **Errors**: 0 + +### Generation +- **Status**: ✓ Successful +- **Warnings**: 9 overlapping type/slot name warnings (date slot vs. date type - expected behavior) +- **Artifacts**: 12 target formats generated successfully + +## Files Modified + +1. **`src/linkml/modelcards.yaml`** - Complete rewrite with 967 lines (was 185 lines) +2. **`src/modelcards/datamodel/__init__.py`** - Updated import from `model_card_schema` to `modelcards` +3. **`src/modelcards/datamodel/modelcards.py`** - Regenerated Python datamodel (76KB) +4. **`CLAUDE.md`** - Enhanced with schema coverage details and corrected workflows +5. **`project/*`** - All generated artifacts updated + +## Usage Examples + +### Basic Model Card (Minimal Required Fields) +```yaml +model_details: + name: "my-model-v1" + overview: "A text classification model" +``` + +### Complete Model Card with Google MCT Fields +```yaml +schema_version: "0.0.2" +model_details: + name: "bert-base-classifier" + overview: "BERT-based text classifier for sentiment analysis" + documentation: "Full usage guide at docs/model-guide.md" + owners: + - name: "ML Team" + contact: "ml-team@example.com" + version: + name: "1.2.0" + date: "2025-11-19" + diff: "Improved accuracy by 5% on test set" + licenses: + - identifier: "Apache-2.0" + citations: + - style: APA + citation: "Smith, J. (2025). BERT Classifier. arXiv:2501.12345" + +model_parameters: + model_architecture: "BERT-base with classification head" + data: + - name: "IMDb Reviews" + link: "https://ai.stanford.edu/~amaas/data/sentiment/" + description: "50,000 movie reviews for sentiment analysis" + sensitive: + sensitive_data: [] + input_format: "Text string, max 512 tokens" + output_format: "Binary sentiment (positive/negative) with confidence score" + +quantitative_analysis: + performance_metrics: + - type: "accuracy" + value: 0.92 + confidence_interval: + lower_bound: 0.91 + upper_bound: 0.93 + - type: "F1" + value: 0.91 + slice: "positive_class" + +considerations: + users: + - description: "Content moderators and sentiment analysis practitioners" + use_cases: + - description: "Automated sentiment analysis of product reviews" + limitations: + - description: "May struggle with sarcasm and complex linguistic constructs" + ethical_considerations: + - name: "Bias in training data" + mitigation_strategy: "Balanced dataset across demographics and topics" +``` + +### With HuggingFace/Papers with Code Integration +```yaml +# ... all above fields ... + +framework: "PyTorch" +framework_version: "2.0.1" +library_name: "transformers" +pipeline_tag: "text-classification" +language: + - "en" +tags: + - "sentiment-analysis" + - "bert" + - "pytorch" +datasets: + - "imdb" +metrics: + - "accuracy" + - "f1" + +model_index: + - name: "bert-base-classifier" + results: + - task: + type: "text-classification" + name: "Sentiment Analysis" + dataset: + type: "imdb" + name: "IMDb" + split: "test" + metrics: + - type: "accuracy" + value: 0.92 + - type: "f1" + value: 0.91 + source: + name: "Our Evaluation" + url: "https://example.com/results" +``` + +## Next Steps (Optional Future Enhancements) + +The research identified additional schema features that could be added in future phases: + +### Priority 3: Enterprise Governance (AWS SageMaker features) +- Lifecycle management (status: Draft/Review/Approved/Archived) +- Risk rating system +- Audit trail (created_by, modified_by, timestamps) +- Custom details for organization-specific metadata + +### Priority 4: Research & Reproducibility +- Computational cost tracking (FLOPs, parameters) +- Resource links (paper, code, weights URLs) +- Environmental impact (CO2 emissions, hardware usage) + +### Priority 5: Trustworthy AI (NVIDIA Model Card++) +- Input/output specifications (shape, format, constraints) +- Explainability subcard +- Privacy subcard (GDPR, CCPA compliance) +- Safety & security subcard +- Bias detection and mitigation details + +## Technical Notes + +### Path Discrepancies +The repository has a naming inconsistency: +- `about.yaml` references: `src/model_card_schema/schema/model_card_schema.yaml` (does not exist) +- Actual schema location: `src/linkml/modelcards.yaml` (working schema) +- Actual datamodel location: `src/modelcards/datamodel/modelcards.py` + +This means `make gen-project` may not work correctly. Use the direct command: +```bash +poetry run gen-project -d project src/linkml/modelcards.yaml +cp project/modelcards.py src/modelcards/datamodel/ +``` + +### Backward Compatibility +- Removed deprecated `graphics` class (conflicted with `graphics` slot) +- Maintained existing class names (owner, graphic, dataSet, performanceMetric, risk, modelCard) for compatibility +- All existing fields preserved with enhanced types + +### Dependencies +The generated Python datamodel requires: +- `linkml-runtime` >=1.1.24 +- `jsonasobj2` (for JSON object mapping) + +## References + +- Google Model Card Toolkit: https://github.com/tensorflow/model-card-toolkit +- HuggingFace Model Cards: https://huggingface.co/docs/hub/model-cards +- Papers with Code model-index: https://github.com/paperswithcode/model-index +- Original Model Cards Paper: Mitchell et al., "Model Cards for Model Reporting" (2019) https://arxiv.org/abs/1810.03993 +- LinkML Documentation: https://linkml.io/ + +## Summary + +The LinkML model card schema has been comprehensively enhanced from an experimental ~20% implementation to a **production-ready schema with 100% Google Model Card Toolkit v0.0.2 coverage** plus **HuggingFace and Papers with Code integration**. The schema now supports: + +- ✓ Complete model documentation (details, parameters, quantitative analysis, considerations) +- ✓ Version and license management +- ✓ Performance metrics with confidence intervals +- ✓ Ethical considerations and risk mitigation +- ✓ Community metadata for model hubs +- ✓ Benchmark tracking for leaderboards +- ✓ Multi-format generation (JSON Schema, SQL, Proto, GraphQL, OWL, etc.) + +This positions the schema as **one of the most comprehensive model card implementations available**, covering research, community, and industry use cases. diff --git a/poetry.lock b/poetry.lock index 60a224f..1bb7be7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,48 +1,77 @@ +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. + [[package]] name = "alabaster" version = "0.7.12" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, + {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, +] [[package]] name = "antlr4-python3-runtime" version = "4.9.3" description = "ANTLR 4.9.3 runtime for Python 3.7" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"}, +] [[package]] -name = "argparse" +name = "arrow" version = "1.4.0" -description = "Python command-line parsing library" -category = "dev" +description = "Better dates & times for Python" optional = false -python-versions = "*" +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205"}, + {file = "arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +tzdata = {version = "*", markers = "python_version >= \"3.9\""} + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2025.2)", "simplejson (==3.*)"] [[package]] name = "attrs" version = "22.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.5" +groups = ["main", "dev"] +files = [ + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, +] [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests-no-zope = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "babel" version = "2.10.3" description = "Internationalization utilities" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, + {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, +] [package.dependencies] pytz = ">=2015.7" @@ -51,9 +80,13 @@ pytz = ">=2015.7" name = "beautifulsoup4" version = "4.11.1" description = "Screen-scraping library" -category = "dev" optional = false python-versions = ">=3.6.0" +groups = ["dev"] +files = [ + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, +] [package.dependencies] soupsieve = ">1.2" @@ -62,21 +95,71 @@ soupsieve = ">1.2" html5lib = ["html5lib"] lxml = ["lxml"] +[[package]] +name = "bioregistry" +version = "0.5.143" +description = "Integrated registry of biological databases and nomenclatures" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "bioregistry-0.5.143-py3-none-any.whl", hash = "sha256:70e0221fae09bf3aa47799a8bfb592d42d95d6a2df4924ce10dfe40cc294150e"}, + {file = "bioregistry-0.5.143.tar.gz", hash = "sha256:15e2beb3a7d53fa81abbf0339762fcec59f7ba5a1ac219f2c247e04c3eaa8007"}, +] + +[package.dependencies] +click = "*" +curies = "*" +more-click = "*" +pydantic = "*" +pystow = ">=0.1.13" +requests = "*" +tqdm = "*" + +[package.extras] +align = ["beautifulsoup4", "class-resolver", "defusedxml", "pyyaml", "tabulate"] +charts = ["matplotlib", "matplotlib-venn", "pandas", "seaborn"] +docs = ["autodoc-pydantic", "sphinx", "sphinx-autodoc-typehints", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme"] +export = ["ndex2", "pyyaml", "rdflib", "rdflib-jsonld"] +gha = ["more-itertools"] +health = ["click-default-group", "pandas", "pyyaml", "tabulate"] +tests = ["coverage", "more-itertools", "pytest"] +web = ["bootstrap-flask (<=2.0.0)", "flasgger", "flask", "markdown", "pyyaml", "rdflib", "rdflib-jsonld"] + +[[package]] +name = "cachetools" +version = "6.2.2" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace"}, + {file = "cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6"}, +] + [[package]] name = "certifi" version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] +files = [ + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, +] [[package]] name = "cfgraph" version = "0.2.1" description = "rdflib collections flattening graph" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "CFGraph-0.2.1.tar.gz", hash = "sha256:b57fe7044a10b8ff65aa3a8a8ddc7d4cd77bf511b42e57289cd52cbc29f8fe74"}, +] [package.dependencies] rdflib = ">=0.4.2" @@ -85,28 +168,40 @@ rdflib = ">=0.4.2" name = "chardet" version = "5.0.0" description = "Universal encoding detector for Python 3" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "chardet-5.0.0-py3-none-any.whl", hash = "sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557"}, + {file = "chardet-5.0.0.tar.gz", hash = "sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa"}, +] [[package]] name = "charset-normalizer" version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.6.0" +groups = ["main", "dev"] +files = [ + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +] [package.extras] -unicode_backport = ["unicodedata2"] +unicode-backport = ["unicodedata2"] [[package]] name = "click" version = "8.1.3" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} @@ -115,152 +210,556 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.5" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["main", "dev"] +files = [ + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, +] +markers = {main = "platform_system == \"Windows\"", dev = "platform_system == \"Windows\" or sys_platform == \"win32\""} + +[[package]] +name = "curies" +version = "0.7.10" +description = "Idiomatic conversion between URIs and compact URIs (CURIEs)." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "curies-0.7.10-py3-none-any.whl", hash = "sha256:ad80f420dd76b6f3e921a245370ff6ab7473c48c29c17254970c03cd2e58af5f"}, + {file = "curies-0.7.10.tar.gz", hash = "sha256:98a7ceb94710fab3a02727a7f85ba0719dd22be5fc8b5f2ad1d7d4cfc47d64ce"}, +] + +[package.dependencies] +pydantic = "*" +pytrie = "*" +requests = "*" + +[package.extras] +docs = ["sphinx", "sphinx-automodapi", "sphinx-rtd-theme"] +fastapi = ["defusedxml", "fastapi", "httpx", "python-multipart", "uvicorn"] +flask = ["defusedxml", "flask"] +pandas = ["pandas"] +rdflib = ["rdflib"] +tests = ["coverage", "pytest"] + +[[package]] +name = "daff" +version = "1.4.2" +description = "Diff and patch tables" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "daff-1.4.2-py3-none-any.whl", hash = "sha256:88981a21d065e4378b5c4bd40b975dbfdea9b7ff540071f3bb5e20cc8b3590b5"}, + {file = "daff-1.4.2.tar.gz", hash = "sha256:47f0391eda7e2b5011f7ccac006b9178accb465bcb94a2c9f284257fff5d2686"}, +] [[package]] name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] [[package]] name = "deprecated" version = "1.2.13" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main", "dev"] +files = [ + {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, + {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, +] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] -dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"] +dev = ["PyTest (<5) ; python_version < \"3.6\"", "PyTest ; python_version >= \"3.6\"", "PyTest-Cov (<2.6) ; python_version < \"3.6\"", "PyTest-Cov ; python_version >= \"3.6\"", "bump2version (<1)", "configparser (<5) ; python_version < \"3\"", "importlib-metadata (<3) ; python_version < \"3\"", "importlib-resources (<4) ; python_version < \"3\"", "sphinx (<2)", "sphinxcontrib-websupport (<2) ; python_version < \"3\"", "tox", "zipp (<2) ; python_version < \"3\""] + +[[package]] +name = "distlib" +version = "0.4.0" +description = "Distribution utilities" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, + {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, +] [[package]] name = "docutils" version = "0.18.1" description = "Docutils -- Python Documentation Utilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] [[package]] name = "editorconfig" version = "0.12.3" description = "EditorConfig File Locator and Interpreter for Python" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "EditorConfig-0.12.3-py3-none-any.whl", hash = "sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1"}, + {file = "EditorConfig-0.12.3.tar.gz", hash = "sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e"}, +] [[package]] name = "et-xmlfile" version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, + {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, +] + +[[package]] +name = "filelock" +version = "3.19.1" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version < \"3.13\"" +files = [ + {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"}, + {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"}, +] + +[[package]] +name = "filelock" +version = "3.20.0" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.13\"" +files = [ + {file = "filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2"}, + {file = "filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4"}, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +optional = false +python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +groups = ["dev"] +files = [ + {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, + {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, +] [[package]] name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] [package.dependencies] python-dateutil = ">=2.8.1" [package.extras] -dev = ["twine", "markdown", "flake8", "wheel"] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "google" +version = "3.0.0" +description = "Python bindings to the Google search engine." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "google-3.0.0-py2.py3-none-any.whl", hash = "sha256:889cf695f84e4ae2c55fbc0cfdaf4c1e729417fa52ab1db0485202ba173e4935"}, + {file = "google-3.0.0.tar.gz", hash = "sha256:143530122ee5130509ad5e989f0512f7cb218b2d4eddbafbad40fd10e8d8ccbe"}, +] + +[package.dependencies] +beautifulsoup4 = "*" + +[[package]] +name = "google-api-core" +version = "2.28.1" +description = "Google API client core library" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "google_api_core-2.28.1-py3-none-any.whl", hash = "sha256:4021b0f8ceb77a6fb4de6fde4502cecab45062e66ff4f2895169e0b35bc9466c"}, + {file = "google_api_core-2.28.1.tar.gz", hash = "sha256:2b405df02d68e68ce0fbc138559e6036559e685159d148ae5861013dc201baf8"}, +] + +[package.dependencies] +google-auth = ">=2.14.1,<3.0.0" +googleapis-common-protos = ">=1.56.2,<2.0.0" +proto-plus = [ + {version = ">=1.25.0,<2.0.0", markers = "python_version >= \"3.13\""}, + {version = ">=1.22.3,<2.0.0", markers = "python_version < \"3.13\""}, +] +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<7.0.0" +requests = ">=2.18.0,<3.0.0" + +[package.extras] +async-rest = ["google-auth[aiohttp] (>=2.35.0,<3.0.0)"] +grpc = ["grpcio (>=1.33.2,<2.0.0)", "grpcio (>=1.49.1,<2.0.0) ; python_version >= \"3.11\"", "grpcio (>=1.75.1,<2.0.0) ; python_version >= \"3.14\"", "grpcio-status (>=1.33.2,<2.0.0)", "grpcio-status (>=1.49.1,<2.0.0) ; python_version >= \"3.11\"", "grpcio-status (>=1.75.1,<2.0.0) ; python_version >= \"3.14\""] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.0)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.0)"] + +[[package]] +name = "google-api-python-client" +version = "2.187.0" +description = "Google API Client Library for Python" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "google_api_python_client-2.187.0-py3-none-any.whl", hash = "sha256:d8d0f6d85d7d1d10bdab32e642312ed572bdc98919f72f831b44b9a9cebba32f"}, + {file = "google_api_python_client-2.187.0.tar.gz", hash = "sha256:e98e8e8f49e1b5048c2f8276473d6485febc76c9c47892a8b4d1afa2c9ec8278"}, +] + +[package.dependencies] +google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0" +google-auth = ">=1.32.0,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0" +google-auth-httplib2 = ">=0.2.0,<1.0.0" +httplib2 = ">=0.19.0,<1.0.0" +uritemplate = ">=3.0.1,<5" + +[[package]] +name = "google-auth" +version = "2.43.0" +description = "Google Authentication Library" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16"}, + {file = "google_auth-2.43.0.tar.gz", hash = "sha256:88228eee5fc21b62a1b5fe773ca15e67778cb07dc8363adcb4a8827b52d81483"}, +] + +[package.dependencies] +cachetools = ">=2.0.0,<7.0" +pyasn1-modules = ">=0.2.1" +rsa = ">=3.1.4,<5" + +[package.extras] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0)", "requests (>=2.20.0,<3.0.0)"] +enterprise-cert = ["cryptography", "pyopenssl"] +pyjwt = ["cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "pyjwt (>=2.0)"] +pyopenssl = ["cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] +reauth = ["pyu2f (>=0.1.5)"] +requests = ["requests (>=2.20.0,<3.0.0)"] +testing = ["aiohttp (<3.10.0)", "aiohttp (>=3.6.2,<4.0.0)", "aioresponses", "cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "cryptography (>=38.0.3)", "flask", "freezegun", "grpcio", "mock", "oauth2client", "packaging", "pyjwt (>=2.0)", "pyopenssl (<24.3.0)", "pyopenssl (>=20.0.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-localserver", "pyu2f (>=0.1.5)", "requests (>=2.20.0,<3.0.0)", "responses", "urllib3"] +urllib3 = ["packaging", "urllib3"] + +[[package]] +name = "google-auth-httplib2" +version = "0.2.1" +description = "Google Authentication Library: httplib2 transport" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "google_auth_httplib2-0.2.1-py3-none-any.whl", hash = "sha256:1be94c611db91c01f9703e7f62b0a59bbd5587a95571c7b6fade510d648bc08b"}, + {file = "google_auth_httplib2-0.2.1.tar.gz", hash = "sha256:5ef03be3927423c87fb69607b42df23a444e434ddb2555b73b3679793187b7de"}, +] + +[package.dependencies] +google-auth = ">=1.32.0,<3.0.0" +httplib2 = ">=0.19.0,<1.0.0" + +[[package]] +name = "google-auth-oauthlib" +version = "1.2.2" +description = "Google Authentication Library" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "google_auth_oauthlib-1.2.2-py3-none-any.whl", hash = "sha256:fd619506f4b3908b5df17b65f39ca8d66ea56986e5472eb5978fd8f3786f00a2"}, + {file = "google_auth_oauthlib-1.2.2.tar.gz", hash = "sha256:11046fb8d3348b296302dd939ace8af0a724042e8029c1b872d87fabc9f41684"}, +] + +[package.dependencies] +google-auth = ">=2.15.0" +requests-oauthlib = ">=0.7.0" + +[package.extras] +tool = ["click (>=6.0.0)"] + +[[package]] +name = "googleapis-common-protos" +version = "1.72.0" +description = "Common protobufs used in Google APIs" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038"}, + {file = "googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5"}, +] + +[package.dependencies] +protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<7.0.0" + +[package.extras] +grpc = ["grpcio (>=1.44.0,<2.0.0)"] [[package]] name = "graphviz" version = "0.20.1" description = "Simple Python interface for Graphviz" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, + {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, +] [package.extras] -dev = ["tox (>=3)", "flake8", "pep8-naming", "wheel", "twine"] +dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] docs = ["sphinx (>=5)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] -test = ["pytest (>=7)", "pytest-mock (>=3)", "mock (>=4)", "pytest-cov", "coverage"] +test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=3)"] [[package]] name = "greenlet" version = "1.1.2" description = "Lightweight in-process concurrent programming" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" +groups = ["dev"] +markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\"" +files = [ + {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, + {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, + {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, + {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, + {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"}, + {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, + {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, + {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, + {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, + {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, + {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"}, + {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, + {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, + {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, + {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"}, + {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, + {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, + {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, + {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"}, + {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, + {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, + {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, + {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"}, + {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, + {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, + {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, +] [package.extras] -docs = ["sphinx"] +docs = ["Sphinx"] + +[[package]] +name = "gspread" +version = "6.2.1" +description = "Google Spreadsheets Python API" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "gspread-6.2.1-py3-none-any.whl", hash = "sha256:6d4ec9f1c23ae3c704a9219026dac01f2b328ac70b96f1495055d453c4c184db"}, + {file = "gspread-6.2.1.tar.gz", hash = "sha256:2c7c99f7c32ebea6ec0d36f2d5cbe8a2be5e8f2a48bde87ad1ea203eff32bd03"}, +] + +[package.dependencies] +google-auth = ">=1.12.0" +google-auth-oauthlib = ">=0.4.1" + +[[package]] +name = "gspread-formatting" +version = "1.2.1" +description = "Complete Google Sheets formatting support for gspread worksheets" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "gspread_formatting-1.2.1-py2.py3-none-any.whl", hash = "sha256:76bef0e751dc276bab666351035f15a818866dea5ca20603a34ae6c847333662"}, +] + +[package.dependencies] +gspread = ">=3.0.0" [[package]] name = "hbreader" version = "0.9.1" description = "Honey Badger reader - a generic file/url/string open and read tool" -category = "main" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + {file = "hbreader-0.9.1-py3-none-any.whl", hash = "sha256:9a6e76c9d1afc1b977374a5dc430a1ebb0ea0488205546d4678d6e31cc5f6801"}, + {file = "hbreader-0.9.1.tar.gz", hash = "sha256:d2c132f8ba6276d794c66224c3297cec25c8079d0a4cf019c061611e0a3b94fa"}, +] + +[[package]] +name = "httplib2" +version = "0.31.0" +description = "A comprehensive HTTP client library." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "httplib2-0.31.0-py3-none-any.whl", hash = "sha256:b9cd78abea9b4e43a7714c6e0f8b6b8561a6fc1e95d5dbd367f5bf0ef35f5d24"}, + {file = "httplib2-0.31.0.tar.gz", hash = "sha256:ac7ab497c50975147d4f7b1ade44becc7df2f8954d42b38b3d69c515f531135c"}, +] + +[package.dependencies] +pyparsing = ">=3.0.4,<4" [[package]] name = "idna" version = "3.3" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" +groups = ["main", "dev"] +files = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] [[package]] name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] [[package]] name = "importlib-metadata" version = "4.12.0" description = "Read metadata from Python packages" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, + {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"}, +] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\"", "pytest-perf (>=0.9.2)"] [[package]] name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" -category = "main" optional = false python-versions = "*" +groups = ["main", "dev"] +files = [ + {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, + {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, +] [package.dependencies] six = "*" +[[package]] +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + [[package]] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] [package.dependencies] MarkupSafe = ">=2.0" @@ -272,9 +771,12 @@ i18n = ["Babel (>=2.7)"] name = "jsbeautifier" version = "1.14.6" description = "JavaScript unobfuscator and beautifier." -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "jsbeautifier-1.14.6.tar.gz", hash = "sha256:0d5244851144dc473b1d1044be3dd6c56f61fd69ebdc1f93b813d8224272f06f"}, +] [package.dependencies] editorconfig = ">=0.12.2" @@ -284,9 +786,13 @@ six = ">=1.13.0" name = "json-flattener" version = "0.1.9" description = "Python library for denormalizing nested dicts or json objects to tables and back" -category = "main" optional = false python-versions = ">=3.7.0" +groups = ["main", "dev"] +files = [ + {file = "json_flattener-0.1.9-py3-none-any.whl", hash = "sha256:6b027746f08bf37a75270f30c6690c7149d5f704d8af1740c346a3a1236bc941"}, + {file = "json_flattener-0.1.9.tar.gz", hash = "sha256:84cf8523045ffb124301a602602201665fcb003a171ece87e6f46ed02f7f0c15"}, +] [package.dependencies] click = "*" @@ -296,9 +802,13 @@ pyyaml = "*" name = "jsonasobj" version = "2.0.1" description = "JSON as python objects" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "jsonasobj-2.0.1-py3-none-any.whl", hash = "sha256:221af946bbe4171505e81ea1f0c31d652e69c68e02fff742e37543abe08ff7d9"}, + {file = "jsonasobj-2.0.1.tar.gz", hash = "sha256:e87c47ec5ec3db65a212e15236fdefc38dd01bdcf563b0d53021095066cd5963"}, +] [package.dependencies] hbreader = "*" @@ -307,9 +817,13 @@ hbreader = "*" name = "jsonasobj2" version = "1.0.4" description = "JSON as python objects - version 2" -category = "main" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] +files = [ + {file = "jsonasobj2-1.0.4-py3-none-any.whl", hash = "sha256:12e86f86324d54fcf60632db94ea74488d5314e3da554c994fe1e2c6f29acb79"}, + {file = "jsonasobj2-1.0.4.tar.gz", hash = "sha256:f50b1668ef478004aa487b2d2d094c304e5cb6b79337809f4a1f2975cc7fbb4e"}, +] [package.dependencies] hbreader = "*" @@ -318,9 +832,13 @@ hbreader = "*" name = "jsonpatch" version = "1.32" description = "Apply JSON-Patches (RFC 6902)" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "jsonpatch-1.32-py2.py3-none-any.whl", hash = "sha256:26ac385719ac9f54df8a2f0827bb8253aa3ea8ab7b3368457bcdb8c14595a397"}, + {file = "jsonpatch-1.32.tar.gz", hash = "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2"}, +] [package.dependencies] jsonpointer = ">=1.9" @@ -329,9 +847,14 @@ jsonpointer = ">=1.9" name = "jsonpath-ng" version = "1.5.3" description = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming." -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "jsonpath-ng-1.5.3.tar.gz", hash = "sha256:a273b182a82c1256daab86a313b937059261b5c5f8c4fa3fc38b882b344dd567"}, + {file = "jsonpath_ng-1.5.3-py2-none-any.whl", hash = "sha256:f75b95dbecb8a0f3b86fd2ead21c2b022c3f5770957492b9b6196ecccfeb10aa"}, + {file = "jsonpath_ng-1.5.3-py3-none-any.whl", hash = "sha256:292a93569d74029ba75ac2dc3d3630fc0e17b2df26119a165fa1d498ca47bf65"}, +] [package.dependencies] decorator = "*" @@ -342,21 +865,37 @@ six = "*" name = "jsonpointer" version = "2.3" description = "Identify specific nodes in a JSON document (RFC 6901)" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] +files = [ + {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"}, + {file = "jsonpointer-2.3.tar.gz", hash = "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a"}, +] [[package]] name = "jsonschema" version = "4.14.0" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + {file = "jsonschema-4.14.0-py3-none-any.whl", hash = "sha256:9892b8d630a82990521a9ca630d3446bd316b5ad54dbe981338802787f3e0d2d"}, + {file = "jsonschema-4.14.0.tar.gz", hash = "sha256:15062f4cc6f591400cd528d2c355f2cfa6a57e44c820dc783aee5e23d36a831f"}, +] [package.dependencies] attrs = ">=17.4.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format\""} +idna = {version = "*", optional = true, markers = "extra == \"format\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format\""} pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format\""} +rfc3987 = {version = "*", optional = true, markers = "extra == \"format\""} +uri-template = {version = "*", optional = true, markers = "extra == \"format\""} +webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format\""} [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] @@ -364,28 +903,32 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "linkml" -version = "1.3.2" +version = "1.4.11" description = "Linked Open Data Modeling Language" -category = "dev" optional = false python-versions = ">=3.7.6,<4.0.0" +groups = ["dev"] +files = [ + {file = "linkml-1.4.11-py3-none-any.whl", hash = "sha256:2811af5c6a69fb5b8acc4c85741b6aa6d17ef5579a0118a5028025d8a2480866"}, + {file = "linkml-1.4.11.tar.gz", hash = "sha256:ac5260a0cab15b36dbf2929afc43d7bc8e8af0e198ade7ee90be1dad8fd8d743"}, +] [package.dependencies] antlr4-python3-runtime = ">=4.9.0,<4.10" -argparse = ">=1.4.0" click = ">=7.0" graphviz = ">=0.10.1" hbreader = "*" isodate = ">=0.6.0" -jinja2 = "*" +jinja2 = ">=3.1.0" jsonasobj2 = ">=1.0.3,<2.0.0" -jsonschema = ">=3.0.1" +jsonschema = {version = ">=4.0.0", extras = ["format"]} linkml-dataops = "*" -linkml-runtime = ">=1.3.0,<2.0.0" +linkml-runtime = ">=1,<2" myst-parser = "*" openpyxl = "*" parse = "*" prefixcommons = ">=0.1.7" +prefixmaps = ">=0.1.3,<0.2.0" pydantic = "*" pyjsg = ">=0.11.6" pyshex = ">=0.7.20" @@ -395,19 +938,25 @@ pyyaml = "*" rdflib = ">=6.0.0" requests = ">=2.22" sphinx-click = "*" +sphinx-rtd-theme = "*" sqlalchemy = ">=1.4.31" +tox = ">=3.25.1,<4.0.0" watchdog = ">=0.9.0" [package.extras] -docs = ["sphinx-rtd-theme", "sphinx"] +docs = ["furo[docs] (>=2022.9.29,<2023.0.0)", "sphinx", "sphinxcontrib-mermaid[docs] (>=0.7.1,<0.8.0)"] [[package]] name = "linkml-dataops" version = "0.1.0" description = "LinkML Data Operations API" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "linkml_dataops-0.1.0-py3-none-any.whl", hash = "sha256:193cf7f659e5f07946d2c2761896910d5f7151d91282543b1363801f68307f4c"}, + {file = "linkml_dataops-0.1.0.tar.gz", hash = "sha256:4550eab65e78b70dc3b9c651724a94ac2b1d1edb2fbe576465f1d6951a54ed04"}, +] [package.dependencies] jinja2 = "*" @@ -420,9 +969,13 @@ linkml-runtime = ">=1.1.6" name = "linkml-runtime" version = "1.3.2" description = "Runtime environment for LinkML, the Linked open data modeling language" -category = "main" optional = false python-versions = ">=3.7.1,<4.0.0" +groups = ["main", "dev"] +files = [ + {file = "linkml-runtime-1.3.2.tar.gz", hash = "sha256:5ea9be2702323e5a3e2df924f5dfd4be88c0fc7041a4c71ccc6e33f45d319a36"}, + {file = "linkml_runtime-1.3.2-py3-none-any.whl", hash = "sha256:c5ab3b39e20fbb41360bb3fa16698f4b30adca752b9e47dc244e92fe633f2e6d"}, +] [package.dependencies] click = "*" @@ -440,9 +993,13 @@ requests = "*" name = "markdown" version = "3.3.7" description = "Python implementation of Markdown." -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, +] [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} @@ -454,44 +1011,94 @@ testing = ["coverage", "pyyaml"] name = "markdown-it-py" version = "2.1.0" description = "Python port of markdown-it. Markdown parsing, done right!" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "markdown-it-py-2.1.0.tar.gz", hash = "sha256:cf7e59fed14b5ae17c0006eff14a2d9a00ed5f3a846148153899a0224e2c07da"}, + {file = "markdown_it_py-2.1.0-py3-none-any.whl", hash = "sha256:93de681e5c021a432c63147656fe21790bc01231e0cd2da73626f1aa3ac0fe27"}, +] [package.dependencies] mdurl = ">=0.1,<1.0" [package.extras] benchmarking = ["psutil", "pytest", "pytest-benchmark (>=3.2,<4.0)"] -code_style = ["pre-commit (==2.6)"] +code-style = ["pre-commit (==2.6)"] compare = ["commonmark (>=0.9.1,<0.10.0)", "markdown (>=3.3.6,<3.4.0)", "mistletoe (>=0.8.1,<0.9.0)", "mistune (>=2.0.2,<2.1.0)", "panflute (>=2.1.3,<2.2.0)"] linkify = ["linkify-it-py (>=1.0,<2.0)"] plugins = ["mdit-py-plugins"] profiling = ["gprof2dot"] -rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx-book-theme"] +rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +] [[package]] name = "mdit-py-plugins" version = "0.3.0" description = "Collection of plugins for markdown-it-py" -category = "dev" optional = false python-versions = "~=3.6" +groups = ["dev"] +files = [ + {file = "mdit-py-plugins-0.3.0.tar.gz", hash = "sha256:ecc24f51eeec6ab7eecc2f9724e8272c2fb191c2e93cf98109120c2cace69750"}, + {file = "mdit_py_plugins-0.3.0-py3-none-any.whl", hash = "sha256:b1279701cee2dbf50e188d3da5f51fee8d78d038cdf99be57c6b9d1aa93b4073"}, +] [package.dependencies] markdown-it-py = ">=1.0.0,<3.0.0" [package.extras] -code_style = ["pre-commit (==2.6)"] +code-style = ["pre-commit (==2.6)"] rtd = ["myst-parser (>=0.14.0,<0.15.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"] @@ -499,25 +1106,37 @@ testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] [[package]] name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] [[package]] name = "mkdocs" version = "1.3.1" description = "Project documentation with Markdown." -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "mkdocs-1.3.1-py3-none-any.whl", hash = "sha256:fda92466393127d2da830bc6edc3a625a14b436316d1caf347690648e774c4f0"}, + {file = "mkdocs-1.3.1.tar.gz", hash = "sha256:a41a2ff25ce3bbacc953f9844ba07d106233cd76c88bac1f59cb1564ac0d87ed"}, +] [package.dependencies] click = ">=3.3" @@ -538,9 +1157,13 @@ i18n = ["babel (>=2.9.0)"] name = "mkdocs-material" version = "8.4.1" description = "Documentation that simply works" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "mkdocs-material-8.4.1.tar.gz", hash = "sha256:92c70f94b2e1f8a05d9e05eec1c7af9dffc516802d69222329db89503c97b4f3"}, + {file = "mkdocs_material-8.4.1-py2.py3-none-any.whl", hash = "sha256:319a6254819ce9d864ff79de48c43842fccfdebb43e4e6820eef75216f8cfb0a"}, +] [package.dependencies] jinja2 = ">=3.0.2" @@ -554,17 +1177,25 @@ pymdown-extensions = ">=9.4" name = "mkdocs-material-extensions" version = "1.0.3" description = "Extension pack for Python Markdown." -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, + {file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"}, +] [[package]] name = "mkdocs-mermaid2-plugin" version = "0.6.0" description = "A MkDocs plugin for including mermaid graphs in markdown sources" -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "mkdocs-mermaid2-plugin-0.6.0.tar.gz", hash = "sha256:99cca6db7c6b4a954a701dcb6b507191bc32a7b0b47eacf2885c1bacf77d1af1"}, + {file = "mkdocs_mermaid2_plugin-0.6.0-py3-none-any.whl", hash = "sha256:ffbe8a7daa7ed718cb800c44c5ce4c0ff413caebf7b8b63d9c4a998dfd78a64d"}, +] [package.dependencies] beautifulsoup4 = ">=4.6.3" @@ -574,14 +1205,54 @@ mkdocs-material = "*" pymdown-extensions = ">=8.0" pyyaml = "*" requests = "*" +setuptools = ">=18.5" + +[[package]] +name = "more-click" +version = "0.1.2" +description = "More click." +optional = false +python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.13\"" +files = [ + {file = "more_click-0.1.2-py3-none-any.whl", hash = "sha256:f6387af37ef7e7423bd94b72a81a53c79c5086a3bfe5cc035da534ff0c2a0a9e"}, + {file = "more_click-0.1.2.tar.gz", hash = "sha256:085da66d5a9b823c5d912a888dca1fa0c8b3a14ed1b21ea9c8a1b814857a3981"}, +] + +[package.dependencies] +click = "*" + +[package.extras] +tests = ["coverage", "pytest"] + +[[package]] +name = "more-click" +version = "0.1.3" +description = "Implementations of common CLI patterns on top of Click" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.13\"" +files = [ + {file = "more_click-0.1.3-py3-none-any.whl", hash = "sha256:12f0f3da94c84d39daaaec08e9503df8877f493812f8ebc3f0713081da48d282"}, + {file = "more_click-0.1.3.tar.gz", hash = "sha256:c170987d37334278169fe3b9b388f1fcd9fc96439579354fd7c537537a182128"}, +] + +[package.dependencies] +click = "*" [[package]] name = "myst-parser" version = "0.18.0" description = "An extended commonmark compliant parser, with bridges to docutils & sphinx." -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "myst-parser-0.18.0.tar.gz", hash = "sha256:739a4d96773a8e55a2cacd3941ce46a446ee23dcd6b37e06f73f551ad7821d86"}, + {file = "myst_parser-0.18.0-py3-none-any.whl", hash = "sha256:4965e51918837c13bf1c6f6fe2c6bddddf193148360fbdaefe743a4981358f6a"}, +] [package.dependencies] docutils = ">=0.15,<0.19" @@ -593,18 +1264,61 @@ sphinx = ">=4,<6" typing-extensions = "*" [package.extras] -code_style = ["pre-commit (>=2.12,<3.0)"] +code-style = ["pre-commit (>=2.12,<3.0)"] linkify = ["linkify-it-py (>=1.0,<2.0)"] -rtd = ["ipython", "sphinx-book-theme", "sphinx-design", "sphinxext-rediraffe (>=0.2.7,<0.3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)"] -testing = ["beautifulsoup4", "coverage", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)", "sphinx-pytest"] +rtd = ["ipython", "sphinx-book-theme", "sphinx-design", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=6,<7)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"] + +[[package]] +name = "oauthlib" +version = "3.3.1" +description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1"}, + {file = "oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9"}, +] + +[package.extras] +rsa = ["cryptography (>=3.0.0)"] +signals = ["blinker (>=1.4.0)"] +signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] + +[[package]] +name = "ontodev-cogs" +version = "0.3.3" +description = "COGS Operates Google Sheets" +optional = false +python-versions = ">=3.6, <4" +groups = ["dev"] +files = [ + {file = "ontodev-cogs-0.3.3.tar.gz", hash = "sha256:04cf448eda59e0645c6626453f7617a6b2be3129c8586c4d4a515ad031f61a18"}, + {file = "ontodev_cogs-0.3.3-py3-none-any.whl", hash = "sha256:b3299b7884891d00e016f9cb0329a1a0dc8af4bfba45dce3815f654360b1f333"}, +] + +[package.dependencies] +daff = "*" +google = "*" +google-api-python-client = "*" +gspread = "*" +gspread-formatting = "*" +requests = "*" +tabulate = "*" +termcolor = "*" [[package]] name = "openpyxl" version = "3.0.10" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "openpyxl-3.0.10-py2.py3-none-any.whl", hash = "sha256:0ab6d25d01799f97a9464630abacbb34aafecdcaa0ef3cba6d6b3499867d0355"}, + {file = "openpyxl-3.0.10.tar.gz", hash = "sha256:e47805627aebcf860edb4edf7987b1309c1b3632f3750538ed962bbcc3bd7449"}, +] [package.dependencies] et-xmlfile = "*" @@ -613,9 +1327,13 @@ et-xmlfile = "*" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" @@ -624,36 +1342,230 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" name = "parse" version = "1.19.0" description = "parse() is the opposite of format()" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "parse-1.19.0-py2.py3-none-any.whl", hash = "sha256:6ce007645384a91150cb7cd7c8a9db2559e273c2e2542b508cd1e342508c2601"}, + {file = "parse-1.19.0.tar.gz", hash = "sha256:9ff82852bcb65d139813e2a5197627a94966245c897796760a3a2a8eb66f020b"}, +] + +[[package]] +name = "platformdirs" +version = "4.4.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version < \"3.13\"" +files = [ + {file = "platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85"}, + {file = "platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.14.1)"] + +[[package]] +name = "platformdirs" +version = "4.5.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.13\"" +files = [ + {file = "platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3"}, + {file = "platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312"}, +] + +[package.extras] +docs = ["furo (>=2025.9.25)", "proselint (>=0.14)", "sphinx (>=8.2.3)", "sphinx-autodoc-typehints (>=3.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.4.2)", "pytest-cov (>=7)", "pytest-mock (>=3.15.1)"] +type = ["mypy (>=1.18.2)"] + +[[package]] +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "ply" version = "3.11" description = "Python Lex & Yacc" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, + {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, +] [[package]] name = "prefixcommons" version = "0.1.11" description = "A python API for working with ID prefixes" -category = "main" optional = false python-versions = ">=3.7,<4.0" +groups = ["main", "dev"] +files = [ + {file = "prefixcommons-0.1.11-py3-none-any.whl", hash = "sha256:e604328bc813e2da5bd1527a174f3296f82d1357ba2de64730826a98db0a34e0"}, + {file = "prefixcommons-0.1.11.tar.gz", hash = "sha256:5f2cc89d38e1dd9d31fcd71d5daa02b33a81a8116efe2e9957903b2a6772d368"}, +] [package.dependencies] requests = ">=2.28.1,<3.0.0" +[[package]] +name = "prefixmaps" +version = "0.1.4" +description = "A python library for retrieving semantic prefix maps" +optional = false +python-versions = ">=3.7.6,<4.0.0" +groups = ["dev"] +files = [ + {file = "prefixmaps-0.1.4-py3-none-any.whl", hash = "sha256:845457a5149e56b676827d002200840ae487052f08879a8d6ca9093aa6b9213e"}, + {file = "prefixmaps-0.1.4.tar.gz", hash = "sha256:7ce9c8c1f1987f0341a71a2f869344e621b49c478c78a931817ce3dda5965980"}, +] + +[package.dependencies] +importlib-metadata = ">=4.12.0,<5.0.0" +pyyaml = ">=5.3.1" + +[[package]] +name = "proto-plus" +version = "1.26.1" +description = "Beautiful, Pythonic protocol buffers" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66"}, + {file = "proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012"}, +] + +[package.dependencies] +protobuf = ">=3.19.0,<7.0.0" + +[package.extras] +testing = ["google-api-core (>=1.31.5)"] + +[[package]] +name = "protobuf" +version = "6.33.1" +description = "" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "protobuf-6.33.1-cp310-abi3-win32.whl", hash = "sha256:f8d3fdbc966aaab1d05046d0240dd94d40f2a8c62856d41eaa141ff64a79de6b"}, + {file = "protobuf-6.33.1-cp310-abi3-win_amd64.whl", hash = "sha256:923aa6d27a92bf44394f6abf7ea0500f38769d4b07f4be41cb52bd8b1123b9ed"}, + {file = "protobuf-6.33.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:fe34575f2bdde76ac429ec7b570235bf0c788883e70aee90068e9981806f2490"}, + {file = "protobuf-6.33.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:f8adba2e44cde2d7618996b3fc02341f03f5bc3f2748be72dc7b063319276178"}, + {file = "protobuf-6.33.1-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:0f4cf01222c0d959c2b399142deb526de420be8236f22c71356e2a544e153c53"}, + {file = "protobuf-6.33.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:8fd7d5e0eb08cd5b87fd3df49bc193f5cfd778701f47e11d127d0afc6c39f1d1"}, + {file = "protobuf-6.33.1-cp39-cp39-win32.whl", hash = "sha256:023af8449482fa884d88b4563d85e83accab54138ae098924a985bcbb734a213"}, + {file = "protobuf-6.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:df051de4fd7e5e4371334e234c62ba43763f15ab605579e04c7008c05735cd82"}, + {file = "protobuf-6.33.1-py3-none-any.whl", hash = "sha256:d595a9fd694fdeb061a62fbe10eb039cc1e444df81ec9bb70c7fc59ebcb1eafa"}, + {file = "protobuf-6.33.1.tar.gz", hash = "sha256:97f65757e8d09870de6fd973aeddb92f85435607235d20b2dfed93405d00c85b"}, +] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, + {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +description = "A collection of ASN.1-based protocols modules" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a"}, + {file = "pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"}, +] + +[package.dependencies] +pyasn1 = ">=0.6.1,<0.7.0" + [[package]] name = "pydantic" version = "1.9.2" description = "Data validation and settings management using python type hints" -category = "dev" optional = false python-versions = ">=3.6.1" +groups = ["dev"] +files = [ + {file = "pydantic-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e"}, + {file = "pydantic-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08"}, + {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c"}, + {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131"}, + {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76"}, + {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567"}, + {file = "pydantic-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044"}, + {file = "pydantic-1.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555"}, + {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84"}, + {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f"}, + {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb"}, + {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b"}, + {file = "pydantic-1.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001"}, + {file = "pydantic-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56"}, + {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4"}, + {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f"}, + {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979"}, + {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d"}, + {file = "pydantic-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7"}, + {file = "pydantic-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3"}, + {file = "pydantic-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa"}, + {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3"}, + {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0"}, + {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8"}, + {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8"}, + {file = "pydantic-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326"}, + {file = "pydantic-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801"}, + {file = "pydantic-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44"}, + {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747"}, + {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453"}, + {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb"}, + {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15"}, + {file = "pydantic-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55"}, + {file = "pydantic-1.9.2-py3-none-any.whl", hash = "sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e"}, + {file = "pydantic-1.9.2.tar.gz", hash = "sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d"}, +] [package.dependencies] typing-extensions = ">=3.7.4.3" @@ -666,20 +1578,28 @@ email = ["email-validator (>=1.0.3)"] name = "pygments" version = "2.13.0" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, + {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, +] [package.extras] -plugins = ["importlib-metadata"] +plugins = ["importlib-metadata ; python_version < \"3.8\""] [[package]] name = "pyjsg" version = "0.11.10" description = "Python JSON Schema Grammar interpreter" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "PyJSG-0.11.10-py3-none-any.whl", hash = "sha256:10af60ff42219be7e85bf7f11c19b648715b0b29eb2ddbd269e87069a7c3f26d"}, + {file = "PyJSG-0.11.10.tar.gz", hash = "sha256:4bd6e3ff2833fa2b395bbe803a2d72a5f0bab5b7285bccd0da1a1bc0aee88bfa"}, +] [package.dependencies] antlr4-python3-runtime = ">=4.9.3,<4.10.0" @@ -689,9 +1609,13 @@ jsonasobj = ">=1.2.1" name = "pymdown-extensions" version = "9.5" description = "Extension pack for Python Markdown." -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "pymdown_extensions-9.5-py3-none-any.whl", hash = "sha256:ec141c0f4983755349f0c8710416348d1a13753976c028186ed14f190c8061c4"}, + {file = "pymdown_extensions-9.5.tar.gz", hash = "sha256:3ef2d998c0d5fa7eb09291926d90d69391283561cf6306f85cd588a5eb5befa0"}, +] [package.dependencies] markdown = ">=3.2" @@ -700,28 +1624,59 @@ markdown = ">=3.2" name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" +groups = ["main", "dev"] +files = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] [package.extras] -diagrams = ["railroad-diagrams", "jinja2"] +diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyrsistent" version = "0.18.1" description = "Persistent/Functional/Immutable data structures" -category = "main" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, + {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, + {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, + {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, +] [[package]] name = "pyshex" version = "0.8.1" description = "Python ShEx Implementation" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "PyShEx-0.8.1-py3-none-any.whl", hash = "sha256:6da1b10123e191abf8dcb6bf3e54aa3e1fcf771df5d1a0ed453217c8900c8e6a"}, + {file = "PyShEx-0.8.1.tar.gz", hash = "sha256:3c5c4d45fe27faaadae803cb008c41acf8ee784da7868b04fd84967e75be70d0"}, +] [package.dependencies] cfgraph = ">=0.2.1" @@ -738,9 +1693,13 @@ urllib3 = "*" name = "pyshexc" version = "0.9.1" description = "PyShExC - Python ShEx compiler" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "PyShExC-0.9.1-py2.py3-none-any.whl", hash = "sha256:efc55ed5cb2453e9df569b03e282505e96bb06597934288f3b23dd980ef10028"}, + {file = "PyShExC-0.9.1.tar.gz", hash = "sha256:35a9975d4b9afeb20ef710fb6680871756381d0c39fbb5470b3b506581a304d3"}, +] [package.dependencies] antlr4-python3-runtime = ">=4.9.3,<4.10.0" @@ -750,40 +1709,136 @@ pyjsg = ">=0.11.10" rdflib-shim = "*" shexjsg = ">=0.8.1" +[[package]] +name = "pystow" +version = "0.7.11" +description = "Easily pick a place to store data for your Python code" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pystow-0.7.11-py3-none-any.whl", hash = "sha256:bcafe098310499b2e91fedb8671b13e206058605319ad6987ecc2388ec8b5200"}, + {file = "pystow-0.7.11.tar.gz", hash = "sha256:2b8b10dbf78b13d36a7fcd71efd47921cea1c5c9f1078b7c3cf49f658278f0e9"}, +] + +[package.dependencies] +click = "*" +requests = "*" +tqdm = "*" +typing-extensions = "*" + +[package.extras] +aws = ["boto3"] +bs4 = ["bs4"] +docs = ["sphinx (>=8)", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme (>=3.0)"] +pandas = ["pandas"] +ratelimit = ["ratelimit"] +rdf = ["rdflib"] +tests = ["coverage[toml]", "pytest", "requests-file"] +xml = ["lxml"] + [[package]] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["dev"] +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] [package.dependencies] six = ">=1.5" +[[package]] +name = "pytrie" +version = "0.4.0" +description = "A pure Python implementation of the trie data structure." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "PyTrie-0.4.0.tar.gz", hash = "sha256:8f4488f402d3465993fb6b6efa09866849ed8cda7903b50647b7d0342b805379"}, +] + +[package.dependencies] +sortedcontainers = "*" + [[package]] name = "pytz" version = "2022.2.1" description = "World timezone definitions, modern and historical" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "pytz-2022.2.1-py2.py3-none-any.whl", hash = "sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197"}, + {file = "pytz-2022.2.1.tar.gz", hash = "sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5"}, +] [[package]] name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] +files = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] [[package]] name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] [package.dependencies] pyyaml = "*" @@ -792,18 +1847,23 @@ pyyaml = "*" name = "rdflib" version = "6.2.0" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." -category = "main" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + {file = "rdflib-6.2.0-py3-none-any.whl", hash = "sha256:85c34a86dfc517a41e5f2425a41a0aceacc23983462b32e68610b9fad1383bca"}, + {file = "rdflib-6.2.0.tar.gz", hash = "sha256:62dc3c86d1712db0f55785baf8047f63731fa59b2682be03219cb89262065942"}, +] [package.dependencies] isodate = "*" pyparsing = "*" +setuptools = "*" [package.extras] berkeleydb = ["berkeleydb"] -dev = ["black (==22.6.0)", "flake8", "isort", "mypy", "pep8-naming", "types-setuptools", "flakeheaven"] -docs = ["myst-parser", "sphinx (<6)", "sphinxcontrib-apidoc", "sphinxcontrib-kroki", "sphinx-autodoc-typehints"] +dev = ["black (==22.6.0)", "flake8", "flakeheaven ; python_version >= \"3.8.0\"", "isort", "mypy", "pep8-naming", "types-setuptools"] +docs = ["myst-parser", "sphinx (<6)", "sphinx-autodoc-typehints", "sphinxcontrib-apidoc", "sphinxcontrib-kroki"] html = ["html5lib"] networkx = ["networkx"] tests = ["html5lib", "pytest", "pytest-cov"] @@ -812,9 +1872,13 @@ tests = ["html5lib", "pytest", "pytest-cov"] name = "rdflib-jsonld" version = "0.6.1" description = "rdflib extension adding JSON-LD parser and serializer" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "rdflib-jsonld-0.6.1.tar.gz", hash = "sha256:eda5a42a2e09f80d4da78e32b5c684bccdf275368f1541e6b7bcddfb1382a0e0"}, + {file = "rdflib_jsonld-0.6.1-py2.py3-none-any.whl", hash = "sha256:bcf84317e947a661bae0a3f2aee1eced697075fc4ac4db6065a3340ea0f10fc2"}, +] [package.dependencies] rdflib = ">=5.0.0" @@ -823,9 +1887,13 @@ rdflib = ">=5.0.0" name = "rdflib-shim" version = "1.0.3" description = "Shim for rdflib 5 and 6 incompatibilities" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "rdflib_shim-1.0.3-py3-none-any.whl", hash = "sha256:7a853e7750ef1e9bf4e35dea27d54e02d4ed087de5a9e0c329c4a6d82d647081"}, + {file = "rdflib_shim-1.0.3.tar.gz", hash = "sha256:d955d11e2986aab42b6830ca56ac6bc9c893abd1d049a161c6de2f1b99d4fc0d"}, +] [package.dependencies] rdflib = ">=5.0.0" @@ -835,9 +1903,13 @@ rdflib-jsonld = "0.6.1" name = "requests" version = "2.28.1" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7, <4" +groups = ["main", "dev"] +files = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] [package.dependencies] certifi = ">=2017.4.17" @@ -847,15 +1919,80 @@ urllib3 = ">=1.21.1,<1.27" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +description = "OAuthlib authentication support for Requests." +optional = false +python-versions = ">=3.4" +groups = ["dev"] +files = [ + {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, + {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, +] + +[package.dependencies] +oauthlib = ">=3.0.0" +requests = ">=2.0.0" + +[package.extras] +rsa = ["oauthlib[signedtoken] (>=3.0.0)"] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "rfc3987" +version = "1.3.8" +description = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "rfc3987-1.3.8-py2.py3-none-any.whl", hash = "sha256:10702b1e51e5658843460b189b185c0366d2cf4cff716f13111b0ea9fd2dce53"}, + {file = "rfc3987-1.3.8.tar.gz", hash = "sha256:d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"}, +] + +[[package]] +name = "rsa" +version = "4.9.1" +description = "Pure-Python RSA implementation" +optional = false +python-versions = "<4,>=3.6" +groups = ["dev"] +files = [ + {file = "rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762"}, + {file = "rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75"}, +] + +[package.dependencies] +pyasn1 = ">=0.1.3" [[package]] name = "ruamel.yaml" version = "0.17.21" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" -category = "dev" optional = false python-versions = ">=3" +groups = ["dev"] +files = [ + {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, + {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, +] [package.dependencies] "ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} @@ -868,17 +2005,93 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel.yaml.clib" version = "0.2.6" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\"" +files = [ + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:066f886bc90cc2ce44df8b5f7acfc6a7e2b2e672713f027136464492b0c34d7c"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d3c620a54748a3d4cf0bcfe623e388407c8e85a4b06b8188e126302bcab93ea8"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:210c8fcfeff90514b7133010bf14e3bad652c8efde6b20e00c43854bf94fa5a6"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:61bc5e5ca632d95925907c569daa559ea194a4d16084ba86084be98ab1cec1c6"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:1b4139a6ffbca8ef60fdaf9b33dec05143ba746a6f0ae0f9d11d38239211d335"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, + {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, +] + +[[package]] +name = "schemasheets" +version = "0.1.19" +description = "Package to author schemas using spreadsheets" +optional = false +python-versions = ">=3.9,<4.0" +groups = ["dev"] +files = [ + {file = "schemasheets-0.1.19-py3-none-any.whl", hash = "sha256:198851332666bf0de38d1b1de833ede9e8aa434d6f80c973af090b0ddf4aebdc"}, + {file = "schemasheets-0.1.19.tar.gz", hash = "sha256:576b1d2d16d0b542972fc1a5353bccb4770fb0e105ff9f524ce860359be54ba8"}, +] + +[package.dependencies] +bioregistry = ">=0.5,<0.6" +Jinja2 = ">=3.0.3,<4.0.0" +linkml = ">=1.4,<2.0" +ontodev-cogs = ">=0.3.3,<0.4.0" + +[[package]] +name = "setuptools" +version = "80.9.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.9" +groups = ["main", "dev"] +files = [ + {file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922"}, + {file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] +core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "shexjsg" version = "0.8.2" description = "ShExJSG - Astract Syntax Tree for the ShEx 2.0 language" -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "ShExJSG-0.8.2-py2.py3-none-any.whl", hash = "sha256:3b0d8432dd313bee9e1343382c5e02e9908dd941a7dd7342bf8c0200fe523766"}, + {file = "ShExJSG-0.8.2.tar.gz", hash = "sha256:f17a629fc577fa344382bdee143cd9ff86588537f9f811f66cea6f63cdbcd0b6"}, +] [package.dependencies] pyjsg = ">=0.11.10" @@ -887,33 +2100,61 @@ pyjsg = ">=0.11.10" name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main", "dev"] +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] [[package]] name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" optional = false python-versions = "*" +groups = ["dev"] +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] [[package]] name = "soupsieve" version = "2.3.2.post1" description = "A modern CSS selector implementation for Beautiful Soup." -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] [[package]] name = "sparqlslurper" version = "0.5.1" description = "SPARQL Slurper for rdflib" -category = "dev" optional = false python-versions = ">=3.7.4" +groups = ["dev"] +files = [ + {file = "sparqlslurper-0.5.1-py3-none-any.whl", hash = "sha256:ae49b2d8ce3dd38df7a40465b228ad5d33fb7e11b3f248d195f9cadfc9cfff87"}, + {file = "sparqlslurper-0.5.1.tar.gz", hash = "sha256:9282ebb064fc6152a58269d194cb1e7b275b0f095425a578d75b96dcc851f546"}, +] [package.dependencies] rdflib = ">=5.0.0" @@ -924,15 +2165,19 @@ sparqlwrapper = ">=1.8.2" name = "sparqlwrapper" version = "2.0.0" description = "SPARQL Endpoint interface to Python" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "SPARQLWrapper-2.0.0-py3-none-any.whl", hash = "sha256:c99a7204fff676ee28e6acef327dc1ff8451c6f7217dcd8d49e8872f324a8a20"}, + {file = "SPARQLWrapper-2.0.0.tar.gz", hash = "sha256:3fed3ebcc77617a4a74d2644b86fd88e0f32e7f7003ac7b2b334c026201731f1"}, +] [package.dependencies] rdflib = ">=6.1.1" [package.extras] -dev = ["setuptools (>=3.7.1)", "mypy (>=0.931)", "pandas (>=1.3.5)", "pandas-stubs (>=1.2.0.48)"] +dev = ["mypy (>=0.931)", "pandas (>=1.3.5)", "pandas-stubs (>=1.2.0.48)", "setuptools (>=3.7.1)"] docs = ["sphinx (<5)", "sphinx-rtd-theme"] keepalive = ["keepalive (>=0.5)"] pandas = ["pandas (>=1.3.5)"] @@ -941,9 +2186,13 @@ pandas = ["pandas (>=1.3.5)"] name = "sphinx" version = "5.1.1" description = "Python documentation generator" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "Sphinx-5.1.1-py3-none-any.whl", hash = "sha256:309a8da80cb6da9f4713438e5b55861877d5d7976b69d87e336733637ea12693"}, + {file = "Sphinx-5.1.1.tar.gz", hash = "sha256:ba3224a4e206e1fbdecf98a4fae4992ef9b24b85ebf7b584bb340156eaf08d89"}, +] [package.dependencies] alabaster = ">=0.7,<0.8" @@ -966,271 +2215,654 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=3.5.0)", "flake8-comprehensions", "flake8-bugbear", "isort", "mypy (>=0.971)", "sphinx-lint", "docutils-stubs", "types-typed-ast", "types-requests"] -test = ["pytest (>=4.6)", "html5lib", "cython", "typed-ast"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "isort", "mypy (>=0.971)", "sphinx-lint", "types-requests", "types-typed-ast"] +test = ["cython", "html5lib", "pytest (>=4.6)", "typed-ast ; python_version < \"3.8\""] [[package]] name = "sphinx-click" version = "4.3.0" description = "Sphinx extension that automatically documents click applications" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "sphinx-click-4.3.0.tar.gz", hash = "sha256:bd4db5d3c1bec345f07af07b8e28a76cfc5006d997984e38ae246bbf8b9a3b38"}, + {file = "sphinx_click-4.3.0-py3-none-any.whl", hash = "sha256:23e85a3cb0b728a421ea773699f6acadefae171d1a764a51dd8ec5981503ccbe"}, +] [package.dependencies] click = ">=7.0" docutils = "*" sphinx = ">=2.0" +[[package]] +name = "sphinx-rtd-theme" +version = "2.0.0" +description = "Read the Docs theme for Sphinx" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586"}, + {file = "sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"}, +] + +[package.dependencies] +docutils = "<0.21" +sphinx = ">=5,<8" +sphinxcontrib-jquery = ">=4,<5" + +[package.extras] +dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.2" description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, + {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" version = "2.0.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, + {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] -test = ["pytest", "html5lib"] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +groups = ["dev"] +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] [package.extras] -test = ["pytest", "flake8", "mypy"] +test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, + {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sqlalchemy" version = "1.4.40" description = "Database Abstraction Library" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] +files = [ + {file = "SQLAlchemy-1.4.40-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:b07fc38e6392a65935dc8b486229679142b2ea33c94059366b4d8b56f1e35a97"}, + {file = "SQLAlchemy-1.4.40-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fb4edb6c354eac0fcc07cb91797e142f702532dbb16c1d62839d6eec35f814cf"}, + {file = "SQLAlchemy-1.4.40-cp27-cp27m-win32.whl", hash = "sha256:2026632051a93997cf8f6fda14360f99230be1725b7ab2ef15be205a4b8a5430"}, + {file = "SQLAlchemy-1.4.40-cp27-cp27m-win_amd64.whl", hash = "sha256:f2aa85aebc0ef6b342d5d3542f969caa8c6a63c8d36cf5098769158a9fa2123c"}, + {file = "SQLAlchemy-1.4.40-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0b9e3d81f86ba04007f0349e373a5b8c81ec2047aadb8d669caf8c54a092461"}, + {file = "SQLAlchemy-1.4.40-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:1ab08141d93de83559f6a7d9a962830f918623a885b3759ec2b9d1a531ff28fe"}, + {file = "SQLAlchemy-1.4.40-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00dd998b43b282c71de46b061627b5edb9332510eb1edfc5017b9e4356ed44ea"}, + {file = "SQLAlchemy-1.4.40-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bb342c0e25cc8f78a0e7c692da3b984f072666b316fbbec2a0e371cb4dfef5f0"}, + {file = "SQLAlchemy-1.4.40-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b693876ac7963b6bc7b1a5f3a2642f38d2624af834faad5933913928089d1b"}, + {file = "SQLAlchemy-1.4.40-cp310-cp310-win32.whl", hash = "sha256:2cf50611ef4221ad587fb7a1708e61ff72966f84330c6317642e08d6db4138fd"}, + {file = "SQLAlchemy-1.4.40-cp310-cp310-win_amd64.whl", hash = "sha256:26ee4dbac5dd7abf18bf3cd8f04e51f72c339caf702f68172d308888cd26c6c9"}, + {file = "SQLAlchemy-1.4.40-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:b41b87b929118838bafc4bb18cf3c5cd1b3be4b61cd9042e75174df79e8ac7a2"}, + {file = "SQLAlchemy-1.4.40-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:885e11638946472b4a0a7db8e6df604b2cf64d23dc40eedc3806d869fcb18fae"}, + {file = "SQLAlchemy-1.4.40-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b7ff0a8bf0aec1908b92b8dfa1246128bf4f94adbdd3da6730e9c542e112542d"}, + {file = "SQLAlchemy-1.4.40-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfa8ab4ba0c97ab6bcae1f0948497d14c11b6c6ecd1b32b8a79546a0823d8211"}, + {file = "SQLAlchemy-1.4.40-cp36-cp36m-win32.whl", hash = "sha256:d259fa08e4b3ed952c01711268bcf6cd2442b0c54866d64aece122f83da77c6d"}, + {file = "SQLAlchemy-1.4.40-cp36-cp36m-win_amd64.whl", hash = "sha256:c8d974c991eef0cd29418a5957ae544559dc326685a6f26b3a914c87759bf2f4"}, + {file = "SQLAlchemy-1.4.40-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:28b1791a30d62fc104070965f1a2866699c45bbf5adc0be0cf5f22935edcac58"}, + {file = "SQLAlchemy-1.4.40-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7ccdca6cd167611f4a62a8c2c0c4285c2535640d77108f782ce3f3cccb70f3a"}, + {file = "SQLAlchemy-1.4.40-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:69deec3a94de10062080d91e1ba69595efeafeafe68b996426dec9720031fb25"}, + {file = "SQLAlchemy-1.4.40-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ad778f4e80913fb171247e4fa82123d0068615ae1d51a9791fc4284cb81748"}, + {file = "SQLAlchemy-1.4.40-cp37-cp37m-win32.whl", hash = "sha256:9ced2450c9fd016f9232d976661623e54c450679eeefc7aa48a3d29924a63189"}, + {file = "SQLAlchemy-1.4.40-cp37-cp37m-win_amd64.whl", hash = "sha256:cdee4d475e35684d210dc6b430ff8ca2ed0636378ac19b457e2f6f350d1f5acc"}, + {file = "SQLAlchemy-1.4.40-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:08b47c971327e733ffd6bae2d4f50a7b761793efe69d41067fcba86282819eea"}, + {file = "SQLAlchemy-1.4.40-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cf03d37819dc17a388d313919daf32058d19ba1e592efdf14ce8cbd997e6023"}, + {file = "SQLAlchemy-1.4.40-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a62c0ecbb9976550f26f7bf75569f425e661e7249349487f1483115e5fc893a6"}, + {file = "SQLAlchemy-1.4.40-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ec440990ab00650d0c7ea2c75bc225087afdd7ddcb248e3d934def4dff62762"}, + {file = "SQLAlchemy-1.4.40-cp38-cp38-win32.whl", hash = "sha256:2b64955850a14b9d481c17becf0d3f62fb1bb31ac2c45c2caf5ad06d9e811187"}, + {file = "SQLAlchemy-1.4.40-cp38-cp38-win_amd64.whl", hash = "sha256:959bf4390766a8696aa01285016c766b4eb676f712878aac5fce956dd49695d9"}, + {file = "SQLAlchemy-1.4.40-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:0992f3cc640ec0f88f721e426da884c34ff0a60eb73d3d64172e23dfadfc8a0b"}, + {file = "SQLAlchemy-1.4.40-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa9e0d7832b7511b3b3fd0e67fac85ff11fd752834c143ca2364c9b778c0485a"}, + {file = "SQLAlchemy-1.4.40-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c9d0f1a9538cc5e75f2ea0cb6c3d70155a1b7f18092c052e0d84105622a41b63"}, + {file = "SQLAlchemy-1.4.40-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c956a5d1adb49a35d78ef0fae26717afc48a36262359bb5b0cbd7a3a247c26f"}, + {file = "SQLAlchemy-1.4.40-cp39-cp39-win32.whl", hash = "sha256:6b70d02bbe1adbbf715d2249cacf9ac17c6f8d22dfcb3f1a4fbc5bf64364da8a"}, + {file = "SQLAlchemy-1.4.40-cp39-cp39-win_amd64.whl", hash = "sha256:bf073c619b5a7f7cd731507d0fdc7329bee14b247a63b0419929e4acd24afea8"}, + {file = "SQLAlchemy-1.4.40.tar.gz", hash = "sha256:44a660506080cc975e1dfa5776fe5f6315ddc626a77b50bf0eee18b0389ea265"}, +] [package.dependencies] greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} [package.extras] -aiomysql = ["greenlet (!=0.4.17)", "aiomysql"] -aiosqlite = ["typing_extensions (!=3.10.0.1)", "greenlet (!=0.4.17)", "aiosqlite"] -asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3,!=0.2.4)"] -mariadb_connector = ["mariadb (>=1.0.1,!=1.1.2)"] +aiomysql = ["aiomysql ; python_version >= \"3\"", "greenlet (!=0.4.17) ; python_version >= \"3\""] +aiosqlite = ["aiosqlite ; python_version >= \"3\"", "greenlet (!=0.4.17) ; python_version >= \"3\"", "typing-extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17) ; python_version >= \"3\""] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4) ; python_version >= \"3\"", "greenlet (!=0.4.17) ; python_version >= \"3\""] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2) ; python_version >= \"3\""] mssql = ["pyodbc"] -mssql_pymssql = ["pymssql"] -mssql_pyodbc = ["pyodbc"] -mypy = ["sqlalchemy2-stubs", "mypy (>=0.910)"] -mysql = ["mysqlclient (>=1.4.0,<2)", "mysqlclient (>=1.4.0)"] -mysql_connector = ["mysql-connector-python"] -oracle = ["cx_oracle (>=7,<8)", "cx_oracle (>=7)"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910) ; python_version >= \"3\"", "sqlalchemy2-stubs"] +mysql = ["mysqlclient (>=1.4.0) ; python_version >= \"3\"", "mysqlclient (>=1.4.0,<2) ; python_version < \"3\""] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx-oracle (>=7) ; python_version >= \"3\"", "cx-oracle (>=7,<8) ; python_version < \"3\""] postgresql = ["psycopg2 (>=2.7)"] -postgresql_asyncpg = ["greenlet (!=0.4.17)", "asyncpg"] -postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] -postgresql_psycopg2binary = ["psycopg2-binary"] -postgresql_psycopg2cffi = ["psycopg2cffi"] -pymysql = ["pymysql (<1)", "pymysql"] -sqlcipher = ["sqlcipher3-binary"] +postgresql-asyncpg = ["asyncpg ; python_version >= \"3\"", "greenlet (!=0.4.17) ; python_version >= \"3\""] +postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql (<1) ; python_version < \"3\"", "pymysql ; python_version >= \"3\""] +sqlcipher = ["sqlcipher3-binary ; python_version >= \"3\""] + +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, +] + +[package.extras] +widechars = ["wcwidth"] + +[[package]] +name = "termcolor" +version = "3.1.0" +description = "ANSI color formatting for output in terminal" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version < \"3.13\"" +files = [ + {file = "termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa"}, + {file = "termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "termcolor" +version = "3.2.0" +description = "ANSI color formatting for output in terminal" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.13\"" +files = [ + {file = "termcolor-3.2.0-py3-none-any.whl", hash = "sha256:a10343879eba4da819353c55cb8049b0933890c2ebf9ad5d3ecd2bb32ea96ea6"}, + {file = "termcolor-3.2.0.tar.gz", hash = "sha256:610e6456feec42c4bcd28934a8c87a06c3fa28b01561d46aa09a9881b8622c58"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "tomli" +version = "2.3.0" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" +files = [ + {file = "tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45"}, + {file = "tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba"}, + {file = "tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf"}, + {file = "tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441"}, + {file = "tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845"}, + {file = "tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c"}, + {file = "tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456"}, + {file = "tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be"}, + {file = "tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac"}, + {file = "tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22"}, + {file = "tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f"}, + {file = "tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52"}, + {file = "tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8"}, + {file = "tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6"}, + {file = "tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876"}, + {file = "tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878"}, + {file = "tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b"}, + {file = "tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae"}, + {file = "tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b"}, + {file = "tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf"}, + {file = "tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f"}, + {file = "tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05"}, + {file = "tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606"}, + {file = "tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999"}, + {file = "tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e"}, + {file = "tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3"}, + {file = "tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc"}, + {file = "tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0"}, + {file = "tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879"}, + {file = "tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005"}, + {file = "tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463"}, + {file = "tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8"}, + {file = "tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77"}, + {file = "tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf"}, + {file = "tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530"}, + {file = "tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b"}, + {file = "tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67"}, + {file = "tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f"}, + {file = "tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0"}, + {file = "tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba"}, + {file = "tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b"}, + {file = "tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549"}, +] + +[[package]] +name = "tox" +version = "3.28.0" +description = "tox is a generic virtualenv management and test command line tool" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +groups = ["dev"] +files = [ + {file = "tox-3.28.0-py2.py3-none-any.whl", hash = "sha256:57b5ab7e8bb3074edc3c0c0b4b192a4f3799d3723b2c5b76f1fa9f2d40316eea"}, + {file = "tox-3.28.0.tar.gz", hash = "sha256:d0d28f3fe6d6d7195c27f8b054c3e99d5451952b54abdae673b71609a581f640"}, +] + +[package.dependencies] +colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} +filelock = ">=3.0.0" +packaging = ">=14" +pluggy = ">=0.12.0" +py = ">=1.4.17" +six = ">=1.14.0" +tomli = {version = ">=2.0.1", markers = "python_version >= \"3.7\" and python_version < \"3.11\""} +virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" + +[package.extras] +docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3) ; python_version < \"3.4\"", "psutil (>=5.6.1) ; platform_python_implementation == \"cpython\"", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] + +[[package]] +name = "tqdm" +version = "4.67.1" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] [[package]] name = "typing-extensions" version = "4.3.0" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, + {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, +] + +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +groups = ["dev"] +files = [ + {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, + {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + +[[package]] +name = "uritemplate" +version = "4.2.0" +description = "Implementation of RFC 6570 URI Templates" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686"}, + {file = "uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e"}, +] [[package]] name = "urllib3" version = "1.26.12" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" +groups = ["main", "dev"] +files = [ + {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, + {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, +] [package.extras] -brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] +brotli = ["brotli (>=1.0.9) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "virtualenv" +version = "20.33.1" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.13\"" +files = [ + {file = "virtualenv-20.33.1-py3-none-any.whl", hash = "sha256:07c19bc66c11acab6a5958b815cbcee30891cd1c2ccf53785a28651a0d8d8a67"}, + {file = "virtualenv-20.33.1.tar.gz", hash = "sha256:1b44478d9e261b3fb8baa5e74a0ca3bc0e05f21aa36167bf9cbf850e542765b8"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] + +[[package]] +name = "virtualenv" +version = "20.35.4" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version >= \"3.13\"" +files = [ + {file = "virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b"}, + {file = "virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] + [[package]] name = "watchdog" version = "2.1.9" description = "Filesystem events monitoring" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, + {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, + {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"}, + {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"}, + {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"}, + {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"}, + {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"}, + {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"}, + {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"}, + {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"}, + {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, + {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, +] [package.extras] watchmedo = ["PyYAML (>=3.10)"] +[[package]] +name = "webcolors" +version = "24.11.1" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version < \"3.13\"" +files = [ + {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, + {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, +] + +[[package]] +name = "webcolors" +version = "25.10.0" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.13\"" +files = [ + {file = "webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d"}, + {file = "webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf"}, +] + [[package]] name = "wrapt" version = "1.14.1" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +groups = ["main", "dev"] +files = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecee4132c6cd2ce5308e21672015ddfed1ff975ad0ac8d27168ea82e71413f55"}, + {file = "wrapt-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2020f391008ef874c6d9e208b24f28e31bcb85ccff4f335f15a3251d222b92d9"}, + {file = "wrapt-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2feecf86e1f7a86517cab34ae6c2f081fd2d0dac860cb0c0ded96d799d20b335"}, + {file = "wrapt-1.14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:240b1686f38ae665d1b15475966fe0472f78e71b1b4903c143a842659c8e4cb9"}, + {file = "wrapt-1.14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9008dad07d71f68487c91e96579c8567c98ca4c3881b9b113bc7b33e9fd78b8"}, + {file = "wrapt-1.14.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6447e9f3ba72f8e2b985a1da758767698efa72723d5b59accefd716e9e8272bf"}, + {file = "wrapt-1.14.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:acae32e13a4153809db37405f5eba5bac5fbe2e2ba61ab227926a22901051c0a"}, + {file = "wrapt-1.14.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49ef582b7a1152ae2766557f0550a9fcbf7bbd76f43fbdc94dd3bf07cc7168be"}, + {file = "wrapt-1.14.1-cp311-cp311-win32.whl", hash = "sha256:358fe87cc899c6bb0ddc185bf3dbfa4ba646f05b1b0b9b5a27c2cb92c2cea204"}, + {file = "wrapt-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:26046cd03936ae745a502abf44dac702a5e6880b2b01c29aea8ddf3353b68224"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] [[package]] name = "zipp" version = "3.8.1" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"}, + {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"}, +] [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\""] + +[extras] +docs = [] [metadata] -lock-version = "1.1" +lock-version = "2.1" python-versions = "^3.9" -content-hash = "59940d14d9b39b41bd850e43a17bb71825b0417ef9228654c47228e94ae09695" - -[metadata.files] -alabaster = [] -antlr4-python3-runtime = [] -argparse = [] -attrs = [] -babel = [] -beautifulsoup4 = [] -certifi = [] -cfgraph = [] -chardet = [] -charset-normalizer = [] -click = [] -colorama = [] -decorator = [] -deprecated = [] -docutils = [] -editorconfig = [] -et-xmlfile = [] -ghp-import = [] -graphviz = [] -greenlet = [] -hbreader = [] -idna = [] -imagesize = [] -importlib-metadata = [] -isodate = [] -jinja2 = [] -jsbeautifier = [] -json-flattener = [] -jsonasobj = [] -jsonasobj2 = [] -jsonpatch = [] -jsonpath-ng = [] -jsonpointer = [] -jsonschema = [] -linkml = [] -linkml-dataops = [] -linkml-runtime = [] -markdown = [] -markdown-it-py = [] -markupsafe = [] -mdit-py-plugins = [] -mdurl = [] -mergedeep = [] -mkdocs = [] -mkdocs-material = [] -mkdocs-material-extensions = [] -mkdocs-mermaid2-plugin = [] -myst-parser = [] -openpyxl = [] -packaging = [] -parse = [] -ply = [] -prefixcommons = [] -pydantic = [] -pygments = [] -pyjsg = [] -pymdown-extensions = [] -pyparsing = [] -pyrsistent = [] -pyshex = [] -pyshexc = [] -python-dateutil = [] -pytz = [] -pyyaml = [] -pyyaml-env-tag = [] -rdflib = [] -rdflib-jsonld = [] -rdflib-shim = [] -requests = [] -"ruamel.yaml" = [] -"ruamel.yaml.clib" = [] -shexjsg = [] -six = [] -snowballstemmer = [] -soupsieve = [] -sparqlslurper = [] -sparqlwrapper = [] -sphinx = [] -sphinx-click = [] -sphinxcontrib-applehelp = [] -sphinxcontrib-devhelp = [] -sphinxcontrib-htmlhelp = [] -sphinxcontrib-jsmath = [] -sphinxcontrib-qthelp = [] -sphinxcontrib-serializinghtml = [] -sqlalchemy = [] -typing-extensions = [] -urllib3 = [] -watchdog = [] -wrapt = [] -zipp = [] +content-hash = "45ab0641686b3572e070cc39ae4a66ac504af0e079ac7e36c12fdaee200a1f11" diff --git a/project/excel/modelcards.xlsx b/project/excel/modelcards.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dfc29f6421f3b2402f49c648d6b38f0fd3a115d9 GIT binary patch literal 18274 zcmeIaWmJ}H*Dg$hbc1wvcXuNl(vs5MA>Ad7vxDs$!Fh0BvyVCFiJ~kx1Ud)^2n@(drlYn*ubfmO@TVc*2Qu)(*w#qV!Pd@^ z(ZJ4*!OhxA4j>2D!2}Pr+^XzSn-Wftizvn)p4kLoa1N@Wwhp{H*oP3bad+>-{lpMP zLQ(TU{D@)Qnw6y&L1>cnN?@QrJ3M>cvxIrUFR~m5DVLA{yz`Uwly49-JlEiAZQ0Iu z1_@JVK$3`S1&5Pw7x-2DBR+rmDsqTlYBDaxu=sY0(EGK4phm6h{b1eQ zTQ3w<`kMy0(-(i2Pl`@DDKZoYNIE452pUj6ZdQy=W+v7qzdtiSNN8V6+i{i)-TR<) z#Le`~8m@=Kucivk(cERODkX4Vo-hbSBg)F%I5yCyRgwdFAPHeVPOc%14}xyzdRSa? zYn#jc*G~q+?cmUaV>kU7#<|JHTE@lY*DPcx!b~soOAp&%^IqvyYng*|a=rV8hT1vr z9|0rlhCVQIfE^xu7C##%Tn!?hVcYz5d9BbD)sC(<3sXUL%ihs3DPR9@ z?-C#zq|b83F<@8_czH53hF!eQy7sdo`)8fltZ|mtj@-Cv2F4=n@F13z8Z$dGPOMsU zgoA*8b;tfz3q zY1f>B^0ve>cL&o!MI4yaKEG2*f8y@>(%aMI z#&5Z-9vSa=hAk6(%nL#D_Z!my@i&g!>sk5nQ*t81c1?6Ij;=|y4MHewc+nhq@JvO# z0B2{hdE_jBgG<<5c|KD@^`tUg0AM{c(t)&b;Y{P*nS!JZ=~O{mCCOBR1ethNAAQ3* z3Rkr>0t=cTOh)hr3q?Gz+!xGA*})f8Jw+(XXzyxUVEUG#LeC3rQ~6(KYe>%qULZ^0 ztfo6|I*wXhL+441o~bp>=Ok-jfF@%vv3+Hy>z;H=Y&$AW=fg)s9ZGu$1p&HY##=am>UkkNo)J=Y@3gt$#h&^6Fzi)3S z)_Hg`77-;*j}!R2!x1qktpvebGO7EY>@^^6Gxa*9+qeA(-rm-E2T!nC(M6w2e#eqo zN216V++ksZ&PmmL(Hy95k@Yo%P2dXw3oPVOJ%PZ6hZ`(sQcsg&iN7c4{pc)bN8yEk z8@CU`J3!t+{Rw~eSS=^%JJa^@2<=4)8||*^66V<{HU=uA*A7E{y{e`0)YIHqZF{$7 z0+~nqS2JXRrKy_qq?j?XewD&xbvF_HhcsO;wvDyPUks>@n{bAsW{Tk2?5Lc|Bu;IV z)>GB-X|L~;W;+Sc0WSI8Y*h`xv5M9@$o{BFXsM>)k~t|Kw38BhmtH-Hd{}DQ% zR0-@@Sxui=y9b;$=9AZ}NbzmEtz?}yYol>%bDvGBZAz(KUs{tWb9b13Kr=1uUo26<6FCL zl1Ll8TW?NuMN7QT7S^t8;(4WBrMq{dfI5kTktX6nVPdhYEB=g&fkFcvO86#r2N>=W?lmR}E?Jhi?dEtE!Sy!L=tOh9+uwzU`=S&YwltI~T#~2rR(T%z5vAQs&gGsh zEW>+!FVxC2rbQ8yh4vzhgEETLK4E+F9^J6`b9r&kEHk{juf{LyextP>GM z+)=Q$!V^Lpf^**y%+3(l@M0nLm{V#va@OTx`R4Bq5Xw5bqF44KT0#GwK$t)L(vk%Q z0kH-qSnS^k#MRcp($UPs#L1EI@ylZtaaJCc?<7LM#pr;J95%K{stGG(zS6I-Qp(cw zoQngk?Z}vD#hR^73G-ad99Wrm^sSO~J)s9Fx6LUAxXFGm4mvb}lemI((eIRx8kT|` zVefE7G-k(R(V8dwR?MWVnVBzYyL*hTkee7(Y;7VM$1Q# z;vB`YBlpSmUwv+e6`9|&g7=6AggvMfeZGXxMlLz33)3s4x=agpaswqcXmri^|Gtq{4Q9P&Ew;q%?hM7LKjq1;X zh4gE~qKFV~ksbbyM*dSg|0*#BqZ-2)6%2d=-b+=k76XJHu}?&6yMxpWq(*DbeC2{s zivh{a$7K?~vT1D`?HS`>EhcamR}bM$1tTKbB)h-%!Gr{U0+7%eA)AKq?5}#eyaJsv zK*nkS>us16N?9i&{Zzr{T70)l;|VYmd>MUHD;L}zpAsKexA9s$%0+-#5xT+2r55=` zMnV>9kBwIzzr!+qCkG#gA|1>*JBfm{&iuwTdh6eP0A&e^MjWUDp?_8Z>)%vB^;89> z#d8v}t8s4VcLe#``S#1`f?Jm}0BHezt}aC1uG&fg%nH&U$uiwv!SmPPJrBLc_3cuz zgVnnQd`o&sOef@$7HIOLl1&6QIkE?jq$b^_AyD2A?;KWwMTin_ImlSa%_+%zVL5Py z-91R0rswAjOn@9ln|Hxq;;`FK8tXpOeFsza6)E<7^i7 zzC)x_d1lXsSe$Ff6D;udg2R(cgfkdlkU3Cn`5G#gB4*P0l5Kqc(@gK;4PTzSW(tkmMS?cCq zdU*`mN$mnc=ACg`9)qvcs!pSh&xMaQ9k3M-6)@h#R7Gcp?-puS)-)9f(ornyO4 z3uh8-TG7+V5bEY4AJR%$#)a-cO=)O58;zRX-!w&!=PPiftDpNeahB_F^dlB%s)$X} z?$ER#hZhd^svNy?9O){xUu{E-CJO{6jSOt+8^JP2%Xs9uix!K1cjE>(ZG|6DSy;qZzaM36%Vnke_>Jz!zg) z8Iy zA&|%s(d*wK^!xl>;v95>^L=ET`3tbx+ z1pOpGEr&H+thmCbt&Iao?yy+>X;~41BL_rjO7MnwTM(+NahzS1QDkRX>UX0;g*Rv} z`j>ekQ#6KC6JxH3s@xRS5(2$P5mt#cB(f5F%M}owEVCW$;w`q?8^g3rT)Bn}Hf@b1 zxUjy1aq<&~peH%JTxaX5dEenApmO1LpRH~uHOVopX?bFg6mq`azf=M&)A91OwO<`XGWln<^?JuBS^GAd& zOT_l0hKR2F57SZmqj)%`*BA&8u47Nlhq5S`f`^g4MF!E-K~uk%rD7`}+Gmz@=u8WR z3yAX(OdQ?7-p>K^l*N*GuQ2{9Gx?J5?zqP7-3m85mld81E}qqg9hg0j$=0j zeOvKH^y;-L`M@y>BeL|cNF0*$bnrTC*6qbetRyQ}c%iVsE}BJh)6i@TuUIOc#5DvM zpR!P(s!RS^)f|7R`hi0~q!uA4RIKb8)W|u47z*UW^y;5Dv0dFq>KC5rKS^R{^QVWo zTX+v*1&rX@W@=rDF~6GpEUAuGgInxE+au~z2v|pmkg>$)1yeyHJ2;uKa>;Hk7f!s? z*H%th3(i0&%cZkv;yiJLL%bHr_!_X%U7{@yrMsD-*-3k-T}w84GAe7$A85vG3?Y|o zBVURI?hVqUy}d@rEt^<`EEr$$1&&?zgQKweW$PdR$OIvg&ecI*(yQ8i6@EiF|JX)5{yKpQ_@ z46(|Bja2_unrNqCcFi{bunuxoCW$ot5#Q0YN?&ix?5i1l6v2xY~>^T#r-)wX$j5?fWT~`Oc2L&lwz-Gb6LXAGpoB z0DJ4lIwnDiD}z)f3fNG<8uezj78|@^x`=YaU(?9y)#TIEH+OvZsT7U|C#%XxR{+E2S2Mod0`aok zpq?t6c%X^-86_(qHqXH&ztssRHzlCgguzp8^Jb?1>!HC#i4|NOwCY$n& z3>FLyQW6S3nsM5{I+m*M0*`xxkA*|87wvj{nct1u0!bTK3anGapDQOQ?o@8@p8=Sz zG>5LCyyXrzbDNvFM_w(IE1W6or>t|9YeC=Tdc1 zD;or?#3CLlF}Z5<<}yXd8e{v~IDdwI#urAMO=Bo2qX-6Q1h`a~f!DCH`D6?>cLJAB z%7Jl%uwF5s_yzvi=DGhb#J~Dm{Qq5v5#ftK1I4dN2s^`kE}JJZ;Wus&%zxoFPQ*Qg zqFgAV@Nu`iPt!Txq_*FD%_QZ0JwhTk!3+)(F6zp5`sXYRpviM5s~B3&MyrS@)`W}Qp+*bque==g#!LnUil2oN4}u(M z^La$4(R^#;z*?Bu){vB;*(HWH8l0@?E33~b;Zj{)bt@zdM;d&3L;g^Ug+&xnhX`6w z#ms^TERUQgSmf;mi>I*!XRxl9{ztLUa|99vBKqB9lm0h6sl6oG9zZZI!x*WH! zQMiC4ywhGYBZnGCL5xa*fTf#9|9Iym_Mt?@-ZlBjMO$pX$si3oVf~LJ(I3aQ;F9#=p=C_Gej0|0%3$7ApN}5&EUGYCVi@cU zHI@|6b_MlWn5o)s&mbX{?QWeYE=Q55ZElCa*8^Ber#%K}?s|L!p&2cM5&^R@Oqop=-4`~%%Wb1C5 zi#QAB|H!!OO*UV>rnhZz{8IZgg)f5uAm% znR9WR;IJF-F75b9SDcU7ul0ej@B`iCpOp0%YyXQh{!f_N{);sJ#aQZSuRY^zihKN2 zZqm2TttfYVe{O4o7z#>gXB{Pd(S}GYB+iMF>!^wz6|7aO_fY)b12W0K!-sjA>9+=Nnv+SU?& zmsR%EH~jLhD5$ur1uYqlR=q>exwX?^c4s@fp+OcYjk3i?6aJh>FuX8v<}pnM_U3s; zlKMYT)-wcBUJX}qa(rPSG;*YI+?$yJaqKrdXwELRwBthmpL=f>^StZ*y)FXQCbLVV|0%AKwdqbwEV{vjO;*a)`{)hT0(8o4u{`^mXtnqivATcevJ~?Ytzls3fZR*e^>){GvD! zJV>cOw_vop$DB?ZSJe$y;2PvsG!05x?GE5QI!WaSF6k`*hYb<(&Ebpbf|?wNP!`vU zApViUxvLLhDS7HpR*GgRA)lAeBPKi^IxFb#Dt4j?}%w!(v;yw6T%`l`m{tL{Bdh6Ra+6VJX)+F+o^Xa*{?5$Eu zG`JsvDaK4**UApxNMBJCJFT(e$G{9>yBt-w=li=Y5sf9}4h`MsKP_Ot7SETz11dn~ zUp(cJ+`s!TPvIbA5V0o5wmS4>LjZkGWx2qvg^JaicX&>=ATDa*{&hdyaWB5kJf!NB z9fWdek}E4LwZ1-f42xZ315gHvB~L?E$dy|a+d`~pqEI1`sX&oDMzb%Lc~(unL0w~2 z6+lkjQmsA;z{lQWVa5pQkg>IhhD^zinr(wSw5-gH`IaM7K+jb=N)Dk$VUy1pL9hhA z$mVoM25fGzuX0c*m{3sI6EP{;sVc7gf@Ec)fDK|6I8R-jW4bByYC*bI|}KYZx)-cFcrt$_cHtl%M)K&2p2o@bHn9@(YWmnPRi(+0e%ub z67hx2N4mNl_uOhi;_ezc|hB_JH!7Oee4mNHh^_lMDKqK&DUo2}#6U ziO?kNRa~B@ql?AK!NLMZ9+7~F&DJ1yCADP8H4_N(HOFjlIFgt*v6vYY6N?Tv5{C;< zh=lU1a;$dJK8}D$%qeku(n!^$DU*`oa)t%Js){lROvE0k8%=)~qi$0#8Y@*nMViot zlZp`fk-|4dgIy_kYCxYEW(h1=J+JI$0c`nkLK@YDYC2Rn+GNFT)vSsGeFg{UGu|!w zkXn?VsMdaUeFM;<9kOIj6IPyYn^1xmrF*}oN5E)ZD+-b)V6&dTfS?roRoMnDUBNIK z1s@M+uu_h3>E$*Ve^(P&Ub0H^m0w?=!g{$AB-=uSn(BwN^=SI?!2L46jNnasXq|V3 z)Ax9rTaxnE983th>og@cTj?uG_sqmwzqI%9Vp+NIR^!1x`%NFD=TJ*;@!pG_J}H7t zMe1M#fI2|`7actEb~$BT+lQtYt&+EpD5Y~6jnEGsxw+2VuM;&}=`hZKAJ zpEiU+PWY;jhF{vS!g+N4U9+XtLmx7J{h=!c+vHXU0()C`U_=CKL)UmR15!_%!AU#< z;RgBZz2Y7C-?PR4jnMz1+y5){|Cd64q}%^%>Hlvn{gGtUMmj(yLreriG75M`BIRofnvq1xMLhP^1zW9%gCrOEvb$;qDTc{&v&r_L4u4jQAXQN*fW{vd%YX5 zw*l@$)MUBcsg_|E*L)5Q1)TFKb3j1J7(!wQE|ozUX;95xG?;~(1EYG06-->3G)R>8&r zAlP-*lf*WpA_{=e7wD$vsX)3sAt$JK1o!tC@1ZfbYXelm(Z49+kv6|m{vYc0pIIy9 z@0MzM#iVr(xwE|vtdGK&ZdFKB{%kaW`>Y_I!2G}hB-*>kT!+SD(}gB)z_P4Asw}9d zH9<MR+3*SoUXBJo4Dpgm_0a=(__G4+2o;0k!cD9PF>{B5(Am{VvHscZ1nMNG?%^Y!NeB|0^*u z=m4Y_M!b0Ah$*9p2K%h?|3InBiNcN4JLnaYtbhMizixGTVs2QOLQo@)J-d{mS< z?`km3FTL6_NRNXlVq#~df+%o81P_#t)az?j<#?B*E1hk~r55e+d&uYTdb=WT@qkUh zE?Ay-Ee4R26^h|U&XWmPvMp}93O@jAd*(?Q(Pbjn<`zF-FNwqvq69Q%mk+_V+&7bb z|7v_Ma}PAF`ZuEi+!lfRlt0pp#mMnJ`!MoABGsHX8SmFT_wNqXj#H1b2HneTd8&FO z4YH+qW`=Hc!tG!mXR%DYz*%gPuE!ggS5gm?L0?zrOQWYPK=3n!8&ja)=2TlW^;~a3mhb2ja?&0=d!THAH=c@dAIQ1#AEKaPk^A` zTA1kcTYP#uTt8qr(jiv{y5=KOr4{39-K}dRjE*l&dxzZnUI)%xBgv^eY6z7tE)I%= z!$Gn*h@Vl&AgzLW7hGF&0v(J`7DuTaal3Lx6#0BZ3F)Zj;xKPRSi4_cC&?aIVX>EXVr zoDF^gld)H=>OMm#xg87!d+jflq+vyhdo>uxhfQ4DD~+~UNxHi>M)@gn7=bL^3$%Uf z5~CHn6F2){CE4f#Pma2fH*x~IlU-&Ezhf7>y+b7^MO$=FGq#Bcj3h!W2Q6qU+mz0J;^(#XV}Q2W62L*UcW%-~EDUrIz3g zP&*_461*PSw6pS4?ev(;5>OD2)NGA3Sc{>$hGnlEB%^CFhY57|atoZ<$5ojjl|X&m zeoecktd7R+IIOD|fNA58fbFC5X~Lhc3d1!DQprhN>nMcFdtFPavm$rE+A3)|Hi50I zJeJpje$O2gb}m6qGi$p4>*ttd&9P8e7on`79*-{QL=g)n`A=bV3Dlk`!&CUJq+Zfy z3vzgnl%8FpAP?$c`mG+H-|7*3R1dxAiuHV9tIJ~Z^Xl<_+v!UyOd?BH6N?~FNroi6 zz3)C2c)Qnk)pQa?mE#Ehf>KbZjj#0>%jhOvvDXuFpd5_!g#XSWGAoDL#5v!PU!B-$ zHLGhL3)ju zfK#_M!%uN#;bM6Lx`8e#`+;|xEy+R(3fu!N>EsG=Y-O`xnXoo^C&Eu07<5Ka!__K$04#Smw4|;LuY3tGlFy zVD1?XILde@A4jmW{a?A9`Z1Re0dx7%LoN?dm7YTVVo0P(da!z-rw+uh*FoY%_eYxXvJJ&<(Z^s$R zXQ-3!&IyI3QZsc6xrIx=rTYxZ8LpOue1-ypqGJE(lUIjyYsi^Msh(pPgq5}vp zNj{A$%lnq&3$%egChmI_MXJMda+3E%P2WyfD+T`^pBi|pqyDo*^$#-%mPZ2pxJmds zZ~v#bLiYcgCn!C5LPpP{C-7#CdkOIbBKmd%x2Vu7jD9A|1Od0GI)PhMN4dfdsie8; zL775RYvlj6MRmrZy6I+Y$!8@MnB$o0t^SayRp&3WY!)Ha)K44`i&ZK+6pr)_u- z;Suy>gBG1ApeNYq!@RDRl0FL!fzbOQ^46TFOwnF>ak%8gWgp9 z)%XYgw==sS4_j25|JkD2c-W#Ee%zwcOy*u8qS~PQMT7B;_c&7FdWN~XB}_ucW1r|X z9<-E(nklfr6%Y=cTsgqN*#8Ved0#d6TCVs=Si|g-Do3NXlyJVgf^RwD(%big+dUN# z3h)UqM@_=(FLIrAy;GmggSK@PXs&?1&P5W0-^WPcrShzh1y+BxshZ)EO>y< z(fK{>e9BA3Uvid3V1}bEDY$eZtfDe+4=^LnQ^2yvS+bmIwKw0AQL~j;txDvz*_0}# z7Dxfc0}SaKGMh+fe}VFNiCwW5(aFw?%95g6P)5qr)rep1+&J*h0iaqT<$n%wA0=8v zx*vDws^r3DA;^783S@oSe3fgb80@2INg^ zcxxrTB?SHH8HwBFtM?kk3G}A`4w4h+@f-q^;HRN=PV`$yK_hfZOq^J?!IqWUtr(F( zQKzDqqA#L-S0`k!3(LE$8a;r!G8q@owu3s)vWyXi*y)PK?wODXw(`d2aqd$s>K?qrvjl-s4UP?PFiq1@phUPe8x z>G*XaD!`POuhGop%G%|u^-GI#D#xL` zZ!Wm3+s$YEytC~W)-`>{3!kgs*3ea&`R3@ro%K&}6xPQ2>C>r@-LX?oeywiw$8+_75h?GA;1E2UNF|V3$?Wf} z(c6-qTi0V1)4RP;bAx5y(_mgi89Je1oZRQvZeM3DRLHkz-JAGYyc+RAoQ$BP)N+4u zmDl`UFbFYhUOcM^KG`VkU2ld;C7cU(?(taUtR_bk(}4x}c_yKL!NE=Er9_pN;++Xt z?F^j{S`?lWdxl3xMUP754TfnQUH(v@#u(cwNvenH!Va<+6qp!3BUzL9*@_G)I;EjG z1Tzg{B4~FQ9nJ8)Dj>Cp(oofAm#l(<+cFMKlR6iX6N7T7U|Ht1mYTRylB(n`Pl~YI zX))bV@|na&Fgy*S#8so-`1ohe^)>#FZ?8s!6%)tOq|{{2ablg8VwBW&%vJ1TgysBZ z@guXM19%fR(IMp%`=dMp%yYj|LAWwE=a@)4<#+M&6aJv54*x1c8k)yS1q<6=8!Pbz zo(US3I{Xmd>lc5&?NWi)U4HHLlet`Scq3jL(B{y9_6G<2`o_V;%8`-b;d4e@y$vu` z3;A@9WHLdI5Qnmw9AQFSf~tQ)nnr~T7td%doz1h4fqUuB&xblsU@o-Jm0J^0fPIUs zY_2s?2P#!V{@#2zR;1)R9RYjDn2^|sT?aS6V%~Vx4)qgkT&mp}nx} zO0_k^mUc0_@5A-|U>M3o9g@drGXaNA=6vF&mC1uWLTcXumL4DaU9`JBCeKNG=q8!4V~4EcmJHJrasr0{Nh*2h+a@tu zk5K2@C3Dw8m>o7hr~U}101NHi4n`^c07lZ1N{FeKj8g+`813nl`or!9G7Y-4Fy(Oh z)Gy`T?Y%qZDp{E2l!pdwe%8)3i&%`*V;r!>##QOpoOH~{Bxm3zC)K&E1?HvGf5>Zw z-1Ct%b49j0iHS&PhOBHM)G`q*1$sesf0H|ZLk4v++}o7QsE-HMH`8dj~AhYB@v-IVbq6A;%IBD>hg3<}}SxSO!` z+JEicdilf6E%Rl@LBJ(IOgl-=K*0KFA!YHNS>t~C=!b<-Q~2*_~cb3W4`CHJ% zpTE)Y=(4b9GUPgK69p3?5+(>Kq6(NH2=5*Wc{S*&g%7+;u|i2orFLo(}i2I+aF!5VZQoXF^GD^LKRL+RDP(zF&t&IC&?+aR1?|gPi#*jxdN#OM-XCZ zm<~g{%0OFW+RMB#yqEtBK&IVlzYIl#vujx}AhSLn$w3axy?XEFB(@U)fZng7{o=h7 zHFdqxQIRHTyx?$&?~`$)bU%paFBMHo!d()!UPl~f^op#PJ{Hea%wZnwTf3yHzalYB zzQ3w`P(eDZDmTVg2O5nH)w=!y-$WJS!jB^A!a+s;u$qt<6|gkM7^;0VUt-i0i3=|j zDq47JZ+2T>?rUKe?6qe(w?@9rQj`S+LkIuotJy%Od3^H)YViNOsQvWx(_7KM&w_yX zf_DD*>Hpl3etP`rrQtuv*MNWinJdIk0iIqO`yT*5GMGnz2fzP6u8=)Nd3y8d4@w@e zECs%drznqY-=`=~FYo+8p#oMH&!9ZEFrT74y@&D#B?tall*d-vQHhAU=!o z*cy6@@^o$g56Z(W{%4-(vCZ)m<>~tPACwkglzs-~k(@t8dAbk%2Za@Q-TWDpN1FK* z<>^}QACwB9OFV<}IDdSK@^nS@4+PnReEz|3Gh5A!$^dJ6M&5AY9+ z8nFHG%rh}RYrapn)c(NS0W;}yFwffW(_O1SFg|$C!#r!iPuG9`z_1cL5A&=AKV7Ey z15-=*Jj}Bu{Le6S#LvS#Ys3ExlTGqG%(F)P&oG!|&%-=x#ZM=}e`FIu{w&Pzx$sl- zdpgVf1A`3wR}jzG4a>7u{B+v(2d0|pd6;Ld`042A4-6yC^Dxg^@zWW{ADAK9=V6|; z;-^jdKQKo0&%-=x#ZNoTe_$3Eo`-qXik~({|G-!?JrDD&6+i9q{ejtGejesoD}LJf z`5zci9JWW8KYgI5Cij%M|2dk(@i!X(^x#t>{O6z#=l{I)|Ip&6ho5qbKZnhE9uNNm o(|C&Wv_AfWv(F0x@=Ud?C<_Vv$0{HoWWe`IU_p|?|M1iQ2Y4LaSpWb4 literal 0 HcmV?d00001 diff --git a/project/graphql/modelcards.graphql b/project/graphql/modelcards.graphql new file mode 100644 index 0000000..f9f5e68 --- /dev/null +++ b/project/graphql/modelcards.graphql @@ -0,0 +1,220 @@ +# metamodel_version: 1.7.0 +enum CitationStyleEnum + { + MLA + APA + Chicago + IEEE + } + +type BenchmarkDataset + { + type: String + name: String + config: String + split: String + revision: String + args: String + } + +type BenchmarkMetric + { + type: String + value: Float + name: String + config: String + args: String + } + +type BenchmarkResult + { + task: Task + dataset: BenchmarkDataset + metrics: [BenchmarkMetric] + source: BenchmarkSource + } + +type BenchmarkSource + { + name: String + url: Uri + } + +type Citation + { + style: CitationStyleEnum + citation: String + } + +type ConfidenceInterval + { + lowerBound: Float + upperBound: Float + } + +type Considerations + { + users: [User] + useCases: [UseCase] + limitations: [Limitation] + tradeoffs: [Tradeoff] + ethicalConsiderations: [Risk] + } + +type DataSet + { + name: String + description: String + link: Uri! + sensitive: SensitiveData + graphics: GraphicsCollection + biasInput: String + unit: String + } + +type Graphic + { + name: String + image: String + } + +type GraphicsCollection + { + description: String + collection: [Graphic] + } + +type KeyVal + { + key: String + value: String + } + +type License + { + identifier: String + customText: String + } + +type Limitation + { + description: String + } + +type ModelCard + { + schemaVersion: String + modelDetails: ModelDetails! + modelParameters: ModelParameters + quantitativeAnalysis: QuantitativeAnalysis + considerations: Considerations + modelCategory: String + biasModel: String + biasOutput: String + framework: String + frameworkVersion: String + libraryName: String + pipelineTag: String + language: [String] + baseModel: String + tags: [String] + datasets: [String] + metrics: [String] + modelIndex: [ModelIndex] + } + +type ModelDetails + { + name: String! + overview: String + documentation: String + owners: [Owner] + version: Version + licenses: [License] + references: [Reference] + citations: [Citation] + path: String + } + +type ModelIndex + { + name: String + results: [BenchmarkResult] + } + +type ModelParameters + { + modelArchitecture: String + data: [DataSet] + inputFormat: String + inputFormatMap: [KeyVal] + outputFormat: String + outputFormatMap: [KeyVal] + } + +type Owner + { + name: String + contact: String + } + +type PerformanceMetric + { + type: String! + value: Float + valueError: Float + confidenceInterval: ConfidenceInterval + threshold: Float + slice: String + unit: String + } + +type QuantitativeAnalysis + { + performanceMetrics: [PerformanceMetric] + graphics: GraphicsCollection + } + +type Reference + { + reference: String + } + +type Risk + { + name: String + mitigationStrategy: String + } + +type SensitiveData + { + sensitiveData: [String] + } + +type Task + { + type: String + name: String + } + +type Tradeoff + { + description: String + } + +type UseCase + { + description: String + } + +type User + { + description: String + } + +type Version + { + name: String + date: Date + diff: String + } diff --git a/project/jsonld/modelcards.context.jsonld b/project/jsonld/modelcards.context.jsonld new file mode 100644 index 0000000..7dee067 --- /dev/null +++ b/project/jsonld/modelcards.context.jsonld @@ -0,0 +1,335 @@ +{ + "comments": { + "description": "Auto generated by LinkML jsonld context generator", + "generation_date": "2025-11-19T19:55:00", + "source": "modelcards.yaml" + }, + "@context": { + "xsd": "http://www.w3.org/2001/XMLSchema#", + "linkml": "https://w3id.org/linkml/", + "modelcard": "https://w3id.org/linkml/modelcard/", + "skos": "http://www.w3.org/2004/02/skos/core#", + "@vocab": "https://w3id.org/linkml/modelcard/", + "args": { + "@id": "args" + }, + "base_model": { + "@id": "base_model" + }, + "bias_input": { + "@id": "bias_input" + }, + "bias_model": { + "@id": "bias_model" + }, + "bias_output": { + "@id": "bias_output" + }, + "citation": { + "@id": "citation" + }, + "citations": { + "@id": "citations" + }, + "collection": { + "@id": "collection" + }, + "confidence_interval": { + "@id": "confidence_interval" + }, + "config": { + "@id": "config" + }, + "considerations": { + "@id": "considerations" + }, + "contact": { + "@id": "contact" + }, + "custom_text": { + "@id": "custom_text" + }, + "data": { + "@id": "data" + }, + "dataset": { + "@id": "dataset" + }, + "datasets": { + "@id": "datasets" + }, + "date": { + "@type": "xsd:date", + "@id": "date" + }, + "description": { + "@id": "description" + }, + "diff": { + "@id": "diff" + }, + "documentation": { + "@id": "documentation" + }, + "ethical_considerations": { + "@id": "ethical_considerations" + }, + "framework": { + "@id": "framework" + }, + "framework_version": { + "@id": "framework_version" + }, + "graphics": { + "@id": "graphics" + }, + "identifier": { + "@id": "identifier" + }, + "image": { + "@id": "image" + }, + "input_format": { + "@id": "input_format" + }, + "input_format_map": { + "@id": "input_format_map" + }, + "key": { + "@id": "key" + }, + "language": { + "@id": "language" + }, + "library_name": { + "@id": "library_name" + }, + "licenses": { + "@id": "licenses" + }, + "limitations": { + "@id": "limitations" + }, + "link": { + "@type": "xsd:anyURI", + "@id": "link" + }, + "lower_bound": { + "@type": "xsd:float", + "@id": "lower_bound" + }, + "metrics": { + "@id": "metrics" + }, + "mitigation_strategy": { + "@id": "mitigation_strategy" + }, + "model_architecture": { + "@id": "model_architecture" + }, + "model_category": { + "@id": "model_category" + }, + "model_details": { + "@id": "model_details" + }, + "model_index": { + "@id": "model_index" + }, + "model_parameters": { + "@id": "model_parameters" + }, + "name": { + "@id": "name" + }, + "output_format": { + "@id": "output_format" + }, + "output_format_map": { + "@id": "output_format_map" + }, + "overview": { + "@id": "overview" + }, + "owners": { + "@id": "owners" + }, + "path": { + "@id": "path" + }, + "performance_metrics": { + "@id": "performance_metrics" + }, + "pipeline_tag": { + "@id": "pipeline_tag" + }, + "quantitative_analysis": { + "@id": "quantitative_analysis" + }, + "reference": { + "@id": "reference" + }, + "references": { + "@id": "references" + }, + "results": { + "@id": "results" + }, + "revision": { + "@id": "revision" + }, + "schema_version": { + "@id": "schema_version" + }, + "sensitive": { + "@id": "sensitive" + }, + "sensitive_data": { + "@id": "sensitive_data" + }, + "slice": { + "@id": "slice" + }, + "source": { + "@id": "source" + }, + "split": { + "@id": "split" + }, + "style": { + "@context": { + "text": "skos:notation", + "description": "skos:prefLabel", + "meaning": "@id" + }, + "@id": "style" + }, + "tags": { + "@id": "tags" + }, + "task": { + "@id": "task" + }, + "threshold": { + "@type": "xsd:float", + "@id": "threshold" + }, + "tradeoffs": { + "@id": "tradeoffs" + }, + "type": { + "@id": "type" + }, + "unit": { + "@id": "unit" + }, + "upper_bound": { + "@type": "xsd:float", + "@id": "upper_bound" + }, + "url": { + "@type": "xsd:anyURI", + "@id": "url" + }, + "use_cases": { + "@id": "use_cases" + }, + "users": { + "@id": "users" + }, + "value": { + "@id": "value" + }, + "value_error": { + "@type": "xsd:float", + "@id": "value_error" + }, + "version": { + "@id": "version" + }, + "BenchmarkDataset": { + "@id": "BenchmarkDataset" + }, + "BenchmarkMetric": { + "@id": "BenchmarkMetric" + }, + "BenchmarkResult": { + "@id": "BenchmarkResult" + }, + "BenchmarkSource": { + "@id": "BenchmarkSource" + }, + "Citation": { + "@id": "Citation" + }, + "ConfidenceInterval": { + "@id": "ConfidenceInterval" + }, + "Considerations": { + "@id": "Considerations" + }, + "DataSet": { + "@id": "DataSet" + }, + "Graphic": { + "@id": "Graphic" + }, + "GraphicsCollection": { + "@id": "GraphicsCollection" + }, + "KeyVal": { + "@id": "KeyVal" + }, + "License": { + "@id": "License" + }, + "Limitation": { + "@id": "Limitation" + }, + "ModelCard": { + "@id": "ModelCard" + }, + "ModelDetails": { + "@id": "ModelDetails" + }, + "ModelIndex": { + "@id": "ModelIndex" + }, + "ModelParameters": { + "@id": "ModelParameters" + }, + "Owner": { + "@id": "Owner" + }, + "PerformanceMetric": { + "@id": "PerformanceMetric" + }, + "QuantitativeAnalysis": { + "@id": "QuantitativeAnalysis" + }, + "Reference": { + "@id": "Reference" + }, + "Risk": { + "@id": "Risk" + }, + "SensitiveData": { + "@id": "SensitiveData" + }, + "Task": { + "@id": "Task" + }, + "Tradeoff": { + "@id": "Tradeoff" + }, + "UseCase": { + "@id": "UseCase" + }, + "User": { + "@id": "User" + }, + "Version": { + "@id": "Version" + } + } +} diff --git a/project/jsonld/modelcards.jsonld b/project/jsonld/modelcards.jsonld new file mode 100644 index 0000000..4790384 --- /dev/null +++ b/project/jsonld/modelcards.jsonld @@ -0,0 +1,3660 @@ +{ + "name": "Model_Card", + "description": "A comprehensive LinkML rendering of model card schemas,\nincorporating Google Model Card Toolkit v0.0.2, HuggingFace,\nand Papers with Code specifications.\n\nThis schema provides structured metadata for documenting machine learning models\nincluding model details, training data, performance metrics, ethical considerations,\nand deployment specifications.", + "id": "https://w3id.org/linkml/modelcard", + "imports": [ + "linkml:types" + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "prefixes": [ + { + "prefix_prefix": "modelcard", + "prefix_reference": "https://w3id.org/linkml/modelcard/" + }, + { + "prefix_prefix": "linkml", + "prefix_reference": "https://w3id.org/linkml/" + } + ], + "default_prefix": "modelcard", + "default_range": "string", + "types": [ + { + "name": "string", + "definition_uri": "https://w3id.org/linkml/String", + "description": "A character string", + "notes": [ + "In RDF serializations, a slot with range of string is treated as a literal or type xsd:string. If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"string\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "exact_mappings": [ + "schema:Text" + ], + "base": "str", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "@type": "TypeDefinition" + }, + { + "name": "integer", + "definition_uri": "https://w3id.org/linkml/Integer", + "description": "An integer", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"integer\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "exact_mappings": [ + "schema:Integer" + ], + "base": "int", + "uri": "http://www.w3.org/2001/XMLSchema#integer", + "@type": "TypeDefinition" + }, + { + "name": "boolean", + "definition_uri": "https://w3id.org/linkml/Boolean", + "description": "A binary (true or false) value", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"boolean\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "exact_mappings": [ + "schema:Boolean" + ], + "base": "Bool", + "uri": "http://www.w3.org/2001/XMLSchema#boolean", + "repr": "bool", + "@type": "TypeDefinition" + }, + { + "name": "float", + "definition_uri": "https://w3id.org/linkml/Float", + "description": "A real number that conforms to the xsd:float specification", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"float\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "exact_mappings": [ + "schema:Float" + ], + "base": "float", + "uri": "http://www.w3.org/2001/XMLSchema#float", + "@type": "TypeDefinition" + }, + { + "name": "double", + "definition_uri": "https://w3id.org/linkml/Double", + "description": "A real number that conforms to the xsd:double specification", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"double\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "close_mappings": [ + "schema:Float" + ], + "base": "float", + "uri": "http://www.w3.org/2001/XMLSchema#double", + "@type": "TypeDefinition" + }, + { + "name": "decimal", + "definition_uri": "https://w3id.org/linkml/Decimal", + "description": "A real number with arbitrary precision that conforms to the xsd:decimal specification", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"decimal\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "broad_mappings": [ + "schema:Number" + ], + "base": "Decimal", + "uri": "http://www.w3.org/2001/XMLSchema#decimal", + "@type": "TypeDefinition" + }, + { + "name": "time", + "definition_uri": "https://w3id.org/linkml/Time", + "description": "A time object represents a (local) time of day, independent of any particular day", + "notes": [ + "URI is dateTime because OWL reasoners do not work with straight date or time", + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"time\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "exact_mappings": [ + "schema:Time" + ], + "base": "XSDTime", + "uri": "http://www.w3.org/2001/XMLSchema#time", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "date", + "definition_uri": "https://w3id.org/linkml/Date", + "description": "a date (year, month and day) in an idealized calendar", + "notes": [ + "URI is dateTime because OWL reasoners don't work with straight date or time", + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"date\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "exact_mappings": [ + "schema:Date" + ], + "base": "XSDDate", + "uri": "http://www.w3.org/2001/XMLSchema#date", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "datetime", + "definition_uri": "https://w3id.org/linkml/Datetime", + "description": "The combination of a date and time", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"datetime\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "exact_mappings": [ + "schema:DateTime" + ], + "base": "XSDDateTime", + "uri": "http://www.w3.org/2001/XMLSchema#dateTime", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "date_or_datetime", + "definition_uri": "https://w3id.org/linkml/DateOrDatetime", + "description": "Either a date or a datetime", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"date_or_datetime\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "str", + "uri": "https://w3id.org/linkml/DateOrDatetime", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "uriorcurie", + "definition_uri": "https://w3id.org/linkml/Uriorcurie", + "description": "a URI or a CURIE", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"uriorcurie\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "URIorCURIE", + "uri": "http://www.w3.org/2001/XMLSchema#anyURI", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "curie", + "definition_uri": "https://w3id.org/linkml/Curie", + "conforms_to": "https://www.w3.org/TR/curie/", + "description": "a compact URI", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"curie\"." + ], + "comments": [ + "in RDF serializations this MUST be expanded to a URI", + "in non-RDF serializations MAY be serialized as the compact representation" + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "Curie", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "uri", + "definition_uri": "https://w3id.org/linkml/Uri", + "conforms_to": "https://www.ietf.org/rfc/rfc3987.txt", + "description": "a complete URI", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"uri\"." + ], + "comments": [ + "in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node" + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "close_mappings": [ + "schema:URL" + ], + "base": "URI", + "uri": "http://www.w3.org/2001/XMLSchema#anyURI", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "ncname", + "definition_uri": "https://w3id.org/linkml/Ncname", + "description": "Prefix part of CURIE", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"ncname\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "NCName", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "objectidentifier", + "definition_uri": "https://w3id.org/linkml/Objectidentifier", + "description": "A URI or CURIE that represents an object in the model.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"objectidentifier\"." + ], + "comments": [ + "Used for inheritance and type checking" + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "ElementIdentifier", + "uri": "http://www.w3.org/ns/shex#iri", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "nodeidentifier", + "definition_uri": "https://w3id.org/linkml/Nodeidentifier", + "description": "A URI, CURIE or BNODE that represents a node in a model.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"nodeidentifier\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "NodeIdentifier", + "uri": "http://www.w3.org/ns/shex#nonLiteral", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "jsonpointer", + "definition_uri": "https://w3id.org/linkml/Jsonpointer", + "conforms_to": "https://datatracker.ietf.org/doc/html/rfc6901", + "description": "A string encoding a JSON Pointer. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to a valid object within the current instance document when encoded in tree form.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"jsonpointer\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "str", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "jsonpath", + "definition_uri": "https://w3id.org/linkml/Jsonpath", + "conforms_to": "https://www.ietf.org/archive/id/draft-goessner-dispatch-jsonpath-00.html", + "description": "A string encoding a JSON Path. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded in tree form.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"jsonpath\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "str", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "repr": "str", + "@type": "TypeDefinition" + }, + { + "name": "sparqlpath", + "definition_uri": "https://w3id.org/linkml/Sparqlpath", + "conforms_to": "https://www.w3.org/TR/sparql11-query/#propertypaths", + "description": "A string encoding a SPARQL Property Path. The value of the string MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded as RDF.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"sparqlpath\"." + ], + "from_schema": "https://w3id.org/linkml/types", + "imported_from": "linkml:types", + "base": "str", + "uri": "http://www.w3.org/2001/XMLSchema#string", + "repr": "str", + "@type": "TypeDefinition" + } + ], + "enums": [ + { + "name": "CitationStyleEnum", + "definition_uri": "https://w3id.org/linkml/modelcard/CitationStyleEnum", + "description": "Citation format styles", + "from_schema": "https://w3id.org/linkml/modelcard", + "permissible_values": [ + { + "text": "MLA", + "description": "Modern Language Association style" + }, + { + "text": "APA", + "description": "American Psychological Association style" + }, + { + "text": "Chicago", + "description": "Chicago Manual of Style" + }, + { + "text": "IEEE", + "description": "Institute of Electrical and Electronics Engineers style" + } + ] + } + ], + "slots": [ + { + "name": "name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Name or identifier", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "owner": "ModelIndex", + "domain_of": [ + "Version", + "Owner", + "ModelDetails", + "Graphic", + "DataSet", + "Risk", + "Task", + "BenchmarkDataset", + "BenchmarkMetric", + "BenchmarkSource", + "ModelIndex" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "description", + "definition_uri": "https://w3id.org/linkml/modelcard/description", + "description": "Textual description", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/description", + "owner": "Tradeoff", + "domain_of": [ + "GraphicsCollection", + "DataSet", + "User", + "UseCase", + "Limitation", + "Tradeoff" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "contact", + "definition_uri": "https://w3id.org/linkml/modelcard/contact", + "description": "Contact information (email, URL, etc.)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/contact", + "owner": "Owner", + "domain_of": [ + "Owner" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "date", + "definition_uri": "https://w3id.org/linkml/modelcard/date", + "description": "Date value", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/date", + "owner": "Version", + "domain_of": [ + "Version" + ], + "range": "date", + "@type": "SlotDefinition" + }, + { + "name": "diff", + "definition_uri": "https://w3id.org/linkml/modelcard/diff", + "description": "Difference or changelog from previous version", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/diff", + "owner": "Version", + "domain_of": [ + "Version" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "identifier", + "definition_uri": "https://w3id.org/linkml/modelcard/identifier", + "description": "SPDX license identifier (e.g., 'Apache-2.0', 'MIT')", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/identifier", + "owner": "License", + "domain_of": [ + "License" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "custom_text", + "definition_uri": "https://w3id.org/linkml/modelcard/custom_text", + "description": "Custom license text (when not using SPDX identifier)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/custom_text", + "owner": "License", + "domain_of": [ + "License" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "reference", + "definition_uri": "https://w3id.org/linkml/modelcard/reference", + "description": "Reference URL or citation string", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/reference", + "owner": "Reference", + "domain_of": [ + "Reference" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "style", + "definition_uri": "https://w3id.org/linkml/modelcard/style", + "description": "Citation format style", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/style", + "owner": "Citation", + "domain_of": [ + "Citation" + ], + "range": "CitationStyleEnum", + "@type": "SlotDefinition" + }, + { + "name": "citation", + "definition_uri": "https://w3id.org/linkml/modelcard/citation", + "description": "Formatted citation text", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/citation", + "owner": "Citation", + "domain_of": [ + "Citation" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "overview", + "definition_uri": "https://w3id.org/linkml/modelcard/overview", + "description": "High-level model description", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/overview", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "documentation", + "definition_uri": "https://w3id.org/linkml/modelcard/documentation", + "description": "Detailed usage guide and documentation", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/documentation", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "owners", + "definition_uri": "https://w3id.org/linkml/modelcard/owners", + "description": "Model owners or maintainers", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/owners", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "version", + "definition_uri": "https://w3id.org/linkml/modelcard/version", + "description": "Version information", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/version", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "licenses", + "definition_uri": "https://w3id.org/linkml/modelcard/licenses", + "description": "License information", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/licenses", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "references", + "definition_uri": "https://w3id.org/linkml/modelcard/references", + "description": "Related resources and references", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/references", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "citations", + "definition_uri": "https://w3id.org/linkml/modelcard/citations", + "description": "Citation information for the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/citations", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "path", + "definition_uri": "https://w3id.org/linkml/modelcard/path", + "description": "Storage location or path to model artifacts", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/path", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "link", + "definition_uri": "https://w3id.org/linkml/modelcard/link", + "description": "URL to dataset", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/link", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "range": "uri", + "@type": "SlotDefinition" + }, + { + "name": "sensitive", + "definition_uri": "https://w3id.org/linkml/modelcard/sensitive", + "description": "Sensitive data information", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/sensitive", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "graphics", + "definition_uri": "https://w3id.org/linkml/modelcard/graphics", + "description": "Visualizations and graphics", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/graphics", + "owner": "QuantitativeAnalysis", + "domain_of": [ + "DataSet", + "QuantitativeAnalysis" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "bias_input", + "definition_uri": "https://w3id.org/linkml/modelcard/bias_input", + "description": "Known biases in the input data", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/bias_input", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "unit", + "definition_uri": "https://w3id.org/linkml/modelcard/unit", + "description": "Unit of measurement", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/unit", + "owner": "PerformanceMetric", + "domain_of": [ + "DataSet", + "PerformanceMetric" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "sensitive_data", + "definition_uri": "https://w3id.org/linkml/modelcard/sensitive_data", + "description": "Types of PII or sensitive information present", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/sensitive_data", + "owner": "SensitiveData", + "domain_of": [ + "SensitiveData" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "model_architecture", + "definition_uri": "https://w3id.org/linkml/modelcard/model_architecture", + "description": "Model architecture specification", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_architecture", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "data", + "definition_uri": "https://w3id.org/linkml/modelcard/data", + "description": "Training and evaluation datasets", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/data", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "input_format", + "definition_uri": "https://w3id.org/linkml/modelcard/input_format", + "description": "Plain text input format specification", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/input_format", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "input_format_map", + "definition_uri": "https://w3id.org/linkml/modelcard/input_format_map", + "description": "Structured input format mapping", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/input_format_map", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "output_format", + "definition_uri": "https://w3id.org/linkml/modelcard/output_format", + "description": "Plain text output format specification", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/output_format", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "output_format_map", + "definition_uri": "https://w3id.org/linkml/modelcard/output_format_map", + "description": "Structured output format mapping", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/output_format_map", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "key", + "definition_uri": "https://w3id.org/linkml/modelcard/key", + "description": "Key in key-value pair", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/key", + "owner": "KeyVal", + "domain_of": [ + "KeyVal" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "value", + "definition_uri": "https://w3id.org/linkml/modelcard/value", + "description": "Value in key-value pair or metric value", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/value", + "owner": "BenchmarkMetric", + "domain_of": [ + "KeyVal", + "PerformanceMetric", + "BenchmarkMetric" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "type", + "definition_uri": "https://w3id.org/linkml/modelcard/type", + "description": "Type or category", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/type", + "owner": "BenchmarkMetric", + "domain_of": [ + "PerformanceMetric", + "Task", + "BenchmarkDataset", + "BenchmarkMetric" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "value_error", + "definition_uri": "https://w3id.org/linkml/modelcard/value_error", + "description": "Estimated error for the metric", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/value_error", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "confidence_interval", + "definition_uri": "https://w3id.org/linkml/modelcard/confidence_interval", + "description": "Confidence interval for the metric", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/confidence_interval", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "threshold", + "definition_uri": "https://w3id.org/linkml/modelcard/threshold", + "description": "Decision threshold the metric was computed on", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/threshold", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "slice", + "definition_uri": "https://w3id.org/linkml/modelcard/slice", + "description": "Data slice identifier this metric was computed on", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/slice", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "lower_bound", + "definition_uri": "https://w3id.org/linkml/modelcard/lower_bound", + "description": "Lower bound of confidence interval", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/lower_bound", + "owner": "ConfidenceInterval", + "domain_of": [ + "ConfidenceInterval" + ], + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "upper_bound", + "definition_uri": "https://w3id.org/linkml/modelcard/upper_bound", + "description": "Upper bound of confidence interval", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/upper_bound", + "owner": "ConfidenceInterval", + "domain_of": [ + "ConfidenceInterval" + ], + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "collection", + "definition_uri": "https://w3id.org/linkml/modelcard/collection", + "description": "Collection of items", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/collection", + "owner": "GraphicsCollection", + "domain_of": [ + "GraphicsCollection" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "image", + "definition_uri": "https://w3id.org/linkml/modelcard/image", + "description": "Base64-encoded image (PNG format)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/image", + "owner": "Graphic", + "domain_of": [ + "Graphic" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "performance_metrics", + "definition_uri": "https://w3id.org/linkml/modelcard/performance_metrics", + "description": "Performance metrics and evaluation results", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/performance_metrics", + "owner": "QuantitativeAnalysis", + "domain_of": [ + "QuantitativeAnalysis" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "users", + "definition_uri": "https://w3id.org/linkml/modelcard/users", + "description": "Intended users or user types", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/users", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "use_cases", + "definition_uri": "https://w3id.org/linkml/modelcard/use_cases", + "description": "Intended use cases and application scenarios", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/use_cases", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "limitations", + "definition_uri": "https://w3id.org/linkml/modelcard/limitations", + "description": "Known limitations and constraints", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/limitations", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "tradeoffs", + "definition_uri": "https://w3id.org/linkml/modelcard/tradeoffs", + "description": "Performance tradeoffs and considerations", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/tradeoffs", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "ethical_considerations", + "definition_uri": "https://w3id.org/linkml/modelcard/ethical_considerations", + "description": "Ethical considerations and risks", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/ethical_considerations", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "mitigation_strategy", + "definition_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", + "description": "Strategy to address or mitigate this risk", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", + "owner": "Risk", + "domain_of": [ + "Risk" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "schema_version", + "definition_uri": "https://w3id.org/linkml/modelcard/schema_version", + "description": "Version of the model card schema", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/schema_version", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "model_category", + "definition_uri": "https://w3id.org/linkml/modelcard/model_category", + "description": "Category or parent class of the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_category", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "model_details", + "definition_uri": "https://w3id.org/linkml/modelcard/model_details", + "description": "Comprehensive model metadata", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_details", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "model_parameters", + "definition_uri": "https://w3id.org/linkml/modelcard/model_parameters", + "description": "Model construction and architecture parameters", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_parameters", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "quantitative_analysis", + "definition_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", + "description": "Quantitative analysis and performance evaluation", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "considerations", + "definition_uri": "https://w3id.org/linkml/modelcard/considerations", + "description": "Usage considerations, limitations, and ethical concerns", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/considerations", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "bias_model", + "definition_uri": "https://w3id.org/linkml/modelcard/bias_model", + "description": "Known biases in the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/bias_model", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "bias_output", + "definition_uri": "https://w3id.org/linkml/modelcard/bias_output", + "description": "Known biases in the model output", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/bias_output", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "framework", + "definition_uri": "https://w3id.org/linkml/modelcard/framework", + "description": "ML framework (TensorFlow, PyTorch, JAX, Scikit-Learn, etc.)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/framework", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "framework_version", + "definition_uri": "https://w3id.org/linkml/modelcard/framework_version", + "description": "Version of the ML framework", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/framework_version", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "library_name", + "definition_uri": "https://w3id.org/linkml/modelcard/library_name", + "description": "Library name for loading the model (e.g., transformers, diffusers)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/library_name", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "pipeline_tag", + "definition_uri": "https://w3id.org/linkml/modelcard/pipeline_tag", + "description": "Task type (text-generation, image-classification, etc.)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/pipeline_tag", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "language", + "definition_uri": "https://w3id.org/linkml/modelcard/language", + "description": "Natural language(s) processed by the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/language", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "base_model", + "definition_uri": "https://w3id.org/linkml/modelcard/base_model", + "description": "Parent model identifier (for fine-tuned models)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/base_model", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "tags", + "definition_uri": "https://w3id.org/linkml/modelcard/tags", + "description": "Searchable keywords and tags", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/tags", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "datasets", + "definition_uri": "https://w3id.org/linkml/modelcard/datasets", + "description": "Training dataset identifiers", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/datasets", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "metrics", + "definition_uri": "https://w3id.org/linkml/modelcard/metrics", + "description": "Evaluation metrics used", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/metrics", + "owner": "ModelCard", + "domain_of": [ + "BenchmarkResult", + "ModelCard" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "task", + "definition_uri": "https://w3id.org/linkml/modelcard/task", + "description": "ML task specification", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/task", + "owner": "BenchmarkResult", + "domain_of": [ + "BenchmarkResult" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "dataset", + "definition_uri": "https://w3id.org/linkml/modelcard/dataset", + "description": "Dataset information", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/dataset", + "owner": "BenchmarkResult", + "domain_of": [ + "BenchmarkResult" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "source", + "definition_uri": "https://w3id.org/linkml/modelcard/source", + "description": "Source of information or results", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/source", + "owner": "BenchmarkResult", + "domain_of": [ + "BenchmarkResult" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "results", + "definition_uri": "https://w3id.org/linkml/modelcard/results", + "description": "Benchmark or evaluation results", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/results", + "owner": "ModelIndex", + "domain_of": [ + "ModelIndex" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "model_index", + "definition_uri": "https://w3id.org/linkml/modelcard/model_index", + "description": "Papers with Code model-index for benchmark tracking", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_index", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "config", + "definition_uri": "https://w3id.org/linkml/modelcard/config", + "description": "Configuration specification", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/config", + "owner": "BenchmarkMetric", + "domain_of": [ + "BenchmarkDataset", + "BenchmarkMetric" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "split", + "definition_uri": "https://w3id.org/linkml/modelcard/split", + "description": "Dataset split (train, test, validation)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/split", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "revision", + "definition_uri": "https://w3id.org/linkml/modelcard/revision", + "description": "Dataset or model revision/version", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/revision", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "args", + "definition_uri": "https://w3id.org/linkml/modelcard/args", + "description": "Additional arguments or parameters", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/args", + "owner": "BenchmarkMetric", + "domain_of": [ + "BenchmarkDataset", + "BenchmarkMetric" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "url", + "definition_uri": "https://w3id.org/linkml/modelcard/url", + "description": "URL reference", + "from_schema": "https://w3id.org/linkml/modelcard", + "slot_uri": "https://w3id.org/linkml/modelcard/url", + "owner": "BenchmarkSource", + "domain_of": [ + "BenchmarkSource" + ], + "range": "uri", + "@type": "SlotDefinition" + }, + { + "name": "Version_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Version identifier (e.g., '1.0.0', 'v2', 'beta')", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "Version", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "Version", + "domain_of": [ + "Version" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "Version_date", + "definition_uri": "https://w3id.org/linkml/modelcard/date", + "description": "Release date of this version", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "date", + "domain": "Version", + "slot_uri": "https://w3id.org/linkml/modelcard/date", + "alias": "date", + "owner": "Version", + "domain_of": [ + "Version" + ], + "is_usage_slot": true, + "usage_slot_name": "date", + "range": "date", + "@type": "SlotDefinition" + }, + { + "name": "Version_diff", + "definition_uri": "https://w3id.org/linkml/modelcard/diff", + "description": "Changes from the previous version", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "diff", + "domain": "Version", + "slot_uri": "https://w3id.org/linkml/modelcard/diff", + "alias": "diff", + "owner": "Version", + "domain_of": [ + "Version" + ], + "is_usage_slot": true, + "usage_slot_name": "diff", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "License_identifier", + "definition_uri": "https://w3id.org/linkml/modelcard/identifier", + "description": "SPDX license identifier (e.g., 'Apache-2.0', 'MIT', 'CC-BY-4.0')", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "identifier", + "domain": "License", + "slot_uri": "https://w3id.org/linkml/modelcard/identifier", + "alias": "identifier", + "owner": "License", + "domain_of": [ + "License" + ], + "is_usage_slot": true, + "usage_slot_name": "identifier", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "License_custom_text", + "definition_uri": "https://w3id.org/linkml/modelcard/custom_text", + "description": "Custom license text (use when SPDX identifier is not applicable)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "custom_text", + "domain": "License", + "slot_uri": "https://w3id.org/linkml/modelcard/custom_text", + "alias": "custom_text", + "owner": "License", + "domain_of": [ + "License" + ], + "is_usage_slot": true, + "usage_slot_name": "custom_text", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "owner_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Name of the owner (individual or organization)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "Owner", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "Owner", + "domain_of": [ + "Owner" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "owner_contact", + "definition_uri": "https://w3id.org/linkml/modelcard/contact", + "description": "Contact information (email, website, etc.)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "contact", + "domain": "Owner", + "slot_uri": "https://w3id.org/linkml/modelcard/contact", + "alias": "contact", + "owner": "Owner", + "domain_of": [ + "Owner" + ], + "is_usage_slot": true, + "usage_slot_name": "contact", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "Reference_reference", + "definition_uri": "https://w3id.org/linkml/modelcard/reference", + "description": "URL or citation string for related resource", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "reference", + "domain": "Reference", + "slot_uri": "https://w3id.org/linkml/modelcard/reference", + "alias": "reference", + "owner": "Reference", + "domain_of": [ + "Reference" + ], + "is_usage_slot": true, + "usage_slot_name": "reference", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "Citation_style", + "definition_uri": "https://w3id.org/linkml/modelcard/style", + "description": "Citation format style", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "style", + "domain": "Citation", + "slot_uri": "https://w3id.org/linkml/modelcard/style", + "alias": "style", + "owner": "Citation", + "domain_of": [ + "Citation" + ], + "is_usage_slot": true, + "usage_slot_name": "style", + "range": "CitationStyleEnum", + "@type": "SlotDefinition" + }, + { + "name": "Citation_citation", + "definition_uri": "https://w3id.org/linkml/modelcard/citation", + "description": "Formatted citation text", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "citation", + "domain": "Citation", + "slot_uri": "https://w3id.org/linkml/modelcard/citation", + "alias": "citation", + "owner": "Citation", + "domain_of": [ + "Citation" + ], + "is_usage_slot": true, + "usage_slot_name": "citation", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Model name or identifier", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_overview", + "definition_uri": "https://w3id.org/linkml/modelcard/overview", + "description": "High-level description of what the model does", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "overview", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/overview", + "alias": "overview", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "overview", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_documentation", + "definition_uri": "https://w3id.org/linkml/modelcard/documentation", + "description": "Detailed documentation and usage guide", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "documentation", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/documentation", + "alias": "documentation", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "documentation", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_owners", + "definition_uri": "https://w3id.org/linkml/modelcard/owners", + "description": "Model owners or maintainers", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "owners", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/owners", + "alias": "owners", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "owners", + "range": "Owner", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_version", + "definition_uri": "https://w3id.org/linkml/modelcard/version", + "description": "Version information", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "version", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/version", + "alias": "version", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "version", + "range": "Version", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_licenses", + "definition_uri": "https://w3id.org/linkml/modelcard/licenses", + "description": "Licensing information", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "licenses", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/licenses", + "alias": "licenses", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "licenses", + "range": "License", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_references", + "definition_uri": "https://w3id.org/linkml/modelcard/references", + "description": "References to related resources", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "references", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/references", + "alias": "references", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "references", + "range": "Reference", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_citations", + "definition_uri": "https://w3id.org/linkml/modelcard/citations", + "description": "How to cite this model", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "citations", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/citations", + "alias": "citations", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "citations", + "range": "Citation", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelDetails_path", + "definition_uri": "https://w3id.org/linkml/modelcard/path", + "description": "Storage location or path to model artifacts", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "path", + "domain": "ModelDetails", + "slot_uri": "https://w3id.org/linkml/modelcard/path", + "alias": "path", + "owner": "ModelDetails", + "domain_of": [ + "ModelDetails" + ], + "is_usage_slot": true, + "usage_slot_name": "path", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "SensitiveData_sensitive_data", + "definition_uri": "https://w3id.org/linkml/modelcard/sensitive_data", + "description": "Types of PII or sensitive information (e.g., names, addresses, medical records)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "sensitive_data", + "domain": "SensitiveData", + "slot_uri": "https://w3id.org/linkml/modelcard/sensitive_data", + "alias": "sensitive_data", + "owner": "SensitiveData", + "domain_of": [ + "SensitiveData" + ], + "is_usage_slot": true, + "usage_slot_name": "sensitive_data", + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "GraphicsCollection_description", + "definition_uri": "https://w3id.org/linkml/modelcard/description", + "description": "Description of this graphics collection", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "description", + "domain": "GraphicsCollection", + "slot_uri": "https://w3id.org/linkml/modelcard/description", + "alias": "description", + "owner": "GraphicsCollection", + "domain_of": [ + "GraphicsCollection" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "GraphicsCollection_collection", + "definition_uri": "https://w3id.org/linkml/modelcard/collection", + "description": "Graphics in this collection", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "collection", + "domain": "GraphicsCollection", + "slot_uri": "https://w3id.org/linkml/modelcard/collection", + "alias": "collection", + "owner": "GraphicsCollection", + "domain_of": [ + "GraphicsCollection" + ], + "is_usage_slot": true, + "usage_slot_name": "collection", + "range": "Graphic", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "graphic_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Name or title of the graphic", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "Graphic", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "Graphic", + "domain_of": [ + "Graphic" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "graphic_image", + "definition_uri": "https://w3id.org/linkml/modelcard/image", + "description": "Base64-encoded PNG image", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "image", + "domain": "Graphic", + "slot_uri": "https://w3id.org/linkml/modelcard/image", + "alias": "image", + "owner": "Graphic", + "domain_of": [ + "Graphic" + ], + "is_usage_slot": true, + "usage_slot_name": "image", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "dataSet_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Dataset name or identifier", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "DataSet", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "dataSet_description", + "definition_uri": "https://w3id.org/linkml/modelcard/description", + "description": "Dataset overview and characteristics", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "description", + "domain": "DataSet", + "slot_uri": "https://w3id.org/linkml/modelcard/description", + "alias": "description", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "dataSet_link", + "definition_uri": "https://w3id.org/linkml/modelcard/link", + "description": "URL to the dataset", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "link", + "domain": "DataSet", + "slot_uri": "https://w3id.org/linkml/modelcard/link", + "alias": "link", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "is_usage_slot": true, + "usage_slot_name": "link", + "range": "uri", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "dataSet_sensitive", + "definition_uri": "https://w3id.org/linkml/modelcard/sensitive", + "description": "Sensitive data information", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "sensitive", + "domain": "DataSet", + "slot_uri": "https://w3id.org/linkml/modelcard/sensitive", + "alias": "sensitive", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "is_usage_slot": true, + "usage_slot_name": "sensitive", + "range": "SensitiveData", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "dataSet_graphics", + "definition_uri": "https://w3id.org/linkml/modelcard/graphics", + "description": "Visualizations of the dataset", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "graphics", + "domain": "DataSet", + "slot_uri": "https://w3id.org/linkml/modelcard/graphics", + "alias": "graphics", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "is_usage_slot": true, + "usage_slot_name": "graphics", + "range": "GraphicsCollection", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "dataSet_bias_input", + "definition_uri": "https://w3id.org/linkml/modelcard/bias_input", + "description": "Known biases present in the input data", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "bias_input", + "domain": "DataSet", + "slot_uri": "https://w3id.org/linkml/modelcard/bias_input", + "alias": "bias_input", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "is_usage_slot": true, + "usage_slot_name": "bias_input", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "dataSet_unit", + "definition_uri": "https://w3id.org/linkml/modelcard/unit", + "description": "Unit for values in this dataset", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "unit", + "domain": "DataSet", + "slot_uri": "https://w3id.org/linkml/modelcard/unit", + "alias": "unit", + "owner": "DataSet", + "domain_of": [ + "DataSet" + ], + "is_usage_slot": true, + "usage_slot_name": "unit", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "KeyVal_key", + "definition_uri": "https://w3id.org/linkml/modelcard/key", + "description": "Key identifier", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "key", + "domain": "KeyVal", + "slot_uri": "https://w3id.org/linkml/modelcard/key", + "alias": "key", + "owner": "KeyVal", + "domain_of": [ + "KeyVal" + ], + "is_usage_slot": true, + "usage_slot_name": "key", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "KeyVal_value", + "definition_uri": "https://w3id.org/linkml/modelcard/value", + "description": "Value associated with the key", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "value", + "domain": "KeyVal", + "slot_uri": "https://w3id.org/linkml/modelcard/value", + "alias": "value", + "owner": "KeyVal", + "domain_of": [ + "KeyVal" + ], + "is_usage_slot": true, + "usage_slot_name": "value", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelParameters_model_architecture", + "definition_uri": "https://w3id.org/linkml/modelcard/model_architecture", + "description": "Model architecture specification and description", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "model_architecture", + "domain": "ModelParameters", + "slot_uri": "https://w3id.org/linkml/modelcard/model_architecture", + "alias": "model_architecture", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "is_usage_slot": true, + "usage_slot_name": "model_architecture", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelParameters_data", + "definition_uri": "https://w3id.org/linkml/modelcard/data", + "description": "Training and evaluation datasets", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "data", + "domain": "ModelParameters", + "slot_uri": "https://w3id.org/linkml/modelcard/data", + "alias": "data", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "is_usage_slot": true, + "usage_slot_name": "data", + "range": "DataSet", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelParameters_input_format", + "definition_uri": "https://w3id.org/linkml/modelcard/input_format", + "description": "Plain text description of input format", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "input_format", + "domain": "ModelParameters", + "slot_uri": "https://w3id.org/linkml/modelcard/input_format", + "alias": "input_format", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "is_usage_slot": true, + "usage_slot_name": "input_format", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelParameters_input_format_map", + "definition_uri": "https://w3id.org/linkml/modelcard/input_format_map", + "description": "Structured mapping of input format fields", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "input_format_map", + "domain": "ModelParameters", + "slot_uri": "https://w3id.org/linkml/modelcard/input_format_map", + "alias": "input_format_map", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "is_usage_slot": true, + "usage_slot_name": "input_format_map", + "range": "KeyVal", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelParameters_output_format", + "definition_uri": "https://w3id.org/linkml/modelcard/output_format", + "description": "Plain text description of output format", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "output_format", + "domain": "ModelParameters", + "slot_uri": "https://w3id.org/linkml/modelcard/output_format", + "alias": "output_format", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "is_usage_slot": true, + "usage_slot_name": "output_format", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelParameters_output_format_map", + "definition_uri": "https://w3id.org/linkml/modelcard/output_format_map", + "description": "Structured mapping of output format fields", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "output_format_map", + "domain": "ModelParameters", + "slot_uri": "https://w3id.org/linkml/modelcard/output_format_map", + "alias": "output_format_map", + "owner": "ModelParameters", + "domain_of": [ + "ModelParameters" + ], + "is_usage_slot": true, + "usage_slot_name": "output_format_map", + "range": "KeyVal", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ConfidenceInterval_lower_bound", + "definition_uri": "https://w3id.org/linkml/modelcard/lower_bound", + "description": "Lower bound of the confidence interval", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "lower_bound", + "domain": "ConfidenceInterval", + "slot_uri": "https://w3id.org/linkml/modelcard/lower_bound", + "alias": "lower_bound", + "owner": "ConfidenceInterval", + "domain_of": [ + "ConfidenceInterval" + ], + "is_usage_slot": true, + "usage_slot_name": "lower_bound", + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "ConfidenceInterval_upper_bound", + "definition_uri": "https://w3id.org/linkml/modelcard/upper_bound", + "description": "Upper bound of the confidence interval", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "upper_bound", + "domain": "ConfidenceInterval", + "slot_uri": "https://w3id.org/linkml/modelcard/upper_bound", + "alias": "upper_bound", + "owner": "ConfidenceInterval", + "domain_of": [ + "ConfidenceInterval" + ], + "is_usage_slot": true, + "usage_slot_name": "upper_bound", + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "performanceMetric_type", + "definition_uri": "https://w3id.org/linkml/modelcard/type", + "description": "Type of performance metric (e.g., 'accuracy', 'F1', 'AUC', 'precision')", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "type", + "domain": "PerformanceMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/type", + "alias": "type", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "performanceMetric_value", + "definition_uri": "https://w3id.org/linkml/modelcard/value", + "description": "Metric value", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "value", + "domain": "PerformanceMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/value", + "alias": "value", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "value", + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "performanceMetric_value_error", + "definition_uri": "https://w3id.org/linkml/modelcard/value_error", + "description": "Estimated error for the metric value", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "value_error", + "domain": "PerformanceMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/value_error", + "alias": "value_error", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "value_error", + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "performanceMetric_confidence_interval", + "definition_uri": "https://w3id.org/linkml/modelcard/confidence_interval", + "description": "Confidence interval for the metric", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "confidence_interval", + "domain": "PerformanceMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/confidence_interval", + "alias": "confidence_interval", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "confidence_interval", + "range": "ConfidenceInterval", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "performanceMetric_threshold", + "definition_uri": "https://w3id.org/linkml/modelcard/threshold", + "description": "Decision threshold used when computing this metric", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "threshold", + "domain": "PerformanceMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/threshold", + "alias": "threshold", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "threshold", + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "performanceMetric_slice", + "definition_uri": "https://w3id.org/linkml/modelcard/slice", + "description": "Data slice or subset this metric was computed on", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "slice", + "domain": "PerformanceMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/slice", + "alias": "slice", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "slice", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "performanceMetric_unit", + "definition_uri": "https://w3id.org/linkml/modelcard/unit", + "description": "Unit for the metric value, if applicable", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "unit", + "domain": "PerformanceMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/unit", + "alias": "unit", + "owner": "PerformanceMetric", + "domain_of": [ + "PerformanceMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "unit", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "QuantitativeAnalysis_performance_metrics", + "definition_uri": "https://w3id.org/linkml/modelcard/performance_metrics", + "description": "Performance metrics and evaluation results", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "performance_metrics", + "domain": "QuantitativeAnalysis", + "slot_uri": "https://w3id.org/linkml/modelcard/performance_metrics", + "alias": "performance_metrics", + "owner": "QuantitativeAnalysis", + "domain_of": [ + "QuantitativeAnalysis" + ], + "is_usage_slot": true, + "usage_slot_name": "performance_metrics", + "range": "PerformanceMetric", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "QuantitativeAnalysis_graphics", + "definition_uri": "https://w3id.org/linkml/modelcard/graphics", + "description": "Performance visualizations and plots", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "graphics", + "domain": "QuantitativeAnalysis", + "slot_uri": "https://w3id.org/linkml/modelcard/graphics", + "alias": "graphics", + "owner": "QuantitativeAnalysis", + "domain_of": [ + "QuantitativeAnalysis" + ], + "is_usage_slot": true, + "usage_slot_name": "graphics", + "range": "GraphicsCollection", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "User_description", + "definition_uri": "https://w3id.org/linkml/modelcard/description", + "description": "Description of the intended user type or role", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "description", + "domain": "User", + "slot_uri": "https://w3id.org/linkml/modelcard/description", + "alias": "description", + "owner": "User", + "domain_of": [ + "User" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "UseCase_description", + "definition_uri": "https://w3id.org/linkml/modelcard/description", + "description": "Description of the application scenario", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "description", + "domain": "UseCase", + "slot_uri": "https://w3id.org/linkml/modelcard/description", + "alias": "description", + "owner": "UseCase", + "domain_of": [ + "UseCase" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "Limitation_description", + "definition_uri": "https://w3id.org/linkml/modelcard/description", + "description": "Description of the limitation or constraint", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "description", + "domain": "Limitation", + "slot_uri": "https://w3id.org/linkml/modelcard/description", + "alias": "description", + "owner": "Limitation", + "domain_of": [ + "Limitation" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "Tradeoff_description", + "definition_uri": "https://w3id.org/linkml/modelcard/description", + "description": "Description of the performance tradeoff", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "description", + "domain": "Tradeoff", + "slot_uri": "https://w3id.org/linkml/modelcard/description", + "alias": "description", + "owner": "Tradeoff", + "domain_of": [ + "Tradeoff" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "risk_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Name or type of the risk", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "Risk", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "Risk", + "domain_of": [ + "Risk" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "risk_mitigation_strategy", + "definition_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", + "description": "Strategy used to address or mitigate this risk", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "mitigation_strategy", + "domain": "Risk", + "slot_uri": "https://w3id.org/linkml/modelcard/mitigation_strategy", + "alias": "mitigation_strategy", + "owner": "Risk", + "domain_of": [ + "Risk" + ], + "is_usage_slot": true, + "usage_slot_name": "mitigation_strategy", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "Considerations_users", + "definition_uri": "https://w3id.org/linkml/modelcard/users", + "description": "Intended user types", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "users", + "domain": "Considerations", + "slot_uri": "https://w3id.org/linkml/modelcard/users", + "alias": "users", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "is_usage_slot": true, + "usage_slot_name": "users", + "range": "User", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Considerations_use_cases", + "definition_uri": "https://w3id.org/linkml/modelcard/use_cases", + "description": "Intended use cases and application scenarios", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "use_cases", + "domain": "Considerations", + "slot_uri": "https://w3id.org/linkml/modelcard/use_cases", + "alias": "use_cases", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "is_usage_slot": true, + "usage_slot_name": "use_cases", + "range": "UseCase", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Considerations_limitations", + "definition_uri": "https://w3id.org/linkml/modelcard/limitations", + "description": "Known limitations and constraints", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "limitations", + "domain": "Considerations", + "slot_uri": "https://w3id.org/linkml/modelcard/limitations", + "alias": "limitations", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "is_usage_slot": true, + "usage_slot_name": "limitations", + "range": "Limitation", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Considerations_tradeoffs", + "definition_uri": "https://w3id.org/linkml/modelcard/tradeoffs", + "description": "Performance tradeoffs to consider", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "tradeoffs", + "domain": "Considerations", + "slot_uri": "https://w3id.org/linkml/modelcard/tradeoffs", + "alias": "tradeoffs", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "is_usage_slot": true, + "usage_slot_name": "tradeoffs", + "range": "Tradeoff", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Considerations_ethical_considerations", + "definition_uri": "https://w3id.org/linkml/modelcard/ethical_considerations", + "description": "Ethical considerations and identified risks", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "ethical_considerations", + "domain": "Considerations", + "slot_uri": "https://w3id.org/linkml/modelcard/ethical_considerations", + "alias": "ethical_considerations", + "owner": "Considerations", + "domain_of": [ + "Considerations" + ], + "is_usage_slot": true, + "usage_slot_name": "ethical_considerations", + "range": "Risk", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Task_type", + "definition_uri": "https://w3id.org/linkml/modelcard/type", + "description": "Task type identifier (e.g., 'text-generation', 'image-classification')", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "type", + "domain": "Task", + "slot_uri": "https://w3id.org/linkml/modelcard/type", + "alias": "type", + "owner": "Task", + "domain_of": [ + "Task" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "Task_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Human-readable task name", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "Task", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "Task", + "domain_of": [ + "Task" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkDataset_type", + "definition_uri": "https://w3id.org/linkml/modelcard/type", + "description": "Dataset type identifier", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "type", + "domain": "BenchmarkDataset", + "slot_uri": "https://w3id.org/linkml/modelcard/type", + "alias": "type", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkDataset_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Dataset name", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "BenchmarkDataset", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkDataset_config", + "definition_uri": "https://w3id.org/linkml/modelcard/config", + "description": "Dataset configuration", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "config", + "domain": "BenchmarkDataset", + "slot_uri": "https://w3id.org/linkml/modelcard/config", + "alias": "config", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "is_usage_slot": true, + "usage_slot_name": "config", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkDataset_split", + "definition_uri": "https://w3id.org/linkml/modelcard/split", + "description": "Dataset split (train, test, validation)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "split", + "domain": "BenchmarkDataset", + "slot_uri": "https://w3id.org/linkml/modelcard/split", + "alias": "split", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "is_usage_slot": true, + "usage_slot_name": "split", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkDataset_revision", + "definition_uri": "https://w3id.org/linkml/modelcard/revision", + "description": "Dataset version or revision", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "revision", + "domain": "BenchmarkDataset", + "slot_uri": "https://w3id.org/linkml/modelcard/revision", + "alias": "revision", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "is_usage_slot": true, + "usage_slot_name": "revision", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkDataset_args", + "definition_uri": "https://w3id.org/linkml/modelcard/args", + "description": "Additional arguments for dataset loading", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "args", + "domain": "BenchmarkDataset", + "slot_uri": "https://w3id.org/linkml/modelcard/args", + "alias": "args", + "owner": "BenchmarkDataset", + "domain_of": [ + "BenchmarkDataset" + ], + "is_usage_slot": true, + "usage_slot_name": "args", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkMetric_type", + "definition_uri": "https://w3id.org/linkml/modelcard/type", + "description": "Metric type identifier", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "type", + "domain": "BenchmarkMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/type", + "alias": "type", + "owner": "BenchmarkMetric", + "domain_of": [ + "BenchmarkMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkMetric_value", + "definition_uri": "https://w3id.org/linkml/modelcard/value", + "description": "Metric value", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "value", + "domain": "BenchmarkMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/value", + "alias": "value", + "owner": "BenchmarkMetric", + "domain_of": [ + "BenchmarkMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "value", + "range": "float", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkMetric_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Metric name", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "BenchmarkMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "BenchmarkMetric", + "domain_of": [ + "BenchmarkMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkMetric_config", + "definition_uri": "https://w3id.org/linkml/modelcard/config", + "description": "Metric configuration", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "config", + "domain": "BenchmarkMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/config", + "alias": "config", + "owner": "BenchmarkMetric", + "domain_of": [ + "BenchmarkMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "config", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkMetric_args", + "definition_uri": "https://w3id.org/linkml/modelcard/args", + "description": "Additional metric arguments", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "args", + "domain": "BenchmarkMetric", + "slot_uri": "https://w3id.org/linkml/modelcard/args", + "alias": "args", + "owner": "BenchmarkMetric", + "domain_of": [ + "BenchmarkMetric" + ], + "is_usage_slot": true, + "usage_slot_name": "args", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkSource_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Source name (e.g., 'Open LLM Leaderboard', 'GLUE Benchmark')", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "BenchmarkSource", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "BenchmarkSource", + "domain_of": [ + "BenchmarkSource" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkSource_url", + "definition_uri": "https://w3id.org/linkml/modelcard/url", + "description": "URL to the source", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "url", + "domain": "BenchmarkSource", + "slot_uri": "https://w3id.org/linkml/modelcard/url", + "alias": "url", + "owner": "BenchmarkSource", + "domain_of": [ + "BenchmarkSource" + ], + "is_usage_slot": true, + "usage_slot_name": "url", + "range": "uri", + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkResult_task", + "definition_uri": "https://w3id.org/linkml/modelcard/task", + "description": "Task that was evaluated", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "task", + "domain": "BenchmarkResult", + "slot_uri": "https://w3id.org/linkml/modelcard/task", + "alias": "task", + "owner": "BenchmarkResult", + "domain_of": [ + "BenchmarkResult" + ], + "is_usage_slot": true, + "usage_slot_name": "task", + "range": "Task", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkResult_dataset", + "definition_uri": "https://w3id.org/linkml/modelcard/dataset", + "description": "Dataset used for evaluation", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "dataset", + "domain": "BenchmarkResult", + "slot_uri": "https://w3id.org/linkml/modelcard/dataset", + "alias": "dataset", + "owner": "BenchmarkResult", + "domain_of": [ + "BenchmarkResult" + ], + "is_usage_slot": true, + "usage_slot_name": "dataset", + "range": "BenchmarkDataset", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkResult_metrics", + "definition_uri": "https://w3id.org/linkml/modelcard/metrics", + "description": "Metrics reported for this benchmark", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "metrics", + "domain": "BenchmarkResult", + "slot_uri": "https://w3id.org/linkml/modelcard/metrics", + "alias": "metrics", + "owner": "BenchmarkResult", + "domain_of": [ + "BenchmarkResult" + ], + "is_usage_slot": true, + "usage_slot_name": "metrics", + "range": "BenchmarkMetric", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "BenchmarkResult_source", + "definition_uri": "https://w3id.org/linkml/modelcard/source", + "description": "Source of the benchmark results", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "source", + "domain": "BenchmarkResult", + "slot_uri": "https://w3id.org/linkml/modelcard/source", + "alias": "source", + "owner": "BenchmarkResult", + "domain_of": [ + "BenchmarkResult" + ], + "is_usage_slot": true, + "usage_slot_name": "source", + "range": "BenchmarkSource", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "ModelIndex_name", + "definition_uri": "https://w3id.org/linkml/modelcard/name", + "description": "Model name for this benchmark entry", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "name", + "domain": "ModelIndex", + "slot_uri": "https://w3id.org/linkml/modelcard/name", + "alias": "name", + "owner": "ModelIndex", + "domain_of": [ + "ModelIndex" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "ModelIndex_results", + "definition_uri": "https://w3id.org/linkml/modelcard/results", + "description": "Benchmark results", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "results", + "domain": "ModelIndex", + "slot_uri": "https://w3id.org/linkml/modelcard/results", + "alias": "results", + "owner": "ModelIndex", + "domain_of": [ + "ModelIndex" + ], + "is_usage_slot": true, + "usage_slot_name": "results", + "range": "BenchmarkResult", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_schema_version", + "definition_uri": "https://w3id.org/linkml/modelcard/schema_version", + "description": "Version of the model card schema being used", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "schema_version", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/schema_version", + "alias": "schema_version", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "schema_version", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_model_details", + "definition_uri": "https://w3id.org/linkml/modelcard/model_details", + "description": "Comprehensive model metadata and details", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "model_details", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_details", + "alias": "model_details", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "model_details", + "range": "ModelDetails", + "required": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_model_parameters", + "definition_uri": "https://w3id.org/linkml/modelcard/model_parameters", + "description": "Model construction and architecture parameters", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "model_parameters", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_parameters", + "alias": "model_parameters", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "model_parameters", + "range": "ModelParameters", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_quantitative_analysis", + "definition_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", + "description": "Quantitative analysis and performance evaluation", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "quantitative_analysis", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/quantitative_analysis", + "alias": "quantitative_analysis", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "quantitative_analysis", + "range": "QuantitativeAnalysis", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_considerations", + "definition_uri": "https://w3id.org/linkml/modelcard/considerations", + "description": "Usage considerations, limitations, and ethical concerns", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "considerations", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/considerations", + "alias": "considerations", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "considerations", + "range": "Considerations", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_model_category", + "definition_uri": "https://w3id.org/linkml/modelcard/model_category", + "description": "Category or parent class of the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "model_category", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_category", + "alias": "model_category", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "model_category", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_bias_model", + "definition_uri": "https://w3id.org/linkml/modelcard/bias_model", + "description": "Known biases in the model itself", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "bias_model", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/bias_model", + "alias": "bias_model", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "bias_model", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_bias_output", + "definition_uri": "https://w3id.org/linkml/modelcard/bias_output", + "description": "Known biases in the model's outputs", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "bias_output", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/bias_output", + "alias": "bias_output", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "bias_output", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_framework", + "definition_uri": "https://w3id.org/linkml/modelcard/framework", + "description": "ML framework used (TensorFlow, PyTorch, JAX, Scikit-Learn, etc.)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "framework", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/framework", + "alias": "framework", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "framework", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_framework_version", + "definition_uri": "https://w3id.org/linkml/modelcard/framework_version", + "description": "Version of the ML framework", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "framework_version", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/framework_version", + "alias": "framework_version", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "framework_version", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_library_name", + "definition_uri": "https://w3id.org/linkml/modelcard/library_name", + "description": "Library name for loading the model (e.g., transformers, diffusers, timm)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "library_name", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/library_name", + "alias": "library_name", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "library_name", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_pipeline_tag", + "definition_uri": "https://w3id.org/linkml/modelcard/pipeline_tag", + "description": "Task type for pipeline usage", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "pipeline_tag", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/pipeline_tag", + "alias": "pipeline_tag", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "pipeline_tag", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_language", + "definition_uri": "https://w3id.org/linkml/modelcard/language", + "description": "Natural language(s) processed by the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "language", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/language", + "alias": "language", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "language", + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_base_model", + "definition_uri": "https://w3id.org/linkml/modelcard/base_model", + "description": "Parent model identifier (for fine-tuned or derived models)", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "base_model", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/base_model", + "alias": "base_model", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "base_model", + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "modelCard_tags", + "definition_uri": "https://w3id.org/linkml/modelcard/tags", + "description": "Searchable keywords and tags for discovery", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "tags", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/tags", + "alias": "tags", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "tags", + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_datasets", + "definition_uri": "https://w3id.org/linkml/modelcard/datasets", + "description": "Training dataset identifiers or names", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "datasets", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/datasets", + "alias": "datasets", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "datasets", + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_metrics", + "definition_uri": "https://w3id.org/linkml/modelcard/metrics", + "description": "Evaluation metrics used for this model", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "metrics", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/metrics", + "alias": "metrics", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "metrics", + "range": "string", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "modelCard_model_index", + "definition_uri": "https://w3id.org/linkml/modelcard/model_index", + "description": "Benchmark results following Papers with Code model-index format", + "from_schema": "https://w3id.org/linkml/modelcard", + "is_a": "model_index", + "domain": "ModelCard", + "slot_uri": "https://w3id.org/linkml/modelcard/model_index", + "alias": "model_index", + "owner": "ModelCard", + "domain_of": [ + "ModelCard" + ], + "is_usage_slot": true, + "usage_slot_name": "model_index", + "range": "ModelIndex", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + } + ], + "classes": [ + { + "name": "Version", + "definition_uri": "https://w3id.org/linkml/modelcard/Version", + "description": "Version information for a model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "Version_name", + "Version_date", + "Version_diff" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Version", + "@type": "ClassDefinition" + }, + { + "name": "License", + "definition_uri": "https://w3id.org/linkml/modelcard/License", + "description": "License information (use SPDX identifier OR custom text, not both)", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "License_identifier", + "License_custom_text" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/License", + "@type": "ClassDefinition" + }, + { + "name": "Owner", + "definition_uri": "https://w3id.org/linkml/modelcard/Owner", + "description": "Model owner or maintainer information", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "owner_name", + "owner_contact" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Owner", + "@type": "ClassDefinition" + }, + { + "name": "Reference", + "definition_uri": "https://w3id.org/linkml/modelcard/Reference", + "description": "Reference to related resources", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "Reference_reference" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Reference", + "@type": "ClassDefinition" + }, + { + "name": "Citation", + "definition_uri": "https://w3id.org/linkml/modelcard/Citation", + "description": "Citation information for the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "Citation_style", + "Citation_citation" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Citation", + "@type": "ClassDefinition" + }, + { + "name": "ModelDetails", + "definition_uri": "https://w3id.org/linkml/modelcard/ModelDetails", + "description": "Comprehensive metadata about the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "ModelDetails_name", + "ModelDetails_overview", + "ModelDetails_documentation", + "ModelDetails_owners", + "ModelDetails_version", + "ModelDetails_licenses", + "ModelDetails_references", + "ModelDetails_citations", + "ModelDetails_path" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/ModelDetails", + "@type": "ClassDefinition" + }, + { + "name": "SensitiveData", + "definition_uri": "https://w3id.org/linkml/modelcard/SensitiveData", + "description": "Information about sensitive data in a dataset", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "SensitiveData_sensitive_data" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/SensitiveData", + "@type": "ClassDefinition" + }, + { + "name": "GraphicsCollection", + "definition_uri": "https://w3id.org/linkml/modelcard/GraphicsCollection", + "description": "Collection of graphics and visualizations", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "GraphicsCollection_description", + "GraphicsCollection_collection" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/GraphicsCollection", + "@type": "ClassDefinition" + }, + { + "name": "Graphic", + "definition_uri": "https://w3id.org/linkml/modelcard/Graphic", + "description": "A single graphic or visualization", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "graphic_name", + "graphic_image" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Graphic", + "@type": "ClassDefinition" + }, + { + "name": "DataSet", + "definition_uri": "https://w3id.org/linkml/modelcard/DataSet", + "description": "Information about a dataset used for training or evaluation", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "dataSet_name", + "dataSet_description", + "dataSet_link", + "dataSet_sensitive", + "dataSet_graphics", + "dataSet_bias_input", + "dataSet_unit" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/DataSet", + "@type": "ClassDefinition" + }, + { + "name": "KeyVal", + "definition_uri": "https://w3id.org/linkml/modelcard/KeyVal", + "description": "Key-value pair for format mappings", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "KeyVal_key", + "KeyVal_value" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/KeyVal", + "@type": "ClassDefinition" + }, + { + "name": "ModelParameters", + "definition_uri": "https://w3id.org/linkml/modelcard/ModelParameters", + "description": "Parameters and specifications for model construction", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "ModelParameters_model_architecture", + "ModelParameters_data", + "ModelParameters_input_format", + "ModelParameters_input_format_map", + "ModelParameters_output_format", + "ModelParameters_output_format_map" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/ModelParameters", + "@type": "ClassDefinition" + }, + { + "name": "ConfidenceInterval", + "definition_uri": "https://w3id.org/linkml/modelcard/ConfidenceInterval", + "description": "Confidence interval for a metric value", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "ConfidenceInterval_lower_bound", + "ConfidenceInterval_upper_bound" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/ConfidenceInterval", + "@type": "ClassDefinition" + }, + { + "name": "PerformanceMetric", + "definition_uri": "https://w3id.org/linkml/modelcard/PerformanceMetric", + "description": "A performance metric with optional confidence interval", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "performanceMetric_type", + "performanceMetric_value", + "performanceMetric_value_error", + "performanceMetric_confidence_interval", + "performanceMetric_threshold", + "performanceMetric_slice", + "performanceMetric_unit" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/PerformanceMetric", + "@type": "ClassDefinition" + }, + { + "name": "QuantitativeAnalysis", + "definition_uri": "https://w3id.org/linkml/modelcard/QuantitativeAnalysis", + "description": "Quantitative analysis and performance evaluation of the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "QuantitativeAnalysis_performance_metrics", + "QuantitativeAnalysis_graphics" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/QuantitativeAnalysis", + "@type": "ClassDefinition" + }, + { + "name": "User", + "definition_uri": "https://w3id.org/linkml/modelcard/User", + "description": "Description of an intended user type", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "User_description" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/User", + "@type": "ClassDefinition" + }, + { + "name": "UseCase", + "definition_uri": "https://w3id.org/linkml/modelcard/UseCase", + "description": "Description of a use case or application scenario", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "UseCase_description" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/UseCase", + "@type": "ClassDefinition" + }, + { + "name": "Limitation", + "definition_uri": "https://w3id.org/linkml/modelcard/Limitation", + "description": "A known limitation or constraint of the model", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "Limitation_description" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Limitation", + "@type": "ClassDefinition" + }, + { + "name": "Tradeoff", + "definition_uri": "https://w3id.org/linkml/modelcard/Tradeoff", + "description": "A performance tradeoff consideration", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "Tradeoff_description" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Tradeoff", + "@type": "ClassDefinition" + }, + { + "name": "Risk", + "definition_uri": "https://w3id.org/linkml/modelcard/Risk", + "description": "An ethical, environmental, or operational risk", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "risk_name", + "risk_mitigation_strategy" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Risk", + "@type": "ClassDefinition" + }, + { + "name": "Considerations", + "definition_uri": "https://w3id.org/linkml/modelcard/Considerations", + "description": "Considerations for model usage including limitations and ethical concerns", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "Considerations_users", + "Considerations_use_cases", + "Considerations_limitations", + "Considerations_tradeoffs", + "Considerations_ethical_considerations" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Considerations", + "@type": "ClassDefinition" + }, + { + "name": "Task", + "definition_uri": "https://w3id.org/linkml/modelcard/Task", + "description": "ML task specification for benchmarking", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "Task_type", + "Task_name" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/Task", + "@type": "ClassDefinition" + }, + { + "name": "BenchmarkDataset", + "definition_uri": "https://w3id.org/linkml/modelcard/BenchmarkDataset", + "description": "Dataset used for benchmarking", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "BenchmarkDataset_type", + "BenchmarkDataset_name", + "BenchmarkDataset_config", + "BenchmarkDataset_split", + "BenchmarkDataset_revision", + "BenchmarkDataset_args" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/BenchmarkDataset", + "@type": "ClassDefinition" + }, + { + "name": "BenchmarkMetric", + "definition_uri": "https://w3id.org/linkml/modelcard/BenchmarkMetric", + "description": "Benchmark metric result", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "BenchmarkMetric_type", + "BenchmarkMetric_value", + "BenchmarkMetric_name", + "BenchmarkMetric_config", + "BenchmarkMetric_args" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/BenchmarkMetric", + "@type": "ClassDefinition" + }, + { + "name": "BenchmarkSource", + "definition_uri": "https://w3id.org/linkml/modelcard/BenchmarkSource", + "description": "Source of benchmark results", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "BenchmarkSource_name", + "BenchmarkSource_url" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/BenchmarkSource", + "@type": "ClassDefinition" + }, + { + "name": "BenchmarkResult", + "definition_uri": "https://w3id.org/linkml/modelcard/BenchmarkResult", + "description": "Benchmark result entry with task, dataset, and metrics", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "BenchmarkResult_task", + "BenchmarkResult_dataset", + "BenchmarkResult_metrics", + "BenchmarkResult_source" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/BenchmarkResult", + "@type": "ClassDefinition" + }, + { + "name": "ModelIndex", + "definition_uri": "https://w3id.org/linkml/modelcard/ModelIndex", + "description": "Papers with Code model-index structure for benchmark tracking", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "ModelIndex_name", + "ModelIndex_results" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/ModelIndex", + "@type": "ClassDefinition" + }, + { + "name": "ModelCard", + "definition_uri": "https://w3id.org/linkml/modelcard/ModelCard", + "description": "Complete model card with metadata, performance, and considerations", + "from_schema": "https://w3id.org/linkml/modelcard", + "slots": [ + "modelCard_schema_version", + "modelCard_model_details", + "modelCard_model_parameters", + "modelCard_quantitative_analysis", + "modelCard_considerations", + "modelCard_model_category", + "modelCard_bias_model", + "modelCard_bias_output", + "modelCard_framework", + "modelCard_framework_version", + "modelCard_library_name", + "modelCard_pipeline_tag", + "modelCard_language", + "modelCard_base_model", + "modelCard_tags", + "modelCard_datasets", + "modelCard_metrics", + "modelCard_model_index" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml/modelcard/ModelCard", + "tree_root": true, + "@type": "ClassDefinition" + } + ], + "metamodel_version": "1.7.0", + "source_file": "modelcards.yaml", + "source_file_date": "2025-11-19T19:54:47", + "source_file_size": 23823, + "generation_date": "2025-11-19T19:55:00", + "@type": "SchemaDefinition", + "@context": [ + "project/jsonld/modelcards.context.jsonld", + "https://w3id.org/linkml/types.context.jsonld", + { + "@base": "https://w3id.org/linkml/modelcard/" + } + ] +} diff --git a/project/jsonschema/modelcards.schema.json b/project/jsonschema/modelcards.schema.json new file mode 100644 index 0000000..c069edd --- /dev/null +++ b/project/jsonschema/modelcards.schema.json @@ -0,0 +1,1210 @@ +{ + "$defs": { + "BenchmarkDataset": { + "additionalProperties": false, + "description": "Dataset used for benchmarking", + "properties": { + "args": { + "description": "Additional arguments for dataset loading", + "type": [ + "string", + "null" + ] + }, + "config": { + "description": "Dataset configuration", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Dataset name", + "type": [ + "string", + "null" + ] + }, + "revision": { + "description": "Dataset version or revision", + "type": [ + "string", + "null" + ] + }, + "split": { + "description": "Dataset split (train, test, validation)", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Dataset type identifier", + "type": [ + "string", + "null" + ] + } + }, + "title": "BenchmarkDataset", + "type": "object" + }, + "BenchmarkMetric": { + "additionalProperties": false, + "description": "Benchmark metric result", + "properties": { + "args": { + "description": "Additional metric arguments", + "type": [ + "string", + "null" + ] + }, + "config": { + "description": "Metric configuration", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Metric name", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Metric type identifier", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Metric value", + "type": [ + "number", + "null" + ] + } + }, + "title": "BenchmarkMetric", + "type": "object" + }, + "BenchmarkResult": { + "additionalProperties": false, + "description": "Benchmark result entry with task, dataset, and metrics", + "properties": { + "dataset": { + "anyOf": [ + { + "$ref": "#/$defs/BenchmarkDataset" + }, + { + "type": "null" + } + ], + "description": "Dataset used for evaluation" + }, + "metrics": { + "description": "Metrics reported for this benchmark", + "items": { + "$ref": "#/$defs/BenchmarkMetric" + }, + "type": [ + "array", + "null" + ] + }, + "source": { + "anyOf": [ + { + "$ref": "#/$defs/BenchmarkSource" + }, + { + "type": "null" + } + ], + "description": "Source of the benchmark results" + }, + "task": { + "anyOf": [ + { + "$ref": "#/$defs/Task" + }, + { + "type": "null" + } + ], + "description": "Task that was evaluated" + } + }, + "title": "BenchmarkResult", + "type": "object" + }, + "BenchmarkSource": { + "additionalProperties": false, + "description": "Source of benchmark results", + "properties": { + "name": { + "description": "Source name (e.g., 'Open LLM Leaderboard', 'GLUE Benchmark')", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "URL to the source", + "type": [ + "string", + "null" + ] + } + }, + "title": "BenchmarkSource", + "type": "object" + }, + "Citation": { + "additionalProperties": false, + "description": "Citation information for the model", + "properties": { + "citation": { + "description": "Formatted citation text", + "type": [ + "string", + "null" + ] + }, + "style": { + "$ref": "#/$defs/CitationStyleEnum", + "description": "Citation format style" + } + }, + "title": "Citation", + "type": "object" + }, + "CitationStyleEnum": { + "description": "Citation format styles", + "enum": [ + "MLA", + "APA", + "Chicago", + "IEEE" + ], + "title": "CitationStyleEnum", + "type": "string" + }, + "ConfidenceInterval": { + "additionalProperties": false, + "description": "Confidence interval for a metric value", + "properties": { + "lower_bound": { + "description": "Lower bound of the confidence interval", + "type": [ + "number", + "null" + ] + }, + "upper_bound": { + "description": "Upper bound of the confidence interval", + "type": [ + "number", + "null" + ] + } + }, + "title": "ConfidenceInterval", + "type": "object" + }, + "Considerations": { + "additionalProperties": false, + "description": "Considerations for model usage including limitations and ethical concerns", + "properties": { + "ethical_considerations": { + "description": "Ethical considerations and identified risks", + "items": { + "$ref": "#/$defs/Risk" + }, + "type": [ + "array", + "null" + ] + }, + "limitations": { + "description": "Known limitations and constraints", + "items": { + "$ref": "#/$defs/Limitation" + }, + "type": [ + "array", + "null" + ] + }, + "tradeoffs": { + "description": "Performance tradeoffs to consider", + "items": { + "$ref": "#/$defs/Tradeoff" + }, + "type": [ + "array", + "null" + ] + }, + "use_cases": { + "description": "Intended use cases and application scenarios", + "items": { + "$ref": "#/$defs/UseCase" + }, + "type": [ + "array", + "null" + ] + }, + "users": { + "description": "Intended user types", + "items": { + "$ref": "#/$defs/User" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "Considerations", + "type": "object" + }, + "DataSet": { + "additionalProperties": false, + "description": "Information about a dataset used for training or evaluation", + "properties": { + "bias_input": { + "description": "Known biases present in the input data", + "type": [ + "string", + "null" + ] + }, + "description": { + "description": "Dataset overview and characteristics", + "type": [ + "string", + "null" + ] + }, + "graphics": { + "anyOf": [ + { + "$ref": "#/$defs/GraphicsCollection" + }, + { + "type": "null" + } + ], + "description": "Visualizations of the dataset" + }, + "link": { + "description": "URL to the dataset", + "type": "string" + }, + "name": { + "description": "Dataset name or identifier", + "type": [ + "string", + "null" + ] + }, + "sensitive": { + "anyOf": [ + { + "$ref": "#/$defs/SensitiveData" + }, + { + "type": "null" + } + ], + "description": "Sensitive data information" + }, + "unit": { + "description": "Unit for values in this dataset", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "link" + ], + "title": "DataSet", + "type": "object" + }, + "Graphic": { + "additionalProperties": false, + "description": "A single graphic or visualization", + "properties": { + "image": { + "description": "Base64-encoded PNG image", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Name or title of the graphic", + "type": [ + "string", + "null" + ] + } + }, + "title": "Graphic", + "type": "object" + }, + "GraphicsCollection": { + "additionalProperties": false, + "description": "Collection of graphics and visualizations", + "properties": { + "collection": { + "description": "Graphics in this collection", + "items": { + "$ref": "#/$defs/Graphic" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "Description of this graphics collection", + "type": [ + "string", + "null" + ] + } + }, + "title": "GraphicsCollection", + "type": "object" + }, + "KeyVal": { + "additionalProperties": false, + "description": "Key-value pair for format mappings", + "properties": { + "key": { + "description": "Key identifier", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Value associated with the key", + "type": [ + "string", + "null" + ] + } + }, + "title": "KeyVal", + "type": "object" + }, + "License": { + "additionalProperties": false, + "description": "License information (use SPDX identifier OR custom text, not both)", + "properties": { + "custom_text": { + "description": "Custom license text (use when SPDX identifier is not applicable)", + "type": [ + "string", + "null" + ] + }, + "identifier": { + "description": "SPDX license identifier (e.g., 'Apache-2.0', 'MIT', 'CC-BY-4.0')", + "type": [ + "string", + "null" + ] + } + }, + "title": "License", + "type": "object" + }, + "Limitation": { + "additionalProperties": false, + "description": "A known limitation or constraint of the model", + "properties": { + "description": { + "description": "Description of the limitation or constraint", + "type": [ + "string", + "null" + ] + } + }, + "title": "Limitation", + "type": "object" + }, + "ModelCard": { + "additionalProperties": false, + "description": "Complete model card with metadata, performance, and considerations", + "properties": { + "base_model": { + "description": "Parent model identifier (for fine-tuned or derived models)", + "type": [ + "string", + "null" + ] + }, + "bias_model": { + "description": "Known biases in the model itself", + "type": [ + "string", + "null" + ] + }, + "bias_output": { + "description": "Known biases in the model's outputs", + "type": [ + "string", + "null" + ] + }, + "considerations": { + "anyOf": [ + { + "$ref": "#/$defs/Considerations" + }, + { + "type": "null" + } + ], + "description": "Usage considerations, limitations, and ethical concerns" + }, + "datasets": { + "description": "Training dataset identifiers or names", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "framework": { + "description": "ML framework used (TensorFlow, PyTorch, JAX, Scikit-Learn, etc.)", + "type": [ + "string", + "null" + ] + }, + "framework_version": { + "description": "Version of the ML framework", + "type": [ + "string", + "null" + ] + }, + "language": { + "description": "Natural language(s) processed by the model", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "library_name": { + "description": "Library name for loading the model (e.g., transformers, diffusers, timm)", + "type": [ + "string", + "null" + ] + }, + "metrics": { + "description": "Evaluation metrics used for this model", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "model_category": { + "description": "Category or parent class of the model", + "type": [ + "string", + "null" + ] + }, + "model_details": { + "$ref": "#/$defs/ModelDetails", + "description": "Comprehensive model metadata and details" + }, + "model_index": { + "description": "Benchmark results following Papers with Code model-index format", + "items": { + "$ref": "#/$defs/ModelIndex" + }, + "type": [ + "array", + "null" + ] + }, + "model_parameters": { + "anyOf": [ + { + "$ref": "#/$defs/ModelParameters" + }, + { + "type": "null" + } + ], + "description": "Model construction and architecture parameters" + }, + "pipeline_tag": { + "description": "Task type for pipeline usage", + "type": [ + "string", + "null" + ] + }, + "quantitative_analysis": { + "anyOf": [ + { + "$ref": "#/$defs/QuantitativeAnalysis" + }, + { + "type": "null" + } + ], + "description": "Quantitative analysis and performance evaluation" + }, + "schema_version": { + "description": "Version of the model card schema being used", + "type": [ + "string", + "null" + ] + }, + "tags": { + "description": "Searchable keywords and tags for discovery", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + } + }, + "required": [ + "model_details" + ], + "title": "ModelCard", + "type": "object" + }, + "ModelDetails": { + "additionalProperties": false, + "description": "Comprehensive metadata about the model", + "properties": { + "citations": { + "description": "How to cite this model", + "items": { + "$ref": "#/$defs/Citation" + }, + "type": [ + "array", + "null" + ] + }, + "documentation": { + "description": "Detailed documentation and usage guide", + "type": [ + "string", + "null" + ] + }, + "licenses": { + "description": "Licensing information", + "items": { + "$ref": "#/$defs/License" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "Model name or identifier", + "type": "string" + }, + "overview": { + "description": "High-level description of what the model does", + "type": [ + "string", + "null" + ] + }, + "owners": { + "description": "Model owners or maintainers", + "items": { + "$ref": "#/$defs/Owner" + }, + "type": [ + "array", + "null" + ] + }, + "path": { + "description": "Storage location or path to model artifacts", + "type": [ + "string", + "null" + ] + }, + "references": { + "description": "References to related resources", + "items": { + "$ref": "#/$defs/Reference" + }, + "type": [ + "array", + "null" + ] + }, + "version": { + "anyOf": [ + { + "$ref": "#/$defs/Version" + }, + { + "type": "null" + } + ], + "description": "Version information" + } + }, + "required": [ + "name" + ], + "title": "ModelDetails", + "type": "object" + }, + "ModelIndex": { + "additionalProperties": false, + "description": "Papers with Code model-index structure for benchmark tracking", + "properties": { + "name": { + "description": "Model name for this benchmark entry", + "type": [ + "string", + "null" + ] + }, + "results": { + "description": "Benchmark results", + "items": { + "$ref": "#/$defs/BenchmarkResult" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ModelIndex", + "type": "object" + }, + "ModelParameters": { + "additionalProperties": false, + "description": "Parameters and specifications for model construction", + "properties": { + "data": { + "description": "Training and evaluation datasets", + "items": { + "$ref": "#/$defs/DataSet" + }, + "type": [ + "array", + "null" + ] + }, + "input_format": { + "description": "Plain text description of input format", + "type": [ + "string", + "null" + ] + }, + "input_format_map": { + "description": "Structured mapping of input format fields", + "items": { + "$ref": "#/$defs/KeyVal" + }, + "type": [ + "array", + "null" + ] + }, + "model_architecture": { + "description": "Model architecture specification and description", + "type": [ + "string", + "null" + ] + }, + "output_format": { + "description": "Plain text description of output format", + "type": [ + "string", + "null" + ] + }, + "output_format_map": { + "description": "Structured mapping of output format fields", + "items": { + "$ref": "#/$defs/KeyVal" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ModelParameters", + "type": "object" + }, + "Owner": { + "additionalProperties": false, + "description": "Model owner or maintainer information", + "properties": { + "contact": { + "description": "Contact information (email, website, etc.)", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Name of the owner (individual or organization)", + "type": [ + "string", + "null" + ] + } + }, + "title": "Owner", + "type": "object" + }, + "PerformanceMetric": { + "additionalProperties": false, + "description": "A performance metric with optional confidence interval", + "properties": { + "confidence_interval": { + "anyOf": [ + { + "$ref": "#/$defs/ConfidenceInterval" + }, + { + "type": "null" + } + ], + "description": "Confidence interval for the metric" + }, + "slice": { + "description": "Data slice or subset this metric was computed on", + "type": [ + "string", + "null" + ] + }, + "threshold": { + "description": "Decision threshold used when computing this metric", + "type": [ + "number", + "null" + ] + }, + "type": { + "description": "Type of performance metric (e.g., 'accuracy', 'F1', 'AUC', 'precision')", + "type": "string" + }, + "unit": { + "description": "Unit for the metric value, if applicable", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Metric value", + "type": [ + "number", + "null" + ] + }, + "value_error": { + "description": "Estimated error for the metric value", + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "type" + ], + "title": "PerformanceMetric", + "type": "object" + }, + "QuantitativeAnalysis": { + "additionalProperties": false, + "description": "Quantitative analysis and performance evaluation of the model", + "properties": { + "graphics": { + "anyOf": [ + { + "$ref": "#/$defs/GraphicsCollection" + }, + { + "type": "null" + } + ], + "description": "Performance visualizations and plots" + }, + "performance_metrics": { + "description": "Performance metrics and evaluation results", + "items": { + "$ref": "#/$defs/PerformanceMetric" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "QuantitativeAnalysis", + "type": "object" + }, + "Reference": { + "additionalProperties": false, + "description": "Reference to related resources", + "properties": { + "reference": { + "description": "URL or citation string for related resource", + "type": [ + "string", + "null" + ] + } + }, + "title": "Reference", + "type": "object" + }, + "Risk": { + "additionalProperties": false, + "description": "An ethical, environmental, or operational risk", + "properties": { + "mitigation_strategy": { + "description": "Strategy used to address or mitigate this risk", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Name or type of the risk", + "type": [ + "string", + "null" + ] + } + }, + "title": "Risk", + "type": "object" + }, + "SensitiveData": { + "additionalProperties": false, + "description": "Information about sensitive data in a dataset", + "properties": { + "sensitive_data": { + "description": "Types of PII or sensitive information (e.g., names, addresses, medical records)", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "SensitiveData", + "type": "object" + }, + "Task": { + "additionalProperties": false, + "description": "ML task specification for benchmarking", + "properties": { + "name": { + "description": "Human-readable task name", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Task type identifier (e.g., 'text-generation', 'image-classification')", + "type": [ + "string", + "null" + ] + } + }, + "title": "Task", + "type": "object" + }, + "Tradeoff": { + "additionalProperties": false, + "description": "A performance tradeoff consideration", + "properties": { + "description": { + "description": "Description of the performance tradeoff", + "type": [ + "string", + "null" + ] + } + }, + "title": "Tradeoff", + "type": "object" + }, + "UseCase": { + "additionalProperties": false, + "description": "Description of a use case or application scenario", + "properties": { + "description": { + "description": "Description of the application scenario", + "type": [ + "string", + "null" + ] + } + }, + "title": "UseCase", + "type": "object" + }, + "User": { + "additionalProperties": false, + "description": "Description of an intended user type", + "properties": { + "description": { + "description": "Description of the intended user type or role", + "type": [ + "string", + "null" + ] + } + }, + "title": "User", + "type": "object" + }, + "Version": { + "additionalProperties": false, + "description": "Version information for a model", + "properties": { + "date": { + "description": "Release date of this version", + "format": "date", + "type": [ + "string", + "null" + ] + }, + "diff": { + "description": "Changes from the previous version", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Version identifier (e.g., '1.0.0', 'v2', 'beta')", + "type": [ + "string", + "null" + ] + } + }, + "title": "Version", + "type": "object" + } + }, + "$id": "https://w3id.org/linkml/modelcard", + "$schema": "https://json-schema.org/draft/2019-09/schema", + "additionalProperties": true, + "description": "Complete model card with metadata, performance, and considerations", + "metamodel_version": "1.7.0", + "properties": { + "base_model": { + "description": "Parent model identifier (for fine-tuned or derived models)", + "type": [ + "string", + "null" + ] + }, + "bias_model": { + "description": "Known biases in the model itself", + "type": [ + "string", + "null" + ] + }, + "bias_output": { + "description": "Known biases in the model's outputs", + "type": [ + "string", + "null" + ] + }, + "considerations": { + "anyOf": [ + { + "$ref": "#/$defs/Considerations" + }, + { + "type": "null" + } + ], + "description": "Usage considerations, limitations, and ethical concerns" + }, + "datasets": { + "description": "Training dataset identifiers or names", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "framework": { + "description": "ML framework used (TensorFlow, PyTorch, JAX, Scikit-Learn, etc.)", + "type": [ + "string", + "null" + ] + }, + "framework_version": { + "description": "Version of the ML framework", + "type": [ + "string", + "null" + ] + }, + "language": { + "description": "Natural language(s) processed by the model", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "library_name": { + "description": "Library name for loading the model (e.g., transformers, diffusers, timm)", + "type": [ + "string", + "null" + ] + }, + "metrics": { + "description": "Evaluation metrics used for this model", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "model_category": { + "description": "Category or parent class of the model", + "type": [ + "string", + "null" + ] + }, + "model_details": { + "$ref": "#/$defs/ModelDetails", + "description": "Comprehensive model metadata and details" + }, + "model_index": { + "description": "Benchmark results following Papers with Code model-index format", + "items": { + "$ref": "#/$defs/ModelIndex" + }, + "type": [ + "array", + "null" + ] + }, + "model_parameters": { + "anyOf": [ + { + "$ref": "#/$defs/ModelParameters" + }, + { + "type": "null" + } + ], + "description": "Model construction and architecture parameters" + }, + "pipeline_tag": { + "description": "Task type for pipeline usage", + "type": [ + "string", + "null" + ] + }, + "quantitative_analysis": { + "anyOf": [ + { + "$ref": "#/$defs/QuantitativeAnalysis" + }, + { + "type": "null" + } + ], + "description": "Quantitative analysis and performance evaluation" + }, + "schema_version": { + "description": "Version of the model card schema being used", + "type": [ + "string", + "null" + ] + }, + "tags": { + "description": "Searchable keywords and tags for discovery", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + } + }, + "required": [ + "model_details" + ], + "title": "Model_Card", + "type": "object", + "version": null +} diff --git a/project/modelcards.py b/project/modelcards.py new file mode 100644 index 0000000..c31a845 --- /dev/null +++ b/project/modelcards.py @@ -0,0 +1,1535 @@ +# Auto generated from modelcards.yaml by pythongen.py version: 0.0.1 +# Generation date: 2025-11-19T19:55:01 +# Schema: Model_Card +# +# id: https://w3id.org/linkml/modelcard +# description: A comprehensive LinkML rendering of model card schemas, +# incorporating Google Model Card Toolkit v0.0.2, HuggingFace, +# and Papers with Code specifications. +# +# This schema provides structured metadata for documenting machine learning models +# including model details, training data, performance metrics, ethical considerations, +# and deployment specifications. +# license: https://creativecommons.org/publicdomain/zero/1.0/ + +import dataclasses +import re +from dataclasses import dataclass +from datetime import ( + date, + datetime, + time +) +from typing import ( + Any, + ClassVar, + Dict, + List, + Optional, + Union +) + +from jsonasobj2 import ( + JsonObj, + as_dict +) +from linkml_runtime.linkml_model.meta import ( + EnumDefinition, + PermissibleValue, + PvFormulaOptions +) +from linkml_runtime.utils.curienamespace import CurieNamespace +from linkml_runtime.utils.enumerations import EnumDefinitionImpl +from linkml_runtime.utils.formatutils import ( + camelcase, + sfx, + underscore +) +from linkml_runtime.utils.metamodelcore import ( + bnode, + empty_dict, + empty_list +) +from linkml_runtime.utils.slot import Slot +from linkml_runtime.utils.yamlutils import ( + YAMLRoot, + extended_float, + extended_int, + extended_str +) +from rdflib import ( + Namespace, + URIRef +) + +from linkml_runtime.linkml_model.types import Date, Float, String, Uri +from linkml_runtime.utils.metamodelcore import URI, XSDDate + +metamodel_version = "1.7.0" +version = None + +# Namespaces +LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') +MODELCARD = CurieNamespace('modelcard', 'https://w3id.org/linkml/modelcard/') +DEFAULT_ = MODELCARD + + +# Types + +# Class references + + + +@dataclass(repr=False) +class Version(YAMLRoot): + """ + Version information for a model + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Version"] + class_class_curie: ClassVar[str] = "modelcard:Version" + class_name: ClassVar[str] = "Version" + class_model_uri: ClassVar[URIRef] = MODELCARD.Version + + name: Optional[str] = None + date: Optional[Union[str, XSDDate]] = None + diff: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.date is not None and not isinstance(self.date, XSDDate): + self.date = XSDDate(self.date) + + if self.diff is not None and not isinstance(self.diff, str): + self.diff = str(self.diff) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class License(YAMLRoot): + """ + License information (use SPDX identifier OR custom text, not both) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["License"] + class_class_curie: ClassVar[str] = "modelcard:License" + class_name: ClassVar[str] = "License" + class_model_uri: ClassVar[URIRef] = MODELCARD.License + + identifier: Optional[str] = None + custom_text: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.identifier is not None and not isinstance(self.identifier, str): + self.identifier = str(self.identifier) + + if self.custom_text is not None and not isinstance(self.custom_text, str): + self.custom_text = str(self.custom_text) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Owner(YAMLRoot): + """ + Model owner or maintainer information + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Owner"] + class_class_curie: ClassVar[str] = "modelcard:Owner" + class_name: ClassVar[str] = "owner" + class_model_uri: ClassVar[URIRef] = MODELCARD.Owner + + name: Optional[str] = None + contact: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.contact is not None and not isinstance(self.contact, str): + self.contact = str(self.contact) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Reference(YAMLRoot): + """ + Reference to related resources + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Reference"] + class_class_curie: ClassVar[str] = "modelcard:Reference" + class_name: ClassVar[str] = "Reference" + class_model_uri: ClassVar[URIRef] = MODELCARD.Reference + + reference: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.reference is not None and not isinstance(self.reference, str): + self.reference = str(self.reference) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Citation(YAMLRoot): + """ + Citation information for the model + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Citation"] + class_class_curie: ClassVar[str] = "modelcard:Citation" + class_name: ClassVar[str] = "Citation" + class_model_uri: ClassVar[URIRef] = MODELCARD.Citation + + style: Optional[Union[str, "CitationStyleEnum"]] = None + citation: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.style is not None and not isinstance(self.style, CitationStyleEnum): + self.style = CitationStyleEnum(self.style) + + if self.citation is not None and not isinstance(self.citation, str): + self.citation = str(self.citation) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ModelDetails(YAMLRoot): + """ + Comprehensive metadata about the model + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["ModelDetails"] + class_class_curie: ClassVar[str] = "modelcard:ModelDetails" + class_name: ClassVar[str] = "ModelDetails" + class_model_uri: ClassVar[URIRef] = MODELCARD.ModelDetails + + name: str = None + overview: Optional[str] = None + documentation: Optional[str] = None + owners: Optional[Union[Union[dict, Owner], list[Union[dict, Owner]]]] = empty_list() + version: Optional[Union[dict, Version]] = None + licenses: Optional[Union[Union[dict, License], list[Union[dict, License]]]] = empty_list() + references: Optional[Union[Union[dict, Reference], list[Union[dict, Reference]]]] = empty_list() + citations: Optional[Union[Union[dict, Citation], list[Union[dict, Citation]]]] = empty_list() + path: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, str): + self.name = str(self.name) + + if self.overview is not None and not isinstance(self.overview, str): + self.overview = str(self.overview) + + if self.documentation is not None and not isinstance(self.documentation, str): + self.documentation = str(self.documentation) + + if not isinstance(self.owners, list): + self.owners = [self.owners] if self.owners is not None else [] + self.owners = [v if isinstance(v, Owner) else Owner(**as_dict(v)) for v in self.owners] + + if self.version is not None and not isinstance(self.version, Version): + self.version = Version(**as_dict(self.version)) + + if not isinstance(self.licenses, list): + self.licenses = [self.licenses] if self.licenses is not None else [] + self.licenses = [v if isinstance(v, License) else License(**as_dict(v)) for v in self.licenses] + + if not isinstance(self.references, list): + self.references = [self.references] if self.references is not None else [] + self.references = [v if isinstance(v, Reference) else Reference(**as_dict(v)) for v in self.references] + + if not isinstance(self.citations, list): + self.citations = [self.citations] if self.citations is not None else [] + self.citations = [v if isinstance(v, Citation) else Citation(**as_dict(v)) for v in self.citations] + + if self.path is not None and not isinstance(self.path, str): + self.path = str(self.path) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SensitiveData(YAMLRoot): + """ + Information about sensitive data in a dataset + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["SensitiveData"] + class_class_curie: ClassVar[str] = "modelcard:SensitiveData" + class_name: ClassVar[str] = "SensitiveData" + class_model_uri: ClassVar[URIRef] = MODELCARD.SensitiveData + + sensitive_data: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.sensitive_data, list): + self.sensitive_data = [self.sensitive_data] if self.sensitive_data is not None else [] + self.sensitive_data = [v if isinstance(v, str) else str(v) for v in self.sensitive_data] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class GraphicsCollection(YAMLRoot): + """ + Collection of graphics and visualizations + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["GraphicsCollection"] + class_class_curie: ClassVar[str] = "modelcard:GraphicsCollection" + class_name: ClassVar[str] = "GraphicsCollection" + class_model_uri: ClassVar[URIRef] = MODELCARD.GraphicsCollection + + description: Optional[str] = None + collection: Optional[Union[Union[dict, "Graphic"], list[Union[dict, "Graphic"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if not isinstance(self.collection, list): + self.collection = [self.collection] if self.collection is not None else [] + self.collection = [v if isinstance(v, Graphic) else Graphic(**as_dict(v)) for v in self.collection] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Graphic(YAMLRoot): + """ + A single graphic or visualization + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Graphic"] + class_class_curie: ClassVar[str] = "modelcard:Graphic" + class_name: ClassVar[str] = "graphic" + class_model_uri: ClassVar[URIRef] = MODELCARD.Graphic + + name: Optional[str] = None + image: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.image is not None and not isinstance(self.image, str): + self.image = str(self.image) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DataSet(YAMLRoot): + """ + Information about a dataset used for training or evaluation + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["DataSet"] + class_class_curie: ClassVar[str] = "modelcard:DataSet" + class_name: ClassVar[str] = "dataSet" + class_model_uri: ClassVar[URIRef] = MODELCARD.DataSet + + link: Union[str, URI] = None + name: Optional[str] = None + description: Optional[str] = None + sensitive: Optional[Union[dict, SensitiveData]] = None + graphics: Optional[Union[dict, GraphicsCollection]] = None + bias_input: Optional[str] = None + unit: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.link): + self.MissingRequiredField("link") + if not isinstance(self.link, URI): + self.link = URI(self.link) + + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if self.sensitive is not None and not isinstance(self.sensitive, SensitiveData): + self.sensitive = SensitiveData(**as_dict(self.sensitive)) + + if self.graphics is not None and not isinstance(self.graphics, GraphicsCollection): + self.graphics = GraphicsCollection(**as_dict(self.graphics)) + + if self.bias_input is not None and not isinstance(self.bias_input, str): + self.bias_input = str(self.bias_input) + + if self.unit is not None and not isinstance(self.unit, str): + self.unit = str(self.unit) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class KeyVal(YAMLRoot): + """ + Key-value pair for format mappings + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["KeyVal"] + class_class_curie: ClassVar[str] = "modelcard:KeyVal" + class_name: ClassVar[str] = "KeyVal" + class_model_uri: ClassVar[URIRef] = MODELCARD.KeyVal + + key: Optional[str] = None + value: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.key is not None and not isinstance(self.key, str): + self.key = str(self.key) + + if self.value is not None and not isinstance(self.value, str): + self.value = str(self.value) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ModelParameters(YAMLRoot): + """ + Parameters and specifications for model construction + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["ModelParameters"] + class_class_curie: ClassVar[str] = "modelcard:ModelParameters" + class_name: ClassVar[str] = "ModelParameters" + class_model_uri: ClassVar[URIRef] = MODELCARD.ModelParameters + + model_architecture: Optional[str] = None + data: Optional[Union[Union[dict, DataSet], list[Union[dict, DataSet]]]] = empty_list() + input_format: Optional[str] = None + input_format_map: Optional[Union[Union[dict, KeyVal], list[Union[dict, KeyVal]]]] = empty_list() + output_format: Optional[str] = None + output_format_map: Optional[Union[Union[dict, KeyVal], list[Union[dict, KeyVal]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self.model_architecture is not None and not isinstance(self.model_architecture, str): + self.model_architecture = str(self.model_architecture) + + self._normalize_inlined_as_dict(slot_name="data", slot_type=DataSet, key_name="link", keyed=False) + + if self.input_format is not None and not isinstance(self.input_format, str): + self.input_format = str(self.input_format) + + if not isinstance(self.input_format_map, list): + self.input_format_map = [self.input_format_map] if self.input_format_map is not None else [] + self.input_format_map = [v if isinstance(v, KeyVal) else KeyVal(**as_dict(v)) for v in self.input_format_map] + + if self.output_format is not None and not isinstance(self.output_format, str): + self.output_format = str(self.output_format) + + if not isinstance(self.output_format_map, list): + self.output_format_map = [self.output_format_map] if self.output_format_map is not None else [] + self.output_format_map = [v if isinstance(v, KeyVal) else KeyVal(**as_dict(v)) for v in self.output_format_map] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ConfidenceInterval(YAMLRoot): + """ + Confidence interval for a metric value + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["ConfidenceInterval"] + class_class_curie: ClassVar[str] = "modelcard:ConfidenceInterval" + class_name: ClassVar[str] = "ConfidenceInterval" + class_model_uri: ClassVar[URIRef] = MODELCARD.ConfidenceInterval + + lower_bound: Optional[float] = None + upper_bound: Optional[float] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.lower_bound is not None and not isinstance(self.lower_bound, float): + self.lower_bound = float(self.lower_bound) + + if self.upper_bound is not None and not isinstance(self.upper_bound, float): + self.upper_bound = float(self.upper_bound) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PerformanceMetric(YAMLRoot): + """ + A performance metric with optional confidence interval + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["PerformanceMetric"] + class_class_curie: ClassVar[str] = "modelcard:PerformanceMetric" + class_name: ClassVar[str] = "performanceMetric" + class_model_uri: ClassVar[URIRef] = MODELCARD.PerformanceMetric + + type: str = None + value: Optional[float] = None + value_error: Optional[float] = None + confidence_interval: Optional[Union[dict, ConfidenceInterval]] = None + threshold: Optional[float] = None + slice: Optional[str] = None + unit: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.type): + self.MissingRequiredField("type") + if not isinstance(self.type, str): + self.type = str(self.type) + + if self.value is not None and not isinstance(self.value, float): + self.value = float(self.value) + + if self.value_error is not None and not isinstance(self.value_error, float): + self.value_error = float(self.value_error) + + if self.confidence_interval is not None and not isinstance(self.confidence_interval, ConfidenceInterval): + self.confidence_interval = ConfidenceInterval(**as_dict(self.confidence_interval)) + + if self.threshold is not None and not isinstance(self.threshold, float): + self.threshold = float(self.threshold) + + if self.slice is not None and not isinstance(self.slice, str): + self.slice = str(self.slice) + + if self.unit is not None and not isinstance(self.unit, str): + self.unit = str(self.unit) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class QuantitativeAnalysis(YAMLRoot): + """ + Quantitative analysis and performance evaluation of the model + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["QuantitativeAnalysis"] + class_class_curie: ClassVar[str] = "modelcard:QuantitativeAnalysis" + class_name: ClassVar[str] = "QuantitativeAnalysis" + class_model_uri: ClassVar[URIRef] = MODELCARD.QuantitativeAnalysis + + performance_metrics: Optional[Union[Union[dict, PerformanceMetric], list[Union[dict, PerformanceMetric]]]] = empty_list() + graphics: Optional[Union[dict, GraphicsCollection]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + self._normalize_inlined_as_dict(slot_name="performance_metrics", slot_type=PerformanceMetric, key_name="type", keyed=False) + + if self.graphics is not None and not isinstance(self.graphics, GraphicsCollection): + self.graphics = GraphicsCollection(**as_dict(self.graphics)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class User(YAMLRoot): + """ + Description of an intended user type + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["User"] + class_class_curie: ClassVar[str] = "modelcard:User" + class_name: ClassVar[str] = "User" + class_model_uri: ClassVar[URIRef] = MODELCARD.User + + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class UseCase(YAMLRoot): + """ + Description of a use case or application scenario + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["UseCase"] + class_class_curie: ClassVar[str] = "modelcard:UseCase" + class_name: ClassVar[str] = "UseCase" + class_model_uri: ClassVar[URIRef] = MODELCARD.UseCase + + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Limitation(YAMLRoot): + """ + A known limitation or constraint of the model + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Limitation"] + class_class_curie: ClassVar[str] = "modelcard:Limitation" + class_name: ClassVar[str] = "Limitation" + class_model_uri: ClassVar[URIRef] = MODELCARD.Limitation + + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Tradeoff(YAMLRoot): + """ + A performance tradeoff consideration + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Tradeoff"] + class_class_curie: ClassVar[str] = "modelcard:Tradeoff" + class_name: ClassVar[str] = "Tradeoff" + class_model_uri: ClassVar[URIRef] = MODELCARD.Tradeoff + + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Risk(YAMLRoot): + """ + An ethical, environmental, or operational risk + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Risk"] + class_class_curie: ClassVar[str] = "modelcard:Risk" + class_name: ClassVar[str] = "risk" + class_model_uri: ClassVar[URIRef] = MODELCARD.Risk + + name: Optional[str] = None + mitigation_strategy: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.mitigation_strategy is not None and not isinstance(self.mitigation_strategy, str): + self.mitigation_strategy = str(self.mitigation_strategy) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Considerations(YAMLRoot): + """ + Considerations for model usage including limitations and ethical concerns + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Considerations"] + class_class_curie: ClassVar[str] = "modelcard:Considerations" + class_name: ClassVar[str] = "Considerations" + class_model_uri: ClassVar[URIRef] = MODELCARD.Considerations + + users: Optional[Union[Union[dict, User], list[Union[dict, User]]]] = empty_list() + use_cases: Optional[Union[Union[dict, UseCase], list[Union[dict, UseCase]]]] = empty_list() + limitations: Optional[Union[Union[dict, Limitation], list[Union[dict, Limitation]]]] = empty_list() + tradeoffs: Optional[Union[Union[dict, Tradeoff], list[Union[dict, Tradeoff]]]] = empty_list() + ethical_considerations: Optional[Union[Union[dict, Risk], list[Union[dict, Risk]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.users, list): + self.users = [self.users] if self.users is not None else [] + self.users = [v if isinstance(v, User) else User(**as_dict(v)) for v in self.users] + + if not isinstance(self.use_cases, list): + self.use_cases = [self.use_cases] if self.use_cases is not None else [] + self.use_cases = [v if isinstance(v, UseCase) else UseCase(**as_dict(v)) for v in self.use_cases] + + if not isinstance(self.limitations, list): + self.limitations = [self.limitations] if self.limitations is not None else [] + self.limitations = [v if isinstance(v, Limitation) else Limitation(**as_dict(v)) for v in self.limitations] + + if not isinstance(self.tradeoffs, list): + self.tradeoffs = [self.tradeoffs] if self.tradeoffs is not None else [] + self.tradeoffs = [v if isinstance(v, Tradeoff) else Tradeoff(**as_dict(v)) for v in self.tradeoffs] + + if not isinstance(self.ethical_considerations, list): + self.ethical_considerations = [self.ethical_considerations] if self.ethical_considerations is not None else [] + self.ethical_considerations = [v if isinstance(v, Risk) else Risk(**as_dict(v)) for v in self.ethical_considerations] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Task(YAMLRoot): + """ + ML task specification for benchmarking + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["Task"] + class_class_curie: ClassVar[str] = "modelcard:Task" + class_name: ClassVar[str] = "Task" + class_model_uri: ClassVar[URIRef] = MODELCARD.Task + + type: Optional[str] = None + name: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.type is not None and not isinstance(self.type, str): + self.type = str(self.type) + + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class BenchmarkDataset(YAMLRoot): + """ + Dataset used for benchmarking + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["BenchmarkDataset"] + class_class_curie: ClassVar[str] = "modelcard:BenchmarkDataset" + class_name: ClassVar[str] = "BenchmarkDataset" + class_model_uri: ClassVar[URIRef] = MODELCARD.BenchmarkDataset + + type: Optional[str] = None + name: Optional[str] = None + config: Optional[str] = None + split: Optional[str] = None + revision: Optional[str] = None + args: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.type is not None and not isinstance(self.type, str): + self.type = str(self.type) + + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.config is not None and not isinstance(self.config, str): + self.config = str(self.config) + + if self.split is not None and not isinstance(self.split, str): + self.split = str(self.split) + + if self.revision is not None and not isinstance(self.revision, str): + self.revision = str(self.revision) + + if self.args is not None and not isinstance(self.args, str): + self.args = str(self.args) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class BenchmarkMetric(YAMLRoot): + """ + Benchmark metric result + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["BenchmarkMetric"] + class_class_curie: ClassVar[str] = "modelcard:BenchmarkMetric" + class_name: ClassVar[str] = "BenchmarkMetric" + class_model_uri: ClassVar[URIRef] = MODELCARD.BenchmarkMetric + + type: Optional[str] = None + value: Optional[float] = None + name: Optional[str] = None + config: Optional[str] = None + args: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.type is not None and not isinstance(self.type, str): + self.type = str(self.type) + + if self.value is not None and not isinstance(self.value, float): + self.value = float(self.value) + + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.config is not None and not isinstance(self.config, str): + self.config = str(self.config) + + if self.args is not None and not isinstance(self.args, str): + self.args = str(self.args) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class BenchmarkSource(YAMLRoot): + """ + Source of benchmark results + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["BenchmarkSource"] + class_class_curie: ClassVar[str] = "modelcard:BenchmarkSource" + class_name: ClassVar[str] = "BenchmarkSource" + class_model_uri: ClassVar[URIRef] = MODELCARD.BenchmarkSource + + name: Optional[str] = None + url: Optional[Union[str, URI]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.url is not None and not isinstance(self.url, URI): + self.url = URI(self.url) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class BenchmarkResult(YAMLRoot): + """ + Benchmark result entry with task, dataset, and metrics + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["BenchmarkResult"] + class_class_curie: ClassVar[str] = "modelcard:BenchmarkResult" + class_name: ClassVar[str] = "BenchmarkResult" + class_model_uri: ClassVar[URIRef] = MODELCARD.BenchmarkResult + + task: Optional[Union[dict, Task]] = None + dataset: Optional[Union[dict, BenchmarkDataset]] = None + metrics: Optional[Union[Union[dict, BenchmarkMetric], list[Union[dict, BenchmarkMetric]]]] = empty_list() + source: Optional[Union[dict, BenchmarkSource]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.task is not None and not isinstance(self.task, Task): + self.task = Task(**as_dict(self.task)) + + if self.dataset is not None and not isinstance(self.dataset, BenchmarkDataset): + self.dataset = BenchmarkDataset(**as_dict(self.dataset)) + + if not isinstance(self.metrics, list): + self.metrics = [self.metrics] if self.metrics is not None else [] + self.metrics = [v if isinstance(v, BenchmarkMetric) else BenchmarkMetric(**as_dict(v)) for v in self.metrics] + + if self.source is not None and not isinstance(self.source, BenchmarkSource): + self.source = BenchmarkSource(**as_dict(self.source)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ModelIndex(YAMLRoot): + """ + Papers with Code model-index structure for benchmark tracking + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["ModelIndex"] + class_class_curie: ClassVar[str] = "modelcard:ModelIndex" + class_name: ClassVar[str] = "ModelIndex" + class_model_uri: ClassVar[URIRef] = MODELCARD.ModelIndex + + name: Optional[str] = None + results: Optional[Union[Union[dict, BenchmarkResult], list[Union[dict, BenchmarkResult]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if not isinstance(self.results, list): + self.results = [self.results] if self.results is not None else [] + self.results = [v if isinstance(v, BenchmarkResult) else BenchmarkResult(**as_dict(v)) for v in self.results] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ModelCard(YAMLRoot): + """ + Complete model card with metadata, performance, and considerations + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MODELCARD["ModelCard"] + class_class_curie: ClassVar[str] = "modelcard:ModelCard" + class_name: ClassVar[str] = "modelCard" + class_model_uri: ClassVar[URIRef] = MODELCARD.ModelCard + + model_details: Union[dict, ModelDetails] = None + schema_version: Optional[str] = None + model_parameters: Optional[Union[dict, ModelParameters]] = None + quantitative_analysis: Optional[Union[dict, QuantitativeAnalysis]] = None + considerations: Optional[Union[dict, Considerations]] = None + model_category: Optional[str] = None + bias_model: Optional[str] = None + bias_output: Optional[str] = None + framework: Optional[str] = None + framework_version: Optional[str] = None + library_name: Optional[str] = None + pipeline_tag: Optional[str] = None + language: Optional[Union[str, list[str]]] = empty_list() + base_model: Optional[str] = None + tags: Optional[Union[str, list[str]]] = empty_list() + datasets: Optional[Union[str, list[str]]] = empty_list() + metrics: Optional[Union[str, list[str]]] = empty_list() + model_index: Optional[Union[Union[dict, ModelIndex], list[Union[dict, ModelIndex]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.model_details): + self.MissingRequiredField("model_details") + if not isinstance(self.model_details, ModelDetails): + self.model_details = ModelDetails(**as_dict(self.model_details)) + + if self.schema_version is not None and not isinstance(self.schema_version, str): + self.schema_version = str(self.schema_version) + + if self.model_parameters is not None and not isinstance(self.model_parameters, ModelParameters): + self.model_parameters = ModelParameters(**as_dict(self.model_parameters)) + + if self.quantitative_analysis is not None and not isinstance(self.quantitative_analysis, QuantitativeAnalysis): + self.quantitative_analysis = QuantitativeAnalysis(**as_dict(self.quantitative_analysis)) + + if self.considerations is not None and not isinstance(self.considerations, Considerations): + self.considerations = Considerations(**as_dict(self.considerations)) + + if self.model_category is not None and not isinstance(self.model_category, str): + self.model_category = str(self.model_category) + + if self.bias_model is not None and not isinstance(self.bias_model, str): + self.bias_model = str(self.bias_model) + + if self.bias_output is not None and not isinstance(self.bias_output, str): + self.bias_output = str(self.bias_output) + + if self.framework is not None and not isinstance(self.framework, str): + self.framework = str(self.framework) + + if self.framework_version is not None and not isinstance(self.framework_version, str): + self.framework_version = str(self.framework_version) + + if self.library_name is not None and not isinstance(self.library_name, str): + self.library_name = str(self.library_name) + + if self.pipeline_tag is not None and not isinstance(self.pipeline_tag, str): + self.pipeline_tag = str(self.pipeline_tag) + + if not isinstance(self.language, list): + self.language = [self.language] if self.language is not None else [] + self.language = [v if isinstance(v, str) else str(v) for v in self.language] + + if self.base_model is not None and not isinstance(self.base_model, str): + self.base_model = str(self.base_model) + + if not isinstance(self.tags, list): + self.tags = [self.tags] if self.tags is not None else [] + self.tags = [v if isinstance(v, str) else str(v) for v in self.tags] + + if not isinstance(self.datasets, list): + self.datasets = [self.datasets] if self.datasets is not None else [] + self.datasets = [v if isinstance(v, str) else str(v) for v in self.datasets] + + if not isinstance(self.metrics, list): + self.metrics = [self.metrics] if self.metrics is not None else [] + self.metrics = [v if isinstance(v, str) else str(v) for v in self.metrics] + + if not isinstance(self.model_index, list): + self.model_index = [self.model_index] if self.model_index is not None else [] + self.model_index = [v if isinstance(v, ModelIndex) else ModelIndex(**as_dict(v)) for v in self.model_index] + + super().__post_init__(**kwargs) + + +# Enumerations +class CitationStyleEnum(EnumDefinitionImpl): + """ + Citation format styles + """ + MLA = PermissibleValue( + text="MLA", + description="Modern Language Association style") + APA = PermissibleValue( + text="APA", + description="American Psychological Association style") + Chicago = PermissibleValue( + text="Chicago", + description="Chicago Manual of Style") + IEEE = PermissibleValue( + text="IEEE", + description="Institute of Electrical and Electronics Engineers style") + + _defn = EnumDefinition( + name="CitationStyleEnum", + description="Citation format styles", + ) + +# Slots +class slots: + pass + +slots.name = Slot(uri=MODELCARD.name, name="name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.name, domain=None, range=Optional[str]) + +slots.description = Slot(uri=MODELCARD.description, name="description", curie=MODELCARD.curie('description'), + model_uri=MODELCARD.description, domain=None, range=Optional[str]) + +slots.contact = Slot(uri=MODELCARD.contact, name="contact", curie=MODELCARD.curie('contact'), + model_uri=MODELCARD.contact, domain=None, range=Optional[str]) + +slots.date = Slot(uri=MODELCARD.date, name="date", curie=MODELCARD.curie('date'), + model_uri=MODELCARD.date, domain=None, range=Optional[Union[str, XSDDate]]) + +slots.diff = Slot(uri=MODELCARD.diff, name="diff", curie=MODELCARD.curie('diff'), + model_uri=MODELCARD.diff, domain=None, range=Optional[str]) + +slots.identifier = Slot(uri=MODELCARD.identifier, name="identifier", curie=MODELCARD.curie('identifier'), + model_uri=MODELCARD.identifier, domain=None, range=Optional[str]) + +slots.custom_text = Slot(uri=MODELCARD.custom_text, name="custom_text", curie=MODELCARD.curie('custom_text'), + model_uri=MODELCARD.custom_text, domain=None, range=Optional[str]) + +slots.reference = Slot(uri=MODELCARD.reference, name="reference", curie=MODELCARD.curie('reference'), + model_uri=MODELCARD.reference, domain=None, range=Optional[str]) + +slots.style = Slot(uri=MODELCARD.style, name="style", curie=MODELCARD.curie('style'), + model_uri=MODELCARD.style, domain=None, range=Optional[Union[str, "CitationStyleEnum"]]) + +slots.citation = Slot(uri=MODELCARD.citation, name="citation", curie=MODELCARD.curie('citation'), + model_uri=MODELCARD.citation, domain=None, range=Optional[str]) + +slots.overview = Slot(uri=MODELCARD.overview, name="overview", curie=MODELCARD.curie('overview'), + model_uri=MODELCARD.overview, domain=None, range=Optional[str]) + +slots.documentation = Slot(uri=MODELCARD.documentation, name="documentation", curie=MODELCARD.curie('documentation'), + model_uri=MODELCARD.documentation, domain=None, range=Optional[str]) + +slots.owners = Slot(uri=MODELCARD.owners, name="owners", curie=MODELCARD.curie('owners'), + model_uri=MODELCARD.owners, domain=None, range=Optional[Union[str, list[str]]]) + +slots.version = Slot(uri=MODELCARD.version, name="version", curie=MODELCARD.curie('version'), + model_uri=MODELCARD.version, domain=None, range=Optional[str]) + +slots.licenses = Slot(uri=MODELCARD.licenses, name="licenses", curie=MODELCARD.curie('licenses'), + model_uri=MODELCARD.licenses, domain=None, range=Optional[Union[str, list[str]]]) + +slots.references = Slot(uri=MODELCARD.references, name="references", curie=MODELCARD.curie('references'), + model_uri=MODELCARD.references, domain=None, range=Optional[Union[str, list[str]]]) + +slots.citations = Slot(uri=MODELCARD.citations, name="citations", curie=MODELCARD.curie('citations'), + model_uri=MODELCARD.citations, domain=None, range=Optional[Union[str, list[str]]]) + +slots.path = Slot(uri=MODELCARD.path, name="path", curie=MODELCARD.curie('path'), + model_uri=MODELCARD.path, domain=None, range=Optional[str]) + +slots.link = Slot(uri=MODELCARD.link, name="link", curie=MODELCARD.curie('link'), + model_uri=MODELCARD.link, domain=None, range=Optional[Union[str, URI]]) + +slots.sensitive = Slot(uri=MODELCARD.sensitive, name="sensitive", curie=MODELCARD.curie('sensitive'), + model_uri=MODELCARD.sensitive, domain=None, range=Optional[str]) + +slots.graphics = Slot(uri=MODELCARD.graphics, name="graphics", curie=MODELCARD.curie('graphics'), + model_uri=MODELCARD.graphics, domain=None, range=Optional[str]) + +slots.bias_input = Slot(uri=MODELCARD.bias_input, name="bias_input", curie=MODELCARD.curie('bias_input'), + model_uri=MODELCARD.bias_input, domain=None, range=Optional[str]) + +slots.unit = Slot(uri=MODELCARD.unit, name="unit", curie=MODELCARD.curie('unit'), + model_uri=MODELCARD.unit, domain=None, range=Optional[str]) + +slots.sensitive_data = Slot(uri=MODELCARD.sensitive_data, name="sensitive_data", curie=MODELCARD.curie('sensitive_data'), + model_uri=MODELCARD.sensitive_data, domain=None, range=Optional[Union[str, list[str]]]) + +slots.model_architecture = Slot(uri=MODELCARD.model_architecture, name="model_architecture", curie=MODELCARD.curie('model_architecture'), + model_uri=MODELCARD.model_architecture, domain=None, range=Optional[str]) + +slots.data = Slot(uri=MODELCARD.data, name="data", curie=MODELCARD.curie('data'), + model_uri=MODELCARD.data, domain=None, range=Optional[Union[str, list[str]]]) + +slots.input_format = Slot(uri=MODELCARD.input_format, name="input_format", curie=MODELCARD.curie('input_format'), + model_uri=MODELCARD.input_format, domain=None, range=Optional[str]) + +slots.input_format_map = Slot(uri=MODELCARD.input_format_map, name="input_format_map", curie=MODELCARD.curie('input_format_map'), + model_uri=MODELCARD.input_format_map, domain=None, range=Optional[Union[str, list[str]]]) + +slots.output_format = Slot(uri=MODELCARD.output_format, name="output_format", curie=MODELCARD.curie('output_format'), + model_uri=MODELCARD.output_format, domain=None, range=Optional[str]) + +slots.output_format_map = Slot(uri=MODELCARD.output_format_map, name="output_format_map", curie=MODELCARD.curie('output_format_map'), + model_uri=MODELCARD.output_format_map, domain=None, range=Optional[Union[str, list[str]]]) + +slots.key = Slot(uri=MODELCARD.key, name="key", curie=MODELCARD.curie('key'), + model_uri=MODELCARD.key, domain=None, range=Optional[str]) + +slots.value = Slot(uri=MODELCARD.value, name="value", curie=MODELCARD.curie('value'), + model_uri=MODELCARD.value, domain=None, range=Optional[str]) + +slots.type = Slot(uri=MODELCARD.type, name="type", curie=MODELCARD.curie('type'), + model_uri=MODELCARD.type, domain=None, range=Optional[str]) + +slots.value_error = Slot(uri=MODELCARD.value_error, name="value_error", curie=MODELCARD.curie('value_error'), + model_uri=MODELCARD.value_error, domain=None, range=Optional[float]) + +slots.confidence_interval = Slot(uri=MODELCARD.confidence_interval, name="confidence_interval", curie=MODELCARD.curie('confidence_interval'), + model_uri=MODELCARD.confidence_interval, domain=None, range=Optional[str]) + +slots.threshold = Slot(uri=MODELCARD.threshold, name="threshold", curie=MODELCARD.curie('threshold'), + model_uri=MODELCARD.threshold, domain=None, range=Optional[float]) + +slots.slice = Slot(uri=MODELCARD.slice, name="slice", curie=MODELCARD.curie('slice'), + model_uri=MODELCARD.slice, domain=None, range=Optional[str]) + +slots.lower_bound = Slot(uri=MODELCARD.lower_bound, name="lower_bound", curie=MODELCARD.curie('lower_bound'), + model_uri=MODELCARD.lower_bound, domain=None, range=Optional[float]) + +slots.upper_bound = Slot(uri=MODELCARD.upper_bound, name="upper_bound", curie=MODELCARD.curie('upper_bound'), + model_uri=MODELCARD.upper_bound, domain=None, range=Optional[float]) + +slots.collection = Slot(uri=MODELCARD.collection, name="collection", curie=MODELCARD.curie('collection'), + model_uri=MODELCARD.collection, domain=None, range=Optional[Union[str, list[str]]]) + +slots.image = Slot(uri=MODELCARD.image, name="image", curie=MODELCARD.curie('image'), + model_uri=MODELCARD.image, domain=None, range=Optional[str]) + +slots.performance_metrics = Slot(uri=MODELCARD.performance_metrics, name="performance_metrics", curie=MODELCARD.curie('performance_metrics'), + model_uri=MODELCARD.performance_metrics, domain=None, range=Optional[Union[str, list[str]]]) + +slots.users = Slot(uri=MODELCARD.users, name="users", curie=MODELCARD.curie('users'), + model_uri=MODELCARD.users, domain=None, range=Optional[Union[str, list[str]]]) + +slots.use_cases = Slot(uri=MODELCARD.use_cases, name="use_cases", curie=MODELCARD.curie('use_cases'), + model_uri=MODELCARD.use_cases, domain=None, range=Optional[Union[str, list[str]]]) + +slots.limitations = Slot(uri=MODELCARD.limitations, name="limitations", curie=MODELCARD.curie('limitations'), + model_uri=MODELCARD.limitations, domain=None, range=Optional[Union[str, list[str]]]) + +slots.tradeoffs = Slot(uri=MODELCARD.tradeoffs, name="tradeoffs", curie=MODELCARD.curie('tradeoffs'), + model_uri=MODELCARD.tradeoffs, domain=None, range=Optional[Union[str, list[str]]]) + +slots.ethical_considerations = Slot(uri=MODELCARD.ethical_considerations, name="ethical_considerations", curie=MODELCARD.curie('ethical_considerations'), + model_uri=MODELCARD.ethical_considerations, domain=None, range=Optional[Union[str, list[str]]]) + +slots.mitigation_strategy = Slot(uri=MODELCARD.mitigation_strategy, name="mitigation_strategy", curie=MODELCARD.curie('mitigation_strategy'), + model_uri=MODELCARD.mitigation_strategy, domain=None, range=Optional[str]) + +slots.schema_version = Slot(uri=MODELCARD.schema_version, name="schema_version", curie=MODELCARD.curie('schema_version'), + model_uri=MODELCARD.schema_version, domain=None, range=Optional[str]) + +slots.model_category = Slot(uri=MODELCARD.model_category, name="model_category", curie=MODELCARD.curie('model_category'), + model_uri=MODELCARD.model_category, domain=None, range=Optional[str]) + +slots.model_details = Slot(uri=MODELCARD.model_details, name="model_details", curie=MODELCARD.curie('model_details'), + model_uri=MODELCARD.model_details, domain=None, range=str) + +slots.model_parameters = Slot(uri=MODELCARD.model_parameters, name="model_parameters", curie=MODELCARD.curie('model_parameters'), + model_uri=MODELCARD.model_parameters, domain=None, range=Optional[str]) + +slots.quantitative_analysis = Slot(uri=MODELCARD.quantitative_analysis, name="quantitative_analysis", curie=MODELCARD.curie('quantitative_analysis'), + model_uri=MODELCARD.quantitative_analysis, domain=None, range=Optional[str]) + +slots.considerations = Slot(uri=MODELCARD.considerations, name="considerations", curie=MODELCARD.curie('considerations'), + model_uri=MODELCARD.considerations, domain=None, range=Optional[str]) + +slots.bias_model = Slot(uri=MODELCARD.bias_model, name="bias_model", curie=MODELCARD.curie('bias_model'), + model_uri=MODELCARD.bias_model, domain=None, range=Optional[str]) + +slots.bias_output = Slot(uri=MODELCARD.bias_output, name="bias_output", curie=MODELCARD.curie('bias_output'), + model_uri=MODELCARD.bias_output, domain=None, range=Optional[str]) + +slots.framework = Slot(uri=MODELCARD.framework, name="framework", curie=MODELCARD.curie('framework'), + model_uri=MODELCARD.framework, domain=None, range=Optional[str]) + +slots.framework_version = Slot(uri=MODELCARD.framework_version, name="framework_version", curie=MODELCARD.curie('framework_version'), + model_uri=MODELCARD.framework_version, domain=None, range=Optional[str]) + +slots.library_name = Slot(uri=MODELCARD.library_name, name="library_name", curie=MODELCARD.curie('library_name'), + model_uri=MODELCARD.library_name, domain=None, range=Optional[str]) + +slots.pipeline_tag = Slot(uri=MODELCARD.pipeline_tag, name="pipeline_tag", curie=MODELCARD.curie('pipeline_tag'), + model_uri=MODELCARD.pipeline_tag, domain=None, range=Optional[str]) + +slots.language = Slot(uri=MODELCARD.language, name="language", curie=MODELCARD.curie('language'), + model_uri=MODELCARD.language, domain=None, range=Optional[Union[str, list[str]]]) + +slots.base_model = Slot(uri=MODELCARD.base_model, name="base_model", curie=MODELCARD.curie('base_model'), + model_uri=MODELCARD.base_model, domain=None, range=Optional[str]) + +slots.tags = Slot(uri=MODELCARD.tags, name="tags", curie=MODELCARD.curie('tags'), + model_uri=MODELCARD.tags, domain=None, range=Optional[Union[str, list[str]]]) + +slots.datasets = Slot(uri=MODELCARD.datasets, name="datasets", curie=MODELCARD.curie('datasets'), + model_uri=MODELCARD.datasets, domain=None, range=Optional[Union[str, list[str]]]) + +slots.metrics = Slot(uri=MODELCARD.metrics, name="metrics", curie=MODELCARD.curie('metrics'), + model_uri=MODELCARD.metrics, domain=None, range=Optional[Union[str, list[str]]]) + +slots.task = Slot(uri=MODELCARD.task, name="task", curie=MODELCARD.curie('task'), + model_uri=MODELCARD.task, domain=None, range=Optional[str]) + +slots.dataset = Slot(uri=MODELCARD.dataset, name="dataset", curie=MODELCARD.curie('dataset'), + model_uri=MODELCARD.dataset, domain=None, range=Optional[str]) + +slots.source = Slot(uri=MODELCARD.source, name="source", curie=MODELCARD.curie('source'), + model_uri=MODELCARD.source, domain=None, range=Optional[str]) + +slots.results = Slot(uri=MODELCARD.results, name="results", curie=MODELCARD.curie('results'), + model_uri=MODELCARD.results, domain=None, range=Optional[Union[str, list[str]]]) + +slots.model_index = Slot(uri=MODELCARD.model_index, name="model_index", curie=MODELCARD.curie('model_index'), + model_uri=MODELCARD.model_index, domain=None, range=Optional[Union[str, list[str]]]) + +slots.config = Slot(uri=MODELCARD.config, name="config", curie=MODELCARD.curie('config'), + model_uri=MODELCARD.config, domain=None, range=Optional[str]) + +slots.split = Slot(uri=MODELCARD.split, name="split", curie=MODELCARD.curie('split'), + model_uri=MODELCARD.split, domain=None, range=Optional[str]) + +slots.revision = Slot(uri=MODELCARD.revision, name="revision", curie=MODELCARD.curie('revision'), + model_uri=MODELCARD.revision, domain=None, range=Optional[str]) + +slots.args = Slot(uri=MODELCARD.args, name="args", curie=MODELCARD.curie('args'), + model_uri=MODELCARD.args, domain=None, range=Optional[str]) + +slots.url = Slot(uri=MODELCARD.url, name="url", curie=MODELCARD.curie('url'), + model_uri=MODELCARD.url, domain=None, range=Optional[Union[str, URI]]) + +slots.Version_name = Slot(uri=MODELCARD.name, name="Version_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.Version_name, domain=Version, range=Optional[str]) + +slots.Version_date = Slot(uri=MODELCARD.date, name="Version_date", curie=MODELCARD.curie('date'), + model_uri=MODELCARD.Version_date, domain=Version, range=Optional[Union[str, XSDDate]]) + +slots.Version_diff = Slot(uri=MODELCARD.diff, name="Version_diff", curie=MODELCARD.curie('diff'), + model_uri=MODELCARD.Version_diff, domain=Version, range=Optional[str]) + +slots.License_identifier = Slot(uri=MODELCARD.identifier, name="License_identifier", curie=MODELCARD.curie('identifier'), + model_uri=MODELCARD.License_identifier, domain=License, range=Optional[str]) + +slots.License_custom_text = Slot(uri=MODELCARD.custom_text, name="License_custom_text", curie=MODELCARD.curie('custom_text'), + model_uri=MODELCARD.License_custom_text, domain=License, range=Optional[str]) + +slots.owner_name = Slot(uri=MODELCARD.name, name="owner_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.owner_name, domain=Owner, range=Optional[str]) + +slots.owner_contact = Slot(uri=MODELCARD.contact, name="owner_contact", curie=MODELCARD.curie('contact'), + model_uri=MODELCARD.owner_contact, domain=Owner, range=Optional[str]) + +slots.Reference_reference = Slot(uri=MODELCARD.reference, name="Reference_reference", curie=MODELCARD.curie('reference'), + model_uri=MODELCARD.Reference_reference, domain=Reference, range=Optional[str]) + +slots.Citation_style = Slot(uri=MODELCARD.style, name="Citation_style", curie=MODELCARD.curie('style'), + model_uri=MODELCARD.Citation_style, domain=Citation, range=Optional[Union[str, "CitationStyleEnum"]]) + +slots.Citation_citation = Slot(uri=MODELCARD.citation, name="Citation_citation", curie=MODELCARD.curie('citation'), + model_uri=MODELCARD.Citation_citation, domain=Citation, range=Optional[str]) + +slots.ModelDetails_name = Slot(uri=MODELCARD.name, name="ModelDetails_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.ModelDetails_name, domain=ModelDetails, range=str) + +slots.ModelDetails_overview = Slot(uri=MODELCARD.overview, name="ModelDetails_overview", curie=MODELCARD.curie('overview'), + model_uri=MODELCARD.ModelDetails_overview, domain=ModelDetails, range=Optional[str]) + +slots.ModelDetails_documentation = Slot(uri=MODELCARD.documentation, name="ModelDetails_documentation", curie=MODELCARD.curie('documentation'), + model_uri=MODELCARD.ModelDetails_documentation, domain=ModelDetails, range=Optional[str]) + +slots.ModelDetails_owners = Slot(uri=MODELCARD.owners, name="ModelDetails_owners", curie=MODELCARD.curie('owners'), + model_uri=MODELCARD.ModelDetails_owners, domain=ModelDetails, range=Optional[Union[Union[dict, Owner], list[Union[dict, Owner]]]]) + +slots.ModelDetails_version = Slot(uri=MODELCARD.version, name="ModelDetails_version", curie=MODELCARD.curie('version'), + model_uri=MODELCARD.ModelDetails_version, domain=ModelDetails, range=Optional[Union[dict, Version]]) + +slots.ModelDetails_licenses = Slot(uri=MODELCARD.licenses, name="ModelDetails_licenses", curie=MODELCARD.curie('licenses'), + model_uri=MODELCARD.ModelDetails_licenses, domain=ModelDetails, range=Optional[Union[Union[dict, License], list[Union[dict, License]]]]) + +slots.ModelDetails_references = Slot(uri=MODELCARD.references, name="ModelDetails_references", curie=MODELCARD.curie('references'), + model_uri=MODELCARD.ModelDetails_references, domain=ModelDetails, range=Optional[Union[Union[dict, Reference], list[Union[dict, Reference]]]]) + +slots.ModelDetails_citations = Slot(uri=MODELCARD.citations, name="ModelDetails_citations", curie=MODELCARD.curie('citations'), + model_uri=MODELCARD.ModelDetails_citations, domain=ModelDetails, range=Optional[Union[Union[dict, Citation], list[Union[dict, Citation]]]]) + +slots.ModelDetails_path = Slot(uri=MODELCARD.path, name="ModelDetails_path", curie=MODELCARD.curie('path'), + model_uri=MODELCARD.ModelDetails_path, domain=ModelDetails, range=Optional[str]) + +slots.SensitiveData_sensitive_data = Slot(uri=MODELCARD.sensitive_data, name="SensitiveData_sensitive_data", curie=MODELCARD.curie('sensitive_data'), + model_uri=MODELCARD.SensitiveData_sensitive_data, domain=SensitiveData, range=Optional[Union[str, list[str]]]) + +slots.GraphicsCollection_description = Slot(uri=MODELCARD.description, name="GraphicsCollection_description", curie=MODELCARD.curie('description'), + model_uri=MODELCARD.GraphicsCollection_description, domain=GraphicsCollection, range=Optional[str]) + +slots.GraphicsCollection_collection = Slot(uri=MODELCARD.collection, name="GraphicsCollection_collection", curie=MODELCARD.curie('collection'), + model_uri=MODELCARD.GraphicsCollection_collection, domain=GraphicsCollection, range=Optional[Union[Union[dict, "Graphic"], list[Union[dict, "Graphic"]]]]) + +slots.graphic_name = Slot(uri=MODELCARD.name, name="graphic_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.graphic_name, domain=Graphic, range=Optional[str]) + +slots.graphic_image = Slot(uri=MODELCARD.image, name="graphic_image", curie=MODELCARD.curie('image'), + model_uri=MODELCARD.graphic_image, domain=Graphic, range=Optional[str]) + +slots.dataSet_name = Slot(uri=MODELCARD.name, name="dataSet_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.dataSet_name, domain=DataSet, range=Optional[str]) + +slots.dataSet_description = Slot(uri=MODELCARD.description, name="dataSet_description", curie=MODELCARD.curie('description'), + model_uri=MODELCARD.dataSet_description, domain=DataSet, range=Optional[str]) + +slots.dataSet_link = Slot(uri=MODELCARD.link, name="dataSet_link", curie=MODELCARD.curie('link'), + model_uri=MODELCARD.dataSet_link, domain=DataSet, range=Union[str, URI]) + +slots.dataSet_sensitive = Slot(uri=MODELCARD.sensitive, name="dataSet_sensitive", curie=MODELCARD.curie('sensitive'), + model_uri=MODELCARD.dataSet_sensitive, domain=DataSet, range=Optional[Union[dict, SensitiveData]]) + +slots.dataSet_graphics = Slot(uri=MODELCARD.graphics, name="dataSet_graphics", curie=MODELCARD.curie('graphics'), + model_uri=MODELCARD.dataSet_graphics, domain=DataSet, range=Optional[Union[dict, GraphicsCollection]]) + +slots.dataSet_bias_input = Slot(uri=MODELCARD.bias_input, name="dataSet_bias_input", curie=MODELCARD.curie('bias_input'), + model_uri=MODELCARD.dataSet_bias_input, domain=DataSet, range=Optional[str]) + +slots.dataSet_unit = Slot(uri=MODELCARD.unit, name="dataSet_unit", curie=MODELCARD.curie('unit'), + model_uri=MODELCARD.dataSet_unit, domain=DataSet, range=Optional[str]) + +slots.KeyVal_key = Slot(uri=MODELCARD.key, name="KeyVal_key", curie=MODELCARD.curie('key'), + model_uri=MODELCARD.KeyVal_key, domain=KeyVal, range=Optional[str]) + +slots.KeyVal_value = Slot(uri=MODELCARD.value, name="KeyVal_value", curie=MODELCARD.curie('value'), + model_uri=MODELCARD.KeyVal_value, domain=KeyVal, range=Optional[str]) + +slots.ModelParameters_model_architecture = Slot(uri=MODELCARD.model_architecture, name="ModelParameters_model_architecture", curie=MODELCARD.curie('model_architecture'), + model_uri=MODELCARD.ModelParameters_model_architecture, domain=ModelParameters, range=Optional[str]) + +slots.ModelParameters_data = Slot(uri=MODELCARD.data, name="ModelParameters_data", curie=MODELCARD.curie('data'), + model_uri=MODELCARD.ModelParameters_data, domain=ModelParameters, range=Optional[Union[Union[dict, DataSet], list[Union[dict, DataSet]]]]) + +slots.ModelParameters_input_format = Slot(uri=MODELCARD.input_format, name="ModelParameters_input_format", curie=MODELCARD.curie('input_format'), + model_uri=MODELCARD.ModelParameters_input_format, domain=ModelParameters, range=Optional[str]) + +slots.ModelParameters_input_format_map = Slot(uri=MODELCARD.input_format_map, name="ModelParameters_input_format_map", curie=MODELCARD.curie('input_format_map'), + model_uri=MODELCARD.ModelParameters_input_format_map, domain=ModelParameters, range=Optional[Union[Union[dict, KeyVal], list[Union[dict, KeyVal]]]]) + +slots.ModelParameters_output_format = Slot(uri=MODELCARD.output_format, name="ModelParameters_output_format", curie=MODELCARD.curie('output_format'), + model_uri=MODELCARD.ModelParameters_output_format, domain=ModelParameters, range=Optional[str]) + +slots.ModelParameters_output_format_map = Slot(uri=MODELCARD.output_format_map, name="ModelParameters_output_format_map", curie=MODELCARD.curie('output_format_map'), + model_uri=MODELCARD.ModelParameters_output_format_map, domain=ModelParameters, range=Optional[Union[Union[dict, KeyVal], list[Union[dict, KeyVal]]]]) + +slots.ConfidenceInterval_lower_bound = Slot(uri=MODELCARD.lower_bound, name="ConfidenceInterval_lower_bound", curie=MODELCARD.curie('lower_bound'), + model_uri=MODELCARD.ConfidenceInterval_lower_bound, domain=ConfidenceInterval, range=Optional[float]) + +slots.ConfidenceInterval_upper_bound = Slot(uri=MODELCARD.upper_bound, name="ConfidenceInterval_upper_bound", curie=MODELCARD.curie('upper_bound'), + model_uri=MODELCARD.ConfidenceInterval_upper_bound, domain=ConfidenceInterval, range=Optional[float]) + +slots.performanceMetric_type = Slot(uri=MODELCARD.type, name="performanceMetric_type", curie=MODELCARD.curie('type'), + model_uri=MODELCARD.performanceMetric_type, domain=PerformanceMetric, range=str) + +slots.performanceMetric_value = Slot(uri=MODELCARD.value, name="performanceMetric_value", curie=MODELCARD.curie('value'), + model_uri=MODELCARD.performanceMetric_value, domain=PerformanceMetric, range=Optional[float]) + +slots.performanceMetric_value_error = Slot(uri=MODELCARD.value_error, name="performanceMetric_value_error", curie=MODELCARD.curie('value_error'), + model_uri=MODELCARD.performanceMetric_value_error, domain=PerformanceMetric, range=Optional[float]) + +slots.performanceMetric_confidence_interval = Slot(uri=MODELCARD.confidence_interval, name="performanceMetric_confidence_interval", curie=MODELCARD.curie('confidence_interval'), + model_uri=MODELCARD.performanceMetric_confidence_interval, domain=PerformanceMetric, range=Optional[Union[dict, ConfidenceInterval]]) + +slots.performanceMetric_threshold = Slot(uri=MODELCARD.threshold, name="performanceMetric_threshold", curie=MODELCARD.curie('threshold'), + model_uri=MODELCARD.performanceMetric_threshold, domain=PerformanceMetric, range=Optional[float]) + +slots.performanceMetric_slice = Slot(uri=MODELCARD.slice, name="performanceMetric_slice", curie=MODELCARD.curie('slice'), + model_uri=MODELCARD.performanceMetric_slice, domain=PerformanceMetric, range=Optional[str]) + +slots.performanceMetric_unit = Slot(uri=MODELCARD.unit, name="performanceMetric_unit", curie=MODELCARD.curie('unit'), + model_uri=MODELCARD.performanceMetric_unit, domain=PerformanceMetric, range=Optional[str]) + +slots.QuantitativeAnalysis_performance_metrics = Slot(uri=MODELCARD.performance_metrics, name="QuantitativeAnalysis_performance_metrics", curie=MODELCARD.curie('performance_metrics'), + model_uri=MODELCARD.QuantitativeAnalysis_performance_metrics, domain=QuantitativeAnalysis, range=Optional[Union[Union[dict, PerformanceMetric], list[Union[dict, PerformanceMetric]]]]) + +slots.QuantitativeAnalysis_graphics = Slot(uri=MODELCARD.graphics, name="QuantitativeAnalysis_graphics", curie=MODELCARD.curie('graphics'), + model_uri=MODELCARD.QuantitativeAnalysis_graphics, domain=QuantitativeAnalysis, range=Optional[Union[dict, GraphicsCollection]]) + +slots.User_description = Slot(uri=MODELCARD.description, name="User_description", curie=MODELCARD.curie('description'), + model_uri=MODELCARD.User_description, domain=User, range=Optional[str]) + +slots.UseCase_description = Slot(uri=MODELCARD.description, name="UseCase_description", curie=MODELCARD.curie('description'), + model_uri=MODELCARD.UseCase_description, domain=UseCase, range=Optional[str]) + +slots.Limitation_description = Slot(uri=MODELCARD.description, name="Limitation_description", curie=MODELCARD.curie('description'), + model_uri=MODELCARD.Limitation_description, domain=Limitation, range=Optional[str]) + +slots.Tradeoff_description = Slot(uri=MODELCARD.description, name="Tradeoff_description", curie=MODELCARD.curie('description'), + model_uri=MODELCARD.Tradeoff_description, domain=Tradeoff, range=Optional[str]) + +slots.risk_name = Slot(uri=MODELCARD.name, name="risk_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.risk_name, domain=Risk, range=Optional[str]) + +slots.risk_mitigation_strategy = Slot(uri=MODELCARD.mitigation_strategy, name="risk_mitigation_strategy", curie=MODELCARD.curie('mitigation_strategy'), + model_uri=MODELCARD.risk_mitigation_strategy, domain=Risk, range=Optional[str]) + +slots.Considerations_users = Slot(uri=MODELCARD.users, name="Considerations_users", curie=MODELCARD.curie('users'), + model_uri=MODELCARD.Considerations_users, domain=Considerations, range=Optional[Union[Union[dict, User], list[Union[dict, User]]]]) + +slots.Considerations_use_cases = Slot(uri=MODELCARD.use_cases, name="Considerations_use_cases", curie=MODELCARD.curie('use_cases'), + model_uri=MODELCARD.Considerations_use_cases, domain=Considerations, range=Optional[Union[Union[dict, UseCase], list[Union[dict, UseCase]]]]) + +slots.Considerations_limitations = Slot(uri=MODELCARD.limitations, name="Considerations_limitations", curie=MODELCARD.curie('limitations'), + model_uri=MODELCARD.Considerations_limitations, domain=Considerations, range=Optional[Union[Union[dict, Limitation], list[Union[dict, Limitation]]]]) + +slots.Considerations_tradeoffs = Slot(uri=MODELCARD.tradeoffs, name="Considerations_tradeoffs", curie=MODELCARD.curie('tradeoffs'), + model_uri=MODELCARD.Considerations_tradeoffs, domain=Considerations, range=Optional[Union[Union[dict, Tradeoff], list[Union[dict, Tradeoff]]]]) + +slots.Considerations_ethical_considerations = Slot(uri=MODELCARD.ethical_considerations, name="Considerations_ethical_considerations", curie=MODELCARD.curie('ethical_considerations'), + model_uri=MODELCARD.Considerations_ethical_considerations, domain=Considerations, range=Optional[Union[Union[dict, Risk], list[Union[dict, Risk]]]]) + +slots.Task_type = Slot(uri=MODELCARD.type, name="Task_type", curie=MODELCARD.curie('type'), + model_uri=MODELCARD.Task_type, domain=Task, range=Optional[str]) + +slots.Task_name = Slot(uri=MODELCARD.name, name="Task_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.Task_name, domain=Task, range=Optional[str]) + +slots.BenchmarkDataset_type = Slot(uri=MODELCARD.type, name="BenchmarkDataset_type", curie=MODELCARD.curie('type'), + model_uri=MODELCARD.BenchmarkDataset_type, domain=BenchmarkDataset, range=Optional[str]) + +slots.BenchmarkDataset_name = Slot(uri=MODELCARD.name, name="BenchmarkDataset_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.BenchmarkDataset_name, domain=BenchmarkDataset, range=Optional[str]) + +slots.BenchmarkDataset_config = Slot(uri=MODELCARD.config, name="BenchmarkDataset_config", curie=MODELCARD.curie('config'), + model_uri=MODELCARD.BenchmarkDataset_config, domain=BenchmarkDataset, range=Optional[str]) + +slots.BenchmarkDataset_split = Slot(uri=MODELCARD.split, name="BenchmarkDataset_split", curie=MODELCARD.curie('split'), + model_uri=MODELCARD.BenchmarkDataset_split, domain=BenchmarkDataset, range=Optional[str]) + +slots.BenchmarkDataset_revision = Slot(uri=MODELCARD.revision, name="BenchmarkDataset_revision", curie=MODELCARD.curie('revision'), + model_uri=MODELCARD.BenchmarkDataset_revision, domain=BenchmarkDataset, range=Optional[str]) + +slots.BenchmarkDataset_args = Slot(uri=MODELCARD.args, name="BenchmarkDataset_args", curie=MODELCARD.curie('args'), + model_uri=MODELCARD.BenchmarkDataset_args, domain=BenchmarkDataset, range=Optional[str]) + +slots.BenchmarkMetric_type = Slot(uri=MODELCARD.type, name="BenchmarkMetric_type", curie=MODELCARD.curie('type'), + model_uri=MODELCARD.BenchmarkMetric_type, domain=BenchmarkMetric, range=Optional[str]) + +slots.BenchmarkMetric_value = Slot(uri=MODELCARD.value, name="BenchmarkMetric_value", curie=MODELCARD.curie('value'), + model_uri=MODELCARD.BenchmarkMetric_value, domain=BenchmarkMetric, range=Optional[float]) + +slots.BenchmarkMetric_name = Slot(uri=MODELCARD.name, name="BenchmarkMetric_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.BenchmarkMetric_name, domain=BenchmarkMetric, range=Optional[str]) + +slots.BenchmarkMetric_config = Slot(uri=MODELCARD.config, name="BenchmarkMetric_config", curie=MODELCARD.curie('config'), + model_uri=MODELCARD.BenchmarkMetric_config, domain=BenchmarkMetric, range=Optional[str]) + +slots.BenchmarkMetric_args = Slot(uri=MODELCARD.args, name="BenchmarkMetric_args", curie=MODELCARD.curie('args'), + model_uri=MODELCARD.BenchmarkMetric_args, domain=BenchmarkMetric, range=Optional[str]) + +slots.BenchmarkSource_name = Slot(uri=MODELCARD.name, name="BenchmarkSource_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.BenchmarkSource_name, domain=BenchmarkSource, range=Optional[str]) + +slots.BenchmarkSource_url = Slot(uri=MODELCARD.url, name="BenchmarkSource_url", curie=MODELCARD.curie('url'), + model_uri=MODELCARD.BenchmarkSource_url, domain=BenchmarkSource, range=Optional[Union[str, URI]]) + +slots.BenchmarkResult_task = Slot(uri=MODELCARD.task, name="BenchmarkResult_task", curie=MODELCARD.curie('task'), + model_uri=MODELCARD.BenchmarkResult_task, domain=BenchmarkResult, range=Optional[Union[dict, Task]]) + +slots.BenchmarkResult_dataset = Slot(uri=MODELCARD.dataset, name="BenchmarkResult_dataset", curie=MODELCARD.curie('dataset'), + model_uri=MODELCARD.BenchmarkResult_dataset, domain=BenchmarkResult, range=Optional[Union[dict, BenchmarkDataset]]) + +slots.BenchmarkResult_metrics = Slot(uri=MODELCARD.metrics, name="BenchmarkResult_metrics", curie=MODELCARD.curie('metrics'), + model_uri=MODELCARD.BenchmarkResult_metrics, domain=BenchmarkResult, range=Optional[Union[Union[dict, BenchmarkMetric], list[Union[dict, BenchmarkMetric]]]]) + +slots.BenchmarkResult_source = Slot(uri=MODELCARD.source, name="BenchmarkResult_source", curie=MODELCARD.curie('source'), + model_uri=MODELCARD.BenchmarkResult_source, domain=BenchmarkResult, range=Optional[Union[dict, BenchmarkSource]]) + +slots.ModelIndex_name = Slot(uri=MODELCARD.name, name="ModelIndex_name", curie=MODELCARD.curie('name'), + model_uri=MODELCARD.ModelIndex_name, domain=ModelIndex, range=Optional[str]) + +slots.ModelIndex_results = Slot(uri=MODELCARD.results, name="ModelIndex_results", curie=MODELCARD.curie('results'), + model_uri=MODELCARD.ModelIndex_results, domain=ModelIndex, range=Optional[Union[Union[dict, BenchmarkResult], list[Union[dict, BenchmarkResult]]]]) + +slots.modelCard_schema_version = Slot(uri=MODELCARD.schema_version, name="modelCard_schema_version", curie=MODELCARD.curie('schema_version'), + model_uri=MODELCARD.modelCard_schema_version, domain=ModelCard, range=Optional[str]) + +slots.modelCard_model_details = Slot(uri=MODELCARD.model_details, name="modelCard_model_details", curie=MODELCARD.curie('model_details'), + model_uri=MODELCARD.modelCard_model_details, domain=ModelCard, range=Union[dict, ModelDetails]) + +slots.modelCard_model_parameters = Slot(uri=MODELCARD.model_parameters, name="modelCard_model_parameters", curie=MODELCARD.curie('model_parameters'), + model_uri=MODELCARD.modelCard_model_parameters, domain=ModelCard, range=Optional[Union[dict, ModelParameters]]) + +slots.modelCard_quantitative_analysis = Slot(uri=MODELCARD.quantitative_analysis, name="modelCard_quantitative_analysis", curie=MODELCARD.curie('quantitative_analysis'), + model_uri=MODELCARD.modelCard_quantitative_analysis, domain=ModelCard, range=Optional[Union[dict, QuantitativeAnalysis]]) + +slots.modelCard_considerations = Slot(uri=MODELCARD.considerations, name="modelCard_considerations", curie=MODELCARD.curie('considerations'), + model_uri=MODELCARD.modelCard_considerations, domain=ModelCard, range=Optional[Union[dict, Considerations]]) + +slots.modelCard_model_category = Slot(uri=MODELCARD.model_category, name="modelCard_model_category", curie=MODELCARD.curie('model_category'), + model_uri=MODELCARD.modelCard_model_category, domain=ModelCard, range=Optional[str]) + +slots.modelCard_bias_model = Slot(uri=MODELCARD.bias_model, name="modelCard_bias_model", curie=MODELCARD.curie('bias_model'), + model_uri=MODELCARD.modelCard_bias_model, domain=ModelCard, range=Optional[str]) + +slots.modelCard_bias_output = Slot(uri=MODELCARD.bias_output, name="modelCard_bias_output", curie=MODELCARD.curie('bias_output'), + model_uri=MODELCARD.modelCard_bias_output, domain=ModelCard, range=Optional[str]) + +slots.modelCard_framework = Slot(uri=MODELCARD.framework, name="modelCard_framework", curie=MODELCARD.curie('framework'), + model_uri=MODELCARD.modelCard_framework, domain=ModelCard, range=Optional[str]) + +slots.modelCard_framework_version = Slot(uri=MODELCARD.framework_version, name="modelCard_framework_version", curie=MODELCARD.curie('framework_version'), + model_uri=MODELCARD.modelCard_framework_version, domain=ModelCard, range=Optional[str]) + +slots.modelCard_library_name = Slot(uri=MODELCARD.library_name, name="modelCard_library_name", curie=MODELCARD.curie('library_name'), + model_uri=MODELCARD.modelCard_library_name, domain=ModelCard, range=Optional[str]) + +slots.modelCard_pipeline_tag = Slot(uri=MODELCARD.pipeline_tag, name="modelCard_pipeline_tag", curie=MODELCARD.curie('pipeline_tag'), + model_uri=MODELCARD.modelCard_pipeline_tag, domain=ModelCard, range=Optional[str]) + +slots.modelCard_language = Slot(uri=MODELCARD.language, name="modelCard_language", curie=MODELCARD.curie('language'), + model_uri=MODELCARD.modelCard_language, domain=ModelCard, range=Optional[Union[str, list[str]]]) + +slots.modelCard_base_model = Slot(uri=MODELCARD.base_model, name="modelCard_base_model", curie=MODELCARD.curie('base_model'), + model_uri=MODELCARD.modelCard_base_model, domain=ModelCard, range=Optional[str]) + +slots.modelCard_tags = Slot(uri=MODELCARD.tags, name="modelCard_tags", curie=MODELCARD.curie('tags'), + model_uri=MODELCARD.modelCard_tags, domain=ModelCard, range=Optional[Union[str, list[str]]]) + +slots.modelCard_datasets = Slot(uri=MODELCARD.datasets, name="modelCard_datasets", curie=MODELCARD.curie('datasets'), + model_uri=MODELCARD.modelCard_datasets, domain=ModelCard, range=Optional[Union[str, list[str]]]) + +slots.modelCard_metrics = Slot(uri=MODELCARD.metrics, name="modelCard_metrics", curie=MODELCARD.curie('metrics'), + model_uri=MODELCARD.modelCard_metrics, domain=ModelCard, range=Optional[Union[str, list[str]]]) + +slots.modelCard_model_index = Slot(uri=MODELCARD.model_index, name="modelCard_model_index", curie=MODELCARD.curie('model_index'), + model_uri=MODELCARD.modelCard_model_index, domain=ModelCard, range=Optional[Union[Union[dict, ModelIndex], list[Union[dict, ModelIndex]]]]) diff --git a/project/owl/modelcards.owl.ttl b/project/owl/modelcards.owl.ttl new file mode 100644 index 0000000..70fa8f3 --- /dev/null +++ b/project/owl/modelcards.owl.ttl @@ -0,0 +1,1544 @@ +@prefix linkml: . +@prefix modelcard: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix skos: . +@prefix xsd: . + +modelcard:ModelCard a owl:Class, + linkml:ClassDefinition ; + rdfs:label "modelCard" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:framework_version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:schema_version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:bias_model ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:library_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:considerations ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:framework ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:bias_model ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:bias_output ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:model_parameters ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:schema_version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:datasets ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:ModelDetails ; + owl:onProperty modelcard:model_details ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:model_category ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty modelcard:model_details ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:tags ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:bias_output ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:model_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:bias_output ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:framework ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:ModelParameters ; + owl:onProperty modelcard:model_parameters ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:tags ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:metrics ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:base_model ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:pipeline_tag ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:schema_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:model_category ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:ModelIndex ; + owl:onProperty modelcard:model_index ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Considerations ; + owl:onProperty modelcard:considerations ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:framework_version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:language ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:framework ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:base_model ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:datasets ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:metrics ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:considerations ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:pipeline_tag ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:language ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:library_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:model_index ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:quantitative_analysis ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:quantitative_analysis ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:model_parameters ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:bias_model ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:library_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:base_model ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:framework_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:model_details ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:QuantitativeAnalysis ; + owl:onProperty modelcard:quantitative_analysis ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:pipeline_tag ] ; + skos:definition "Complete model card with metadata, performance, and considerations" ; + skos:inScheme linkml:modelcard . + +modelcard:BenchmarkDataset a owl:Class, + linkml:ClassDefinition ; + rdfs:label "BenchmarkDataset" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:config ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:split ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:args ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:args ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:revision ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:revision ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:config ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:split ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:split ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:args ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:config ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:revision ] ; + skos:definition "Dataset used for benchmarking" ; + skos:inScheme linkml:modelcard . + +modelcard:BenchmarkMetric a owl:Class, + linkml:ClassDefinition ; + rdfs:label "BenchmarkMetric" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Float ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:args ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:args ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:config ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:config ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:args ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:config ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ] ; + skos:definition "Benchmark metric result" ; + skos:inScheme linkml:modelcard . + +modelcard:BenchmarkResult a owl:Class, + linkml:ClassDefinition ; + rdfs:label "BenchmarkResult" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:dataset ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:dataset ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Task ; + owl:onProperty modelcard:task ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:source ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:source ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:task ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:BenchmarkDataset ; + owl:onProperty modelcard:dataset ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:BenchmarkSource ; + owl:onProperty modelcard:source ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:metrics ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:BenchmarkMetric ; + owl:onProperty modelcard:metrics ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:task ] ; + skos:definition "Benchmark result entry with task, dataset, and metrics" ; + skos:inScheme linkml:modelcard . + +modelcard:BenchmarkSource a owl:Class, + linkml:ClassDefinition ; + rdfs:label "BenchmarkSource" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:url ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uri ; + owl:onProperty modelcard:url ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:url ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ] ; + skos:definition "Source of benchmark results" ; + skos:inScheme linkml:modelcard . + +modelcard:Citation a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Citation" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:citation ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:citation ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:style ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:CitationStyleEnum ; + owl:onProperty modelcard:style ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:style ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:citation ] ; + skos:definition "Citation information for the model" ; + skos:inScheme linkml:modelcard . + +modelcard:ConfidenceInterval a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ConfidenceInterval" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:upper_bound ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:lower_bound ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Float ; + owl:onProperty modelcard:upper_bound ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Float ; + owl:onProperty modelcard:lower_bound ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:upper_bound ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:lower_bound ] ; + skos:definition "Confidence interval for a metric value" ; + skos:inScheme linkml:modelcard . + +modelcard:Considerations a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Considerations" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom modelcard:UseCase ; + owl:onProperty modelcard:use_cases ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Limitation ; + owl:onProperty modelcard:limitations ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:limitations ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:tradeoffs ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Risk ; + owl:onProperty modelcard:ethical_considerations ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:User ; + owl:onProperty modelcard:users ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:use_cases ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:users ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:ethical_considerations ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Tradeoff ; + owl:onProperty modelcard:tradeoffs ] ; + skos:definition "Considerations for model usage including limitations and ethical concerns" ; + skos:inScheme linkml:modelcard . + +modelcard:DataSet a owl:Class, + linkml:ClassDefinition ; + rdfs:label "dataSet" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:bias_input ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:bias_input ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:SensitiveData ; + owl:onProperty modelcard:sensitive ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:unit ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:graphics ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:GraphicsCollection ; + owl:onProperty modelcard:graphics ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:unit ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:sensitive ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty modelcard:link ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:bias_input ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:unit ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:link ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:sensitive ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uri ; + owl:onProperty modelcard:link ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:graphics ] ; + skos:definition "Information about a dataset used for training or evaluation" ; + skos:inScheme linkml:modelcard . + +modelcard:Graphic a owl:Class, + linkml:ClassDefinition ; + rdfs:label "graphic" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:image ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:image ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:image ] ; + skos:definition "A single graphic or visualization" ; + skos:inScheme linkml:modelcard . + +modelcard:License a owl:Class, + linkml:ClassDefinition ; + rdfs:label "License" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:custom_text ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:custom_text ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:custom_text ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:identifier ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:identifier ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:identifier ] ; + skos:definition "License information (use SPDX identifier OR custom text, not both)" ; + skos:inScheme linkml:modelcard . + +modelcard:Limitation a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Limitation" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:description ] ; + skos:definition "A known limitation or constraint of the model" ; + skos:inScheme linkml:modelcard . + +modelcard:ModelDetails a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ModelDetails" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:overview ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:owners ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:overview ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:licenses ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:License ; + owl:onProperty modelcard:licenses ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:documentation ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:documentation ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Owner ; + owl:onProperty modelcard:owners ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:documentation ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:path ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:version ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Reference ; + owl:onProperty modelcard:references ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:references ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:citations ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:path ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Citation ; + owl:onProperty modelcard:citations ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:path ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:Version ; + owl:onProperty modelcard:version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:overview ] ; + skos:definition "Comprehensive metadata about the model" ; + skos:inScheme linkml:modelcard . + +modelcard:ModelIndex a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ModelIndex" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:BenchmarkResult ; + owl:onProperty modelcard:results ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:results ] ; + skos:definition "Papers with Code model-index structure for benchmark tracking" ; + skos:inScheme linkml:modelcard . + +modelcard:ModelParameters a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ModelParameters" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:output_format ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:KeyVal ; + owl:onProperty modelcard:input_format_map ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:input_format ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:input_format ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:input_format_map ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:DataSet ; + owl:onProperty modelcard:data ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:input_format ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:data ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:model_architecture ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:model_architecture ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:model_architecture ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:output_format_map ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:output_format ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:KeyVal ; + owl:onProperty modelcard:output_format_map ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:output_format ] ; + skos:definition "Parameters and specifications for model construction" ; + skos:inScheme linkml:modelcard . + +modelcard:Owner a owl:Class, + linkml:ClassDefinition ; + rdfs:label "owner" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:contact ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:contact ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:contact ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ] ; + skos:definition "Model owner or maintainer information" ; + skos:inScheme linkml:modelcard . + +modelcard:PerformanceMetric a owl:Class, + linkml:ClassDefinition ; + rdfs:label "performanceMetric" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:threshold ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:value_error ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:slice ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Float ; + owl:onProperty modelcard:value_error ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:ConfidenceInterval ; + owl:onProperty modelcard:confidence_interval ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Float ; + owl:onProperty modelcard:threshold ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:confidence_interval ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Float ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:threshold ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:confidence_interval ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:value_error ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:unit ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:unit ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:slice ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:unit ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:slice ] ; + skos:definition "A performance metric with optional confidence interval" ; + skos:inScheme linkml:modelcard . + +modelcard:QuantitativeAnalysis a owl:Class, + linkml:ClassDefinition ; + rdfs:label "QuantitativeAnalysis" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom modelcard:GraphicsCollection ; + owl:onProperty modelcard:graphics ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:performance_metrics ], + [ a owl:Restriction ; + owl:allValuesFrom modelcard:PerformanceMetric ; + owl:onProperty modelcard:performance_metrics ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:graphics ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:graphics ] ; + skos:definition "Quantitative analysis and performance evaluation of the model" ; + skos:inScheme linkml:modelcard . + +modelcard:Reference a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Reference" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:reference ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:reference ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:reference ] ; + skos:definition "Reference to related resources" ; + skos:inScheme linkml:modelcard . + +modelcard:Risk a owl:Class, + linkml:ClassDefinition ; + rdfs:label "risk" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:mitigation_strategy ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:mitigation_strategy ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:mitigation_strategy ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ] ; + skos:definition "An ethical, environmental, or operational risk" ; + skos:inScheme linkml:modelcard . + +modelcard:SensitiveData a owl:Class, + linkml:ClassDefinition ; + rdfs:label "SensitiveData" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:sensitive_data ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:sensitive_data ] ; + skos:definition "Information about sensitive data in a dataset" ; + skos:inScheme linkml:modelcard . + +modelcard:Task a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Task" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:type ] ; + skos:definition "ML task specification for benchmarking" ; + skos:inScheme linkml:modelcard . + +modelcard:Tradeoff a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Tradeoff" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:description ] ; + skos:definition "A performance tradeoff consideration" ; + skos:inScheme linkml:modelcard . + +modelcard:UseCase a owl:Class, + linkml:ClassDefinition ; + rdfs:label "UseCase" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:description ] ; + skos:definition "Description of a use case or application scenario" ; + skos:inScheme linkml:modelcard . + +modelcard:User a owl:Class, + linkml:ClassDefinition ; + rdfs:label "User" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:description ] ; + skos:definition "Description of an intended user type" ; + skos:inScheme linkml:modelcard . + +modelcard:Version a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Version" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:diff ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:date ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:date ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:date ; + owl:onProperty modelcard:date ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:diff ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:diff ] ; + skos:definition "Version information for a model" ; + skos:inScheme linkml:modelcard . + + a owl:Class, + modelcard:CitationStyleEnum ; + rdfs:label "APA" ; + rdfs:subClassOf modelcard:CitationStyleEnum . + + a owl:Class, + modelcard:CitationStyleEnum ; + rdfs:label "Chicago" ; + rdfs:subClassOf modelcard:CitationStyleEnum . + + a owl:Class, + modelcard:CitationStyleEnum ; + rdfs:label "IEEE" ; + rdfs:subClassOf modelcard:CitationStyleEnum . + + a owl:Class, + modelcard:CitationStyleEnum ; + rdfs:label "MLA" ; + rdfs:subClassOf modelcard:CitationStyleEnum . + +modelcard:GraphicsCollection a owl:Class, + linkml:ClassDefinition ; + rdfs:label "GraphicsCollection" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom modelcard:Graphic ; + owl:onProperty modelcard:collection ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:collection ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:description ] ; + skos:definition "Collection of graphics and visualizations" ; + skos:inScheme linkml:modelcard . + +modelcard:KeyVal a owl:Class, + linkml:ClassDefinition ; + rdfs:label "KeyVal" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:key ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:key ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:key ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty modelcard:value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty modelcard:value ] ; + skos:definition "Key-value pair for format mappings" ; + skos:inScheme linkml:modelcard . + +modelcard:citations a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "citations" ; + skos:definition "Citation information for the model" ; + skos:inScheme linkml:modelcard . + +modelcard:collection a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "collection" ; + skos:definition "Collection of items" ; + skos:inScheme linkml:modelcard . + +modelcard:data a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "data" ; + skos:definition "Training and evaluation datasets" ; + skos:inScheme linkml:modelcard . + +modelcard:datasets a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "datasets" ; + rdfs:range linkml:String ; + skos:definition "Training dataset identifiers" ; + skos:inScheme linkml:modelcard . + +modelcard:ethical_considerations a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "ethical_considerations" ; + skos:definition "Ethical considerations and risks" ; + skos:inScheme linkml:modelcard . + +modelcard:input_format_map a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "input_format_map" ; + skos:definition "Structured input format mapping" ; + skos:inScheme linkml:modelcard . + +modelcard:language a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "language" ; + rdfs:range linkml:String ; + skos:definition "Natural language(s) processed by the model" ; + skos:inScheme linkml:modelcard . + +modelcard:licenses a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "licenses" ; + skos:definition "License information" ; + skos:inScheme linkml:modelcard . + +modelcard:limitations a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "limitations" ; + skos:definition "Known limitations and constraints" ; + skos:inScheme linkml:modelcard . + +modelcard:model_index a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "model_index" ; + skos:definition "Papers with Code model-index for benchmark tracking" ; + skos:inScheme linkml:modelcard . + +modelcard:output_format_map a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "output_format_map" ; + skos:definition "Structured output format mapping" ; + skos:inScheme linkml:modelcard . + +modelcard:owners a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "owners" ; + skos:definition "Model owners or maintainers" ; + skos:inScheme linkml:modelcard . + +modelcard:performance_metrics a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "performance_metrics" ; + skos:definition "Performance metrics and evaluation results" ; + skos:inScheme linkml:modelcard . + +modelcard:references a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "references" ; + skos:definition "Related resources and references" ; + skos:inScheme linkml:modelcard . + +modelcard:results a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "results" ; + skos:definition "Benchmark or evaluation results" ; + skos:inScheme linkml:modelcard . + +modelcard:sensitive_data a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "sensitive_data" ; + rdfs:range linkml:String ; + skos:definition "Types of PII or sensitive information present" ; + skos:inScheme linkml:modelcard . + +modelcard:tags a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "tags" ; + rdfs:range linkml:String ; + skos:definition "Searchable keywords and tags" ; + skos:inScheme linkml:modelcard . + +modelcard:tradeoffs a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "tradeoffs" ; + skos:definition "Performance tradeoffs and considerations" ; + skos:inScheme linkml:modelcard . + +modelcard:use_cases a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "use_cases" ; + skos:definition "Intended use cases and application scenarios" ; + skos:inScheme linkml:modelcard . + +modelcard:users a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "users" ; + skos:definition "Intended users or user types" ; + skos:inScheme linkml:modelcard . + +modelcard:base_model a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "base_model" ; + rdfs:range linkml:String ; + skos:definition "Parent model identifier (for fine-tuned models)" ; + skos:inScheme linkml:modelcard . + +modelcard:bias_input a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "bias_input" ; + rdfs:range linkml:String ; + skos:definition "Known biases in the input data" ; + skos:inScheme linkml:modelcard . + +modelcard:bias_model a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "bias_model" ; + rdfs:range linkml:String ; + skos:definition "Known biases in the model" ; + skos:inScheme linkml:modelcard . + +modelcard:bias_output a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "bias_output" ; + rdfs:range linkml:String ; + skos:definition "Known biases in the model output" ; + skos:inScheme linkml:modelcard . + +modelcard:citation a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "citation" ; + rdfs:range linkml:String ; + skos:definition "Formatted citation text" ; + skos:inScheme linkml:modelcard . + +modelcard:confidence_interval a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "confidence_interval" ; + skos:definition "Confidence interval for the metric" ; + skos:inScheme linkml:modelcard . + +modelcard:considerations a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "considerations" ; + skos:definition "Usage considerations, limitations, and ethical concerns" ; + skos:inScheme linkml:modelcard . + +modelcard:contact a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "contact" ; + rdfs:range linkml:String ; + skos:definition "Contact information (email, URL, etc.)" ; + skos:inScheme linkml:modelcard . + +modelcard:custom_text a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "custom_text" ; + rdfs:range linkml:String ; + skos:definition "Custom license text (when not using SPDX identifier)" ; + skos:inScheme linkml:modelcard . + +modelcard:dataset a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "dataset" ; + skos:definition "Dataset information" ; + skos:inScheme linkml:modelcard . + +modelcard:date a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "date" ; + rdfs:range linkml:date ; + skos:definition "Date value" ; + skos:inScheme linkml:modelcard . + +modelcard:diff a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "diff" ; + rdfs:range linkml:String ; + skos:definition "Difference or changelog from previous version" ; + skos:inScheme linkml:modelcard . + +modelcard:documentation a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "documentation" ; + rdfs:range linkml:String ; + skos:definition "Detailed usage guide and documentation" ; + skos:inScheme linkml:modelcard . + +modelcard:framework a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "framework" ; + rdfs:range linkml:String ; + skos:definition "ML framework (TensorFlow, PyTorch, JAX, Scikit-Learn, etc.)" ; + skos:inScheme linkml:modelcard . + +modelcard:framework_version a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "framework_version" ; + rdfs:range linkml:String ; + skos:definition "Version of the ML framework" ; + skos:inScheme linkml:modelcard . + +modelcard:identifier a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "identifier" ; + rdfs:range linkml:String ; + skos:definition "SPDX license identifier (e.g., 'Apache-2.0', 'MIT')" ; + skos:inScheme linkml:modelcard . + +modelcard:image a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "image" ; + rdfs:range linkml:String ; + skos:definition "Base64-encoded image (PNG format)" ; + skos:inScheme linkml:modelcard . + +modelcard:input_format a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "input_format" ; + rdfs:range linkml:String ; + skos:definition "Plain text input format specification" ; + skos:inScheme linkml:modelcard . + +modelcard:key a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "key" ; + rdfs:range linkml:String ; + skos:definition "Key in key-value pair" ; + skos:inScheme linkml:modelcard . + +modelcard:library_name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "library_name" ; + rdfs:range linkml:String ; + skos:definition "Library name for loading the model (e.g., transformers, diffusers)" ; + skos:inScheme linkml:modelcard . + +modelcard:link a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "link" ; + rdfs:range linkml:Uri ; + skos:definition "URL to dataset" ; + skos:inScheme linkml:modelcard . + +modelcard:lower_bound a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "lower_bound" ; + rdfs:range linkml:Float ; + skos:definition "Lower bound of confidence interval" ; + skos:inScheme linkml:modelcard . + +modelcard:mitigation_strategy a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "mitigation_strategy" ; + rdfs:range linkml:String ; + skos:definition "Strategy to address or mitigate this risk" ; + skos:inScheme linkml:modelcard . + +modelcard:model_architecture a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "model_architecture" ; + rdfs:range linkml:String ; + skos:definition "Model architecture specification" ; + skos:inScheme linkml:modelcard . + +modelcard:model_category a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "model_category" ; + rdfs:range linkml:String ; + skos:definition "Category or parent class of the model" ; + skos:inScheme linkml:modelcard . + +modelcard:model_details a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "model_details" ; + skos:definition "Comprehensive model metadata" ; + skos:inScheme linkml:modelcard . + +modelcard:model_parameters a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "model_parameters" ; + skos:definition "Model construction and architecture parameters" ; + skos:inScheme linkml:modelcard . + +modelcard:output_format a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "output_format" ; + rdfs:range linkml:String ; + skos:definition "Plain text output format specification" ; + skos:inScheme linkml:modelcard . + +modelcard:overview a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "overview" ; + rdfs:range linkml:String ; + skos:definition "High-level model description" ; + skos:inScheme linkml:modelcard . + +modelcard:path a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "path" ; + rdfs:range linkml:String ; + skos:definition "Storage location or path to model artifacts" ; + skos:inScheme linkml:modelcard . + +modelcard:pipeline_tag a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "pipeline_tag" ; + rdfs:range linkml:String ; + skos:definition "Task type (text-generation, image-classification, etc.)" ; + skos:inScheme linkml:modelcard . + +modelcard:quantitative_analysis a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "quantitative_analysis" ; + skos:definition "Quantitative analysis and performance evaluation" ; + skos:inScheme linkml:modelcard . + +modelcard:reference a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "reference" ; + rdfs:range linkml:String ; + skos:definition "Reference URL or citation string" ; + skos:inScheme linkml:modelcard . + +modelcard:revision a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "revision" ; + rdfs:range linkml:String ; + skos:definition "Dataset or model revision/version" ; + skos:inScheme linkml:modelcard . + +modelcard:schema_version a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "schema_version" ; + rdfs:range linkml:String ; + skos:definition "Version of the model card schema" ; + skos:inScheme linkml:modelcard . + +modelcard:sensitive a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "sensitive" ; + skos:definition "Sensitive data information" ; + skos:inScheme linkml:modelcard . + +modelcard:slice a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "slice" ; + rdfs:range linkml:String ; + skos:definition "Data slice identifier this metric was computed on" ; + skos:inScheme linkml:modelcard . + +modelcard:source a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "source" ; + skos:definition "Source of information or results" ; + skos:inScheme linkml:modelcard . + +modelcard:split a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "split" ; + rdfs:range linkml:String ; + skos:definition "Dataset split (train, test, validation)" ; + skos:inScheme linkml:modelcard . + +modelcard:style a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "style" ; + rdfs:range modelcard:CitationStyleEnum ; + skos:definition "Citation format style" ; + skos:inScheme linkml:modelcard . + +modelcard:task a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "task" ; + skos:definition "ML task specification" ; + skos:inScheme linkml:modelcard . + +modelcard:threshold a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "threshold" ; + rdfs:range linkml:Float ; + skos:definition "Decision threshold the metric was computed on" ; + skos:inScheme linkml:modelcard . + +modelcard:upper_bound a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "upper_bound" ; + rdfs:range linkml:Float ; + skos:definition "Upper bound of confidence interval" ; + skos:inScheme linkml:modelcard . + +modelcard:url a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "url" ; + rdfs:range linkml:Uri ; + skos:definition "URL reference" ; + skos:inScheme linkml:modelcard . + +modelcard:value_error a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "value_error" ; + rdfs:range linkml:Float ; + skos:definition "Estimated error for the metric" ; + skos:inScheme linkml:modelcard . + +modelcard:version a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "version" ; + skos:definition "Version information" ; + skos:inScheme linkml:modelcard . + +modelcard:metrics a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "metrics" ; + rdfs:range linkml:String ; + skos:definition "Evaluation metrics used" ; + skos:inScheme linkml:modelcard . + +modelcard:args a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "args" ; + skos:definition "Additional arguments or parameters" ; + skos:inScheme linkml:modelcard . + +modelcard:config a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "config" ; + rdfs:range linkml:String ; + skos:definition "Configuration specification" ; + skos:inScheme linkml:modelcard . + +modelcard:graphics a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "graphics" ; + skos:definition "Visualizations and graphics" ; + skos:inScheme linkml:modelcard . + +modelcard:unit a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "unit" ; + rdfs:range linkml:String ; + skos:definition "Unit of measurement" ; + skos:inScheme linkml:modelcard . + +modelcard:value a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "value" ; + skos:definition "Value in key-value pair or metric value" ; + skos:inScheme linkml:modelcard . + +modelcard:CitationStyleEnum a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( ) ; + linkml:permissible_values , + , + , + . + +modelcard:type a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "type" ; + rdfs:range linkml:String ; + skos:definition "Type or category" ; + skos:inScheme linkml:modelcard . + +modelcard:description a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "description" ; + rdfs:range linkml:String ; + skos:definition "Textual description" ; + skos:inScheme linkml:modelcard . + +modelcard:name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "name" ; + rdfs:range linkml:String ; + skos:definition "Name or identifier" ; + skos:inScheme linkml:modelcard . + +linkml:modelcard a owl:Ontology ; + rdfs:label "Model_Card" ; + skos:definition """A comprehensive LinkML rendering of model card schemas, +incorporating Google Model Card Toolkit v0.0.2, HuggingFace, +and Papers with Code specifications. + +This schema provides structured metadata for documenting machine learning models +including model details, training data, performance metrics, ethical considerations, +and deployment specifications.""" . + diff --git a/project/prefixmap/modelcards.yaml b/project/prefixmap/modelcards.yaml new file mode 100644 index 0000000..5758295 --- /dev/null +++ b/project/prefixmap/modelcards.yaml @@ -0,0 +1,4 @@ +{ + "linkml": "https://w3id.org/linkml/", + "modelcard": "https://w3id.org/linkml/modelcard/" +} diff --git a/project/protobuf/modelcards.proto b/project/protobuf/modelcards.proto new file mode 100644 index 0000000..54ccef4 --- /dev/null +++ b/project/protobuf/modelcards.proto @@ -0,0 +1,215 @@ + syntax="proto3"; + package +// metamodel_version: 1.7.0 +// Dataset used for benchmarking +message BenchmarkDataset + { + string type = 0 + string name = 0 + string config = 0 + string split = 0 + string revision = 0 + string args = 0 + } +// Benchmark metric result +message BenchmarkMetric + { + string type = 0 + float value = 0 + string name = 0 + string config = 0 + string args = 0 + } +// Benchmark result entry with task, dataset, and metrics +message BenchmarkResult + { + task task = 0 + benchmarkDataset dataset = 0 + repeated benchmarkMetric metrics = 0 + benchmarkSource source = 0 + } +// Source of benchmark results +message BenchmarkSource + { + string name = 0 + uri url = 0 + } +// Citation information for the model +message Citation + { + citationStyleEnum style = 0 + string citation = 0 + } +// Confidence interval for a metric value +message ConfidenceInterval + { + float lowerBound = 0 + float upperBound = 0 + } +// Considerations for model usage including limitations and ethical concerns +message Considerations + { + repeated user users = 0 + repeated useCase useCases = 0 + repeated limitation limitations = 0 + repeated tradeoff tradeoffs = 0 + repeated risk ethicalConsiderations = 0 + } +// Information about a dataset used for training or evaluation +message DataSet + { + string name = 0 + string description = 0 + uri link = 0 + sensitiveData sensitive = 0 + graphicsCollection graphics = 0 + string biasInput = 0 + string unit = 0 + } +// A single graphic or visualization +message Graphic + { + string name = 0 + string image = 0 + } +// Collection of graphics and visualizations +message GraphicsCollection + { + string description = 0 + repeated graphic collection = 0 + } +// Key-value pair for format mappings +message KeyVal + { + string key = 0 + string value = 0 + } +// License information (use SPDX identifier OR custom text, not both) +message License + { + string identifier = 0 + string customText = 0 + } +// A known limitation or constraint of the model +message Limitation + { + string description = 0 + } +// Complete model card with metadata, performance, and considerations +message ModelCard + { + string schemaVersion = 0 + modelDetails modelDetails = 0 + modelParameters modelParameters = 0 + quantitativeAnalysis quantitativeAnalysis = 0 + considerations considerations = 0 + string modelCategory = 0 + string biasModel = 0 + string biasOutput = 0 + string framework = 0 + string frameworkVersion = 0 + string libraryName = 0 + string pipelineTag = 0 + repeated string language = 0 + string baseModel = 0 + repeated string tags = 0 + repeated string datasets = 0 + repeated string metrics = 0 + repeated modelIndex modelIndex = 0 + } +// Comprehensive metadata about the model +message ModelDetails + { + string name = 0 + string overview = 0 + string documentation = 0 + repeated owner owners = 0 + version version = 0 + repeated license licenses = 0 + repeated reference references = 0 + repeated citation citations = 0 + string path = 0 + } +// Papers with Code model-index structure for benchmark tracking +message ModelIndex + { + string name = 0 + repeated benchmarkResult results = 0 + } +// Parameters and specifications for model construction +message ModelParameters + { + string modelArchitecture = 0 + repeated dataSet data = 0 + string inputFormat = 0 + repeated keyVal inputFormatMap = 0 + string outputFormat = 0 + repeated keyVal outputFormatMap = 0 + } +// Model owner or maintainer information +message Owner + { + string name = 0 + string contact = 0 + } +// A performance metric with optional confidence interval +message PerformanceMetric + { + string type = 0 + float value = 0 + float valueError = 0 + confidenceInterval confidenceInterval = 0 + float threshold = 0 + string slice = 0 + string unit = 0 + } +// Quantitative analysis and performance evaluation of the model +message QuantitativeAnalysis + { + repeated performanceMetric performanceMetrics = 0 + graphicsCollection graphics = 0 + } +// Reference to related resources +message Reference + { + string reference = 0 + } +// An ethical, environmental, or operational risk +message Risk + { + string name = 0 + string mitigationStrategy = 0 + } +// Information about sensitive data in a dataset +message SensitiveData + { + repeated string sensitiveData = 0 + } +// ML task specification for benchmarking +message Task + { + string type = 0 + string name = 0 + } +// A performance tradeoff consideration +message Tradeoff + { + string description = 0 + } +// Description of a use case or application scenario +message UseCase + { + string description = 0 + } +// Description of an intended user type +message User + { + string description = 0 + } +// Version information for a model +message Version + { + string name = 0 + date date = 0 + string diff = 0 + } diff --git a/project/shacl/modelcards.shacl.ttl b/project/shacl/modelcards.shacl.ttl new file mode 100644 index 0000000..4d3aed5 --- /dev/null +++ b/project/shacl/modelcards.shacl.ttl @@ -0,0 +1,754 @@ +@prefix modelcard: . +@prefix rdf: . +@prefix sh: . +@prefix xsd: . + +modelcard:ModelCard a sh:NodeShape ; + sh:closed true ; + sh:description "Complete model card with metadata, performance, and considerations" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Parent model identifier (for fine-tuned or derived models)" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 13 ; + sh:path modelcard:base_model ], + [ sh:class modelcard:ModelParameters ; + sh:description "Model construction and architecture parameters" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path modelcard:model_parameters ], + [ sh:datatype xsd:string ; + sh:description "ML framework used (TensorFlow, PyTorch, JAX, Scikit-Learn, etc.)" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path modelcard:framework ], + [ sh:datatype xsd:string ; + sh:description "Known biases in the model itself" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path modelcard:bias_model ], + [ sh:class modelcard:ModelDetails ; + sh:description "Comprehensive model metadata and details" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path modelcard:model_details ], + [ sh:datatype xsd:string ; + sh:description "Natural language(s) processed by the model" ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path modelcard:language ], + [ sh:datatype xsd:string ; + sh:description "Evaluation metrics used for this model" ; + sh:nodeKind sh:Literal ; + sh:order 16 ; + sh:path modelcard:metrics ], + [ sh:class modelcard:QuantitativeAnalysis ; + sh:description "Quantitative analysis and performance evaluation" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path modelcard:quantitative_analysis ], + [ sh:datatype xsd:string ; + sh:description "Library name for loading the model (e.g., transformers, diffusers, timm)" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path modelcard:library_name ], + [ sh:class modelcard:Considerations ; + sh:description "Usage considerations, limitations, and ethical concerns" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path modelcard:considerations ], + [ sh:datatype xsd:string ; + sh:description "Task type for pipeline usage" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path modelcard:pipeline_tag ], + [ sh:class modelcard:ModelIndex ; + sh:description "Benchmark results following Papers with Code model-index format" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 17 ; + sh:path modelcard:model_index ], + [ sh:datatype xsd:string ; + sh:description "Category or parent class of the model" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path modelcard:model_category ], + [ sh:datatype xsd:string ; + sh:description "Training dataset identifiers or names" ; + sh:nodeKind sh:Literal ; + sh:order 15 ; + sh:path modelcard:datasets ], + [ sh:datatype xsd:string ; + sh:description "Searchable keywords and tags for discovery" ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path modelcard:tags ], + [ sh:datatype xsd:string ; + sh:description "Version of the model card schema being used" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:schema_version ], + [ sh:datatype xsd:string ; + sh:description "Known biases in the model's outputs" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path modelcard:bias_output ], + [ sh:datatype xsd:string ; + sh:description "Version of the ML framework" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path modelcard:framework_version ] ; + sh:targetClass modelcard:ModelCard . + +modelcard:BenchmarkDataset a sh:NodeShape ; + sh:closed true ; + sh:description "Dataset used for benchmarking" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Dataset type identifier" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:type ], + [ sh:datatype xsd:string ; + sh:description "Dataset split (train, test, validation)" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path modelcard:split ], + [ sh:datatype xsd:string ; + sh:description "Dataset version or revision" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path modelcard:revision ], + [ sh:datatype xsd:string ; + sh:description "Additional arguments for dataset loading" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path modelcard:args ], + [ sh:datatype xsd:string ; + sh:description "Dataset name" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:name ], + [ sh:datatype xsd:string ; + sh:description "Dataset configuration" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path modelcard:config ] ; + sh:targetClass modelcard:BenchmarkDataset . + +modelcard:BenchmarkMetric a sh:NodeShape ; + sh:closed true ; + sh:description "Benchmark metric result" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Metric name" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path modelcard:name ], + [ sh:datatype xsd:float ; + sh:description "Metric value" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:value ], + [ sh:datatype xsd:string ; + sh:description "Metric configuration" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path modelcard:config ], + [ sh:datatype xsd:string ; + sh:description "Metric type identifier" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:type ], + [ sh:datatype xsd:string ; + sh:description "Additional metric arguments" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path modelcard:args ] ; + sh:targetClass modelcard:BenchmarkMetric . + +modelcard:BenchmarkResult a sh:NodeShape ; + sh:closed true ; + sh:description "Benchmark result entry with task, dataset, and metrics" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class modelcard:BenchmarkDataset ; + sh:description "Dataset used for evaluation" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path modelcard:dataset ], + [ sh:class modelcard:BenchmarkMetric ; + sh:description "Metrics reported for this benchmark" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path modelcard:metrics ], + [ sh:class modelcard:Task ; + sh:description "Task that was evaluated" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path modelcard:task ], + [ sh:class modelcard:BenchmarkSource ; + sh:description "Source of the benchmark results" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path modelcard:source ] ; + sh:targetClass modelcard:BenchmarkResult . + +modelcard:BenchmarkSource a sh:NodeShape ; + sh:closed true ; + sh:description "Source of benchmark results" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Source name (e.g., 'Open LLM Leaderboard', 'GLUE Benchmark')" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ], + [ sh:datatype xsd:anyURI ; + sh:description "URL to the source" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:url ] ; + sh:targetClass modelcard:BenchmarkSource . + +modelcard:Citation a sh:NodeShape ; + sh:closed true ; + sh:description "Citation information for the model" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Formatted citation text" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:citation ], + [ sh:description "Citation format style" ; + sh:in ( "MLA" "APA" "Chicago" "IEEE" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path modelcard:style ] ; + sh:targetClass modelcard:Citation . + +modelcard:ConfidenceInterval a sh:NodeShape ; + sh:closed true ; + sh:description "Confidence interval for a metric value" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:float ; + sh:description "Lower bound of the confidence interval" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:lower_bound ], + [ sh:datatype xsd:float ; + sh:description "Upper bound of the confidence interval" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:upper_bound ] ; + sh:targetClass modelcard:ConfidenceInterval . + +modelcard:Considerations a sh:NodeShape ; + sh:closed true ; + sh:description "Considerations for model usage including limitations and ethical concerns" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class modelcard:Tradeoff ; + sh:description "Performance tradeoffs to consider" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path modelcard:tradeoffs ], + [ sh:class modelcard:Limitation ; + sh:description "Known limitations and constraints" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path modelcard:limitations ], + [ sh:class modelcard:User ; + sh:description "Intended user types" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path modelcard:users ], + [ sh:class modelcard:Risk ; + sh:description "Ethical considerations and identified risks" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path modelcard:ethical_considerations ], + [ sh:class modelcard:UseCase ; + sh:description "Intended use cases and application scenarios" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path modelcard:use_cases ] ; + sh:targetClass modelcard:Considerations . + +modelcard:DataSet a sh:NodeShape ; + sh:closed true ; + sh:description "Information about a dataset used for training or evaluation" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Unit for values in this dataset" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path modelcard:unit ], + [ sh:class modelcard:SensitiveData ; + sh:description "Sensitive data information" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path modelcard:sensitive ], + [ sh:datatype xsd:string ; + sh:description "Known biases present in the input data" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path modelcard:bias_input ], + [ sh:class modelcard:GraphicsCollection ; + sh:description "Visualizations of the dataset" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path modelcard:graphics ], + [ sh:datatype xsd:string ; + sh:description "Dataset overview and characteristics" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:description ], + [ sh:datatype xsd:anyURI ; + sh:description "URL to the dataset" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path modelcard:link ], + [ sh:datatype xsd:string ; + sh:description "Dataset name or identifier" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ] ; + sh:targetClass modelcard:DataSet . + +modelcard:Graphic a sh:NodeShape ; + sh:closed true ; + sh:description "A single graphic or visualization" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Name or title of the graphic" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ], + [ sh:datatype xsd:string ; + sh:description "Base64-encoded PNG image" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:image ] ; + sh:targetClass modelcard:Graphic . + +modelcard:License a sh:NodeShape ; + sh:closed true ; + sh:description "License information (use SPDX identifier OR custom text, not both)" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Custom license text (use when SPDX identifier is not applicable)" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:custom_text ], + [ sh:datatype xsd:string ; + sh:description "SPDX license identifier (e.g., 'Apache-2.0', 'MIT', 'CC-BY-4.0')" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:identifier ] ; + sh:targetClass modelcard:License . + +modelcard:Limitation a sh:NodeShape ; + sh:closed true ; + sh:description "A known limitation or constraint of the model" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Description of the limitation or constraint" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:description ] ; + sh:targetClass modelcard:Limitation . + +modelcard:ModelDetails a sh:NodeShape ; + sh:closed true ; + sh:description "Comprehensive metadata about the model" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class modelcard:License ; + sh:description "Licensing information" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path modelcard:licenses ], + [ sh:class modelcard:Citation ; + sh:description "How to cite this model" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path modelcard:citations ], + [ sh:class modelcard:Owner ; + sh:description "Model owners or maintainers" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path modelcard:owners ], + [ sh:datatype xsd:string ; + sh:description "Model name or identifier" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ], + [ sh:datatype xsd:string ; + sh:description "High-level description of what the model does" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:overview ], + [ sh:class modelcard:Version ; + sh:description "Version information" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path modelcard:version ], + [ sh:datatype xsd:string ; + sh:description "Storage location or path to model artifacts" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path modelcard:path ], + [ sh:datatype xsd:string ; + sh:description "Detailed documentation and usage guide" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path modelcard:documentation ], + [ sh:class modelcard:Reference ; + sh:description "References to related resources" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path modelcard:references ] ; + sh:targetClass modelcard:ModelDetails . + +modelcard:ModelIndex a sh:NodeShape ; + sh:closed true ; + sh:description "Papers with Code model-index structure for benchmark tracking" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class modelcard:BenchmarkResult ; + sh:description "Benchmark results" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path modelcard:results ], + [ sh:datatype xsd:string ; + sh:description "Model name for this benchmark entry" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ] ; + sh:targetClass modelcard:ModelIndex . + +modelcard:ModelParameters a sh:NodeShape ; + sh:closed true ; + sh:description "Parameters and specifications for model construction" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class modelcard:KeyVal ; + sh:description "Structured mapping of output format fields" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path modelcard:output_format_map ], + [ sh:class modelcard:DataSet ; + sh:description "Training and evaluation datasets" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path modelcard:data ], + [ sh:datatype xsd:string ; + sh:description "Plain text description of input format" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path modelcard:input_format ], + [ sh:datatype xsd:string ; + sh:description "Model architecture specification and description" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:model_architecture ], + [ sh:datatype xsd:string ; + sh:description "Plain text description of output format" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path modelcard:output_format ], + [ sh:class modelcard:KeyVal ; + sh:description "Structured mapping of input format fields" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path modelcard:input_format_map ] ; + sh:targetClass modelcard:ModelParameters . + +modelcard:Owner a sh:NodeShape ; + sh:closed true ; + sh:description "Model owner or maintainer information" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Contact information (email, website, etc.)" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:contact ], + [ sh:datatype xsd:string ; + sh:description "Name of the owner (individual or organization)" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ] ; + sh:targetClass modelcard:Owner . + +modelcard:PerformanceMetric a sh:NodeShape ; + sh:closed true ; + sh:description "A performance metric with optional confidence interval" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:float ; + sh:description "Estimated error for the metric value" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path modelcard:value_error ], + [ sh:datatype xsd:float ; + sh:description "Metric value" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:value ], + [ sh:datatype xsd:string ; + sh:description "Data slice or subset this metric was computed on" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path modelcard:slice ], + [ sh:class modelcard:ConfidenceInterval ; + sh:description "Confidence interval for the metric" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path modelcard:confidence_interval ], + [ sh:datatype xsd:string ; + sh:description "Type of performance metric (e.g., 'accuracy', 'F1', 'AUC', 'precision')" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:type ], + [ sh:datatype xsd:float ; + sh:description "Decision threshold used when computing this metric" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path modelcard:threshold ], + [ sh:datatype xsd:string ; + sh:description "Unit for the metric value, if applicable" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path modelcard:unit ] ; + sh:targetClass modelcard:PerformanceMetric . + +modelcard:QuantitativeAnalysis a sh:NodeShape ; + sh:closed true ; + sh:description "Quantitative analysis and performance evaluation of the model" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class modelcard:GraphicsCollection ; + sh:description "Performance visualizations and plots" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path modelcard:graphics ], + [ sh:class modelcard:PerformanceMetric ; + sh:description "Performance metrics and evaluation results" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path modelcard:performance_metrics ] ; + sh:targetClass modelcard:QuantitativeAnalysis . + +modelcard:Reference a sh:NodeShape ; + sh:closed true ; + sh:description "Reference to related resources" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "URL or citation string for related resource" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:reference ] ; + sh:targetClass modelcard:Reference . + +modelcard:Risk a sh:NodeShape ; + sh:closed true ; + sh:description "An ethical, environmental, or operational risk" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Name or type of the risk" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ], + [ sh:datatype xsd:string ; + sh:description "Strategy used to address or mitigate this risk" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:mitigation_strategy ] ; + sh:targetClass modelcard:Risk . + +modelcard:SensitiveData a sh:NodeShape ; + sh:closed true ; + sh:description "Information about sensitive data in a dataset" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Types of PII or sensitive information (e.g., names, addresses, medical records)" ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:sensitive_data ] ; + sh:targetClass modelcard:SensitiveData . + +modelcard:Task a sh:NodeShape ; + sh:closed true ; + sh:description "ML task specification for benchmarking" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Human-readable task name" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:name ], + [ sh:datatype xsd:string ; + sh:description "Task type identifier (e.g., 'text-generation', 'image-classification')" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:type ] ; + sh:targetClass modelcard:Task . + +modelcard:Tradeoff a sh:NodeShape ; + sh:closed true ; + sh:description "A performance tradeoff consideration" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Description of the performance tradeoff" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:description ] ; + sh:targetClass modelcard:Tradeoff . + +modelcard:UseCase a sh:NodeShape ; + sh:closed true ; + sh:description "Description of a use case or application scenario" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Description of the application scenario" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:description ] ; + sh:targetClass modelcard:UseCase . + +modelcard:User a sh:NodeShape ; + sh:closed true ; + sh:description "Description of an intended user type" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Description of the intended user type or role" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:description ] ; + sh:targetClass modelcard:User . + +modelcard:Version a sh:NodeShape ; + sh:closed true ; + sh:description "Version information for a model" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:date ; + sh:description "Release date of this version" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:date ], + [ sh:datatype xsd:string ; + sh:description "Version identifier (e.g., '1.0.0', 'v2', 'beta')" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:name ], + [ sh:datatype xsd:string ; + sh:description "Changes from the previous version" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path modelcard:diff ] ; + sh:targetClass modelcard:Version . + +modelcard:GraphicsCollection a sh:NodeShape ; + sh:closed true ; + sh:description "Collection of graphics and visualizations" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class modelcard:Graphic ; + sh:description "Graphics in this collection" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path modelcard:collection ], + [ sh:datatype xsd:string ; + sh:description "Description of this graphics collection" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:description ] ; + sh:targetClass modelcard:GraphicsCollection . + +modelcard:KeyVal a sh:NodeShape ; + sh:closed true ; + sh:description "Key-value pair for format mappings" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Value associated with the key" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path modelcard:value ], + [ sh:datatype xsd:string ; + sh:description "Key identifier" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path modelcard:key ] ; + sh:targetClass modelcard:KeyVal . + diff --git a/project/shex/modelcards.shex b/project/shex/modelcards.shex new file mode 100644 index 0000000..b4a4036 --- /dev/null +++ b/project/shex/modelcards.shex @@ -0,0 +1,309 @@ +# metamodel_version: 1.7.0 +BASE +PREFIX rdf: +PREFIX xsd: +PREFIX linkml: + + +linkml:String xsd:string + +linkml:Integer xsd:integer + +linkml:Boolean xsd:boolean + +linkml:Float xsd:float + +linkml:Double xsd:double + +linkml:Decimal xsd:decimal + +linkml:Time xsd:time + +linkml:Date xsd:date + +linkml:Datetime xsd:dateTime + +linkml:DateOrDatetime linkml:DateOrDatetime + +linkml:Uriorcurie IRI + +linkml:Curie xsd:string + +linkml:Uri IRI + +linkml:Ncname xsd:string + +linkml:Objectidentifier IRI + +linkml:Nodeidentifier NONLITERAL + +linkml:Jsonpointer xsd:string + +linkml:Jsonpath xsd:string + +linkml:Sparqlpath xsd:string + + CLOSED { + ( $ ( @linkml:String ? ; + @linkml:String ? ; + @linkml:String ? ; + @linkml:String ? ; + @linkml:String ? ; + @linkml:String ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( @linkml:String ? ; + @linkml:Float ? ; + @linkml:String ? ; + @linkml:String ? ; + @linkml:String ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( @ ? ; + @ ? ; + @ * ; + @ ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( @linkml:String ? ; + @linkml:Uri ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ (