From 78ae617d3ad02f70957cc56037da4f50968d2ab0 Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Wed, 15 May 2024 15:31:27 +0200 Subject: [PATCH 1/5] fix documentation --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 05a8f01..7d51086 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ -<<<<<<< HEAD # Temporary WoT TD Tooling -The thing-description-schema is a LinkML-based schema for modelling the [Web of Things Thing Description](https://www.w3.org/TR/wot-thing-description11/) information model. +This repository is a LinkML-based schema for modelling the [Web of Things Thing Description](https://www.w3.org/TR/wot-thing-description11/) information model. The aim is simplify the current WoT specification generation process. For more information please refer to the [WoT github repo](https://github.com/w3c/wot-thing-description/tree/main/toolchain). @@ -18,11 +17,13 @@ For more information please refer to the [WoT github repo](https://github.com/w3 ## Developer Documentation +- Install [Poetry](https://python-poetry.org/) +- Run `poetry install` to install dependencies +
-Use the `make` command to generate project artefacts: +Use the `make` command to generate project artifacts: * `make test`: validate the LinkML schema on test instances * `make all`: make everything -* `make deploy`: deploys site +
->>>>>>> thing-description-schema/master From efffc567f6e6f22f506bdd1aeccc458d7c8c2456 Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Wed, 15 May 2024 15:31:34 +0200 Subject: [PATCH 2/5] update lock file --- poetry.lock | 2544 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2544 insertions(+) create mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..4b8b9c1 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,2544 @@ +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.6.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, +] + +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +description = "ANTLR 4.9.3 runtime for Python 3.7" +optional = false +python-versions = "*" +files = [ + {file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"}, +] + +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[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 (==2021.1)", "simplejson (==3.*)"] + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "bioregistry" +version = "0.11.4" +description = "Integrated registry of biological databases and nomenclatures" +optional = false +python-versions = ">=3.8" +files = [ + {file = "bioregistry-0.11.4-py3-none-any.whl", hash = "sha256:531c3d8602e8a1446cdb8cd8f75279f3a0dab72dbd19a10465826c9464b7cee1"}, + {file = "bioregistry-0.11.4.tar.gz", hash = "sha256:a5f007fb44f42df1cff87464eda5f49dd16156a3606d8bcf28755db1db50fd82"}, +] + +[package.dependencies] +click = "*" +curies = ">=0.7.0" +more-click = ">=0.1.2" +pydantic = "*" +pystow = ">=0.1.13" +requests = "*" +tqdm = "*" + +[package.extras] +align = ["beautifulsoup4", "class-resolver", "defusedxml", "fairsharing-client (>=0.1.0)", "pandas", "pyyaml", "tabulate"] +charts = ["jinja2", "matplotlib", "matplotlib-venn", "pandas", "seaborn"] +docs = ["autodoc-pydantic", "sphinx (<7.3)", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme"] +export = ["ndex2", "pyyaml", "rdflib", "rdflib-jsonld"] +gha = ["more-itertools"] +health = ["click-default-group", "jinja2", "pandas", "pyyaml", "tabulate"] +tests = ["coverage", "httpx", "more-itertools", "pytest"] +web = ["bootstrap-flask (<=2.0.0)", "curies[fastapi]", "fastapi", "flask (<2.2.4)", "markdown", "pyyaml", "rdflib", "rdflib-endpoint", "rdflib-jsonld", "uvicorn", "werkzeug (<2.3.0)"] + +[[package]] +name = "cachetools" +version = "5.3.3" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, + {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, +] + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "cfgraph" +version = "0.2.1" +description = "rdflib collections flattening graph" +optional = false +python-versions = "*" +files = [ + {file = "CFGraph-0.2.1.tar.gz", hash = "sha256:b57fe7044a10b8ff65aa3a8a8ddc7d4cd77bf511b42e57289cd52cbc29f8fe74"}, +] + +[package.dependencies] +rdflib = ">=0.4.2" + +[[package]] +name = "chardet" +version = "5.2.0" +description = "Universal encoding detector for Python 3" +optional = false +python-versions = ">=3.7" +files = [ + {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, + {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "curies" +version = "0.7.9" +description = "Idiomatic conversion between URIs and compact URIs (CURIEs)." +optional = false +python-versions = ">=3.8" +files = [ + {file = "curies-0.7.9-py3-none-any.whl", hash = "sha256:e4c5beb91642376953c94db0ee2fb5d2b011c3b16749516436114ba61442f260"}, + {file = "curies-0.7.9.tar.gz", hash = "sha256:3b63c5fea7b0e967629a3a384b1a8c59b56c503487c1dcbacddeab59e25db4d8"}, +] + +[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.3.46" +description = "Diff and patch tables" +optional = false +python-versions = "*" +files = [ + {file = "daff-1.3.46.tar.gz", hash = "sha256:22d0da9fd6a3275b54c926a9c97b180f9258aad65113ea18f3fec52cbadcd818"}, +] + +[[package]] +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + +[[package]] +name = "editorconfig" +version = "0.12.4" +description = "EditorConfig File Locator and Interpreter for Python" +optional = false +python-versions = "*" +files = [ + {file = "EditorConfig-0.12.4.tar.gz", hash = "sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80"}, +] + +[[package]] +name = "et-xmlfile" +version = "1.1.0" +description = "An implementation of lxml.xmlfile for the standard library" +optional = false +python-versions = ">=3.6" +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 = "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" +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." +optional = false +python-versions = "*" +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 = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "google" +version = "3.0.0" +description = "Python bindings to the Google search engine." +optional = false +python-versions = "*" +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.19.0" +description = "Google API client core library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-api-core-2.19.0.tar.gz", hash = "sha256:cf1b7c2694047886d2af1128a03ae99e391108a08804f87cfd35970e49c9cd10"}, + {file = "google_api_core-2.19.0-py3-none-any.whl", hash = "sha256:8661eec4078c35428fd3f69a2c7ee29e342896b70f01d1a1cbcb334372dd6251"}, +] + +[package.dependencies] +google-auth = ">=2.14.1,<3.0.dev0" +googleapis-common-protos = ">=1.56.2,<2.0.dev0" +proto-plus = ">=1.22.3,<2.0.0dev" +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,<5.0.0.dev0" +requests = ">=2.18.0,<3.0.0.dev0" + +[package.extras] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0.dev0)", "grpcio-status (>=1.49.1,<2.0.dev0)"] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] + +[[package]] +name = "google-api-python-client" +version = "2.129.0" +description = "Google API Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-api-python-client-2.129.0.tar.gz", hash = "sha256:984cc8cc8eb4923468b1926d2b8effc5b459a4dda3c845896eb87c153b28ef84"}, + {file = "google_api_python_client-2.129.0-py2.py3-none-any.whl", hash = "sha256:d50f7e2dfdbb7fc2732f6a0cba1c54d7bb676390679526c6bb628c901e43ec86"}, +] + +[package.dependencies] +google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0.dev0" +google-auth = ">=1.32.0,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0.dev0" +google-auth-httplib2 = ">=0.2.0,<1.0.0" +httplib2 = ">=0.19.0,<1.dev0" +uritemplate = ">=3.0.1,<5" + +[[package]] +name = "google-auth" +version = "2.29.0" +description = "Google Authentication Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-auth-2.29.0.tar.gz", hash = "sha256:672dff332d073227550ffc7457868ac4218d6c500b155fe6cc17d2b13602c360"}, + {file = "google_auth-2.29.0-py2.py3-none-any.whl", hash = "sha256:d452ad095688cd52bae0ad6fafe027f6a6d6f560e810fec20914e17a09526415"}, +] + +[package.dependencies] +cachetools = ">=2.0.0,<6.0" +pyasn1-modules = ">=0.2.1" +rsa = ">=3.1.4,<5" + +[package.extras] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] +enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] +pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] +reauth = ["pyu2f (>=0.1.5)"] +requests = ["requests (>=2.20.0,<3.0.0.dev0)"] + +[[package]] +name = "google-auth-httplib2" +version = "0.2.0" +description = "Google Authentication Library: httplib2 transport" +optional = false +python-versions = "*" +files = [ + {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, + {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, +] + +[package.dependencies] +google-auth = "*" +httplib2 = ">=0.19.0" + +[[package]] +name = "google-auth-oauthlib" +version = "1.2.0" +description = "Google Authentication Library" +optional = false +python-versions = ">=3.6" +files = [ + {file = "google-auth-oauthlib-1.2.0.tar.gz", hash = "sha256:292d2d3783349f2b0734a0a0207b1e1e322ac193c2c09d8f7c613fb7cc501ea8"}, + {file = "google_auth_oauthlib-1.2.0-py2.py3-none-any.whl", hash = "sha256:297c1ce4cb13a99b5834c74a1fe03252e1e499716718b190f56bcb9c4abc4faf"}, +] + +[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.63.0" +description = "Common protobufs used in Google APIs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "googleapis-common-protos-1.63.0.tar.gz", hash = "sha256:17ad01b11d5f1d0171c06d3ba5c04c54474e883b66b949722b4938ee2694ef4e"}, + {file = "googleapis_common_protos-1.63.0-py2.py3-none-any.whl", hash = "sha256:ae45f75702f7c08b541f750854a678bd8f534a1a6bace6afe975f1d0a82d6632"}, +] + +[package.dependencies] +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<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,<5.0.0.dev0" + +[package.extras] +grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] + +[[package]] +name = "graphviz" +version = "0.20.3" +description = "Simple Python interface for Graphviz" +optional = false +python-versions = ">=3.8" +files = [ + {file = "graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5"}, + {file = "graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"}, +] + +[package.extras] +dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] +docs = ["sphinx (>=5,<7)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] +test = ["coverage", "pytest (>=7,<8.1)", "pytest-cov", "pytest-mock (>=3)"] + +[[package]] +name = "greenlet" +version = "3.0.3" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "gspread" +version = "6.1.0" +description = "Google Spreadsheets Python API" +optional = false +python-versions = ">=3.8" +files = [ + {file = "gspread-6.1.0-py3-none-any.whl", hash = "sha256:67aa3335cfcbb2625e41b53129433ba779f2890244a4c532624362ce5e022342"}, + {file = "gspread-6.1.0.tar.gz", hash = "sha256:576b72b628b251d2ee41e02b982d3c714d511d2a5aa3a88e587ed9efc4d6e752"}, +] + +[package.dependencies] +google-auth = ">=1.12.0" +google-auth-oauthlib = ">=0.4.1" +StrEnum = "0.4.15" + +[[package]] +name = "gspread-formatting" +version = "1.1.2" +description = "Complete Google Sheets formatting support for gspread worksheets" +optional = false +python-versions = "*" +files = [ + {file = "gspread-formatting-1.1.2.tar.gz", hash = "sha256:4d954d8c283880c4189f5684652b114c3889ffa4b442f339b80e2371782cb4c0"}, + {file = "gspread_formatting-1.1.2-py2.py3-none-any.whl", hash = "sha256:e5d14477f18ec2f08db0a00d22470d1c621d53b0633412c4873d86712c9a7bca"}, +] + +[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" +optional = false +python-versions = ">=3.7" +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.22.0" +description = "A comprehensive HTTP client library." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc"}, + {file = "httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"}, +] + +[package.dependencies] +pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "isodate" +version = "0.6.1" +description = "An ISO 8601 date/time/duration parser and formatter" +optional = false +python-versions = "*" +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" +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.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jsbeautifier" +version = "1.15.1" +description = "JavaScript unobfuscator and beautifier." +optional = false +python-versions = "*" +files = [ + {file = "jsbeautifier-1.15.1.tar.gz", hash = "sha256:ebd733b560704c602d744eafc839db60a1ee9326e30a2a80c4adb8718adc1b24"}, +] + +[package.dependencies] +editorconfig = ">=0.12.2" +six = ">=1.13.0" + +[[package]] +name = "json-flattener" +version = "0.1.9" +description = "Python library for denormalizing nested dicts or json objects to tables and back" +optional = false +python-versions = ">=3.7.0" +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 = "*" +pyyaml = "*" + +[[package]] +name = "jsonasobj" +version = "1.3.1" +description = "JSON as python objects" +optional = false +python-versions = "*" +files = [ + {file = "jsonasobj-1.3.1-py3-none-any.whl", hash = "sha256:b9e329dc1ceaae7cf5d5b214684a0b100e0dad0be6d5bbabac281ec35ddeca65"}, + {file = "jsonasobj-1.3.1.tar.gz", hash = "sha256:d52e0544a54a08f6ea3f77fa3387271e3648655e0eace2f21e825c26370e44a2"}, +] + +[[package]] +name = "jsonasobj2" +version = "1.0.4" +description = "JSON as python objects - version 2" +optional = false +python-versions = ">=3.6" +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 = "*" + +[[package]] +name = "jsonpatch" +version = "1.33" +description = "Apply JSON-Patches (RFC 6902)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, + {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, +] + +[package.dependencies] +jsonpointer = ">=1.9" + +[[package]] +name = "jsonpath-ng" +version = "1.6.1" +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." +optional = false +python-versions = "*" +files = [ + {file = "jsonpath-ng-1.6.1.tar.gz", hash = "sha256:086c37ba4917304850bd837aeab806670224d3f038fe2833ff593a672ef0a5fa"}, + {file = "jsonpath_ng-1.6.1-py3-none-any.whl", hash = "sha256:8f22cd8273d7772eea9aaa84d922e0841aa36fdb8a2c6b7f6c3791a16a9bc0be"}, +] + +[package.dependencies] +ply = "*" + +[[package]] +name = "jsonpointer" +version = "2.4" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, + {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, +] + +[[package]] +name = "jsonschema" +version = "4.22.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, + {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, +] + +[package.dependencies] +attrs = ">=22.2.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\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format\""} +rfc3987 = {version = "*", optional = true, markers = "extra == \"format\""} +rpds-py = ">=0.7.1" +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)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "linkml" +version = "1.7.10" +description = "Linked Open Data Modeling Language" +optional = false +python-versions = "<4.0.0,>=3.8.1" +files = [ + {file = "linkml-1.7.10-py3-none-any.whl", hash = "sha256:bf21cce814e9d1509489f1e6e15a7e86e4f11d949490d9a7a5c3f6b5b412ec62"}, + {file = "linkml-1.7.10.tar.gz", hash = "sha256:1c38601c3cd495e34490b8cf7277fd3674ec68dcbe9f5efcec2658093801ce91"}, +] + +[package.dependencies] +antlr4-python3-runtime = ">=4.9.0,<4.10" +click = ">=7.0" +graphviz = ">=0.10.1" +hbreader = "*" +isodate = ">=0.6.0" +jinja2 = ">=3.1.0" +jsonasobj2 = ">=1.0.3,<2.0.0" +jsonschema = {version = ">=4.0.0", extras = ["format"]} +linkml-dataops = "*" +linkml-runtime = ">=1.7.4" +openpyxl = "*" +parse = "*" +prefixcommons = ">=0.1.7" +prefixmaps = ">=0.2.2" +pydantic = ">=1.0.0,<3.0.0" +pyjsg = ">=0.11.6" +pyshex = ">=0.7.20" +pyshexc = ">=0.8.3" +python-dateutil = "*" +pyyaml = "*" +rdflib = ">=6.0.0" +requests = ">=2.22" +sqlalchemy = ">=1.4.31" +watchdog = ">=0.9.0" + +[package.extras] +black = ["black (>=24.0.0)"] +shacl = ["pyshacl (>=0.25.0,<0.26.0)"] +tests = ["black (>=24.0.0)", "pyshacl (>=0.25.0,<0.26.0)"] + +[[package]] +name = "linkml-dataops" +version = "0.1.0" +description = "LinkML Data Operations API" +optional = false +python-versions = ">=3.7" +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 = "*" +jsonpatch = "*" +jsonpath-ng = "*" +linkml-runtime = ">=1.1.6" +"ruamel.yaml" = "*" + +[[package]] +name = "linkml-runtime" +version = "1.7.5" +description = "Runtime environment for LinkML, the Linked open data modeling language" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "linkml_runtime-1.7.5-py3-none-any.whl", hash = "sha256:c58000c7c68fa97b7d76c50421a85a64e25f07eec5bcac464bc00c4cd79007a6"}, + {file = "linkml_runtime-1.7.5.tar.gz", hash = "sha256:b31197a5398359441ae1ed43470c54377a1d08db961366dda670300dddcd71d7"}, +] + +[package.dependencies] +click = "*" +curies = ">=0.5.4" +deprecated = "*" +hbreader = "*" +json-flattener = ">=0.1.9" +jsonasobj2 = ">=1.0.4,<2.dev0" +jsonschema = ">=3.2.0" +prefixcommons = ">=0.1.12" +prefixmaps = ">=0.1.4" +pydantic = ">=1.10.2,<3.0.0" +pyyaml = "*" +rdflib = ">=6.0.0" +requests = "*" + +[[package]] +name = "markdown" +version = "3.6" +description = "Python implementation of John Gruber's Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, + {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, +] + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +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.6.0" +description = "Project documentation with Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"}, + {file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" +packaging = ">=20.5" +pathspec = ">=0.11.1" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, +] + +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + +[[package]] +name = "mkdocs-material" +version = "8.5.11" +description = "Documentation that simply works" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material-8.5.11-py3-none-any.whl", hash = "sha256:c907b4b052240a5778074a30a78f31a1f8ff82d7012356dc26898b97559f082e"}, + {file = "mkdocs_material-8.5.11.tar.gz", hash = "sha256:b0ea0513fd8cab323e8a825d6692ea07fa83e917bb5db042e523afecc7064ab7"}, +] + +[package.dependencies] +jinja2 = ">=3.0.2" +markdown = ">=3.2" +mkdocs = ">=1.4.0" +mkdocs-material-extensions = ">=1.1" +pygments = ">=2.12" +pymdown-extensions = ">=9.4" +requests = ">=2.26" + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, +] + +[[package]] +name = "mkdocs-mermaid2-plugin" +version = "0.6.0" +description = "A MkDocs plugin for including mermaid graphs in markdown sources" +optional = false +python-versions = ">=3.5" +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" +jsbeautifier = "*" +mkdocs = ">=1.0.4" +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" +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 = "oauthlib" +version = "3.2.2" +description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +optional = false +python-versions = ">=3.6" +files = [ + {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, + {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, +] + +[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" +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.1.2" +description = "A Python library to read/write Excel 2010 xlsx/xlsm files" +optional = false +python-versions = ">=3.6" +files = [ + {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"}, + {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"}, +] + +[package.dependencies] +et-xmlfile = "*" + +[[package]] +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, +] + +[[package]] +name = "parse" +version = "1.20.1" +description = "parse() is the opposite of format()" +optional = false +python-versions = "*" +files = [ + {file = "parse-1.20.1-py2.py3-none-any.whl", hash = "sha256:76ddd5214255ae711db4c512be636151fbabaa948c6f30115aecc440422ca82c"}, + {file = "parse-1.20.1.tar.gz", hash = "sha256:09002ca350ad42e76629995f71f7b518670bcf93548bdde3684fd55d2be51975"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "ply" +version = "3.11" +description = "Python Lex & Yacc" +optional = false +python-versions = "*" +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.12" +description = "A python API for working with ID prefixes" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "prefixcommons-0.1.12-py3-none-any.whl", hash = "sha256:16dbc0a1f775e003c724f19a694fcfa3174608f5c8b0e893d494cf8098ac7f8b"}, + {file = "prefixcommons-0.1.12.tar.gz", hash = "sha256:22c4e2d37b63487b3ab48f0495b70f14564cb346a15220f23919eb0c1851f69f"}, +] + +[package.dependencies] +click = ">=8.1.3,<9.0.0" +pytest-logging = ">=2015.11.4,<2016.0.0" +PyYAML = ">=6.0,<7.0" +requests = ">=2.28.1,<3.0.0" + +[[package]] +name = "prefixmaps" +version = "0.2.4" +description = "A python library for retrieving semantic prefix maps" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "prefixmaps-0.2.4-py3-none-any.whl", hash = "sha256:89bf0e6fb08c276f754f9624c42adf2e87c64ee92a3dde1f7eff01f22d85b512"}, + {file = "prefixmaps-0.2.4.tar.gz", hash = "sha256:ae86a1b31189d0516d199756d5808f75f44b39e86546c356cc78c0fe8d2078af"}, +] + +[package.dependencies] +curies = ">=0.5.3" +pyyaml = ">=5.3.1" + +[[package]] +name = "proto-plus" +version = "1.23.0" +description = "Beautiful, Pythonic protocol buffers." +optional = false +python-versions = ">=3.6" +files = [ + {file = "proto-plus-1.23.0.tar.gz", hash = "sha256:89075171ef11988b3fa157f5dbd8b9cf09d65fffee97e29ce403cd8defba19d2"}, + {file = "proto_plus-1.23.0-py3-none-any.whl", hash = "sha256:a829c79e619e1cf632de091013a4173deed13a55f326ef84f05af6f50ff4c82c"}, +] + +[package.dependencies] +protobuf = ">=3.19.0,<5.0.0dev" + +[package.extras] +testing = ["google-api-core[grpc] (>=1.31.5)"] + +[[package]] +name = "protobuf" +version = "4.25.3" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, +] + +[[package]] +name = "pyasn1" +version = "0.6.0" +description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyasn1-0.6.0-py2.py3-none-any.whl", hash = "sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473"}, + {file = "pyasn1-0.6.0.tar.gz", hash = "sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c"}, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.0" +description = "A collection of ASN.1-based protocols modules" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyasn1_modules-0.4.0-py3-none-any.whl", hash = "sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b"}, + {file = "pyasn1_modules-0.4.0.tar.gz", hash = "sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6"}, +] + +[package.dependencies] +pyasn1 = ">=0.4.6,<0.7.0" + +[[package]] +name = "pydantic" +version = "2.7.1" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.7.1-py3-none-any.whl", hash = "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5"}, + {file = "pydantic-2.7.1.tar.gz", hash = "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"}, +] + +[package.dependencies] +annotated-types = ">=0.4.0" +pydantic-core = "2.18.2" +typing-extensions = ">=4.6.1" + +[package.extras] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic-core" +version = "2.18.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.18.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81"}, + {file = "pydantic_core-2.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857"}, + {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563"}, + {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38"}, + {file = "pydantic_core-2.18.2-cp310-none-win32.whl", hash = "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027"}, + {file = "pydantic_core-2.18.2-cp310-none-win_amd64.whl", hash = "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543"}, + {file = "pydantic_core-2.18.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3"}, + {file = "pydantic_core-2.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c"}, + {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0"}, + {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664"}, + {file = "pydantic_core-2.18.2-cp311-none-win32.whl", hash = "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e"}, + {file = "pydantic_core-2.18.2-cp311-none-win_amd64.whl", hash = "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3"}, + {file = "pydantic_core-2.18.2-cp311-none-win_arm64.whl", hash = "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d"}, + {file = "pydantic_core-2.18.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242"}, + {file = "pydantic_core-2.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c"}, + {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241"}, + {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3"}, + {file = "pydantic_core-2.18.2-cp312-none-win32.whl", hash = "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038"}, + {file = "pydantic_core-2.18.2-cp312-none-win_amd64.whl", hash = "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438"}, + {file = "pydantic_core-2.18.2-cp312-none-win_arm64.whl", hash = "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec"}, + {file = "pydantic_core-2.18.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439"}, + {file = "pydantic_core-2.18.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b"}, + {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761"}, + {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788"}, + {file = "pydantic_core-2.18.2-cp38-none-win32.whl", hash = "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350"}, + {file = "pydantic_core-2.18.2-cp38-none-win_amd64.whl", hash = "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e"}, + {file = "pydantic_core-2.18.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8"}, + {file = "pydantic_core-2.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4"}, + {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399"}, + {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b"}, + {file = "pydantic_core-2.18.2-cp39-none-win32.whl", hash = "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e"}, + {file = "pydantic_core-2.18.2-cp39-none-win_amd64.whl", hash = "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374"}, + {file = "pydantic_core-2.18.2.tar.gz", hash = "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pyjsg" +version = "0.11.10" +description = "Python JSON Schema Grammar interpreter" +optional = false +python-versions = "*" +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" +jsonasobj = ">=1.2.1" + +[[package]] +name = "pymdown-extensions" +version = "10.8.1" +description = "Extension pack for Python Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymdown_extensions-10.8.1-py3-none-any.whl", hash = "sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"}, + {file = "pymdown_extensions-10.8.1.tar.gz", hash = "sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940"}, +] + +[package.dependencies] +markdown = ">=3.6" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] + +[[package]] +name = "pyparsing" +version = "3.1.2" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pyshex" +version = "0.8.1" +description = "Python ShEx Implementation" +optional = false +python-versions = ">=3.6" +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" +chardet = "*" +pyshexc = "0.9.1" +rdflib-shim = "*" +requests = ">=2.22.0" +shexjsg = ">=0.8.2" +sparqlslurper = ">=0.5.1" +sparqlwrapper = ">=1.8.5" +urllib3 = "*" + +[[package]] +name = "pyshexc" +version = "0.9.1" +description = "PyShExC - Python ShEx compiler" +optional = false +python-versions = ">=3.7" +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" +chardet = "*" +jsonasobj = ">=1.2.1" +pyjsg = ">=0.11.10" +rdflib-shim = "*" +shexjsg = ">=0.8.1" + +[[package]] +name = "pystow" +version = "0.5.4" +description = "Easily pick a place to store data for your python package." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pystow-0.5.4-py3-none-any.whl", hash = "sha256:c377cc9fff11127007e60eb5c4dc18f2ffd986c0d0cec27134cdcd4c805bc7d8"}, + {file = "pystow-0.5.4.tar.gz", hash = "sha256:2692180cb405bd77259bee6c7f4db545d10e81939980064730609f21750567ff"}, +] + +[package.dependencies] +click = "*" +requests = "*" +tqdm = "*" + +[package.extras] +aws = ["boto3"] +docs = ["sphinx", "sphinx-autodoc-typehints", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme"] +pandas = ["pandas"] +rdf = ["rdflib"] +tests = ["coverage", "pytest", "requests-file"] +xml = ["lxml"] + +[[package]] +name = "pytest" +version = "8.2.0" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, + {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2.0" + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-logging" +version = "2015.11.4" +description = "Configures logging and allows tweaking the log level with a py.test flag" +optional = false +python-versions = "*" +files = [ + {file = "pytest-logging-2015.11.4.tar.gz", hash = "sha256:cec5c85ecf18aab7b2ead5498a31b9f758680ef5a902b9054ab3f2bdbb77c896"}, +] + +[package.dependencies] +pytest = ">=2.8.1" + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[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 = "*" +files = [ + {file = "PyTrie-0.4.0-py3-none-any.whl", hash = "sha256:f687c224ee8c66cda8e8628a903011b692635ffbb08d4b39c5f92b18eb78c950"}, + {file = "PyTrie-0.4.0.tar.gz", hash = "sha256:8f4488f402d3465993fb6b6efa09866849ed8cda7903b50647b7d0342b805379"}, +] + +[package.dependencies] +sortedcontainers = "*" + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +optional = false +python-versions = ">=3.6" +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 = "*" + +[[package]] +name = "rdflib" +version = "7.0.0" +description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." +optional = false +python-versions = ">=3.8.1,<4.0.0" +files = [ + {file = "rdflib-7.0.0-py3-none-any.whl", hash = "sha256:0438920912a642c866a513de6fe8a0001bd86ef975057d6962c79ce4771687cd"}, + {file = "rdflib-7.0.0.tar.gz", hash = "sha256:9995eb8569428059b8c1affd26b25eac510d64f5043d9ce8c84e0d0036e995ae"}, +] + +[package.dependencies] +isodate = ">=0.6.0,<0.7.0" +pyparsing = ">=2.1.0,<4" + +[package.extras] +berkeleydb = ["berkeleydb (>=18.1.0,<19.0.0)"] +html = ["html5lib (>=1.0,<2.0)"] +lxml = ["lxml (>=4.3.0,<5.0.0)"] +networkx = ["networkx (>=2.0.0,<3.0.0)"] + +[[package]] +name = "rdflib-jsonld" +version = "0.6.1" +description = "rdflib extension adding JSON-LD parser and serializer" +optional = false +python-versions = "*" +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" + +[[package]] +name = "rdflib-shim" +version = "1.0.3" +description = "Shim for rdflib 5 and 6 incompatibilities" +optional = false +python-versions = ">=3.7" +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" +rdflib-jsonld = "0.6.1" + +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +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" +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.*" +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 = "*" +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 = "rpds-py" +version = "0.18.1" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, + {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, + {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"}, + {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"}, + {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"}, + {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"}, + {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, + {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, + {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, + {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, +] + +[[package]] +name = "rsa" +version = "4.9" +description = "Pure-Python RSA implementation" +optional = false +python-versions = ">=3.6,<4" +files = [ + {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, + {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, +] + +[package.dependencies] +pyasn1 = ">=0.1.3" + +[[package]] +name = "ruamel-yaml" +version = "0.18.6" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, + {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, +] + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} + +[package.extras] +docs = ["mercurial (>5.7)", "ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.8" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +optional = false +python-versions = ">=3.6" +files = [ + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, + {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, + {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, +] + +[[package]] +name = "schemasheets" +version = "0.1.24" +description = "Package to author schemas using spreadsheets" +optional = false +python-versions = ">=3.9,<4.0" +files = [ + {file = "schemasheets-0.1.24-py3-none-any.whl", hash = "sha256:b7ebceb28e6cd61bbe743945d54e5d45540e794cfc0432b52cb228af8015c4cc"}, + {file = "schemasheets-0.1.24.tar.gz", hash = "sha256:af18b1012994989cd6c811b770ed547ac52067a640e04b5a4a63cf32306dab3a"}, +] + +[package.dependencies] +bioregistry = ">0.5.0" +Jinja2 = ">=3.0.3" +linkml = ">=1.5.0" +linkml-runtime = ">=1.5.0" +ontodev-cogs = ">=0.3.3,<0.4.0" + +[[package]] +name = "setuptools" +version = "69.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "shexjsg" +version = "0.8.2" +description = "ShExJSG - Astract Syntax Tree for the ShEx 2.0 language" +optional = false +python-versions = "*" +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" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +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 = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +optional = false +python-versions = "*" +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.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + +[[package]] +name = "sparqlslurper" +version = "0.5.1" +description = "SPARQL Slurper for rdflib" +optional = false +python-versions = ">=3.7.4" +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" +rdflib-shim = "*" +sparqlwrapper = ">=1.8.2" + +[[package]] +name = "sparqlwrapper" +version = "2.0.0" +description = "SPARQL Endpoint interface to Python" +optional = false +python-versions = ">=3.7" +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 = ["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)"] + +[[package]] +name = "sqlalchemy" +version = "2.0.30" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b48154678e76445c7ded1896715ce05319f74b1e73cf82d4f8b59b46e9c0ddc"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2753743c2afd061bb95a61a51bbb6a1a11ac1c44292fad898f10c9839a7f75b2"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7bfc726d167f425d4c16269a9a10fe8630ff6d14b683d588044dcef2d0f6be7"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4f61ada6979223013d9ab83a3ed003ded6959eae37d0d685db2c147e9143797"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a365eda439b7a00732638f11072907c1bc8e351c7665e7e5da91b169af794af"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bba002a9447b291548e8d66fd8c96a6a7ed4f2def0bb155f4f0a1309fd2735d5"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-win32.whl", hash = "sha256:0138c5c16be3600923fa2169532205d18891b28afa817cb49b50e08f62198bb8"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-win_amd64.whl", hash = "sha256:99650e9f4cf3ad0d409fed3eec4f071fadd032e9a5edc7270cd646a26446feeb"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:955991a09f0992c68a499791a753523f50f71a6885531568404fa0f231832aa0"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f69e4c756ee2686767eb80f94c0125c8b0a0b87ede03eacc5c8ae3b54b99dc46"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69c9db1ce00e59e8dd09d7bae852a9add716efdc070a3e2068377e6ff0d6fdaa"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1429a4b0f709f19ff3b0cf13675b2b9bfa8a7e79990003207a011c0db880a13"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:efedba7e13aa9a6c8407c48facfdfa108a5a4128e35f4c68f20c3407e4376aa9"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16863e2b132b761891d6c49f0a0f70030e0bcac4fd208117f6b7e053e68668d0"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-win32.whl", hash = "sha256:2ecabd9ccaa6e914e3dbb2aa46b76dede7eadc8cbf1b8083c94d936bcd5ffb49"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-win_amd64.whl", hash = "sha256:0b3f4c438e37d22b83e640f825ef0f37b95db9aa2d68203f2c9549375d0b2260"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5a79d65395ac5e6b0c2890935bad892eabb911c4aa8e8015067ddb37eea3d56c"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a5baf9267b752390252889f0c802ea13b52dfee5e369527da229189b8bd592e"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cb5a646930c5123f8461f6468901573f334c2c63c795b9af350063a736d0134"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:296230899df0b77dec4eb799bcea6fbe39a43707ce7bb166519c97b583cfcab3"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c62d401223f468eb4da32627bffc0c78ed516b03bb8a34a58be54d618b74d472"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3b69e934f0f2b677ec111b4d83f92dc1a3210a779f69bf905273192cf4ed433e"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-win32.whl", hash = "sha256:77d2edb1f54aff37e3318f611637171e8ec71472f1fdc7348b41dcb226f93d90"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-win_amd64.whl", hash = "sha256:b6c7ec2b1f4969fc19b65b7059ed00497e25f54069407a8701091beb69e591a5"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a8e3b0a7e09e94be7510d1661339d6b52daf202ed2f5b1f9f48ea34ee6f2d57"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b60203c63e8f984df92035610c5fb76d941254cf5d19751faab7d33b21e5ddc0"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1dc3eabd8c0232ee8387fbe03e0a62220a6f089e278b1f0aaf5e2d6210741ad"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:40ad017c672c00b9b663fcfcd5f0864a0a97828e2ee7ab0c140dc84058d194cf"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e42203d8d20dc704604862977b1470a122e4892791fe3ed165f041e4bf447a1b"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-win32.whl", hash = "sha256:2a4f4da89c74435f2bc61878cd08f3646b699e7d2eba97144030d1be44e27584"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-win_amd64.whl", hash = "sha256:b6bf767d14b77f6a18b6982cbbf29d71bede087edae495d11ab358280f304d8e"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc0c53579650a891f9b83fa3cecd4e00218e071d0ba00c4890f5be0c34887ed3"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:311710f9a2ee235f1403537b10c7687214bb1f2b9ebb52702c5aa4a77f0b3af7"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:408f8b0e2c04677e9c93f40eef3ab22f550fecb3011b187f66a096395ff3d9fd"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37a4b4fb0dd4d2669070fb05b8b8824afd0af57587393015baee1cf9890242d9"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a943d297126c9230719c27fcbbeab57ecd5d15b0bd6bfd26e91bfcfe64220621"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a089e218654e740a41388893e090d2e2c22c29028c9d1353feb38638820bbeb"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-win32.whl", hash = "sha256:fa561138a64f949f3e889eb9ab8c58e1504ab351d6cf55259dc4c248eaa19da6"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-win_amd64.whl", hash = "sha256:7d74336c65705b986d12a7e337ba27ab2b9d819993851b140efdf029248e818e"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae8c62fe2480dd61c532ccafdbce9b29dacc126fe8be0d9a927ca3e699b9491a"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2383146973a15435e4717f94c7509982770e3e54974c71f76500a0136f22810b"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8409de825f2c3b62ab15788635ccaec0c881c3f12a8af2b12ae4910a0a9aeef6"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0094c5dc698a5f78d3d1539853e8ecec02516b62b8223c970c86d44e7a80f6c7"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:edc16a50f5e1b7a06a2dcc1f2205b0b961074c123ed17ebda726f376a5ab0953"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f7703c2010355dd28f53deb644a05fc30f796bd8598b43f0ba678878780b6e4c"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-win32.whl", hash = "sha256:1f9a727312ff6ad5248a4367358e2cf7e625e98b1028b1d7ab7b806b7d757513"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-win_amd64.whl", hash = "sha256:a0ef36b28534f2a5771191be6edb44cc2673c7b2edf6deac6562400288664221"}, + {file = "SQLAlchemy-2.0.30-py3-none-any.whl", hash = "sha256:7108d569d3990c71e26a42f60474b4c02c8586c4681af5fd67e51a044fdea86a"}, + {file = "SQLAlchemy-2.0.30.tar.gz", hash = "sha256:2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", 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\""} +typing-extensions = ">=4.6.0" + +[package.extras] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=8)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3_binary"] + +[[package]] +name = "strenum" +version = "0.4.15" +description = "An Enum that inherits from str." +optional = false +python-versions = "*" +files = [ + {file = "StrEnum-0.4.15-py3-none-any.whl", hash = "sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659"}, + {file = "StrEnum-0.4.15.tar.gz", hash = "sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff"}, +] + +[package.extras] +docs = ["myst-parser[linkify]", "sphinx", "sphinx-rtd-theme"] +release = ["twine"] +test = ["pylint", "pytest", "pytest-black", "pytest-cov", "pytest-pylint"] + +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +optional = false +python-versions = ">=3.7" +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 = "2.4.0" +description = "ANSI color formatting for output in terminal" +optional = false +python-versions = ">=3.8" +files = [ + {file = "termcolor-2.4.0-py3-none-any.whl", hash = "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63"}, + {file = "termcolor-2.4.0.tar.gz", hash = "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "tqdm" +version = "4.66.4" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20240316" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.9.0.20240316.tar.gz", hash = "sha256:5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202"}, + {file = "types_python_dateutil-2.9.0.20240316-py3-none-any.whl", hash = "sha256:6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b"}, +] + +[[package]] +name = "typing-extensions" +version = "4.11.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +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.1.1" +description = "Implementation of RFC 6570 URI Templates" +optional = false +python-versions = ">=3.6" +files = [ + {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, + {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, +] + +[[package]] +name = "urllib3" +version = "2.2.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "watchdog" +version = "4.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, + {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, + {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, + {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, + {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, + {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, + {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, + {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[[package]] +name = "webcolors" +version = "1.13" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.7" +files = [ + {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, + {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, +] + +[package.extras] +docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "wrapt" +version = "1.16.0" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] + +[extras] +docs = [] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "b4fe87f7d9712de62a2bf739a3c3b43714dd7a9ae258a375f0832b67fe815092" From e64d4d941d9915a640374d840122543640f6f76a Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Wed, 15 May 2024 15:38:18 +0200 Subject: [PATCH 3/5] chore: make setup was run --- README.md | 1 + project/excel/thing_description_schema.xlsx | Bin 5944 -> 11479 bytes .../graphql/thing_description_schema.graphql | 163 +- .../thing_description_schema.context.jsonld | 281 ++- .../jsonld/thing_description_schema.jsonld | 1873 +++++++++++++++-- .../thing_description_schema.schema.json | 1079 +++++++++- project/owl/thing_description_schema.owl.ttl | 1309 +++++++++++- .../prefixmap/thing_description_schema.yaml | 36 +- .../protobuf/thing_description_schema.proto | 167 +- .../shacl/thing_description_schema.shacl.ttl | 693 +++++- project/shex/thing_description_schema.shex | 184 +- .../sqlschema/thing_description_schema.sql | 468 +++- .../datamodel/thing_description_schema.py | 992 ++++++++- .../schema/thing_description_schema.yaml | 2 +- 14 files changed, 6680 insertions(+), 568 deletions(-) diff --git a/README.md b/README.md index 7d51086..24a526b 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ For more information please refer to the [WoT github repo](https://github.com/w3 ## Developer Documentation +- Install Python 3 - Install [Poetry](https://python-poetry.org/) - Run `poetry install` to install dependencies diff --git a/project/excel/thing_description_schema.xlsx b/project/excel/thing_description_schema.xlsx index 315b7f1587f87a512eb6edf631998edb4e569ab2..efd551929bdc4c7c30844963d206d7a30c040f58 100644 GIT binary patch delta 8474 zcmaJ{cR1Wzv>n}Gv{9n>-n-~Ti7x68LbQw+y$c43o(P7BnrKm?_a4!sx9HJ{L<@;7 zyy3okbK~W{@yGAuJF|?n&e~`1b=2}s7=v`w(a=c%001_i+pi=RR78Y)K%T>dpKK$4 z*oy)H5Fy@^kiZjSHMQIL@j@?p;va3iu|ZQZHqu|2{Yc5*MgwQ>>AkpCq1qS1zOl-zC8XOX& zsEo%e`5;JppYn+{5`Rovc>8>K|Lp~L<-L@mx)JY3_oaZzl;>x6zyHn(B+0a58buNl zbV-dFuj314BrUfQjMxJ3Ny1>PY&-C`)G9|Ro(T1&J4cUF-O0TdII5T3$`F={?+By; zHs<5CI+5v6$Zd+Rw1qfA)GfQ3QFEM2V_t%IwE76S@$R=$?_v$@*a{dwjyH3DlT((2 zoN`ka8k|1@Vs`2Fb>x>0n`!6MzqQn%fd$>e!gS^wlzLXZ5UiXC_kpUr$eMGrDSq`H zO2^R{f@nP8)rz|ZU)Xx}6vVU1rx=K)Ne<3N z7Oc?bYr@^NmU;$W<({DYw&x%;M{bTck&F_fBJzN=a82DA$H)A5KS|>WpzGOY`Y5^+ zcGI-121V7%eo7zqmrJm5Y?ry`5zo*Oag#G6qZ)@sQGAj52Hw;{bYVr25}0KylHlSjFmjeKSsw6tDK=B&d|I+c!B4~ zy>Lnv%S(?B_rd%q`#Y}=2QWcjB(EB10Kg3ZVt|wq?tz%mLb_NEp3{RB1B!^!xeLTZ zqm3ErT)k=kNz{Zmu|4Z)N!J(Nz%iMRo_>B#(;4Prn1OM8_NLv6x5nBy zFDK$4xh*KMflB9FP=5XwWVhzdwsq7Qx=K|mJg7sYZx!phM zIK{wyrVA)v$d&M*74}%A>RytoE~TGTn||-pPWari<}LE`ZdI6VNNseFRZ@g%ArOy* zX6YDZI$IftNNt}rv=sAXb zGh~>PQ_$-B7c&BI0_6@>e10#hr>;tm0|H+@Cz6NXx&hc$QE9Ok?)i8@@!^&%%(W)O z+eTZ;VoSmD^%4Yuz@1B&FLKBwto~_G9E0t^C+fGgkcIZnDBN9tX^I;D`V0#x4*XZ8 zg(OueqRSxFp+vn@2LSMf@p(D9+Pgt*Y~0=Wt{%d?-VU&T*#YuzJ8ba|a@+_{Zs&IC zIyrPxa3Ua*VLR9@Qx(XZ51|b#m$f%#SJD>l%fa&?FbtvktLDHtE!QO}FbN7&mBzbg zq~0Z7`N4(DoV1oLi>A|mS|?v47`ioqt-DwA09_-16J`Y6PQ z=GBV%2+|I3;i%lhfB7L2>4z;)k&9o*vW6FV)Zp)aV7v4K!(ii@mj1_eY-)dMOk~-K zz1^Ekpq}cdne6gl=YKundfboZb%2Nf65`u+-DOrtX-&VNIeOW0$itW>Z`yi%Q~%=M zo`9D?z^A33Y>>3S|8LqwE@}5bR-sm86-wZwld~A%RdC2bNv;mF!}j#SFPc$ic1f(= zI67tF;Abt;E~9y6MK@#j+;fK#pw?U^$ZG|uA+zc zV2?zaYvziX;@UydJ13{tI6SkngQ_%5bE`_jFxWSRM6GgLl*d6GfWcA2u~H0Qd+C;j zvpzjFP^YSJL49hKd*Y8_-1+bilQimTd5XEv$3K~3m1NWmP`7XQw*))DL0JgnL3Gnx}!whK3aKOA!bCrrW<%)lqqM6QFFAJ#-Ci;JxLiAFd5QKwMDnDM=JDeUYXfa}1la#*5 zYhzjsQLr)IG!PV&r`ks?kLuwnbXK{EDty_Bb5=gHjSOaPCcRnIW-uuDk*9 zSkP>2p$$$IzCBl3JN9)F{L(kLag@&Rt^L+BP(ferBsk$F{w6Gtt!HVWDdQ)PI5n$DuCpFjny(KRz<%;%(N!#S2aT5rrx8JpOK9VMrR z)$6q|+s-Yj;~Ha2_&D_P z{VrM8Bk^tbebJ@PQVzFPfvieclF^6TJS@YZKM?6j%#JzWL|7iifJiSMN9J25mj*@m z@-~fgUygUJErds>&0!R~P7xE|_;76ciFaJgIfJb2b@(4H~hy&#nb_oc5= z)~eW4u2#EyXASLOrI%V#aJm(ttuRsDvtw&f%Ga()9r&Qh4hpbNlB^0MfBh;NNZn(V zZc=0MSUJTTLcTP!5^z&66kI}i;#{tk`I2-=6qCS%p?ng2Bai)!&ecv#dr%?q5gzYVYMpiq?KasOxF7WG)i6g^RB;F zXlbM34cL!F#t+Nlecq|s{qsgP!WUUF*{uU3;w6K3!zAx&O<_+ZHf+pLHN(3wPeW8{ zTIM<>=>oAfBz&I`PMWAVe~~`X)1jzd?PG7CDZG(uj-7?(vI;#O$W!Iu#>^YRnIV1S zcTulq-xMVG1t%WsReh=E9gi^$z11INo*Y>0u09&Ey@L|xD6L1>vEThbsGmQv@7t1v7>=FFFL6j$jBZHCq1Nz_lL;Pxg zAg=aDsCmZ_n!a5Sjm{+I3+oR!m3N0TXR0hms|i(qu-o37YmRq=2C{S%Yv`T?#4)B3 z+}@akqc|T-G!Wu`6gaFg=_){TS|U9lT*;Q-3+>1;>`HGLV_HdTPSTKh=mgWTk?Ew( z?{jGz!1T`Mc5D=@Obc$y(3$v3=w0s6WhIyB<7DEE8Sn*z(1_0C;Rb_Z6ay0!XMgp? zvyQ2gN|pz2w|ziYh^yVhb^EJ=rmp6~>m}y<@RjdawhN}ZacTiON+0izD5g(i9d}H= zi?0zRvRx0DN^Vf_H#7!4n-ULbU8LH4bn?w`Y4+0m3|V7W=I2<=1bvCUG(QVCQKUT* z_Nu2}M4f@7@U66H(~~kAtOtQp4J~H1Vi}*hXI{yFzPPj0fNIVM{J|`#)cDg8esW=ca2pCAU-^pYi}hssbo1%Y+A=O{ zW!dDkb+jB@*E#yVVO1`Vv$`Im-=(vqBz*J)DP7NhOLr3~9sJVUmksFEv5HAdo>5H< zGi42WBG=+JUhhz88o8{C9H6#Cb;Ne{XLfIP6>n7@*5ZKxEXWZmCL%PiDPE8S1R;&~ z!;LoQd~Qh80O=iK%yR`8GikFTgzOSL8MVVE!E5%#KuSc%U3V0MwlqcVMwJe2jcM^w_5|duG zC%4GSBZsKZ;5QZ;)=O$K{$qDRinwScl5%%Fk#)U)^r-Up|P(7%q zsM|CNIG+J*F9<1vK2eV)HDIlNjn0)qZTcCuBp=-1kFGUUc6RE2O!HMN#Du5w0snkh zRM##Rz0XRDw8@s-?5;{kl_!IMj==EBda4+Pk$Qz|cTJlnw^VG+v&8o3THwww z>U{am>=H-hrYenp|Drj46GLCqP^tqtK}4m&+>bUT0c!W2Rm*6@B{R=WvCTa!vSnSQ zApxV}!f}ue!y{Vxaj1)&_bL3!hkKK0ll zL7|Zf*dLygLxRWQ48%rzUgX05>XhAwdopJq$7BrKHsnl$1B2zRt^_ zP2ZCk9zT{WS=z{k~ zc_%~G=ywP1XR{}N-eWH<_Zq22gO_2S{6u4+1v!h5zgC%pD`xj=+gZ-;Q;TIX9@*@( zqJHX=zyHoG)tH7R`Z=Mj3_s$Amt@z}5%%`l8J4~_vB6{kBz>Qn-0@si?i=gQpjE^4 zqWc8#T^s+*j77O9M2R1uwkf1Yq4O zKx+q|P)*CPVC!gC9o&#w2**bQkX=*?W>}(SN-jzXqd|%A3(;<|rR|&0=QqPYzxN^B z!n5mm$3r$>M>bMgpXyN4%)1q?Mp?VBbfb#wd>=19jnlK+GgNYlK%C0kOk%iAdf_os zp#C{oZUUu7%s2^cePkMK`YbGbYWYqpiA=W=%+_JcP2bR=gRG2IXUGDNVf{P#i`V*3 z6%!g^kIN6UW6#)kTFv`@>iO8ii7f0sB493glLA~O>+N~p2DB1Ox4x`5wYvpn@;0U6 z(4`dhvf>D^+*AX@N2Gnr)q9?J5Yog`=LhF~x7~oh*oTYsFBFwo-L~kZX1zN!z<5JL z=d*E7tpLVZAIcA$k#?nMxd8A;_!V-`O5Dz~5}&uKmubzv*Nl$pT?Ds$`LMGF6+(0AED71k0fq!e zqw?Sf3}qkn55Y((9p`}dQP6#E{7U;46)cGz?xyK9;;;h;|Bn~fvK4Bfcd;c%xy!HQ zhX1kY5)k}@-uzFd)s}BKKSc~>lnpv=R1>M15_^3*{~0%j3w@}4h|IUT_*7Hf=?~ZL zDr%kIaPVg}S=%;IGp~lWyt)%6x;eIj=d5GK^Z!u2>Fk8_nrv`K*H2TCUH zTK@1h5I@p(B~IZ8pUW&S5G)H9$>@x;!p81(GR+(p(9K)%C)f95ezx+!hwj{QQ#Rfx zu#4r3dBKt>*oZN|H1ytgcxWir?7sW%oh2UrmHaFQm$E4-o-9H=Ock4DhNe+Lb6`b zZ?A>p5MT*)e4^_YMv+R5fui1}>8~i)wn&j_Tm$~teezTV?d)X}2+pr}uI+Z-q*t;) zLNe-An!dcm_Kl9dZFFw1_n@fD_}*jt`2C1Z33QWGe-L=Fx~%%^v*U&MrYt*^G%O$e}h5^S_HYT(WJ^W zJbs7GH!dla#cAymg50mmV)X3<_Gi382tK$oCv#O=zLO6Bs6EY9Q3V1h!%Y|*$i%`= zBvfI;a=n`&BlKT1b2NHmH1yaEsVr6jRg6AjNsZbjoi?etZF8+F`CoOMfwbYtit<=p=fAGCRgL-cR|gVJxMN( z=s7V4rxo@VG>uzwz-oTehS6^p6~j{FxBPr=G17TaEy*n2JC!(*Fqt-;6EgM^R;2y0 z4HAjQd>MucVV7ugk$oJgPWyF#=E9layL2~RjjPn6KlZq?!K@@d!F!*0vLtT5zUOd4 zy%-7lBh2Fm*medVxVCM`-e;{>8e-38WE8RRANSL7E{gJt>kMq3n7IU|MZj^reu z_;KF+I$z{>#c=LawUuYc0&jel+uzy59o^MF%h)iN?4{COceS+F`rs_bF)&$x+G2C(}r_gVxnYkcAUq3Hegtqy+>r) zeRgxg5({*5;lDbvjt68GLJKVpc7M5)FznG9tbGqCiTXw1g!TE*at znQmb(~<6JpM{ZV$K}Nm$?)+ksd%3&Q>aYlSN-ZJ8+F?T?_jM*@9q@DRWE| z_VMj>Ja}Yc#FCAEV~8)mb#>99Pu`+nP~B60Ymf}1cVMj=eKBLZNo>cFIGq=$KWU)= zAH$3dIzjX-v?y2A`;^3hjN^iISNpW4K+tY=vX?-m-b;opXVbJZAi&WMuk9p0tM|jm zv5z8#aGu;5bKE|#p8sKe(V3uK5}(>hUO)Y+5liGxU8??$uD(}%g)_3h7n#T}P_q-{ zcKC#iU?XOLk4r|k@)Ke%yoJaBz*yJ>M4XhxR$8??YhuMl0{5Xbhe_*_8wB7 zC8!6LxsIyYZ8G%(p#zF;D47^w9`x`R8kHpUJulh8^d@d_k=POTU2FwZzMQp}VjQ0T5cw;2*CWk2A zT!16R?UWl>0(NzFW0U6>eAOg2XVnLRA9|osh)UKy0tJgZk7HlnBzVD;fU8V=5nA`H z9J)f??#zE9qSY8x-T$G;$d@A^XWdY|REalLLIpxNuv6G)mbv;KLf^LpZom++Y-!g^ z$NQ5n>?v0RbzwpmEn9ZPr2TM6fX5_RGcNX- zU4`{lls5KOyE?nJ$Y*@GN$rrkko+)DV$Jbss@KWqU_2|7x=4%_39^_Jh@5g+;A|(V zD>-hrKR5j`J!Kqpdt55HSL9-1X8%*&TFJb~Rx(BYCcd2ePS+PU9d#5`610CVC=m}x zB!U0jP$J%vh|*ntmt>mCM2I~2QrQ52OI7}U1)}uFkuqK_`RCs5e}mtDmIUD=N0iGL8xFe;b3I}G1yhTx^MAO6xXN3vqad@q-=e%!{!W0HD7ykk3FABDyOWH+LVHjoUS187}{+08*o}5!r%V zONM+u?r-mnWGlGkl`u`a8 kS7E+h7#dj+bYN049d!(3-2ebckzbL>W=9NJK>&dN0i`EYm;e9( delta 2908 zcmZWrc|6qH8~)nYv4k1f4Xz<;*&<7J#@HI6h^$SFeT|HL%{pk4EMq5Kd&oAnq^!3n z*_RL%HQC)6zt8R7`hEX-Kj(a&^PY2_@AE$AeQVt$1u}(GP_hF6KntwEQ`13Jti)i| z+abTZPMmy61^}$sJW+N`QF^B_UWPH&&Ux**|EPz6jD)SZURn>Hh2w44tLg6;K2U`+J?hf{_4e3bg~SlnKj|-0X^iXDiGvfo#HIo}#SMqN zfa-4syex*jn;lTGLj6wI;Gz4VlwqN3(J}3YungBzoum}#mqO2byBZ5x2am+_tZ{Uaule3i z$_H2R@dZAtl(K#{IC*xZg0}_20SW!C)*SY2Cc5F=tG3;^ui~X52YZcsY`;)qb>AjO zh^2OxOo!anVkudmLP0C9T!%e7J{*2jikY$*uLb{dvHr8z~{|&LUIBiX%m;+ zS9W%IL?^?;Aj*JYTcx)kgx9P+?JSblio<0hYT+UEbBpdWPv?)SrMKK`bgvbyCf6CN zm^nG3my#HNIMqdEnRHEGS!%y)@73R9!^7bAAwUl7l>WUu1~lw81j-p;GpUkn%EOF^ z@IA1Z8iFj1%R;B+80Rc=w9j4bwl&IKx51gQahAf&VQOmml#WogGrLM@iQB^yyDDm< z>M2Lo)0e4WBdzNXnr)^MaIv}@pepa6$f%O_+HM-1^8O1<38^kgm5CR5UTAF0XDBQ_ zdlGz#qxrS)*Moa6*21q{(^PSu;}5kArnA#3ZQWcrd(>b64)RkKOOf6x2(7TyXOuI# z``Tmj?qdmKy6fs~v*3i`l?x9UxcGJFVBJu?AESkeBY=7h-4mp zmkLbbspJ*#Rusf!8Pdw%(pnFb_TL^~dK@*BQ#V&NgvwdQ1dS6e-Y|6#%*06t@59bz z^%5dpBjQ91JgHIbKNjW)N0=0FiH!f+9R#8ZpCR92^q&54X9(9CYmTz(lo*WtL#Gwp zb94ZIV78Zts`;{)W7es|=;W{=@K}YPvSIb~O8YWKZCPSj&v$Uh?SOiRP>>t*UjL?X z=Yw18wlibbngevMQYE9ytxjuSQgFC<7bK;Wb{oyem*oZRd#tm?ZwmgeIax(Wa&W5< zwE-rT9_AcL8VK|EBwISn66b&Fr*9)ypViCq-)c-+AXVdLuNIQOZ)Il!Aq(AbWbT+u z4HV2ScjW_L>1(F(oM)t=^%;W(S?NEbcxc^io@JT=GCzM9>5%bUdgD z`Z7KISxAWoE^oQg-5Y>WHKDWRh+4I0I8dX#nAi4E?u}MFSW9;}`{sE&iPSq~^Y|{# z;~r}+m$)XA*?KXH+zSy=53tecLyDCh&v3%VZN>#_@8o2U`&@TdP+@;Io@2fIQ4Nj1 zUB-ueqv6JsqNvo?fhvAq(Ibj47N_mIGy2rRtVEzbQY~v zm-%Fg_VCkc>0QEim(p567p5!e1Fk(O0j*i@5TiL`mgYL zLgJO-HcPD8)b8k~OXY5r_6Um-jTX6~8ta=HK5;m7RF!l3hPq9Id`Ao#$jL}I^d5JA z#+msXb5EGpaxsrykxEX$lU8(Jm1STt9t_X?s7C+h7;c}SnM^+Q?vRS$z0kpj#~JYtGj(5z0acUZTF}4cvQqJ`9j{LcK29n z2i+7cmC8OWXN4yZcH9diuCIczU{FNOG4VO})aNXNr(_BX zw6a^ko{1h|`vBayC-Ouq(Cl>*rPA>nf%?~5zu$kIDom8vDkT805pR7}%hSWp*~8Bc z8SLfkYfHNFE96U}?pO{mS^aOty~R$^jDI7y$)^eH5PsO3Xt(77-}~Wyii-|;rCeYH zUK!--+N)A?w|XDASNBF~PzS-jS=3!XT_Lkg#$zeYUj;o%=01%aDFyZSgocSSe5U0o z8uyO>Yl~I9UOw|eeQWZ&78`9DSVkP#1Zqh$#@;VKe%)tfz*Bq`Q=-}XNR`@+*Q*yu z?=L)cdsQz+YvCo6!?=jB8^@}(b?l2b`ncz0gT}r*-m4Xc5Ys&ew`U@FmWx?d6lwC4 z8pvhiuX1!&{@b8s{&} z1@b>sW6L}|dwbB%SCVg6TE3Yo|g_Du9Q~Ye? zu)3lubU!;eY@(zWWuswMJ0GoK)=`CKe%u* j=2KWF3D^nfcd7mhqF}>TO7Jo<01UtY@z7SJp8)&~fvM%J diff --git a/project/graphql/thing_description_schema.graphql b/project/graphql/thing_description_schema.graphql index b189f33..b8f8fbe 100644 --- a/project/graphql/thing_description_schema.graphql +++ b/project/graphql/thing_description_schema.graphql @@ -1,23 +1,162 @@ -type NamedThing +# metamodel_version: 1.7.0 +type ActionAffordance { - id: Uriorcurie! - name: String + titles: [MultiLanguage] + descriptions: [MultiLanguage] + title: MultiLanguage + description: MultiLanguage + titleInLanguage: MultiLanguage + descriptionInLanguage: MultiLanguage + name: String! + uriVariables: [DataSchema] + forms: [Form] + safe: Boolean + synchronous: Boolean + idempotent: Boolean + input: DataSchema + output: DataSchema + } + +type AdditionalExpectedResponse + { + contentType: String! + additionalOutputSchema: String + success: Boolean + schema: String + } + +type DataSchema + { + description: MultiLanguage + title: MultiLanguage + titleInLanguage: MultiLanguage + descriptionInLanguage: MultiLanguage + propertyName: String + writeOnly: String + readonly: String + } + +type EventAffordance + { + titles: [MultiLanguage] + descriptions: [MultiLanguage] + title: MultiLanguage + description: MultiLanguage + titleInLanguage: MultiLanguage + descriptionInLanguage: MultiLanguage + name: String! + uriVariables: [DataSchema] + forms: [Form] + subscription: DataSchema + cancellation: DataSchema + notification: DataSchema + notificationResponse: DataSchema + } + +type ExpectedResponse + { + contentType: String! + } + +type Form + { + target: AnyUri! + href: AnyUri! + contentType: String + contentCoding: String + securityDefinitions: String + scopes: String + returns: ExpectedResponse + additionalReturns: [AdditionalExpectedResponse] + subprotocol: String + operationType: [OperationTypes] + } + +type InteractionAffordance + { + titles: [MultiLanguage] + descriptions: [MultiLanguage] + title: MultiLanguage + description: MultiLanguage + titleInLanguage: MultiLanguage + descriptionInLanguage: MultiLanguage + name: String! + uriVariables: [DataSchema] + forms: [Form] + } + +type Link + { + target: AnyUri! + hintsAtMediaType: String + type: String + relation: String + anchor: AnyUri + sizes: String + hreflang: String + } + +type MultiLanguage + { + key: String! + } + +type PropertyAffordance implements DataSchema + { + titles: [MultiLanguage] + descriptions: [MultiLanguage] + title: MultiLanguage + description: MultiLanguage + titleInLanguage: MultiLanguage + descriptionInLanguage: MultiLanguage + name: String! + uriVariables: [DataSchema] + forms: [Form] + observable: Boolean + propertyName: String + writeOnly: String + readonly: String + } + +type SecurityScheme + { + @type: [String] + descriptions: [MultiLanguage] description: String + proxy: AnyUri + scheme: SecuritySchemeType! } type Thing { - id: Uriorcurie! - name: String - description: String - primaryEmail: String - birthDate: Date - ageInYears: Integer - vitalStatus: PersonStatus + id: AnyUri! + title: MultiLanguage + description: MultiLanguage + titles: [MultiLanguage] + descriptions: [MultiLanguage] + @type: [String] + titleInLanguage: MultiLanguage + descriptionInLanguage: MultiLanguage + securityDefinitions: [String] + security: [String] + schemaDefinitions: [DataSchema] + profile: [AnyUri] + instance: String + created: Datetime + modified: Datetime + supportContact: AnyUri + base: AnyUri + version: VersionInfo + forms: [Form] + links: [Link] + properties: [PropertyAffordance] + actions: [ActionAffordance] + events: [EventAffordance] } -type ThingCollection +type VersionInfo { - entries: [Thing] + instance: String! + model: String } diff --git a/project/jsonld/thing_description_schema.context.jsonld b/project/jsonld/thing_description_schema.context.jsonld index a9b4eaf..b7262ca 100644 --- a/project/jsonld/thing_description_schema.context.jsonld +++ b/project/jsonld/thing_description_schema.context.jsonld @@ -1,60 +1,283 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-04-15T09:31:15", + "generation_date": "2024-05-15T15:38:14", "source": "thing_description_schema.yaml" }, "@context": { - "PATO": { - "@id": "http://purl.obolibrary.org/obo/PATO_", - "@prefix": true - }, - "biolink": "https://w3id.org/biolink/", - "example": "https://example.org/", + "dct": "http://purl.org/dc/terms/", + "dcterms": "http://purl.org/dc/terms/", + "hctl": "https://www.w3.org/2019/wot/hypermedia#", + "htv": "http://www.w3.org/2011/http#", + "jsonschema": "https://www.w3.org/2019/wot/json-schema#", "linkml": "https://w3id.org/linkml/", - "schema": "http://schema.org/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "schema": { + "@id": "schema" + }, "skos": "http://www.w3.org/2004/02/skos/core#", - "thing_description_schema": "https://w3id.org/mahda/thing-description-schema/", - "@vocab": "https://w3id.org/mahda/thing-description-schema/", - "age_in_years": { - "@type": "xsd:integer", - "@id": "age_in_years" + "td": "https://www.w3.org/2019/wot/td#", + "tm": "https://www.w3.org/2019/wot/tm#", + "wotsec": "https://www.w3.org/2019/wot/security#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "@vocab": "https://www.w3.org/2019/wot/td#", + "@type": { + "@id": "@type" + }, + "idempotent": { + "@type": "xsd:boolean", + "@id": "idempotent" + }, + "input": { + "@type": "@id", + "@id": "input" + }, + "output": { + "@type": "@id", + "@id": "output" + }, + "safe": { + "@type": "xsd:boolean", + "@id": "safe" + }, + "synchronous": { + "@type": "xsd:boolean", + "@id": "synchronous" + }, + "additionalOutputSchema": { + "@id": "additionalOutputSchema" + }, + "success": { + "@type": "xsd:boolean", + "@id": "success" + }, + "propertyName": { + "@id": "propertyName" }, - "birth_date": { - "@type": "xsd:date", - "@id": "schema:birthDate" + "readonly": { + "@id": "readonly" + }, + "writeOnly": { + "@id": "writeOnly" }, "description": { - "@id": "schema:description" + "@id": "description" + }, + "descriptionInLanguage": { + "@type": "@id", + "@id": "descriptionInLanguage" + }, + "descriptions": { + "@type": "@id", + "@id": "descriptions" + }, + "cancellation": { + "@type": "@id", + "@id": "cancellation" + }, + "notification": { + "@type": "@id", + "@id": "notification" + }, + "notificationResponse": { + "@type": "@id", + "@id": "notificationResponse" + }, + "subscription": { + "@type": "@id", + "@id": "subscription" + }, + "contentType": { + "@id": "contentType" + }, + "additionalReturns": { + "@type": "@id", + "@id": "additionalReturns" + }, + "contentCoding": { + "@id": "contentCoding" + }, + "href": { + "@type": "@id", + "@id": "href" + }, + "operationType": { + "@context": { + "@vocab": "@null", + "text": "skos:notation", + "description": "skos:prefLabel", + "meaning": "@id" + }, + "@id": "operationType" + }, + "returns": { + "@type": "@id", + "@id": "returns" + }, + "scopes": { + "@id": "scopes" + }, + "securityDefinitions": { + "@id": "securityDefinitions" + }, + "subprotocol": { + "@id": "subprotocol" }, "id": "@id", - "name": { - "@id": "schema:name" + "forms": { + "@type": "@id", + "@id": "forms" + }, + "name": "@id", + "uriVariables": { + "@type": "@id", + "@id": "uriVariables" + }, + "anchor": { + "@type": "@id", + "@id": "anchor" + }, + "hintsAtMediaType": { + "@id": "hintsAtMediaType" + }, + "hreflang": { + "@id": "hreflang" + }, + "relation": { + "@id": "relation" + }, + "sizes": { + "@id": "sizes" + }, + "type": { + "@id": "type" }, - "primary_email": { - "@id": "schema:email" + "key": "@id", + "observable": { + "@type": "xsd:boolean", + "@id": "observable" }, - "entries": { + "proxy": { "@type": "@id", - "@id": "entries" + "@id": "proxy" }, - "vital_status": { + "scheme": { "@context": { "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" }, - "@id": "vital_status" + "@id": "scheme" + }, + "target": { + "@type": "@id", + "@id": "hctl:target" + }, + "actions": { + "@type": "@id", + "@id": "actions" + }, + "base": { + "@type": "@id", + "@id": "base" + }, + "created": { + "@type": "xsd:dateTime", + "@id": "created" + }, + "events": { + "@type": "@id", + "@id": "events" + }, + "instance": { + "@id": "instance" + }, + "links": { + "@type": "@id", + "@id": "links" + }, + "modified": { + "@type": "xsd:dateTime", + "@id": "modified" + }, + "profile": { + "@type": "@id", + "@id": "profile" + }, + "properties": { + "@type": "@id", + "@id": "properties" + }, + "schemaDefinitions": { + "@type": "@id", + "@id": "schemaDefinitions" + }, + "security": { + "@id": "security" + }, + "supportContact": { + "@type": "@id", + "@id": "supportContact" + }, + "version": { + "@type": "@id", + "@id": "version" + }, + "title": { + "@type": "@id", + "@id": "title" + }, + "titleInLanguage": { + "@type": "@id", + "@id": "titleInLanguage" + }, + "titles": { + "@type": "@id", + "@id": "titles" + }, + "model": { + "@id": "model" + }, + "ActionAffordance": { + "@id": "ActionAffordance" + }, + "AdditionalExpectedResponse": { + "@id": "hctl:AdditionalExpectedResponse" + }, + "DataSchema": { + "@id": "jsonschema:DataSchema" + }, + "EventAffordance": { + "@id": "EventAffordance" + }, + "ExpectedResponse": { + "@id": "hctl:ExpectedResponse" + }, + "Form": { + "@id": "hctl:Form" + }, + "InteractionAffordance": { + "@id": "InteractionAffordance" + }, + "Link": { + "@id": "hctl:Link" + }, + "MultiLanguage": { + "@id": "MultiLanguage" + }, + "PropertyAffordance": { + "@id": "PropertyAffordance" }, - "NamedThing": { - "@id": "schema:Thing" + "SecurityScheme": { + "@id": "SecurityScheme" }, "Thing": { "@id": "Thing" }, - "ThingCollection": { - "@id": "ThingCollection" + "VersionInfo": { + "@id": "schema:version" } } } diff --git a/project/jsonld/thing_description_schema.jsonld b/project/jsonld/thing_description_schema.jsonld index 079c4d9..9623e12 100644 --- a/project/jsonld/thing_description_schema.jsonld +++ b/project/jsonld/thing_description_schema.jsonld @@ -1,44 +1,81 @@ { "name": "thing-description-schema", - "description": "Thing Description Standard", + "description": "LinkML schema for modelling the W3C Web of Things Thing Description information model. This schema is used to generate\nJSON Schema, SHACL shapes, and RDF.", "title": "thing-description-schema", "see_also": [ - "https://mahda.github.io/thing-description-schema" + "https://www.w3.org/TR/wot-thing-description11/" ], - "id": "https://w3id.org/mahda/thing-description-schema", + "id": "td", "imports": [ "linkml:types" ], "license": "MIT", "prefixes": [ - { - "prefix_prefix": "thing_description_schema", - "prefix_reference": "https://w3id.org/mahda/thing-description-schema/" - }, { "prefix_prefix": "linkml", "prefix_reference": "https://w3id.org/linkml/" }, { - "prefix_prefix": "biolink", - "prefix_reference": "https://w3id.org/biolink/" + "prefix_prefix": "td", + "prefix_reference": "https://www.w3.org/2019/wot/td#" + }, + { + "prefix_prefix": "jsonschema", + "prefix_reference": "https://www.w3.org/2019/wot/json-schema#" + }, + { + "prefix_prefix": "wotsec", + "prefix_reference": "https://www.w3.org/2019/wot/security#" + }, + { + "prefix_prefix": "hctl", + "prefix_reference": "https://www.w3.org/2019/wot/hypermedia#" + }, + { + "prefix_prefix": "rdfs", + "prefix_reference": "http://www.w3.org/2000/01/rdf-schema#" + }, + { + "prefix_prefix": "rdf", + "prefix_reference": "http://www.w3.org/1999/02/22-rdf-syntax-ns#" + }, + { + "prefix_prefix": "dcterms", + "prefix_reference": "http://purl.org/dc/terms/" }, { "prefix_prefix": "schema", "prefix_reference": "http://schema.org/" }, { - "prefix_prefix": "PATO", - "prefix_reference": "http://purl.obolibrary.org/obo/PATO_" + "prefix_prefix": "xsd", + "prefix_reference": "http://www.w3.org/2001/XMLSchema#" + }, + { + "prefix_prefix": "dct", + "prefix_reference": "http://purl.org/dc/terms/" }, { - "prefix_prefix": "example", - "prefix_reference": "https://example.org/" + "prefix_prefix": "htv", + "prefix_reference": "http://www.w3.org/2011/http#" + }, + { + "prefix_prefix": "tm", + "prefix_reference": "https://www.w3.org/2019/wot/tm#" } ], - "default_prefix": "thing_description_schema", + "default_prefix": "td", "default_range": "string", "types": [ + { + "name": "anyUri", + "definition_uri": "https://www.w3.org/2019/wot/td#AnyUri", + "description": "a complete URI", + "from_schema": "td", + "base": "URI", + "uri": "http://www.w3.org/2001/XMLSchema#anyURI", + "@type": "TypeDefinition" + }, { "name": "string", "definition_uri": "https://w3id.org/linkml/String", @@ -350,26 +387,152 @@ ], "enums": [ { - "name": "PersonStatus", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/PersonStatus", - "from_schema": "https://w3id.org/mahda/thing-description-schema", + "name": "OperationTypes", + "definition_uri": "https://www.w3.org/2019/wot/td#OperationTypes", + "description": "Enumerations of well-known operation types necessary to implement the WoT interaction model.", + "from_schema": "td", + "permissible_values": [ + { + "text": "readproperty", + "description": "Identifies the read operation on Property Affordances to retrieve the corresponding data.", + "meaning": "td:readProperty" + }, + { + "text": "writeproperty", + "description": "Identifies the write operation on Property Affordances to update the corresponding data.", + "meaning": "td:writeProperty" + }, + { + "text": "observeproperty", + "description": "Identifies the observe operation on Property Affordances to be notified with the new data when the Property is updated.", + "meaning": "td:observeProperty" + }, + { + "text": "unobserveproperty", + "description": "Identifies the unobserve operation on Property Affordances to stop the corresponding notifications.", + "meaning": "td:unobserveProperty" + }, + { + "text": "invokeaction", + "description": "Identifies the invoke operation on Action Affordances to perform the corresponding action.", + "meaning": "td:invokeAction" + }, + { + "text": "queryaction", + "description": "Identifies the querying operation on Action Affordances to get the status of the corresponding action.", + "meaning": "td:queryAction" + }, + { + "text": "cancelaction", + "description": "Identifies the cancel operation on Action Affordances to cancel the ongoing corresponding action.", + "meaning": "td:cancelAction" + }, + { + "text": "subscribeevent", + "description": "Identifies the subscribe operation on Event Affordances to be notified by the Thing when the event occurs.", + "meaning": "td:subscribeEvent" + }, + { + "text": "unsubscribeevent", + "description": "Identifies the unsubscribe operation on Event Affordances to stop the corresponding notifications.", + "meaning": "td:unsubscribeEvent" + }, + { + "text": "readallproperties", + "description": "Identifies the readallproperties operation on a Thing to retrieve the data of all Properties in a single interaction.", + "meaning": "td:readAllProperties" + }, + { + "text": "writeallproperties", + "description": "Identifies the writeallproperties operation on a Thing to update the data of all writable Properties in a single interaction.", + "meaning": "writeAllProperties" + }, + { + "text": "readmultipleproperties", + "description": "Identifies the readmultipleproperties operation on a Thing to retrieve the data of selected Properties in a single interaction.", + "meaning": "td:readMultipleProperties" + }, + { + "text": "writemultipleproperties", + "description": "Identifies the writemultipleproperties operation on a Thing to update the data of selected writable Properties in a single interaction.", + "meaning": "td:writeMultipleProperties" + }, + { + "text": "observeallproperties", + "description": "Identifies the observeallproperties operation on Properties to be notified with new data when any Property is updated.", + "meaning": "td:observeAllProperties" + }, + { + "text": "unobserveallproperties", + "description": "Identifies the unobserveallproperties operation on Properties to stop notifications from all Properties in a single interaction.", + "meaning": "td:unobserveAllProperties" + }, + { + "text": "subscribeallevents", + "description": "Identifies the subscribeallevents operation on Events to subscribe to notifications from all Events in a single interaction.", + "meaning": "td:subscribeAllEvents" + }, + { + "text": "unsubscribeallevents", + "description": "Identifies the unsubscribeallevents operation on Events to unsubscribe from notifications from all Events in a single interaction.", + "meaning": "td:unsubscribeAllEvents" + }, + { + "text": "queryallactions", + "description": "Identifies the queryallactions operation on a Thing to get the status of all Actions in a single interaction.", + "meaning": "td:queryAllActions" + } + ] + }, + { + "name": "SecuritySchemeType", + "definition_uri": "https://www.w3.org/2019/wot/td#SecuritySchemeType", + "from_schema": "td", "permissible_values": [ { - "text": "ALIVE", - "description": "the person is living", - "meaning": "PATO:0001421" + "text": "nosec", + "description": "A security configuration corresponding to identified by the Vocabulary Term nosec, indicating there is no authentication or other mechanism required to access the resource.", + "meaning": "wotsec:NoSecurityScheme" }, { - "text": "DEAD", - "description": "the person is deceased", - "meaning": "PATO:0001422" + "text": "combo", + "description": "Elements of this scheme define various ways in which other named schemes defined in securityDefinitions, including other ComboSecurityScheme definitions, are to be combined to create a new scheme definition.", + "meaning": "wotsec:ComboSecurityScheme" }, { - "text": "UNKNOWN", - "description": "the vital status is not known", - "todos": [ - "map this to an ontology" - ] + "text": "basic", + "description": "Uses an unencrypted username and password.", + "meaning": "wotsec:BasicSecurityScheme" + }, + { + "text": "digest", + "description": "This scheme is similar to basic authentication but with added features to avoid man-in-the-middle attacks.", + "meaning": "wotsec:DigestSecurityScheme" + }, + { + "text": "bearer", + "description": "Bearer tokens are used independently of OAuth2.", + "meaning": "wotsec:BearerSecurityScheme" + }, + { + "text": "psk", + "description": "This is meant to identify that a standard is used for pre-shared keys such as TLS-PSK [RFC4279], and that the ciphersuite used for keys will be established during protocol negotiation.", + "meaning": "wotsec:PSKSecurityScheme" + }, + { + "text": "oauth2", + "description": "OAuth 2.0 authentication security configuration for systems conformant with [RFC6749] and [RFC8252].", + "meaning": "wotsec:OAuth2SecurityScheme" + }, + { + "text": "apikey", + "description": "This scheme is to be used when the access token is opaque.", + "meaning": "wotsec:APIKeySecurityScheme" + }, + { + "text": "auto", + "description": "This scheme indicates that the security parameters are going to be negotiated by the underlying protocols at runtime", + "meaning": "wotsec:AutoSecurityScheme" } ] } @@ -377,220 +540,1620 @@ "slots": [ { "name": "id", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/id", - "description": "A unique identifier for a thing", - "from_schema": "https://w3id.org/mahda/thing-description-schema", + "definition_uri": "https://www.w3.org/2019/wot/td#id", + "description": "TODO", + "from_schema": "td", "mappings": [ - "http://schema.org/identifier" + "https://www.w3.org/2019/wot/td#id" ], - "slot_uri": "http://schema.org/identifier", + "slot_uri": "https://www.w3.org/2019/wot/td#id", "identifier": true, - "owner": "NamedThing", + "owner": "Thing", "domain_of": [ - "NamedThing" + "Thing" ], - "range": "uriorcurie", + "range": "anyUri", "required": true, "@type": "SlotDefinition" }, { - "name": "name", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/name", - "description": "A human-readable name for a thing", - "from_schema": "https://w3id.org/mahda/thing-description-schema", + "name": "title", + "definition_uri": "https://www.w3.org/2019/wot/td#title", + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "from_schema": "td", "mappings": [ - "http://schema.org/name" + "https://www.w3.org/2019/wot/td#title" ], - "slot_uri": "http://schema.org/name", - "owner": "NamedThing", + "slot_uri": "https://www.w3.org/2019/wot/td#title", + "owner": "Thing", "domain_of": [ - "NamedThing" + "DataSchema", + "InteractionAffordance", + "Thing" ], - "range": "string", + "range": "MultiLanguage", "@type": "SlotDefinition" }, { "name": "description", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/description", - "description": "A human-readable description for a thing", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "mappings": [ - "http://schema.org/description" - ], - "slot_uri": "http://schema.org/description", - "owner": "NamedThing", + "definition_uri": "https://www.w3.org/2019/wot/td#description", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#description", + "owner": "Thing", "domain_of": [ - "NamedThing" + "DataSchema", + "InteractionAffordance", + "Thing" ], - "range": "string", + "range": "MultiLanguage", "@type": "SlotDefinition" }, { - "name": "primary_email", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/primary_email", - "description": "The main email address of a person", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "mappings": [ - "http://schema.org/email" - ], - "slot_uri": "http://schema.org/email", + "name": "titles", + "definition_uri": "https://www.w3.org/2019/wot/td#titles", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#titles", + "multivalued": true, "owner": "Thing", "domain_of": [ + "InteractionAffordance", "Thing" ], - "range": "string", + "range": "MultiLanguage", + "inlined": true, "@type": "SlotDefinition" }, { - "name": "birth_date", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/birth_date", - "description": "Date on which a person is born", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "mappings": [ - "http://schema.org/birthDate" - ], - "slot_uri": "http://schema.org/birthDate", + "name": "descriptions", + "definition_uri": "https://www.w3.org/2019/wot/td#descriptions", + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#descriptions", + "multivalued": true, "owner": "Thing", "domain_of": [ + "SecurityScheme", + "InteractionAffordance", "Thing" ], - "range": "date", + "range": "MultiLanguage", + "inlined": true, "@type": "SlotDefinition" }, { - "name": "age_in_years", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/age_in_years", - "description": "Number of years since birth", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "slot_uri": "https://w3id.org/mahda/thing-description-schema/age_in_years", + "name": "descriptionInLanguage", + "definition_uri": "https://www.w3.org/2019/wot/td#descriptionInLanguage", + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#descriptionInLanguage", "owner": "Thing", "domain_of": [ + "DataSchema", + "InteractionAffordance", "Thing" ], - "range": "integer", + "range": "MultiLanguage", "@type": "SlotDefinition" }, { - "name": "vital_status", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/vital_status", - "description": "living or dead status", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "slot_uri": "https://w3id.org/mahda/thing-description-schema/vital_status", + "name": "titleInLanguage", + "definition_uri": "https://www.w3.org/2019/wot/td#titleInLanguage", + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#titleInLanguage", "owner": "Thing", "domain_of": [ + "DataSchema", + "InteractionAffordance", "Thing" ], - "range": "PersonStatus", + "range": "MultiLanguage", "@type": "SlotDefinition" }, { - "name": "thingCollection__entries", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "slot_uri": "https://w3id.org/mahda/thing-description-schema/entries", + "name": "@type", + "definition_uri": "https://www.w3.org/2019/wot/td#@type", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#@type", "multivalued": true, - "alias": "entries", - "owner": "ThingCollection", + "owner": "Thing", "domain_of": [ - "ThingCollection" + "SecurityScheme", + "Thing" ], - "range": "Thing", - "inlined": true, + "range": "string", "@type": "SlotDefinition" }, { - "name": "Thing_primary_email", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/primary_email", - "description": "The main email address of a person", - "from_schema": "https://w3id.org/mahda/thing-description-schema", + "name": "target", + "definition_uri": "https://www.w3.org/2019/wot/td#target", + "description": "Target IRI of a link or submission target of a Form", + "from_schema": "td", "mappings": [ - "http://schema.org/email" + "https://www.w3.org/2019/wot/hypermedia#target" ], - "is_a": "primary_email", - "domain": "Thing", - "slot_uri": "http://schema.org/email", - "alias": "primary_email", - "owner": "Thing", + "slot_uri": "https://www.w3.org/2019/wot/hypermedia#target", + "owner": "Form", "domain_of": [ - "Thing" + "Link", + "Form" + ], + "range": "anyUri", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "versionInfo__instance", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#instance", + "alias": "instance", + "owner": "VersionInfo", + "domain_of": [ + "VersionInfo" ], - "is_usage_slot": true, - "usage_slot_name": "primary_email", "range": "string", - "pattern": "^\\S+@[\\S+\\.]+\\S+", + "required": true, "@type": "SlotDefinition" - } - ], - "classes": [ + }, { - "name": "NamedThing", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/NamedThing", - "description": "A generic grouping for any identifiable entity", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "mappings": [ - "schema:Thing" + "name": "versionInfo__model", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#model", + "alias": "model", + "owner": "VersionInfo", + "domain_of": [ + "VersionInfo" ], - "slots": [ - "id", - "name", - "description" + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "multiLanguage__key", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#key", + "identifier": true, + "alias": "key", + "owner": "MultiLanguage", + "domain_of": [ + "MultiLanguage" ], - "slot_usage": {}, - "class_uri": "http://schema.org/Thing", - "@type": "ClassDefinition" + "range": "string", + "required": true, + "pattern": "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$", + "@type": "SlotDefinition" }, { - "name": "Thing", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/Thing", - "description": "Represents a Thing", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "is_a": "NamedThing", - "slots": [ - "id", - "name", - "description", - "Thing_primary_email", - "birth_date", - "age_in_years", - "vital_status" + "name": "link__hintsAtMediaType", + "description": "Target attribute providing a hint indicating what the media type [IANA-MEDIA-TYPES] of the result of dereferencing the link should be.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#hintsAtMediaType", + "alias": "hintsAtMediaType", + "owner": "Link", + "domain_of": [ + "Link" ], - "slot_usage": {}, - "class_uri": "https://w3id.org/mahda/thing-description-schema/Thing", - "@type": "ClassDefinition" + "range": "string", + "@type": "SlotDefinition" }, { - "name": "ThingCollection", - "definition_uri": "https://w3id.org/mahda/thing-description-schema/ThingCollection", - "description": "A holder for Thing objects", - "from_schema": "https://w3id.org/mahda/thing-description-schema", - "slots": [ - "thingCollection__entries" + "name": "link__type", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#type", + "alias": "type", + "owner": "Link", + "domain_of": [ + "Link" ], - "slot_usage": {}, - "attributes": [ + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "link__relation", + "description": "A link relation type identifies the semantics of a link.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#relation", + "alias": "relation", + "owner": "Link", + "domain_of": [ + "Link" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "link__anchor", + "description": "By default, the context, or anchor, of a link conveyed in the Link header field is the URL of the representation it is associated with, as defined in RFC7231, Section 3.1.4.1, and is serialized as a URI.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#anchor", + "alias": "anchor", + "owner": "Link", + "domain_of": [ + "Link" + ], + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "link__sizes", + "description": "Target attribute that specifies one or more sizes for the referenced icon. Only applicable for relation type 'icon'. The value pattern follows {Height}x{Width} (e.g., \\\"16x16\\\", \\\"16x16 32x32\\\").", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#sizes", + "alias": "sizes", + "owner": "Link", + "domain_of": [ + "Link" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "link__hreflang", + "description": "The hreflang attribute specifies the language of a linked document. The value of this must be a valid language tag [[BCP47]].", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#hreflang", + "alias": "hreflang", + "owner": "Link", + "domain_of": [ + "Link" + ], + "range": "string", + "pattern": "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$", + "@type": "SlotDefinition" + }, + { + "name": "expectedResponse__contentType", + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#contentType", + "alias": "contentType", + "owner": "ExpectedResponse", + "domain_of": [ + "ExpectedResponse" + ], + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "additionalExpectedResponse__additionalOutputSchema", + "description": "This optional term can be used to define a data schema for an additional response if it differs from the default output data schema. Rather than a DataSchema object, the name of a previous definition given in a SchemaDefinitions map must be used.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#additionalOutputSchema", + "alias": "additionalOutputSchema", + "owner": "AdditionalExpectedResponse", + "domain_of": [ + "AdditionalExpectedResponse" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "additionalExpectedResponse__success", + "description": "Signals if the additional response should not be considered an error.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#success", + "alias": "success", + "owner": "AdditionalExpectedResponse", + "domain_of": [ + "AdditionalExpectedResponse" + ], + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "additionalExpectedResponse__schema", + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#schema", + "alias": "schema", + "owner": "AdditionalExpectedResponse", + "domain_of": [ + "AdditionalExpectedResponse" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "form__href", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#href", + "alias": "href", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "anyUri", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "form__contentType", + "description": "Assign a content type based on a media type IANA-MEDIA-TYPES (e.g., 'text/plain') and potential parameters (e.g., 'charset=utf-8') for the media type.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#contentType", + "alias": "contentType", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "form__contentCoding", + "description": "Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Examples of content coding include \\\"gzip\\\", \\\"deflate\\\", etc.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#contentCoding", + "alias": "contentCoding", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "form__securityDefinitions", + "description": "A security schema applied to a (set of) affordance(s).", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#securityDefinitions", + "alias": "securityDefinitions", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "form__scopes", + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#scopes", + "alias": "scopes", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "form__returns", + "description": "This optional term can be used if, e.g., the output communication metadata differ from input metadata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the response messages.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#returns", + "alias": "returns", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "ExpectedResponse", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "form__additionalReturns", + "description": "This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific response code), and may also have its own data schema.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#additionalReturns", + "multivalued": true, + "alias": "additionalReturns", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "AdditionalExpectedResponse", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "form__subprotocol", + "description": "Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#subprotocol", + "alias": "subprotocol", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "form__operationType", + "description": "Indicates the semantic intention of performing the operation(s) described by the form.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#operationType", + "multivalued": true, + "alias": "operationType", + "owner": "Form", + "domain_of": [ + "Form" + ], + "range": "OperationTypes", + "@type": "SlotDefinition" + }, + { + "name": "securityScheme__description", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#description", + "alias": "description", + "owner": "SecurityScheme", + "domain_of": [ + "SecurityScheme" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "securityScheme__proxy", + "description": "URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#proxy", + "alias": "proxy", + "owner": "SecurityScheme", + "domain_of": [ + "SecurityScheme" + ], + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "securityScheme__scheme", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#scheme", + "alias": "scheme", + "owner": "SecurityScheme", + "domain_of": [ + "SecurityScheme" + ], + "range": "SecuritySchemeType", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "dataSchema__propertyName", + "description": "Used to store the indexing name in the parent object when this schema appears as a property of an object schema.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#propertyName", + "alias": "propertyName", + "owner": "DataSchema", + "domain_of": [ + "DataSchema" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "dataSchema__writeOnly", + "description": "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false).", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#writeOnly", + "alias": "writeOnly", + "owner": "DataSchema", + "domain_of": [ + "DataSchema" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "dataSchema__readonly", + "description": "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false).", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#readonly", + "alias": "readonly", + "owner": "DataSchema", + "domain_of": [ + "DataSchema" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "interactionAffordance__name", + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#name", + "identifier": true, + "alias": "name", + "owner": "InteractionAffordance", + "domain_of": [ + "InteractionAffordance" + ], + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "interactionAffordance__uriVariables", + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#uriVariables", + "multivalued": true, + "alias": "uriVariables", + "owner": "InteractionAffordance", + "domain_of": [ + "InteractionAffordance" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "interactionAffordance__forms", + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#forms", + "multivalued": true, + "alias": "forms", + "owner": "InteractionAffordance", + "domain_of": [ + "InteractionAffordance" + ], + "range": "Form", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "propertyAffordance__observable", + "description": "A hint that indicates whether Servients hosting the Thing and Intermediaries should probide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#observable", + "alias": "observable", + "owner": "PropertyAffordance", + "domain_of": [ + "PropertyAffordance" + ], + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "actionAffordance__safe", + "description": "Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#safe", + "alias": "safe", + "owner": "ActionAffordance", + "domain_of": [ + "ActionAffordance" + ], + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "actionAffordance__synchronous", + "description": "Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#synchronous", + "alias": "synchronous", + "owner": "ActionAffordance", + "domain_of": [ + "ActionAffordance" + ], + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "actionAffordance__idempotent", + "description": "Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same results, if present, based on the same input.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#idempotent", + "alias": "idempotent", + "owner": "ActionAffordance", + "domain_of": [ + "ActionAffordance" + ], + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "actionAffordance__input", + "description": "Used to define the input data schema of the action.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#input", + "alias": "input", + "owner": "ActionAffordance", + "domain_of": [ + "ActionAffordance" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "actionAffordance__output", + "description": "Used to define the output data schema of the action.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#output", + "alias": "output", + "owner": "ActionAffordance", + "domain_of": [ + "ActionAffordance" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "eventAffordance__subscription", + "description": "Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#subscription", + "alias": "subscription", + "owner": "EventAffordance", + "domain_of": [ + "EventAffordance" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "eventAffordance__cancellation", + "description": "Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#cancellation", + "alias": "cancellation", + "owner": "EventAffordance", + "domain_of": [ + "EventAffordance" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "eventAffordance__notification", + "description": "Defines the data schema of the Event instance messages pushed by the Thing.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#notification", + "alias": "notification", + "owner": "EventAffordance", + "domain_of": [ + "EventAffordance" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "eventAffordance__notificationResponse", + "description": "Defines the data schema of the Event response messages sent by the consumer in a response to a data message.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#notificationResponse", + "alias": "notificationResponse", + "owner": "EventAffordance", + "domain_of": [ + "EventAffordance" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "thing__securityDefinitions", + "description": "A security scheme applied to a (set of) affordance(s). TODO check", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#securityDefinitions", + "multivalued": true, + "alias": "securityDefinitions", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "string", + "any_of": [ + { + "range": "string", + "@type": "AnonymousSlotExpression" + }, + { + "range": "SecuritySchemeType", + "@type": "AnonymousSlotExpression" + } + ], + "@type": "SlotDefinition" + }, + { + "name": "thing__security", + "description": "A Thing may define abstract security schemes, used to configure the secure access of (a set of) affordance(s). TODO: check", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#security", + "multivalued": true, + "alias": "security", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "thing__schemaDefinitions", + "description": "TODO CHECK", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#schemaDefinitions", + "multivalued": true, + "alias": "schemaDefinitions", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "DataSchema", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "thing__profile", + "description": "Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#profile", + "multivalued": true, + "alias": "profile", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "thing__instance", + "description": "Provides a version identicator of this TD instance.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#instance", + "alias": "instance", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "thing__created", + "description": "Provides information when the TD instance was created.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#created", + "alias": "created", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "datetime", + "@type": "SlotDefinition" + }, + { + "name": "thing__modified", + "description": "Provides information when the TD instance was last modified.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#modified", + "alias": "modified", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "datetime", + "@type": "SlotDefinition" + }, + { + "name": "thing__supportContact", + "description": "Provides information about the TD maintainer as URI scheme (e.g., mailto [[RFC6068]],tel [[RFC3966]],https [[RFC9112]]).", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#supportContact", + "alias": "supportContact", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "thing__base", + "description": "Define the base URI that is used for all relative URI references throughout a TD document.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#base", + "alias": "base", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "thing__version", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#version", + "alias": "version", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "VersionInfo", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "thing__forms", + "description": "Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#forms", + "multivalued": true, + "alias": "forms", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "Form", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "thing__links", + "description": "Provides Web links to arbitrary resources that relate to the specified Thing Description.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#links", + "multivalued": true, + "alias": "links", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "Link", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "thing__properties", + "description": "All Property-based interaction affordances of the Thing.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#properties", + "multivalued": true, + "alias": "properties", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "PropertyAffordance", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "thing__actions", + "description": "All Action-based interaction affordances of the Thing.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#actions", + "multivalued": true, + "alias": "actions", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "ActionAffordance", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "thing__events", + "description": "All Event-based interaction affordances of the Thing.", + "from_schema": "td", + "slot_uri": "https://www.w3.org/2019/wot/td#events", + "multivalued": true, + "alias": "events", + "owner": "Thing", + "domain_of": [ + "Thing" + ], + "range": "EventAffordance", + "inlined": true, + "@type": "SlotDefinition" + } + ], + "classes": [ + { + "name": "VersionInfo", + "definition_uri": "https://www.w3.org/2019/wot/td#VersionInfo", + "description": "Provides version information.", + "from_schema": "td", + "mappings": [ + "schema:version" + ], + "slots": [ + "versionInfo__instance", + "versionInfo__model" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "instance", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "model", + "@type": "SlotDefinition" + } + ], + "class_uri": "http://schema.org/version", + "@type": "ClassDefinition" + }, + { + "name": "MultiLanguage", + "definition_uri": "https://www.w3.org/2019/wot/td#MultiLanguage", + "from_schema": "td", + "slots": [ + "multiLanguage__key" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "key", + "identifier": true, + "pattern": "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/td#MultiLanguage", + "@type": "ClassDefinition" + }, + { + "name": "Link", + "definition_uri": "https://www.w3.org/2019/wot/td#Link", + "description": "A link can be viewed as a statement of the form link context that has a relation type resource at link target\", where the optional target attributes may further describe the resource.", + "from_schema": "td", + "mappings": [ + "hctl:Link" + ], + "slots": [ + "target", + "link__hintsAtMediaType", + "link__type", + "link__relation", + "link__anchor", + "link__sizes", + "link__hreflang" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "hintsAtMediaType", + "description": "Target attribute providing a hint indicating what the media type [IANA-MEDIA-TYPES] of the result of dereferencing the link should be.", + "from_schema": "hctl", + "@type": "SlotDefinition" + }, + { + "name": "type", + "@type": "SlotDefinition" + }, + { + "name": "relation", + "description": "A link relation type identifies the semantics of a link.", + "from_schema": "hctl", + "@type": "SlotDefinition" + }, + { + "name": "anchor", + "description": "By default, the context, or anchor, of a link conveyed in the Link header field is the URL of the representation it is associated with, as defined in RFC7231, Section 3.1.4.1, and is serialized as a URI.", + "from_schema": "hctl", + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "sizes", + "description": "Target attribute that specifies one or more sizes for the referenced icon. Only applicable for relation type 'icon'. The value pattern follows {Height}x{Width} (e.g., \\\"16x16\\\", \\\"16x16 32x32\\\").", + "from_schema": "hctl", + "@type": "SlotDefinition" + }, + { + "name": "hreflang", + "description": "The hreflang attribute specifies the language of a linked document. The value of this must be a valid language tag [[BCP47]].", + "from_schema": "hctl", + "pattern": "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/hypermedia#Link", + "@type": "ClassDefinition" + }, + { + "name": "ExpectedResponse", + "definition_uri": "https://www.w3.org/2019/wot/td#ExpectedResponse", + "description": "Communication metadata describing the expected response message for the primary response.", + "from_schema": "td", + "mappings": [ + "hctl:ExpectedResponse" + ], + "slots": [ + "expectedResponse__contentType" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "contentType", + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "required": true, + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/hypermedia#ExpectedResponse", + "@type": "ClassDefinition" + }, + { + "name": "AdditionalExpectedResponse", + "definition_uri": "https://www.w3.org/2019/wot/td#AdditionalExpectedResponse", + "description": "Communication metadata describing the expected response message for additional responses.", + "from_schema": "td", + "mappings": [ + "hctl:AdditionalExpectedResponse" + ], + "is_a": "ExpectedResponse", + "slots": [ + "expectedResponse__contentType", + "additionalExpectedResponse__additionalOutputSchema", + "additionalExpectedResponse__success", + "additionalExpectedResponse__schema" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "additionalOutputSchema", + "description": "This optional term can be used to define a data schema for an additional response if it differs from the default output data schema. Rather than a DataSchema object, the name of a previous definition given in a SchemaDefinitions map must be used.", + "@type": "SlotDefinition" + }, + { + "name": "success", + "description": "Signals if the additional response should not be considered an error.", + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "schema", + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/hypermedia#AdditionalExpectedResponse", + "@type": "ClassDefinition" + }, + { + "name": "Form", + "definition_uri": "https://www.w3.org/2019/wot/td#Form", + "description": "A form can be viewed as a statement of to perform an operation type on form context, make a request method to submission target, where the optional form fields may further describe the required request. In Thing Descriptions, the form context is the surrounding Object, such as Properties, Actions, and Events or the Thing itself for meta-interactions.", + "from_schema": "td", + "mappings": [ + "hctl:Form" + ], + "slots": [ + "target", + "form__href", + "form__contentType", + "form__contentCoding", + "form__securityDefinitions", + "form__scopes", + "form__returns", + "form__additionalReturns", + "form__subprotocol", + "form__operationType" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "href", + "range": "anyUri", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "contentType", + "description": "Assign a content type based on a media type IANA-MEDIA-TYPES (e.g., 'text/plain') and potential parameters (e.g., 'charset=utf-8') for the media type.", + "from_schema": "hctl", + "@type": "SlotDefinition" + }, + { + "name": "contentCoding", + "description": "Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Examples of content coding include \\\"gzip\\\", \\\"deflate\\\", etc.", + "from_schema": "hctl", + "@type": "SlotDefinition" + }, + { + "name": "securityDefinitions", + "description": "A security schema applied to a (set of) affordance(s).", + "from_schema": "td:hasSecurityConfiguration", + "@type": "SlotDefinition" + }, + { + "name": "scopes", + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "@type": "SlotDefinition" + }, + { + "name": "returns", + "description": "This optional term can be used if, e.g., the output communication metadata differ from input metadata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the response messages.", + "range": "ExpectedResponse", + "@type": "SlotDefinition" + }, + { + "name": "additionalReturns", + "description": "This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific response code), and may also have its own data schema.", + "from_schema": "hctl", + "multivalued": true, + "range": "AdditionalExpectedResponse", + "@type": "SlotDefinition" + }, + { + "name": "subprotocol", + "description": "Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options.", + "from_schema": "hctl", + "@type": "SlotDefinition" + }, + { + "name": "operationType", + "description": "Indicates the semantic intention of performing the operation(s) described by the form.", + "from_schema": "hctl", + "multivalued": true, + "range": "OperationTypes", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/hypermedia#Form", + "@type": "ClassDefinition" + }, + { + "name": "SecurityScheme", + "definition_uri": "https://www.w3.org/2019/wot/td#SecurityScheme", + "from_schema": "td", + "slots": [ + "@type", + "descriptions", + "securityScheme__description", + "securityScheme__proxy", + "securityScheme__scheme" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "description", + "@type": "SlotDefinition" + }, + { + "name": "proxy", + "description": "URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint.", + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "scheme", + "range": "SecuritySchemeType", + "required": true, + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/td#SecurityScheme", + "@type": "ClassDefinition" + }, + { + "name": "DataSchema", + "definition_uri": "https://www.w3.org/2019/wot/td#DataSchema", + "description": "Metadata that describes the data format used. It can be used for validation.", + "from_schema": "td", + "mappings": [ + "jsonschema:DataSchema" + ], + "slots": [ + "description", + "title", + "titleInLanguage", + "descriptionInLanguage", + "dataSchema__propertyName", + "dataSchema__writeOnly", + "dataSchema__readonly" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "propertyName", + "description": "Used to store the indexing name in the parent object when this schema appears as a property of an object schema.", + "@type": "SlotDefinition" + }, + { + "name": "writeOnly", + "description": "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false).", + "@type": "SlotDefinition" + }, + { + "name": "readonly", + "description": "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false).", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/json-schema#DataSchema", + "@type": "ClassDefinition" + }, + { + "name": "InteractionAffordance", + "definition_uri": "https://www.w3.org/2019/wot/td#InteractionAffordance", + "description": "TOOD", + "from_schema": "td", + "mappings": [ + "td:InteractionAffordance" + ], + "slots": [ + "titles", + "descriptions", + "title", + "description", + "titleInLanguage", + "descriptionInLanguage", + "interactionAffordance__name", + "interactionAffordance__uriVariables", + "interactionAffordance__forms" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "name", + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "identifier": true, + "@type": "SlotDefinition" + }, + { + "name": "uriVariables", + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "from_schema": "td:hasUriTemplateSchema", + "multivalued": true, + "range": "DataSchema", + "@type": "SlotDefinition" + }, + { + "name": "forms", + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "from_schema": "td:hasForm", + "multivalued": true, + "range": "Form", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/td#InteractionAffordance", + "@type": "ClassDefinition" + }, + { + "name": "PropertyAffordance", + "definition_uri": "https://www.w3.org/2019/wot/td#PropertyAffordance", + "description": "An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated.", + "from_schema": "td", + "mappings": [ + "td:PropertyAffordance" + ], + "is_a": "InteractionAffordance", + "mixins": [ + "DataSchema" + ], + "slots": [ + "titles", + "descriptions", + "title", + "description", + "titleInLanguage", + "descriptionInLanguage", + "interactionAffordance__name", + "interactionAffordance__uriVariables", + "interactionAffordance__forms", + "propertyAffordance__observable", + "dataSchema__propertyName", + "dataSchema__writeOnly", + "dataSchema__readonly" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "observable", + "description": "A hint that indicates whether Servients hosting the Thing and Intermediaries should probide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property.", + "range": "boolean", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/td#PropertyAffordance", + "@type": "ClassDefinition" + }, + { + "name": "ActionAffordance", + "definition_uri": "https://www.w3.org/2019/wot/td#ActionAffordance", + "description": "An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time).", + "from_schema": "td", + "mappings": [ + "td:ActionAffordance" + ], + "is_a": "InteractionAffordance", + "slots": [ + "titles", + "descriptions", + "title", + "description", + "titleInLanguage", + "descriptionInLanguage", + "interactionAffordance__name", + "interactionAffordance__uriVariables", + "interactionAffordance__forms", + "actionAffordance__safe", + "actionAffordance__synchronous", + "actionAffordance__idempotent", + "actionAffordance__input", + "actionAffordance__output" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "safe", + "description": "Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action.", + "from_schema": "td:isSafe", + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "synchronous", + "description": "Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made.", + "from_schema": "td:isSynchronous", + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "idempotent", + "description": "Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same results, if present, based on the same input.", + "from_schema": "td:isIdempotent", + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "input", + "description": "Used to define the input data schema of the action.", + "from_schema": "td:hasInputSchema", + "range": "DataSchema", + "@type": "SlotDefinition" + }, + { + "name": "output", + "description": "Used to define the output data schema of the action.", + "from_schema": "td:hasOutputSchema", + "range": "DataSchema", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/td#ActionAffordance", + "@type": "ClassDefinition" + }, + { + "name": "EventAffordance", + "definition_uri": "https://www.w3.org/2019/wot/td#EventAffordance", + "description": "An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overhearing alerts).", + "from_schema": "td", + "mappings": [ + "td:EventAffordance" + ], + "is_a": "InteractionAffordance", + "slots": [ + "titles", + "descriptions", + "title", + "description", + "titleInLanguage", + "descriptionInLanguage", + "interactionAffordance__name", + "interactionAffordance__uriVariables", + "interactionAffordance__forms", + "eventAffordance__subscription", + "eventAffordance__cancellation", + "eventAffordance__notification", + "eventAffordance__notificationResponse" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "subscription", + "description": "Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks.", + "from_schema": "td:hasSubscriptionSchema", + "range": "DataSchema", + "@type": "SlotDefinition" + }, + { + "name": "cancellation", + "description": "Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook.", + "from_schema": "td:hasCancellationSchema", + "range": "DataSchema", + "@type": "SlotDefinition" + }, + { + "name": "notification", + "description": "Defines the data schema of the Event instance messages pushed by the Thing.", + "from_schema": "td:hasNotificationSchema", + "range": "DataSchema", + "@type": "SlotDefinition" + }, + { + "name": "notificationResponse", + "description": "Defines the data schema of the Event response messages sent by the consumer in a response to a data message.", + "from_schema": "td:hasNotificationResponseSchema", + "range": "DataSchema", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://www.w3.org/2019/wot/td#EventAffordance", + "@type": "ClassDefinition" + }, + { + "name": "Thing", + "definition_uri": "https://www.w3.org/2019/wot/td#Thing", + "description": "An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things.", + "from_schema": "td", + "mappings": [ + "td:Thing" + ], + "slots": [ + "id", + "title", + "description", + "titles", + "descriptions", + "@type", + "titleInLanguage", + "descriptionInLanguage", + "thing__securityDefinitions", + "thing__security", + "thing__schemaDefinitions", + "thing__profile", + "thing__instance", + "thing__created", + "thing__modified", + "thing__supportContact", + "thing__base", + "thing__version", + "thing__forms", + "thing__links", + "thing__properties", + "thing__actions", + "thing__events" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "securityDefinitions", + "description": "A security scheme applied to a (set of) affordance(s). TODO check", + "from_schema": "td:hasSecurityConfiguration", + "multivalued": true, + "any_of": [ + { + "range": "string", + "@type": "AnonymousSlotExpression" + }, + { + "range": "SecuritySchemeType", + "@type": "AnonymousSlotExpression" + } + ], + "@type": "SlotDefinition" + }, + { + "name": "security", + "description": "A Thing may define abstract security schemes, used to configure the secure access of (a set of) affordance(s). TODO: check", + "from_schema": "td:definesSecurityScheme", + "multivalued": true, + "@type": "SlotDefinition" + }, + { + "name": "schemaDefinitions", + "description": "TODO CHECK", + "multivalued": true, + "range": "DataSchema", + "@type": "SlotDefinition" + }, + { + "name": "profile", + "description": "Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation.", + "from_schema": "td:followsProfile", + "multivalued": true, + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "instance", + "description": "Provides a version identicator of this TD instance.", + "@type": "SlotDefinition" + }, + { + "name": "created", + "description": "Provides information when the TD instance was created.", + "from_schema": "dcterms", + "range": "datetime", + "@type": "SlotDefinition" + }, + { + "name": "modified", + "description": "Provides information when the TD instance was last modified.", + "from_schema": "dcterms", + "range": "datetime", + "@type": "SlotDefinition" + }, + { + "name": "supportContact", + "description": "Provides information about the TD maintainer as URI scheme (e.g., mailto [[RFC6068]],tel [[RFC3966]],https [[RFC9112]]).", + "from_schema": "schema:contactPoint", + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "base", + "description": "Define the base URI that is used for all relative URI references throughout a TD document.", + "from_schema": "td:baseURI", + "range": "anyUri", + "@type": "SlotDefinition" + }, + { + "name": "version", + "range": "VersionInfo", + "@type": "SlotDefinition" + }, + { + "name": "forms", + "description": "Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings.", + "from_schema": "td:hasForm", + "multivalued": true, + "range": "Form", + "@type": "SlotDefinition" + }, + { + "name": "links", + "description": "Provides Web links to arbitrary resources that relate to the specified Thing Description.", + "from_schema": "td:hasLink", + "multivalued": true, + "range": "Link", + "@type": "SlotDefinition" + }, + { + "name": "properties", + "description": "All Property-based interaction affordances of the Thing.", + "from_schema": "td:hasPropertyAffordance", + "multivalued": true, + "range": "PropertyAffordance", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "actions", + "description": "All Action-based interaction affordances of the Thing.", + "from_schema": "td:hasActionAffordance", + "multivalued": true, + "range": "ActionAffordance", + "inlined": true, + "@type": "SlotDefinition" + }, { - "name": "entries", + "name": "events", + "description": "All Event-based interaction affordances of the Thing.", + "from_schema": "td:hasEventAffordance", "multivalued": true, - "range": "Thing", + "range": "EventAffordance", "inlined": true, "@type": "SlotDefinition" } ], - "class_uri": "https://w3id.org/mahda/thing-description-schema/ThingCollection", - "tree_root": true, + "class_uri": "https://www.w3.org/2019/wot/td#Thing", "@type": "ClassDefinition" } ], "metamodel_version": "1.7.0", "source_file": "thing_description_schema.yaml", - "source_file_date": "2024-04-15T09:28:11", - "source_file_size": 2246, - "generation_date": "2024-04-15T09:31:15", + "source_file_date": "2024-05-15T15:22:06", + "source_file_size": 24232, + "generation_date": "2024-05-15T15:38:14", "@type": "SchemaDefinition", "@context": [ "project/jsonld/thing_description_schema.context.jsonld", "https://w3id.org/linkml/types.context.jsonld", { - "@base": "https://w3id.org/mahda/thing-description-schema/" + "@base": "https://www.w3.org/2019/wot/td#" } ] } diff --git a/project/jsonschema/thing_description_schema.schema.json b/project/jsonschema/thing_description_schema.schema.json index 433bcff..debbbce 100644 --- a/project/jsonschema/thing_description_schema.schema.json +++ b/project/jsonschema/thing_description_schema.schema.json @@ -1,160 +1,1085 @@ { "$defs": { - "NamedThing": { + "ActionAffordance": { "additionalProperties": false, - "description": "A generic grouping for any identifiable entity", + "description": "An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time).", "properties": { "description": { - "description": "A human-readable description for a thing", "type": "string" }, - "id": { - "description": "A unique identifier for a thing", + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, + "idempotent": { + "description": "Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same results, if present, based on the same input.", + "type": "boolean" + }, + "input": { + "$ref": "#/$defs/DataSchema", + "description": "Used to define the input data schema of the action." + }, + "name": { + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "type": "string" + }, + "output": { + "$ref": "#/$defs/DataSchema", + "description": "Used to define the output data schema of the action." + }, + "safe": { + "description": "Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action.", + "type": "boolean" + }, + "synchronous": { + "description": "Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made.", + "type": "boolean" + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "type": "string" + }, + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "uriVariables": { + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "title": "ActionAffordance", + "type": "object" + }, + "ActionAffordance__identifier_optional": { + "additionalProperties": false, + "description": "An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time).", + "properties": { + "description": { + "type": "string" + }, + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, + "idempotent": { + "description": "Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same results, if present, based on the same input.", + "type": "boolean" + }, + "input": { + "$ref": "#/$defs/DataSchema", + "description": "Used to define the input data schema of the action." + }, + "name": { + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "type": "string" + }, + "output": { + "$ref": "#/$defs/DataSchema", + "description": "Used to define the output data schema of the action." + }, + "safe": { + "description": "Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action.", + "type": "boolean" + }, + "synchronous": { + "description": "Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made.", + "type": "boolean" + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "type": "string" + }, + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "uriVariables": { + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + } + }, + "required": [], + "title": "ActionAffordance", + "type": "object" + }, + "AdditionalExpectedResponse": { + "additionalProperties": false, + "description": "Communication metadata describing the expected response message for additional responses.", + "properties": { + "additionalOutputSchema": { + "description": "This optional term can be used to define a data schema for an additional response if it differs from the default output data schema. Rather than a DataSchema object, the name of a previous definition given in a SchemaDefinitions map must be used.", + "type": "string" + }, + "contentType": { + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "type": "string" + }, + "schema": { + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "type": "string" + }, + "success": { + "description": "Signals if the additional response should not be considered an error.", + "type": "boolean" + } + }, + "required": [ + "contentType" + ], + "title": "AdditionalExpectedResponse", + "type": "object" + }, + "DataSchema": { + "additionalProperties": false, + "description": "Metadata that describes the data format used. It can be used for validation.", + "properties": { + "description": { + "type": "string" + }, + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "propertyName": { + "description": "Used to store the indexing name in the parent object when this schema appears as a property of an object schema.", + "type": "string" + }, + "readonly": { + "description": "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false).", + "type": "string" + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "type": "string" + }, + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "writeOnly": { + "description": "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false).", + "type": "string" + } + }, + "title": "DataSchema", + "type": "object" + }, + "EventAffordance": { + "additionalProperties": false, + "description": "An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overhearing alerts).", + "properties": { + "cancellation": { + "$ref": "#/$defs/DataSchema", + "description": "Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook." + }, + "description": { + "type": "string" + }, + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, + "name": { + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "type": "string" + }, + "notification": { + "$ref": "#/$defs/DataSchema", + "description": "Defines the data schema of the Event instance messages pushed by the Thing." + }, + "notificationResponse": { + "$ref": "#/$defs/DataSchema", + "description": "Defines the data schema of the Event response messages sent by the consumer in a response to a data message." + }, + "subscription": { + "$ref": "#/$defs/DataSchema", + "description": "Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks." + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "type": "string" + }, + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "uriVariables": { + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "title": "EventAffordance", + "type": "object" + }, + "EventAffordance__identifier_optional": { + "additionalProperties": false, + "description": "An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overhearing alerts).", + "properties": { + "cancellation": { + "$ref": "#/$defs/DataSchema", + "description": "Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook." + }, + "description": { + "type": "string" + }, + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, + "name": { + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "type": "string" + }, + "notification": { + "$ref": "#/$defs/DataSchema", + "description": "Defines the data schema of the Event instance messages pushed by the Thing." + }, + "notificationResponse": { + "$ref": "#/$defs/DataSchema", + "description": "Defines the data schema of the Event response messages sent by the consumer in a response to a data message." + }, + "subscription": { + "$ref": "#/$defs/DataSchema", + "description": "Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks." + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "type": "string" + }, + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "uriVariables": { + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + } + }, + "required": [], + "title": "EventAffordance", + "type": "object" + }, + "ExpectedResponse": { + "additionalProperties": false, + "description": "Communication metadata describing the expected response message for the primary response.", + "properties": { + "contentType": { + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "type": "string" + } + }, + "required": [ + "contentType" + ], + "title": "ExpectedResponse", + "type": "object" + }, + "Form": { + "additionalProperties": false, + "description": "A form can be viewed as a statement of to perform an operation type on form context, make a request method to submission target, where the optional form fields may further describe the required request. In Thing Descriptions, the form context is the surrounding Object, such as Properties, Actions, and Events or the Thing itself for meta-interactions.", + "properties": { + "additionalReturns": { + "description": "This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific response code), and may also have its own data schema.", + "items": { + "$ref": "#/$defs/AdditionalExpectedResponse" + }, + "type": "array" + }, + "contentCoding": { + "description": "Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Examples of content coding include \\\"gzip\\\", \\\"deflate\\\", etc.", + "type": "string" + }, + "contentType": { + "description": "Assign a content type based on a media type IANA-MEDIA-TYPES (e.g., 'text/plain') and potential parameters (e.g., 'charset=utf-8') for the media type.", + "type": "string" + }, + "href": { + "type": "string" + }, + "operationType": { + "description": "Indicates the semantic intention of performing the operation(s) described by the form.", + "items": { + "$ref": "#/$defs/OperationTypes" + }, + "type": "array" + }, + "returns": { + "$ref": "#/$defs/ExpectedResponse", + "description": "This optional term can be used if, e.g., the output communication metadata differ from input metadata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the response messages." + }, + "scopes": { + "description": "TODO Check, was not in hctl ontology, if not could be source of discrepancy", + "type": "string" + }, + "securityDefinitions": { + "description": "A security schema applied to a (set of) affordance(s).", + "type": "string" + }, + "subprotocol": { + "description": "Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options.", + "type": "string" + }, + "target": { + "description": "Target IRI of a link or submission target of a Form", + "type": "string" + } + }, + "required": [ + "target", + "href" + ], + "title": "Form", + "type": "object" + }, + "InteractionAffordance": { + "additionalProperties": false, + "description": "TOOD", + "properties": { + "description": { + "type": "string" + }, + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, + "name": { + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "type": "string" + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "type": "string" + }, + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "uriVariables": { + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "title": "InteractionAffordance", + "type": "object" + }, + "Link": { + "additionalProperties": false, + "description": "A link can be viewed as a statement of the form link context that has a relation type resource at link target\", where the optional target attributes may further describe the resource.", + "properties": { + "anchor": { + "description": "By default, the context, or anchor, of a link conveyed in the Link header field is the URL of the representation it is associated with, as defined in RFC7231, Section 3.1.4.1, and is serialized as a URI.", "type": "string" }, - "name": { - "description": "A human-readable name for a thing", + "hintsAtMediaType": { + "description": "Target attribute providing a hint indicating what the media type [IANA-MEDIA-TYPES] of the result of dereferencing the link should be.", + "type": "string" + }, + "hreflang": { + "description": "The hreflang attribute specifies the language of a linked document. The value of this must be a valid language tag [[BCP47]].", + "pattern": "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$", + "type": "string" + }, + "relation": { + "description": "A link relation type identifies the semantics of a link.", + "type": "string" + }, + "sizes": { + "description": "Target attribute that specifies one or more sizes for the referenced icon. Only applicable for relation type 'icon'. The value pattern follows {Height}x{Width} (e.g., \\\"16x16\\\", \\\"16x16 32x32\\\").", + "type": "string" + }, + "target": { + "description": "Target IRI of a link or submission target of a Form", + "type": "string" + }, + "type": { "type": "string" } }, "required": [ - "id" + "target" + ], + "title": "Link", + "type": "object" + }, + "MultiLanguage": { + "additionalProperties": false, + "description": "", + "properties": { + "key": { + "pattern": "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$", + "type": "string" + } + }, + "required": [ + "key" ], - "title": "NamedThing", + "title": "MultiLanguage", "type": "object" }, - "PersonStatus": { + "MultiLanguage__identifier_optional": { + "additionalProperties": false, "description": "", + "properties": { + "key": { + "pattern": "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$", + "type": "string" + } + }, + "required": [], + "title": "MultiLanguage", + "type": "object" + }, + "OperationTypes": { + "description": "Enumerations of well-known operation types necessary to implement the WoT interaction model.", "enum": [ - "ALIVE", - "DEAD", - "UNKNOWN" + "readproperty", + "writeproperty", + "observeproperty", + "unobserveproperty", + "invokeaction", + "queryaction", + "cancelaction", + "subscribeevent", + "unsubscribeevent", + "readallproperties", + "writeallproperties", + "readmultipleproperties", + "writemultipleproperties", + "observeallproperties", + "unobserveallproperties", + "subscribeallevents", + "unsubscribeallevents", + "queryallactions" ], - "title": "PersonStatus", + "title": "OperationTypes", "type": "string" }, - "Thing": { + "PropertyAffordance": { "additionalProperties": false, - "description": "Represents a Thing", + "description": "An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated.", "properties": { - "age_in_years": { - "description": "Number of years since birth", - "type": "integer" + "description": { + "type": "string" }, - "birth_date": { - "description": "Date on which a person is born", - "format": "date", + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", "type": "string" }, - "description": { - "description": "A human-readable description for a thing", + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, + "name": { + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", "type": "string" }, - "id": { - "description": "A unique identifier for a thing", + "observable": { + "description": "A hint that indicates whether Servients hosting the Thing and Intermediaries should probide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property.", + "type": "boolean" + }, + "propertyName": { + "description": "Used to store the indexing name in the parent object when this schema appears as a property of an object schema.", "type": "string" }, - "name": { - "description": "A human-readable name for a thing", + "readonly": { + "description": "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false).", + "type": "string" + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", "type": "string" }, - "primary_email": { - "description": "The main email address of a person", - "pattern": "^\\S+@[\\S+\\.]+\\S+", + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", "type": "string" }, - "vital_status": { - "$ref": "#/$defs/PersonStatus", - "description": "living or dead status" + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "uriVariables": { + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + }, + "writeOnly": { + "description": "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false).", + "type": "string" } }, "required": [ - "id" + "name" ], - "title": "Thing", + "title": "PropertyAffordance", + "type": "object" + }, + "PropertyAffordance__identifier_optional": { + "additionalProperties": false, + "description": "An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated.", + "properties": { + "description": { + "type": "string" + }, + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, + "name": { + "description": "Indexing property to store entity names when serializing them in a JSON-LD @index container.", + "type": "string" + }, + "observable": { + "description": "A hint that indicates whether Servients hosting the Thing and Intermediaries should probide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property.", + "type": "boolean" + }, + "propertyName": { + "description": "Used to store the indexing name in the parent object when this schema appears as a property of an object schema.", + "type": "string" + }, + "readonly": { + "description": "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false).", + "type": "string" + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", + "type": "string" + }, + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "uriVariables": { + "description": "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology.", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + }, + "writeOnly": { + "description": "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false).", + "type": "string" + } + }, + "required": [], + "title": "PropertyAffordance", "type": "object" }, - "ThingCollection": { + "SecurityScheme": { "additionalProperties": false, - "description": "A holder for Thing objects", + "description": "", "properties": { - "entries": { + "@type": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "descriptions": { "additionalProperties": { "anyOf": [ { - "$ref": "#/$defs/Thing__identifier_optional" + "$ref": "#/$defs/MultiLanguage__identifier_optional" }, { "type": "null" } ] }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", "type": "object" + }, + "proxy": { + "description": "URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint.", + "type": "string" + }, + "scheme": { + "$ref": "#/$defs/SecuritySchemeType" } }, - "title": "ThingCollection", + "required": [ + "scheme" + ], + "title": "SecurityScheme", "type": "object" }, - "Thing__identifier_optional": { + "SecuritySchemeType": { + "description": "", + "enum": [ + "nosec", + "combo", + "basic", + "digest", + "bearer", + "psk", + "oauth2", + "apikey", + "auto" + ], + "title": "SecuritySchemeType", + "type": "string" + }, + "Thing": { "additionalProperties": false, - "description": "Represents a Thing", + "description": "An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things.", "properties": { - "age_in_years": { - "description": "Number of years since birth", - "type": "integer" + "@type": { + "items": { + "type": "string" + }, + "type": "array" + }, + "actions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/ActionAffordance__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "All Action-based interaction affordances of the Thing.", + "type": "object" }, - "birth_date": { - "description": "Date on which a person is born", - "format": "date", + "base": { + "description": "Define the base URI that is used for all relative URI references throughout a TD document.", + "type": "string" + }, + "created": { + "description": "Provides information when the TD instance was created.", + "format": "date-time", "type": "string" }, "description": { - "description": "A human-readable description for a thing", "type": "string" }, + "descriptionInLanguage": { + "description": "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", + "type": "string" + }, + "descriptions": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "TODO, check, according to the description a description should not contain a lang tag.", + "type": "object" + }, + "events": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/EventAffordance__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "All Event-based interaction affordances of the Thing.", + "type": "object" + }, + "forms": { + "description": "Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings.", + "items": { + "$ref": "#/$defs/Form" + }, + "type": "array" + }, "id": { - "description": "A unique identifier for a thing", + "description": "TODO", "type": "string" }, - "name": { - "description": "A human-readable name for a thing", + "instance": { + "description": "Provides a version identicator of this TD instance.", + "type": "string" + }, + "links": { + "description": "Provides Web links to arbitrary resources that relate to the specified Thing Description.", + "items": { + "$ref": "#/$defs/Link" + }, + "type": "array" + }, + "modified": { + "description": "Provides information when the TD instance was last modified.", + "format": "date-time", + "type": "string" + }, + "profile": { + "description": "Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/PropertyAffordance__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "description": "All Property-based interaction affordances of the Thing.", + "type": "object" + }, + "schemaDefinitions": { + "description": "TODO CHECK", + "items": { + "$ref": "#/$defs/DataSchema" + }, + "type": "array" + }, + "security": { + "description": "A Thing may define abstract security schemes, used to configure the secure access of (a set of) affordance(s). TODO: check", + "items": { + "type": "string" + }, + "type": "array" + }, + "securityDefinitions": { + "description": "A security scheme applied to a (set of) affordance(s). TODO check", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/SecuritySchemeType" + } + ], + "type": "string" + }, + "type": "array" + }, + "supportContact": { + "description": "Provides information about the TD maintainer as URI scheme (e.g., mailto [[RFC6068]],tel [[RFC3966]],https [[RFC9112]]).", + "type": "string" + }, + "title": { + "description": "Provides a human-readable title (e.g., display a text for UI representation) based on a default language.", "type": "string" }, - "primary_email": { - "description": "The main email address of a person", - "pattern": "^\\S+@[\\S+\\.]+\\S+", + "titleInLanguage": { + "description": "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description.", "type": "string" }, - "vital_status": { - "$ref": "#/$defs/PersonStatus", - "description": "living or dead status" + "titles": { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/MultiLanguage__identifier_optional" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + "version": { + "$ref": "#/$defs/VersionInfo" } }, - "required": [], + "required": [ + "id" + ], "title": "Thing", "type": "object" + }, + "VersionInfo": { + "additionalProperties": false, + "description": "Provides version information.", + "properties": { + "instance": { + "type": "string" + }, + "model": { + "type": "string" + } + }, + "required": [ + "instance" + ], + "title": "VersionInfo", + "type": "object" } }, - "$id": "https://w3id.org/mahda/thing-description-schema", + "$id": "td", "$schema": "https://json-schema.org/draft/2019-09/schema", "additionalProperties": true, - "description": "A holder for Thing objects", "metamodel_version": "1.7.0", - "properties": { - "entries": { - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/$defs/Thing__identifier_optional" - }, - { - "type": "null" - } - ] - }, - "type": "object" - } - }, "title": "thing-description-schema", "type": "object", "version": null diff --git a/project/owl/thing_description_schema.owl.ttl b/project/owl/thing_description_schema.owl.ttl index 168401c..45eb18f 100644 --- a/project/owl/thing_description_schema.owl.ttl +++ b/project/owl/thing_description_schema.owl.ttl @@ -1,182 +1,1287 @@ -@prefix PATO: . -@prefix dcterms: . +@prefix dct: . +@prefix hctl: . +@prefix jsonschema: . @prefix linkml: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix schema1: . @prefix skos: . -@prefix thing_description_schema: . +@prefix td: . +@prefix wotsec: . @prefix xsd: . -thing_description_schema:ThingCollection a owl:Class, +td:SecurityScheme a owl:Class, linkml:ClassDefinition ; - rdfs:label "ThingCollection" ; + rdfs:label "SecurityScheme" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:proxy ], + [ a owl:Restriction ; + owl:allValuesFrom td:SecuritySchemeType ; + owl:onProperty td:scheme ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:descriptions ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:proxy ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty thing_description_schema:entries ], + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:proxy ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:scheme ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:description ], [ a owl:Restriction ; - owl:allValuesFrom thing_description_schema:Thing ; - owl:onProperty thing_description_schema:entries ] ; - skos:definition "A holder for Thing objects" ; - skos:inScheme . + owl:minCardinality 0 ; + owl:onProperty td:descriptions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:scheme ] ; + skos:inScheme . + +linkml:topValue a owl:DatatypeProperty ; + rdfs:label "value" . -thing_description_schema:NamedThing a owl:Class, +td:AdditionalExpectedResponse a owl:Class, linkml:ClassDefinition ; - rdfs:label "NamedThing" ; + rdfs:label "AdditionalExpectedResponse" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty thing_description_schema:id ], + owl:minCardinality 0 ; + owl:onProperty td:success ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty td:success ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty thing_description_schema:description ], + owl:onProperty td:schema ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty thing_description_schema:description ], + owl:onProperty td:schema ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:schema ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:success ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:additionalOutputSchema ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:additionalOutputSchema ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty thing_description_schema:name ], + owl:onProperty td:additionalOutputSchema ], + td:ExpectedResponse ; + skos:definition "Communication metadata describing the expected response message for additional responses." ; + skos:exactMatch hctl:AdditionalExpectedResponse ; + skos:inScheme . + +td:Link a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Link" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:anchor ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty thing_description_schema:id ], + owl:maxCardinality 1 ; + owl:onProperty td:sizes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty thing_description_schema:id ], + owl:onProperty td:relation ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty thing_description_schema:name ], + owl:onProperty td:sizes ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty thing_description_schema:name ], + owl:onProperty td:relation ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:type ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:target ], + [ a owl:Restriction ; + owl:allValuesFrom [ a rdfs:Datatype ; + owl:onDatatype xsd:string ; + owl:withRestrictions ( [ xsd:pattern "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$" ] ) ] ; + owl:onProperty td:hreflang ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty thing_description_schema:description ] ; - skos:definition "A generic grouping for any identifiable entity" ; - skos:exactMatch schema1:Thing ; - skos:inScheme . + owl:onProperty td:hreflang ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:hintsAtMediaType ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:type ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:anchor ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:relation ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:target ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:type ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:target ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:hintsAtMediaType ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:hreflang ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:sizes ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:hintsAtMediaType ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:anchor ] ; + skos:definition "A link can be viewed as a statement of the form link context that has a relation type resource at link target\", where the optional target attributes may further describe the resource." ; + skos:exactMatch hctl:Link ; + skos:inScheme . -thing_description_schema:Thing a owl:Class, +td:Thing a owl:Class, linkml:ClassDefinition ; rdfs:label "Thing" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty td:modified ], + [ a owl:Restriction ; + owl:allValuesFrom td:Form ; + owl:onProperty td:forms ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty thing_description_schema:birth_date ], + owl:onProperty td:links ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:security ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty thing_description_schema:vital_status ], + owl:onProperty td:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:properties ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:titleInLanguage ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:titles ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:created ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:security ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:securityDefinitions ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:version ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:instance ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:modified ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:instance ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:instance ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:profile ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:modified ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:forms ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:titles ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:supportContact ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:supportContact ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:base ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:version ], + [ a owl:Restriction ; + owl:allValuesFrom td:ActionAffordance ; + owl:onProperty td:actions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:allValuesFrom td:Link ; + owl:onProperty td:links ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:profile ], [ a owl:Restriction ; owl:allValuesFrom [ a rdfs:Datatype ; - owl:onDatatype xsd:string ; - owl:withRestrictions ( [ xsd:pattern "^\\S+@[\\S+\\.]+\\S+" ] ) ] ; - owl:onProperty thing_description_schema:primary_email ], + owl:unionOf ( linkml:String td:SecuritySchemeType ) ] ; + owl:onProperty td:securityDefinitions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:base ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:allValuesFrom td:PropertyAffordance ; + owl:onProperty td:properties ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:descriptions ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:base ], + [ a owl:Restriction ; + owl:allValuesFrom td:VersionInfo ; + owl:onProperty td:version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:actions ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:created ], + [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:schemaDefinitions ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:descriptions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:titleInLanguage ], + [ a owl:Restriction ; + owl:allValuesFrom td:EventAffordance ; + owl:onProperty td:events ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty td:created ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:events ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:supportContact ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:schemaDefinitions ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:titleInLanguage ] ; + skos:definition "An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things." ; + skos:exactMatch td:Thing ; + skos:inScheme . + +td:VersionInfo a owl:Class, + linkml:ClassDefinition ; + rdfs:label "VersionInfo" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:instance ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:model ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:model ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:instance ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:instance ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:model ] ; + skos:definition "Provides version information." ; + skos:exactMatch schema1:version ; + skos:inScheme . + +wotsec:APIKeySecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "apikey" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:AutoSecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "auto" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:BasicSecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "basic" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:BearerSecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "bearer" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:ComboSecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "combo" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:DigestSecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "digest" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:NoSecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "nosec" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:OAuth2SecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "oauth2" ; + rdfs:subClassOf td:SecuritySchemeType . + +wotsec:PSKSecurityScheme a owl:Class, + td:SecuritySchemeType ; + rdfs:label "psk" ; + rdfs:subClassOf td:SecuritySchemeType . + +td:ActionAffordance a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ActionAffordance" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty td:safe ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:output ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty td:synchronous ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:synchronous ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:idempotent ], + [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:output ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty td:idempotent ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:safe ], + [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:input ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:safe ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:output ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:synchronous ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:idempotent ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:input ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:input ], + td:InteractionAffordance ; + skos:definition "An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time)." ; + skos:exactMatch td:ActionAffordance ; + skos:inScheme . + +td:EventAffordance a owl:Class, + linkml:ClassDefinition ; + rdfs:label "EventAffordance" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:notificationResponse ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:notification ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:notification ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:subscription ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:notificationResponse ], + [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:notification ], + [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:subscription ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:cancellation ], + [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:cancellation ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:notificationResponse ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:cancellation ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:subscription ], + td:InteractionAffordance ; + skos:definition "An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overhearing alerts)." ; + skos:exactMatch td:EventAffordance ; + skos:inScheme . + +td:ExpectedResponse a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ExpectedResponse" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:contentType ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:contentType ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:contentType ] ; + skos:definition "Communication metadata describing the expected response message for the primary response." ; + skos:exactMatch hctl:ExpectedResponse ; + skos:inScheme . + +td:Form a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Form" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:contentType ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:subprotocol ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:scopes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:contentCoding ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty thing_description_schema:age_in_years ], + owl:onProperty td:returns ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty thing_description_schema:primary_email ], + owl:onProperty td:subprotocol ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty thing_description_schema:birth_date ], + owl:onProperty td:scopes ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; - owl:onProperty thing_description_schema:birth_date ], + owl:allValuesFrom td:anyUri ; + owl:onProperty td:href ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:href ], + [ a owl:Restriction ; + owl:allValuesFrom td:AdditionalExpectedResponse ; + owl:onProperty td:additionalReturns ], + [ a owl:Restriction ; + owl:allValuesFrom td:OperationTypes ; + owl:onProperty td:operationType ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:target ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:scopes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:contentType ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty thing_description_schema:age_in_years ], + owl:onProperty td:securityDefinitions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:target ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:contentCoding ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty thing_description_schema:primary_email ], + owl:onProperty td:contentCoding ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty thing_description_schema:age_in_years ], + owl:minCardinality 0 ; + owl:onProperty td:subprotocol ], [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:href ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:securityDefinitions ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:operationType ], + [ a owl:Restriction ; + owl:allValuesFrom td:ExpectedResponse ; + owl:onProperty td:returns ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:returns ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:contentType ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:securityDefinitions ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:additionalReturns ], + [ a owl:Restriction ; + owl:allValuesFrom td:anyUri ; + owl:onProperty td:target ] ; + skos:definition "A form can be viewed as a statement of to perform an operation type on form context, make a request method to submission target, where the optional form fields may further describe the required request. In Thing Descriptions, the form context is the surrounding Object, such as Properties, Actions, and Events or the Thing itself for meta-interactions." ; + skos:exactMatch hctl:Form ; + skos:inScheme . + +td:PropertyAffordance a owl:Class, + linkml:ClassDefinition ; + rdfs:label "PropertyAffordance" ; + rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty thing_description_schema:vital_status ], + owl:onProperty td:observable ], [ a owl:Restriction ; - owl:allValuesFrom thing_description_schema:PersonStatus ; - owl:onProperty thing_description_schema:vital_status ], - thing_description_schema:NamedThing ; - skos:definition "Represents a Thing" ; - skos:inScheme . + owl:allValuesFrom linkml:Boolean ; + owl:onProperty td:observable ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:observable ], + td:DataSchema, + td:InteractionAffordance ; + skos:definition "An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated." ; + skos:exactMatch td:PropertyAffordance ; + skos:inScheme . -PATO:0001421 a owl:Class, - thing_description_schema:PersonStatus ; - rdfs:label "ALIVE" ; - rdfs:subClassOf thing_description_schema:PersonStatus . +td:actions a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "actions" ; + skos:definition "All Action-based interaction affordances of the Thing." ; + skos:inScheme . -PATO:0001422 a owl:Class, - thing_description_schema:PersonStatus ; - rdfs:label "DEAD" ; - rdfs:subClassOf thing_description_schema:PersonStatus . +td:additionalReturns a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "additionalReturns" ; + skos:definition "This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific response code), and may also have its own data schema." ; + skos:inScheme . - a owl:Class, - thing_description_schema:PersonStatus ; - rdfs:label "UNKNOWN" ; - rdfs:subClassOf thing_description_schema:PersonStatus . +td:cancelAction a owl:Class, + td:OperationTypes ; + rdfs:label "cancelaction" ; + rdfs:subClassOf td:OperationTypes . -thing_description_schema:entries a owl:ObjectProperty, +td:events a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "entries" ; - skos:inScheme . + rdfs:label "events" ; + skos:definition "All Event-based interaction affordances of the Thing." ; + skos:inScheme . -thing_description_schema:age_in_years a owl:ObjectProperty, +td:invokeAction a owl:Class, + td:OperationTypes ; + rdfs:label "invokeaction" ; + rdfs:subClassOf td:OperationTypes . + +td:links a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "age_in_years" ; - rdfs:range linkml:Integer ; - skos:definition "Number of years since birth" ; - skos:inScheme . + rdfs:label "links" ; + skos:definition "Provides Web links to arbitrary resources that relate to the specified Thing Description." ; + skos:inScheme . + +td:observeAllProperties a owl:Class, + td:OperationTypes ; + rdfs:label "observeallproperties" ; + rdfs:subClassOf td:OperationTypes . -thing_description_schema:birth_date a owl:ObjectProperty, +td:observeProperty a owl:Class, + td:OperationTypes ; + rdfs:label "observeproperty" ; + rdfs:subClassOf td:OperationTypes . + +td:operationType a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "birth_date" ; - rdfs:range linkml:Date ; - skos:definition "Date on which a person is born" ; - skos:inScheme . + rdfs:label "operationType" ; + skos:definition "Indicates the semantic intention of performing the operation(s) described by the form." ; + skos:inScheme . -thing_description_schema:description a owl:ObjectProperty, +td:profile a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "description" ; - skos:definition "A human-readable description for a thing" ; - skos:inScheme . + rdfs:label "profile" ; + skos:definition "Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation." ; + skos:inScheme . -thing_description_schema:id a owl:ObjectProperty, +td:properties a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "properties" ; + skos:definition "All Property-based interaction affordances of the Thing." ; + skos:inScheme . + +td:queryAction a owl:Class, + td:OperationTypes ; + rdfs:label "queryaction" ; + rdfs:subClassOf td:OperationTypes . + +td:queryAllActions a owl:Class, + td:OperationTypes ; + rdfs:label "queryallactions" ; + rdfs:subClassOf td:OperationTypes . + +td:readAllProperties a owl:Class, + td:OperationTypes ; + rdfs:label "readallproperties" ; + rdfs:subClassOf td:OperationTypes . + +td:readMultipleProperties a owl:Class, + td:OperationTypes ; + rdfs:label "readmultipleproperties" ; + rdfs:subClassOf td:OperationTypes . + +td:readProperty a owl:Class, + td:OperationTypes ; + rdfs:label "readproperty" ; + rdfs:subClassOf td:OperationTypes . + +td:schemaDefinitions a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "schemaDefinitions" ; + skos:definition "TODO CHECK" ; + skos:inScheme . + +td:security a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "security" ; + skos:definition "A Thing may define abstract security schemes, used to configure the secure access of (a set of) affordance(s). TODO: check" ; + skos:inScheme . + +td:subscribeAllEvents a owl:Class, + td:OperationTypes ; + rdfs:label "subscribeallevents" ; + rdfs:subClassOf td:OperationTypes . + +td:subscribeEvent a owl:Class, + td:OperationTypes ; + rdfs:label "subscribeevent" ; + rdfs:subClassOf td:OperationTypes . + +td:unobserveAllProperties a owl:Class, + td:OperationTypes ; + rdfs:label "unobserveallproperties" ; + rdfs:subClassOf td:OperationTypes . + +td:unobserveProperty a owl:Class, + td:OperationTypes ; + rdfs:label "unobserveproperty" ; + rdfs:subClassOf td:OperationTypes . + +td:unsubscribeAllEvents a owl:Class, + td:OperationTypes ; + rdfs:label "unsubscribeallevents" ; + rdfs:subClassOf td:OperationTypes . + +td:unsubscribeEvent a owl:Class, + td:OperationTypes ; + rdfs:label "unsubscribeevent" ; + rdfs:subClassOf td:OperationTypes . + +td:uriVariables a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "uriVariables" ; + skos:definition "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology." ; + skos:inScheme . + +td:writeMultipleProperties a owl:Class, + td:OperationTypes ; + rdfs:label "writemultipleproperties" ; + rdfs:subClassOf td:OperationTypes . + +td:writeProperty a owl:Class, + td:OperationTypes ; + rdfs:label "writeproperty" ; + rdfs:subClassOf td:OperationTypes . + + a owl:Class, + td:OperationTypes ; + rdfs:label "writeallproperties" ; + rdfs:subClassOf td:OperationTypes . + +td:additionalOutputSchema a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "additionalOutputSchema" ; + skos:definition "This optional term can be used to define a data schema for an additional response if it differs from the default output data schema. Rather than a DataSchema object, the name of a previous definition given in a SchemaDefinitions map must be used." ; + skos:inScheme . + +td:anchor a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "anchor" ; + skos:definition "By default, the context, or anchor, of a link conveyed in the Link header field is the URL of the representation it is associated with, as defined in RFC7231, Section 3.1.4.1, and is serialized as a URI." ; + skos:inScheme . + +td:base a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "base" ; + skos:definition "Define the base URI that is used for all relative URI references throughout a TD document." ; + skos:inScheme . + +td:cancellation a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "cancellation" ; + skos:definition "Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook." ; + skos:inScheme . + +td:contentCoding a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "contentCoding" ; + skos:definition "Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Examples of content coding include \\\"gzip\\\", \\\"deflate\\\", etc." ; + skos:inScheme . + +td:created a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "created" ; + skos:definition "Provides information when the TD instance was created." ; + skos:inScheme . + +td:hintsAtMediaType a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "hintsAtMediaType" ; + skos:definition "Target attribute providing a hint indicating what the media type [IANA-MEDIA-TYPES] of the result of dereferencing the link should be." ; + skos:inScheme . + +td:href a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "href" ; + skos:inScheme . + +td:hreflang a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "hreflang" ; + skos:definition "The hreflang attribute specifies the language of a linked document. The value of this must be a valid language tag [[BCP47]]." ; + skos:inScheme . + +td:id a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "id" ; - rdfs:range linkml:Uriorcurie ; - skos:definition "A unique identifier for a thing" ; - skos:inScheme . + rdfs:range td:anyUri ; + skos:definition "TODO" ; + skos:inScheme . + +td:idempotent a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "idempotent" ; + skos:definition "Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same results, if present, based on the same input." ; + skos:inScheme . + +td:input a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "input" ; + skos:definition "Used to define the input data schema of the action." ; + skos:inScheme . -thing_description_schema:name a owl:ObjectProperty, +td:key a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "key" ; + skos:inScheme . + +td:model a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "model" ; + skos:inScheme . + +td:modified a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "modified" ; + skos:definition "Provides information when the TD instance was last modified." ; + skos:inScheme . + +td:name a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "name" ; - skos:definition "A human-readable name for a thing" ; - skos:inScheme . + skos:definition "Indexing property to store entity names when serializing them in a JSON-LD @index container." ; + skos:inScheme . + +td:notification a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "notification" ; + skos:definition "Defines the data schema of the Event instance messages pushed by the Thing." ; + skos:inScheme . + +td:notificationResponse a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "notificationResponse" ; + skos:definition "Defines the data schema of the Event response messages sent by the consumer in a response to a data message." ; + skos:inScheme . + +td:observable a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "observable" ; + skos:definition "A hint that indicates whether Servients hosting the Thing and Intermediaries should probide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property." ; + skos:inScheme . + +td:output a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "output" ; + skos:definition "Used to define the output data schema of the action." ; + skos:inScheme . + +td:propertyName a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "propertyName" ; + skos:definition "Used to store the indexing name in the parent object when this schema appears as a property of an object schema." ; + skos:inScheme . + +td:proxy a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "proxy" ; + skos:definition "URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint." ; + skos:inScheme . + +td:readonly a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "readonly" ; + skos:definition "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false)." ; + skos:inScheme . + +td:relation a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "relation" ; + skos:definition "A link relation type identifies the semantics of a link." ; + skos:inScheme . + +td:returns a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "returns" ; + skos:definition "This optional term can be used if, e.g., the output communication metadata differ from input metadata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the response messages." ; + skos:inScheme . + +td:safe a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "safe" ; + skos:definition "Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action." ; + skos:inScheme . + +td:schema a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "schema" ; + skos:definition "TODO Check, was not in hctl ontology, if not could be source of discrepancy" ; + skos:inScheme . + +td:scheme a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "scheme" ; + skos:inScheme . + +td:scopes a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "scopes" ; + skos:definition "TODO Check, was not in hctl ontology, if not could be source of discrepancy" ; + skos:inScheme . + +td:sizes a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "sizes" ; + skos:definition "Target attribute that specifies one or more sizes for the referenced icon. Only applicable for relation type 'icon'. The value pattern follows {Height}x{Width} (e.g., \\\"16x16\\\", \\\"16x16 32x32\\\")." ; + skos:inScheme . + +td:subprotocol a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "subprotocol" ; + skos:definition "Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options." ; + skos:inScheme . + +td:subscription a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "subscription" ; + skos:definition "Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks." ; + skos:inScheme . -thing_description_schema:primary_email a owl:ObjectProperty, +td:success a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "primary_email" ; - skos:definition "The main email address of a person" ; - skos:inScheme . + rdfs:label "success" ; + skos:definition "Signals if the additional response should not be considered an error." ; + skos:inScheme . -thing_description_schema:vital_status a owl:ObjectProperty, +td:supportContact a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "vital_status" ; - rdfs:range thing_description_schema:PersonStatus ; - skos:definition "living or dead status" ; - skos:inScheme . + rdfs:label "supportContact" ; + skos:definition "Provides information about the TD maintainer as URI scheme (e.g., mailto [[RFC6068]],tel [[RFC3966]],https [[RFC9112]])." ; + skos:inScheme . + +td:synchronous a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "synchronous" ; + skos:definition "Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made." ; + skos:inScheme . + +td:type a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "type" ; + skos:inScheme . + +td:version a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "version" ; + skos:inScheme . + +td:writeOnly a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "writeOnly" ; + skos:definition "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false)." ; + skos:inScheme . + + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "@type" ; + skos:inScheme . + +td:InteractionAffordance a owl:Class, + linkml:ClassDefinition ; + rdfs:label "InteractionAffordance" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:uriVariables ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:forms ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:titleInLanguage ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:titles ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:descriptions ], + [ a owl:Restriction ; + owl:allValuesFrom td:DataSchema ; + owl:onProperty td:uriVariables ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:titleInLanguage ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:descriptions ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:allValuesFrom td:Form ; + owl:onProperty td:forms ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:titles ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:titleInLanguage ] ; + skos:definition "TOOD" ; + skos:exactMatch td:InteractionAffordance ; + skos:inScheme . + +td:forms a owl:ObjectProperty, + linkml:SlotDefinition . + +td:titles a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "titles" ; + rdfs:range td:MultiLanguage ; + skos:inScheme . + +td:securityDefinitions a owl:ObjectProperty, + linkml:SlotDefinition . + +td:contentType a owl:ObjectProperty, + linkml:SlotDefinition . + +td:descriptions a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "descriptions" ; + rdfs:range td:MultiLanguage ; + skos:definition "TODO, check, according to the description a description should not contain a lang tag." ; + skos:inScheme . + +td:instance a owl:ObjectProperty, + linkml:SlotDefinition . + +td:target a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "target" ; + rdfs:range td:anyUri ; + skos:definition "Target IRI of a link or submission target of a Form" ; + skos:inScheme . + +td:DataSchema a owl:Class, + linkml:ClassDefinition ; + rdfs:label "DataSchema" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:readonly ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:writeOnly ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:propertyName ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:title ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:propertyName ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:writeOnly ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:descriptionInLanguage ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:titleInLanguage ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:readonly ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty td:readonly ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:writeOnly ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:titleInLanguage ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:titleInLanguage ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:propertyName ], + [ a owl:Restriction ; + owl:allValuesFrom td:MultiLanguage ; + owl:onProperty td:description ] ; + skos:definition "Metadata that describes the data format used. It can be used for validation." ; + skos:exactMatch jsonschema:DataSchema ; + skos:inScheme . + +td:descriptionInLanguage a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "descriptionInLanguage" ; + rdfs:range td:MultiLanguage ; + skos:definition "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + skos:inScheme . + +td:title a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "title" ; + rdfs:range td:MultiLanguage ; + skos:definition "Provides a human-readable title (e.g., display a text for UI representation) based on a default language." ; + skos:inScheme . + +td:titleInLanguage a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "titleInLanguage" ; + rdfs:range td:MultiLanguage ; + skos:definition "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + skos:inScheme . + +td:anyUri a owl:Class, + linkml:TypeDefinition ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onDataRange td:anyUri ; + owl:onProperty linkml:topValue ; + owl:qualifiedCardinality 1 ] . + +td:description a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "description" ; + rdfs:range td:MultiLanguage ; + skos:inScheme . + +td:SecuritySchemeType a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( wotsec:NoSecurityScheme wotsec:ComboSecurityScheme wotsec:BasicSecurityScheme wotsec:DigestSecurityScheme wotsec:BearerSecurityScheme wotsec:PSKSecurityScheme wotsec:OAuth2SecurityScheme wotsec:APIKeySecurityScheme wotsec:AutoSecurityScheme ) ; + linkml:permissible_values wotsec:APIKeySecurityScheme, + wotsec:AutoSecurityScheme, + wotsec:BasicSecurityScheme, + wotsec:BearerSecurityScheme, + wotsec:ComboSecurityScheme, + wotsec:DigestSecurityScheme, + wotsec:NoSecurityScheme, + wotsec:OAuth2SecurityScheme, + wotsec:PSKSecurityScheme . + +td:MultiLanguage a owl:Class, + linkml:ClassDefinition ; + rdfs:label "MultiLanguage" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty td:key ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty td:key ], + [ a owl:Restriction ; + owl:allValuesFrom [ a rdfs:Datatype ; + owl:onDatatype xsd:string ; + owl:withRestrictions ( [ xsd:pattern "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$" ] ) ] ; + owl:onProperty td:key ] ; + skos:inScheme . -thing_description_schema:PersonStatus a owl:Class, +td:OperationTypes a owl:Class, linkml:EnumDefinition ; - owl:unionOf ( PATO:0001421 PATO:0001422 ) ; - linkml:permissible_values PATO:0001421, - PATO:0001422, - . + owl:unionOf ( td:readProperty td:writeProperty td:observeProperty td:unobserveProperty td:invokeAction td:queryAction td:cancelAction td:subscribeEvent td:unsubscribeEvent td:readAllProperties td:readMultipleProperties td:writeMultipleProperties td:observeAllProperties td:unobserveAllProperties td:subscribeAllEvents td:unsubscribeAllEvents td:queryAllActions ) ; + linkml:permissible_values td:cancelAction, + td:invokeAction, + td:observeAllProperties, + td:observeProperty, + td:queryAction, + td:queryAllActions, + td:readAllProperties, + td:readMultipleProperties, + td:readProperty, + td:subscribeAllEvents, + td:subscribeEvent, + td:unobserveAllProperties, + td:unobserveProperty, + td:unsubscribeAllEvents, + td:unsubscribeEvent, + td:writeMultipleProperties, + td:writeProperty, + . - a owl:Ontology ; + a owl:Ontology ; rdfs:label "thing-description-schema" ; - dcterms:license "MIT" ; - dcterms:title "thing-description-schema" ; - rdfs:seeAlso ; - skos:definition "Thing Description Standard" . + dct:license "MIT" ; + dct:title "thing-description-schema" ; + rdfs:seeAlso ; + skos:definition """LinkML schema for modelling the W3C Web of Things Thing Description information model. This schema is used to generate +JSON Schema, SHACL shapes, and RDF.""" . diff --git a/project/prefixmap/thing_description_schema.yaml b/project/prefixmap/thing_description_schema.yaml index 2441b0d..a284612 100644 --- a/project/prefixmap/thing_description_schema.yaml +++ b/project/prefixmap/thing_description_schema.yaml @@ -1,11 +1,33 @@ { - "PATO": "http://purl.obolibrary.org/obo/PATO_", - "biolink": "https://w3id.org/biolink/", - "example": "https://example.org/", + "dct": "http://purl.org/dc/terms/", + "dcterms": "http://purl.org/dc/terms/", + "hctl": "https://www.w3.org/2019/wot/hypermedia#", + "htv": "http://www.w3.org/2011/http#", + "jsonschema": "https://www.w3.org/2019/wot/json-schema#", "linkml": "https://w3id.org/linkml/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "schema": "http://schema.org/", - "thing_description_schema": "https://w3id.org/mahda/thing-description-schema/", - "NamedThing": { - "@id": "schema:Thing" + "td": "https://www.w3.org/2019/wot/td#", + "tm": "https://www.w3.org/2019/wot/tm#", + "wotsec": "https://www.w3.org/2019/wot/security#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "AdditionalExpectedResponse": { + "@id": "hctl:AdditionalExpectedResponse" + }, + "DataSchema": { + "@id": "jsonschema:DataSchema" + }, + "ExpectedResponse": { + "@id": "hctl:ExpectedResponse" + }, + "Form": { + "@id": "hctl:Form" + }, + "Link": { + "@id": "hctl:Link" + }, + "VersionInfo": { + "@id": "schema:version" } -} +} \ No newline at end of file diff --git a/project/protobuf/thing_description_schema.proto b/project/protobuf/thing_description_schema.proto index 33f6ae9..b960c14 100644 --- a/project/protobuf/thing_description_schema.proto +++ b/project/protobuf/thing_description_schema.proto @@ -1,23 +1,162 @@ -// A generic grouping for any identifiable entity -message NamedThing + syntax="proto3"; + package +// metamodel_version: 1.7.0 +// An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time). +message ActionAffordance { - uriorcurie id = 0 + repeated multiLanguage titles = 0 + repeated multiLanguage descriptions = 0 + multiLanguage title = 0 + multiLanguage description = 0 + multiLanguage titleInLanguage = 0 + multiLanguage descriptionInLanguage = 0 string name = 0 - string description = 0 + repeated dataSchema uriVariables = 0 + repeated form forms = 0 + boolean safe = 0 + boolean synchronous = 0 + boolean idempotent = 0 + dataSchema input = 0 + dataSchema output = 0 } -// Represents a Thing -message Thing +// Communication metadata describing the expected response message for additional responses. +message AdditionalExpectedResponse + { + string contentType = 0 + string additionalOutputSchema = 0 + boolean success = 0 + string schema = 0 + } +// Metadata that describes the data format used. It can be used for validation. +message DataSchema + { + multiLanguage description = 0 + multiLanguage title = 0 + multiLanguage titleInLanguage = 0 + multiLanguage descriptionInLanguage = 0 + string propertyName = 0 + string writeOnly = 0 + string readonly = 0 + } +// An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overhearing alerts). +message EventAffordance + { + repeated multiLanguage titles = 0 + repeated multiLanguage descriptions = 0 + multiLanguage title = 0 + multiLanguage description = 0 + multiLanguage titleInLanguage = 0 + multiLanguage descriptionInLanguage = 0 + string name = 0 + repeated dataSchema uriVariables = 0 + repeated form forms = 0 + dataSchema subscription = 0 + dataSchema cancellation = 0 + dataSchema notification = 0 + dataSchema notificationResponse = 0 + } +// Communication metadata describing the expected response message for the primary response. +message ExpectedResponse + { + string contentType = 0 + } +// A form can be viewed as a statement of to perform an operation type on form context, make a request method to submission target, where the optional form fields may further describe the required request. In Thing Descriptions, the form context is the surrounding Object, such as Properties, Actions, and Events or the Thing itself for meta-interactions. +message Form + { + anyUri target = 0 + anyUri href = 0 + string contentType = 0 + string contentCoding = 0 + string securityDefinitions = 0 + string scopes = 0 + expectedResponse returns = 0 + repeated additionalExpectedResponse additionalReturns = 0 + string subprotocol = 0 + repeated operationTypes operationType = 0 + } +// TOOD +message InteractionAffordance { - uriorcurie id = 0 + repeated multiLanguage titles = 0 + repeated multiLanguage descriptions = 0 + multiLanguage title = 0 + multiLanguage description = 0 + multiLanguage titleInLanguage = 0 + multiLanguage descriptionInLanguage = 0 string name = 0 + repeated dataSchema uriVariables = 0 + repeated form forms = 0 + } +// A link can be viewed as a statement of the form link context that has a relation type resource at link target", where the optional target attributes may further describe the resource. +message Link + { + anyUri target = 0 + string hintsAtMediaType = 0 + string type = 0 + string relation = 0 + anyUri anchor = 0 + string sizes = 0 + string hreflang = 0 + } +message MultiLanguage + { + string key = 0 + } +// An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated. +message PropertyAffordance + { + repeated multiLanguage titles = 0 + repeated multiLanguage descriptions = 0 + multiLanguage title = 0 + multiLanguage description = 0 + multiLanguage titleInLanguage = 0 + multiLanguage descriptionInLanguage = 0 + string name = 0 + repeated dataSchema uriVariables = 0 + repeated form forms = 0 + boolean observable = 0 + string propertyName = 0 + string writeOnly = 0 + string readonly = 0 + } +message SecurityScheme + { + repeated string @type = 0 + repeated multiLanguage descriptions = 0 string description = 0 - string primaryEmail = 0 - date birthDate = 0 - integer ageInYears = 0 - personStatus vitalStatus = 0 + anyUri proxy = 0 + securitySchemeType scheme = 0 + } +// An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things. +message Thing + { + anyUri id = 0 + multiLanguage title = 0 + multiLanguage description = 0 + repeated multiLanguage titles = 0 + repeated multiLanguage descriptions = 0 + repeated string @type = 0 + multiLanguage titleInLanguage = 0 + multiLanguage descriptionInLanguage = 0 + repeated string securityDefinitions = 0 + repeated string security = 0 + repeated dataSchema schemaDefinitions = 0 + repeated anyUri profile = 0 + string instance = 0 + datetime created = 0 + datetime modified = 0 + anyUri supportContact = 0 + anyUri base = 0 + versionInfo version = 0 + repeated form forms = 0 + repeated link links = 0 + repeated propertyAffordance properties = 0 + repeated actionAffordance actions = 0 + repeated eventAffordance events = 0 } -// A holder for Thing objects -message ThingCollection +// Provides version information. +message VersionInfo { - repeated thing entries = 0 + string instance = 0 + string model = 0 } diff --git a/project/shacl/thing_description_schema.shacl.ttl b/project/shacl/thing_description_schema.shacl.ttl index ba220e5..ac46d18 100644 --- a/project/shacl/thing_description_schema.shacl.ttl +++ b/project/shacl/thing_description_schema.shacl.ttl @@ -1,79 +1,696 @@ -@prefix PATO: . +@prefix hctl: . +@prefix jsonschema: . @prefix rdf: . @prefix schema1: . @prefix sh: . -@prefix thing_description_schema: . +@prefix td: . +@prefix wotsec: . @prefix xsd: . -schema1:Thing a sh:NodeShape ; +td:InteractionAffordance a sh:NodeShape ; sh:closed true ; - sh:description "A generic grouping for any identifiable entity" ; + sh:description "TOOD" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:class jsonschema:DataSchema ; + sh:description "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path td:uriVariables ], + [ sh:class td:MultiLanguage ; + sh:description "TODO, check, according to the description a description should not contain a lang tag." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path td:descriptions ], + [ sh:datatype xsd:string ; + sh:description "Indexing property to store entity names when serializing them in a JSON-LD @index container." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path td:name ], + [ sh:class td:MultiLanguage ; + sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path schema1:identifier ], + sh:path td:titles ], + [ sh:class td:MultiLanguage ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path td:description ], + [ sh:class td:MultiLanguage ; + sh:description "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path td:titleInLanguage ], + [ sh:class td:MultiLanguage ; + sh:description "Provides a human-readable title (e.g., display a text for UI representation) based on a default language." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path td:title ], + [ sh:class hctl:Form ; + sh:description "Set of form hypermedia controls that describe how an operation can be performed." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path td:forms ], + [ sh:class td:MultiLanguage ; + sh:description "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path td:descriptionInLanguage ] ; + sh:targetClass td:InteractionAffordance . + +td:SecurityScheme a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:in ( wotsec:NoSecurityScheme wotsec:ComboSecurityScheme wotsec:BasicSecurityScheme wotsec:DigestSecurityScheme wotsec:BearerSecurityScheme wotsec:PSKSecurityScheme wotsec:OAuth2SecurityScheme wotsec:APIKeySecurityScheme wotsec:AutoSecurityScheme ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path td:scheme ], + [ sh:class td:MultiLanguage ; + sh:description "TODO, check, according to the description a description should not contain a lang tag." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path td:descriptions ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 2 ; - sh:path schema1:description ], + sh:path td:description ], + [ sh:datatype xsd:anyURI ; + sh:description "URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path td:proxy ], + [ sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; + sh:targetClass td:SecurityScheme . + +td:Thing a sh:NodeShape ; + sh:closed true ; + sh:description "An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path ], + [ sh:class jsonschema:DataSchema ; + sh:description "TODO CHECK" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 10 ; + sh:path td:schemaDefinitions ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "Provides a version identicator of this TD instance." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path td:instance ], + [ sh:datatype xsd:anyURI ; + sh:description "Provides information about the TD maintainer as URI scheme (e.g., mailto [[RFC6068]],tel [[RFC3966]],https [[RFC9112]])." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 15 ; + sh:path td:supportContact ], + [ sh:class td:ActionAffordance ; + sh:description "All Action-based interaction affordances of the Thing." ; + sh:nodeKind sh:IRI ; + sh:order 21 ; + sh:path td:actions ], + [ sh:class td:MultiLanguage ; + sh:description "Provides a human-readable title (e.g., display a text for UI representation) based on a default language." ; sh:maxCount 1 ; + sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path schema1:name ] ; - sh:targetClass schema1:Thing . + sh:path td:title ], + [ sh:class td:MultiLanguage ; + sh:description "TODO, check, according to the description a description should not contain a lang tag." ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path td:descriptions ], + [ sh:class td:MultiLanguage ; + sh:description "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 6 ; + sh:path td:titleInLanguage ], + [ sh:class td:EventAffordance ; + sh:description "All Event-based interaction affordances of the Thing." ; + sh:nodeKind sh:IRI ; + sh:order 22 ; + sh:path td:events ], + [ sh:class hctl:Link ; + sh:description "Provides Web links to arbitrary resources that relate to the specified Thing Description." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 19 ; + sh:path td:links ], + [ sh:description "A security scheme applied to a (set of) affordance(s). TODO check" ; + sh:or ( [ sh:datatype xsd:string ; + sh:nodeKind sh:Literal ] [ sh:in ( wotsec:NoSecurityScheme wotsec:ComboSecurityScheme wotsec:BasicSecurityScheme wotsec:DigestSecurityScheme wotsec:BearerSecurityScheme wotsec:PSKSecurityScheme wotsec:OAuth2SecurityScheme wotsec:APIKeySecurityScheme wotsec:AutoSecurityScheme ) ] ) ; + sh:order 8 ; + sh:path td:securityDefinitions ], + [ sh:datatype xsd:anyURI ; + sh:description "TODO" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path td:id ], + [ sh:class hctl:Form ; + sh:description "Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 18 ; + sh:path td:forms ], + [ sh:class td:MultiLanguage ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path td:description ], + [ sh:datatype xsd:dateTime ; + sh:description "Provides information when the TD instance was created." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 13 ; + sh:path td:created ], + [ sh:datatype xsd:dateTime ; + sh:description "Provides information when the TD instance was last modified." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path td:modified ], + [ sh:datatype xsd:anyURI ; + sh:description "Define the base URI that is used for all relative URI references throughout a TD document." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 16 ; + sh:path td:base ], + [ sh:datatype xsd:string ; + sh:description "A Thing may define abstract security schemes, used to configure the secure access of (a set of) affordance(s). TODO: check" ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path td:security ], + [ sh:class td:MultiLanguage ; + sh:description "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path td:descriptionInLanguage ], + [ sh:class schema1:version ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 17 ; + sh:path td:version ], + [ sh:class td:MultiLanguage ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path td:titles ], + [ sh:datatype xsd:anyURI ; + sh:description "Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation." ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path td:profile ], + [ sh:class td:PropertyAffordance ; + sh:description "All Property-based interaction affordances of the Thing." ; + sh:nodeKind sh:IRI ; + sh:order 20 ; + sh:path td:properties ] ; + sh:targetClass td:Thing . -thing_description_schema:ThingCollection a sh:NodeShape ; +schema1:version a sh:NodeShape ; sh:closed true ; - sh:description "A holder for Thing objects" ; + sh:description "Provides version information." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class thing_description_schema:Thing ; - sh:nodeKind sh:IRI ; + sh:property [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path td:model ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path thing_description_schema:entries ] ; - sh:targetClass thing_description_schema:ThingCollection . + sh:path td:instance ] ; + sh:targetClass schema1:version . -thing_description_schema:Thing a sh:NodeShape ; +hctl:AdditionalExpectedResponse a sh:NodeShape ; sh:closed true ; - sh:description "Represents a Thing" ; + sh:description "Communication metadata describing the expected response message for additional responses." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The main email address of a person" ; + sh:description "TODO Check, was not in hctl ontology, if not could be source of discrepancy" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path td:schema ], + [ sh:datatype xsd:string ; + sh:description "This optional term can be used to define a data schema for an additional response if it differs from the default output data schema. Rather than a DataSchema object, the name of a previous definition given in a SchemaDefinitions map must be used." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path schema1:email ; - sh:pattern "^\\S+@[\\S+\\.]+\\S+" ], - [ sh:datatype xsd:date ; - sh:description "Date on which a person is born" ; + sh:path td:additionalOutputSchema ], + [ sh:datatype xsd:boolean ; + sh:description "Signals if the additional response should not be considered an error." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path schema1:birthDate ], + sh:path td:success ], + [ sh:datatype xsd:string ; + sh:description "TODO Check, was not in hctl ontology, if not could be source of discrepancy" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path td:contentType ] ; + sh:targetClass hctl:AdditionalExpectedResponse . + +hctl:ExpectedResponse a sh:NodeShape ; + sh:closed true ; + sh:description "Communication metadata describing the expected response message for the primary response." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "TODO Check, was not in hctl ontology, if not could be source of discrepancy" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path td:contentType ] ; + sh:targetClass hctl:ExpectedResponse . + +hctl:Link a sh:NodeShape ; + sh:closed true ; + sh:description "A link can be viewed as a statement of the form link context that has a relation type resource at link target\", where the optional target attributes may further describe the resource." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Target attribute that specifies one or more sizes for the referenced icon. Only applicable for relation type 'icon'. The value pattern follows {Height}x{Width} (e.g., \\\"16x16\\\", \\\"16x16 32x32\\\")." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path td:sizes ], + [ sh:datatype xsd:string ; + sh:description "The hreflang attribute specifies the language of a linked document. The value of this must be a valid language tag [[BCP47]]." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path td:hreflang ; + sh:pattern "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$" ], + [ sh:datatype xsd:anyURI ; + sh:description "Target IRI of a link or submission target of a Form" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path hctl:target ], + [ sh:datatype xsd:anyURI ; + sh:description "By default, the context, or anchor, of a link conveyed in the Link header field is the URL of the representation it is associated with, as defined in RFC7231, Section 3.1.4.1, and is serialized as a URI." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path td:anchor ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path td:type ], + [ sh:datatype xsd:string ; + sh:description "A link relation type identifies the semantics of a link." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path td:relation ], + [ sh:datatype xsd:string ; + sh:description "Target attribute providing a hint indicating what the media type [IANA-MEDIA-TYPES] of the result of dereferencing the link should be." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path td:hintsAtMediaType ] ; + sh:targetClass hctl:Link . + +td:ActionAffordance a sh:NodeShape ; + sh:closed true ; + sh:description "An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time)." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:boolean ; + sh:description "Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same results, if present, based on the same input." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path td:idempotent ], + [ sh:class jsonschema:DataSchema ; + sh:description "Used to define the input data schema of the action." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path td:input ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path td:synchronous ], + [ sh:class hctl:Form ; + sh:description "Set of form hypermedia controls that describe how an operation can be performed." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 13 ; + sh:path td:forms ], + [ sh:class jsonschema:DataSchema ; + sh:description "Used to define the output data schema of the action." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path td:output ], + [ sh:class td:MultiLanguage ; + sh:description "TODO, check, according to the description a description should not contain a lang tag." ; + sh:nodeKind sh:IRI ; + sh:order 6 ; + sh:path td:descriptions ], + [ sh:class jsonschema:DataSchema ; + sh:description "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 12 ; + sh:path td:uriVariables ], + [ sh:class td:MultiLanguage ; + sh:description "Provides a human-readable title (e.g., display a text for UI representation) based on a default language." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path td:title ], + [ sh:class td:MultiLanguage ; + sh:description "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path td:titleInLanguage ], + [ sh:class td:MultiLanguage ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path td:description ], + [ sh:class td:MultiLanguage ; + sh:description "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 10 ; + sh:path td:descriptionInLanguage ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "Indexing property to store entity names when serializing them in a JSON-LD @index container." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path td:name ], + [ sh:datatype xsd:boolean ; + sh:description "Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path td:safe ], + [ sh:class td:MultiLanguage ; + sh:nodeKind sh:IRI ; sh:order 5 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + sh:path td:titles ] ; + sh:targetClass td:ActionAffordance . + +td:EventAffordance a sh:NodeShape ; + sh:closed true ; + sh:description "An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overhearing alerts)." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class td:MultiLanguage ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path td:description ], + [ sh:class td:MultiLanguage ; + sh:description "Provides a human-readable title (e.g., display a text for UI representation) based on a default language." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 6 ; + sh:path td:title ], + [ sh:class jsonschema:DataSchema ; + sh:description "Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path td:cancellation ], + [ sh:class td:MultiLanguage ; + sh:description "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path td:titleInLanguage ], + [ sh:class jsonschema:DataSchema ; + sh:description "Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path td:subscription ], + [ sh:class jsonschema:DataSchema ; + sh:description "Defines the data schema of the Event instance messages pushed by the Thing." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path td:notification ], + [ sh:class hctl:Form ; + sh:description "Set of form hypermedia controls that describe how an operation can be performed." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 12 ; + sh:path td:forms ], + [ sh:class jsonschema:DataSchema ; + sh:description "Defines the data schema of the Event response messages sent by the consumer in a response to a data message." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path td:notificationResponse ], + [ sh:class jsonschema:DataSchema ; + sh:description "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path td:uriVariables ], + [ sh:datatype xsd:string ; + sh:description "Indexing property to store entity names when serializing them in a JSON-LD @index container." ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path td:name ], + [ sh:class td:MultiLanguage ; + sh:description "TODO, check, according to the description a description should not contain a lang tag." ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path td:descriptions ], + [ sh:class td:MultiLanguage ; + sh:nodeKind sh:IRI ; sh:order 4 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:integer ; - sh:description "Number of years since birth" ; + sh:path td:titles ], + [ sh:class td:MultiLanguage ; + sh:description "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path td:descriptionInLanguage ] ; + sh:targetClass td:EventAffordance . + +td:PropertyAffordance a sh:NodeShape ; + sh:closed true ; + sh:description "An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class td:MultiLanguage ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path td:description ], + [ sh:class td:MultiLanguage ; + sh:description "Provides a human-readable title (e.g., display a text for UI representation) based on a default language." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path thing_description_schema:age_in_years ], - [ sh:description "living or dead status" ; - sh:in ( PATO:0001421 PATO:0001422 "UNKNOWN" ) ; + sh:path td:title ], + [ sh:datatype xsd:string ; + sh:description "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false)." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path td:writeOnly ], + [ sh:datatype xsd:string ; + sh:description "Used to store the indexing name in the parent object when this schema appears as a property of an object schema." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path td:propertyName ], + [ sh:datatype xsd:string ; + sh:description "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false)." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path td:readonly ], + [ sh:class td:MultiLanguage ; + sh:description "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path td:descriptionInLanguage ], + [ sh:datatype xsd:string ; + sh:description "Indexing property to store entity names when serializing them in a JSON-LD @index container." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path td:name ], + [ sh:class td:MultiLanguage ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path td:titles ], + [ sh:datatype xsd:boolean ; + sh:description "A hint that indicates whether Servients hosting the Thing and Intermediaries should probide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path td:observable ], + [ sh:class td:MultiLanguage ; + sh:description "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; sh:order 3 ; - sh:path thing_description_schema:vital_status ], + sh:path td:titleInLanguage ], + [ sh:class jsonschema:DataSchema ; + sh:description "Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path td:uriVariables ], + [ sh:class hctl:Form ; + sh:description "Set of form hypermedia controls that describe how an operation can be performed." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 12 ; + sh:path td:forms ], + [ sh:class td:MultiLanguage ; + sh:description "TODO, check, according to the description a description should not contain a lang tag." ; + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path td:descriptions ] ; + sh:targetClass td:PropertyAffordance . + +hctl:Form a sh:NodeShape ; + sh:closed true ; + sh:description "A form can be viewed as a statement of to perform an operation type on form context, make a request method to submission target, where the optional form fields may further describe the required request. In Thing Descriptions, the form context is the surrounding Object, such as Properties, Actions, and Events or the Thing itself for meta-interactions." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:anyURI ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path td:href ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "TODO Check, was not in hctl ontology, if not could be source of discrepancy" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path td:scopes ], + [ sh:description "Indicates the semantic intention of performing the operation(s) described by the form." ; + sh:in ( td:readProperty td:writeProperty td:observeProperty td:unobserveProperty td:invokeAction td:queryAction td:cancelAction td:subscribeEvent td:unsubscribeEvent td:readAllProperties td:readMultipleProperties td:writeMultipleProperties td:observeAllProperties td:unobserveAllProperties td:subscribeAllEvents td:unsubscribeAllEvents td:queryAllActions ) ; + sh:order 9 ; + sh:path td:operationType ], + [ sh:datatype xsd:string ; + sh:description "Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Examples of content coding include \\\"gzip\\\", \\\"deflate\\\", etc." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path td:contentCoding ], + [ sh:datatype xsd:string ; + sh:description "Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path td:subprotocol ], + [ sh:datatype xsd:anyURI ; + sh:description "Target IRI of a link or submission target of a Form" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path hctl:target ], + [ sh:class hctl:ExpectedResponse ; + sh:description "This optional term can be used if, e.g., the output communication metadata differ from input metadata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the response messages." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; - sh:path schema1:description ] ; - sh:targetClass thing_description_schema:Thing . + sh:path td:returns ], + [ sh:datatype xsd:string ; + sh:description "Assign a content type based on a media type IANA-MEDIA-TYPES (e.g., 'text/plain') and potential parameters (e.g., 'charset=utf-8') for the media type." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path td:contentType ], + [ sh:datatype xsd:string ; + sh:description "A security schema applied to a (set of) affordance(s)." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path td:securityDefinitions ], + [ sh:class hctl:AdditionalExpectedResponse ; + sh:description "This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific response code), and may also have its own data schema." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path td:additionalReturns ] ; + sh:targetClass hctl:Form . + +jsonschema:DataSchema a sh:NodeShape ; + sh:closed true ; + sh:description "Metadata that describes the data format used. It can be used for validation." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class td:MultiLanguage ; + sh:description "title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path td:titleInLanguage ], + [ sh:class td:MultiLanguage ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path td:description ], + [ sh:datatype xsd:string ; + sh:description "Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false)." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path td:readonly ], + [ sh:class td:MultiLanguage ; + sh:description "Provides a human-readable title (e.g., display a text for UI representation) based on a default language." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path td:title ], + [ sh:class td:MultiLanguage ; + sh:description "description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path td:descriptionInLanguage ], + [ sh:datatype xsd:string ; + sh:description "Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false)." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path td:writeOnly ], + [ sh:datatype xsd:string ; + sh:description "Used to store the indexing name in the parent object when this schema appears as a property of an object schema." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path td:propertyName ] ; + sh:targetClass jsonschema:DataSchema . + +td:MultiLanguage a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path td:key ; + sh:pattern "^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$" ] ; + sh:targetClass td:MultiLanguage . diff --git a/project/shex/thing_description_schema.shex b/project/shex/thing_description_schema.shex index 79020b7..f0e3fdc 100644 --- a/project/shex/thing_description_schema.shex +++ b/project/shex/thing_description_schema.shex @@ -1,10 +1,16 @@ -BASE +# metamodel_version: 1.7.0 +BASE PREFIX rdf: PREFIX xsd: PREFIX linkml: +PREFIX jsonschema: +PREFIX wotsec: +PREFIX hctl: PREFIX schema1: + IRI + linkml:String xsd:string linkml:Integer xsd:integer @@ -43,33 +49,177 @@ linkml:Jsonpath xsd:string linkml:Sparqlpath xsd:string - ( + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + @linkml:Boolean ? ; + @linkml:Boolean ? ; + @linkml:Boolean ? ; + @ ? ; + @ ? + ) ; + rdf:type [ ] + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ hctl:ExpectedResponse ] ? ; + @linkml:String ? ; + @linkml:Boolean ? ; + @linkml:String ? + ) ; + rdf:type [ hctl:AdditionalExpectedResponse ] ? + ) +} + + CLOSED { + ( $ ( @ ? ; + @<MultiLanguage> ? ; + <titleInLanguage> @<MultiLanguage> ? ; + <descriptionInLanguage> @<MultiLanguage> ? ; + <propertyName> @linkml:String ? ; + <writeOnly> @linkml:String ? ; + <readonly> @linkml:String ? + ) ; + rdf:type [ jsonschema:DataSchema ] ? + ) +} + +<EventAffordance> CLOSED { + ( $<EventAffordance_tes> ( &<InteractionAffordance_tes> ; + rdf:type [ <InteractionAffordance> ] ? ; + <subscription> @<DataSchema> ? ; + <cancellation> @<DataSchema> ? ; + <notification> @<DataSchema> ? ; + <notificationResponse> @<DataSchema> ? + ) ; + rdf:type [ <EventAffordance> ] + ) +} + +<ExpectedResponse> ( + CLOSED { + ( $<ExpectedResponse_tes> <contentType> @linkml:String ; + rdf:type [ hctl:ExpectedResponse ] ? + ) + } OR @<AdditionalExpectedResponse> +) + +<Form> CLOSED { + ( $<Form_tes> ( hctl:target @<AnyUri> ; + <href> @<AnyUri> ; + <contentType> @linkml:String ? ; + <contentCoding> @linkml:String ? ; + <securityDefinitions> @linkml:String ? ; + <scopes> @linkml:String ? ; + <returns> @<ExpectedResponse> ? ; + <additionalReturns> @<AdditionalExpectedResponse> * ; + <subprotocol> @linkml:String ? ; + <operationType> [ <readProperty> <writeProperty> <observeProperty> <unobserveProperty> <invokeAction> <queryAction> + <cancelAction> <subscribeEvent> <unsubscribeEvent> <readAllProperties> <writeAllProperties> <readMultipleProperties> + <writeMultipleProperties> <observeAllProperties> <unobserveAllProperties> <subscribeAllEvents> <unsubscribeAllEvents> + <queryAllActions> ] * + ) ; + rdf:type [ hctl:Form ] ? + ) +} + +<InteractionAffordance> ( CLOSED { - ( $<NamedThing_tes> ( schema1:name @linkml:String ? ; - schema1:description @linkml:String ? + ( $<InteractionAffordance_tes> ( <titles> @<MultiLanguage> * ; + <descriptions> @<MultiLanguage> * ; + <title> @<MultiLanguage> ? ; + <description> @<MultiLanguage> ? ; + <titleInLanguage> @<MultiLanguage> ? ; + <descriptionInLanguage> @<MultiLanguage> ? ; + <uriVariables> @<DataSchema> * ; + <forms> @<Form> * ) ; - rdf:type [ schema1:Thing ] + rdf:type [ <InteractionAffordance> ] ) - } OR @<Thing> + } OR @<ActionAffordance> OR @<EventAffordance> OR @<PropertyAffordance> ) +<Link> CLOSED { + ( $<Link_tes> ( hctl:target @<AnyUri> ; + <hintsAtMediaType> @linkml:String ? ; + <type> @linkml:String ? ; + <relation> @linkml:String ? ; + <anchor> @<AnyUri> ? ; + <sizes> @linkml:String ? ; + <hreflang> @linkml:String ? + ) ; + rdf:type [ hctl:Link ] ? + ) +} + +<MultiLanguage> CLOSED { + ( $<MultiLanguage_tes> rdf:type . * ; + rdf:type [ <MultiLanguage> ] + ) +} + +<PropertyAffordance> CLOSED { + ( $<PropertyAffordance_tes> ( &<InteractionAffordance_tes> ; + rdf:type [ <InteractionAffordance> ] ? ; + &<DataSchema_tes> ; + rdf:type [ jsonschema:DataSchema ] ? ; + <observable> @linkml:Boolean ? ; + <propertyName> @linkml:String ? ; + <writeOnly> @linkml:String ? ; + <readonly> @linkml:String ? + ) ; + rdf:type [ <PropertyAffordance> ] + ) +} + +<SecurityScheme> CLOSED { + ( $<SecurityScheme_tes> ( <@type> @linkml:String * ; + <descriptions> @<MultiLanguage> * ; + <description> @linkml:String ? ; + <proxy> @<AnyUri> ? ; + <scheme> [ wotsec:NoSecurityScheme wotsec:ComboSecurityScheme wotsec:BasicSecurityScheme wotsec:DigestSecurityScheme + wotsec:BearerSecurityScheme wotsec:PSKSecurityScheme wotsec:OAuth2SecurityScheme wotsec:APIKeySecurityScheme + wotsec:AutoSecurityScheme ] + ) ; + rdf:type [ <SecurityScheme> ] ? + ) +} + <Thing> CLOSED { - ( $<Thing_tes> ( &<NamedThing_tes> ; - rdf:type [ schema1:Thing ] ? ; - schema1:email @linkml:String ? ; - schema1:birthDate @linkml:Date ? ; - <age_in_years> @linkml:Integer ? ; - <vital_status> [ <http://purl.obolibrary.org/obo/PATO_0001421> <http://purl.obolibrary.org/obo/PATO_0001422> - <https://w3id.org/mahda/thing-description-schema/PersonStatus#UNKNOWN> ] ? + ( $<Thing_tes> ( <title> @<MultiLanguage> ? ; + <description> @<MultiLanguage> ? ; + <titles> @<MultiLanguage> * ; + <descriptions> @<MultiLanguage> * ; + <@type> @linkml:String * ; + <titleInLanguage> @<MultiLanguage> ? ; + <descriptionInLanguage> @<MultiLanguage> ? ; + <securityDefinitions> @linkml:String * ; + <security> @linkml:String * ; + <schemaDefinitions> @<DataSchema> * ; + <profile> @<AnyUri> * ; + <instance> @linkml:String ? ; + <created> @linkml:Datetime ? ; + <modified> @linkml:Datetime ? ; + <supportContact> @<AnyUri> ? ; + <base> @<AnyUri> ? ; + <version> @<VersionInfo> ? ; + <forms> @<Form> * ; + <links> @<Link> * ; + <properties> @<PropertyAffordance> * ; + <actions> @<ActionAffordance> * ; + <events> @<EventAffordance> * ) ; rdf:type [ <Thing> ] ) } -<ThingCollection> CLOSED { - ( $<ThingCollection_tes> <entries> @<Thing> * ; - rdf:type [ <ThingCollection> ] ? +<VersionInfo> CLOSED { + ( $<VersionInfo_tes> ( <instance> @linkml:String ; + <model> @linkml:String ? + ) ; + rdf:type [ schema1:version ] ? ) } - diff --git a/project/sqlschema/thing_description_schema.sql b/project/sqlschema/thing_description_schema.sql index b16ae3c..a41ee88 100644 --- a/project/sqlschema/thing_description_schema.sql +++ b/project/sqlschema/thing_description_schema.sql @@ -1,38 +1,454 @@ --- # Class: "NamedThing" Description: "A generic grouping for any identifiable entity" --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: description Description: A human-readable description for a thing --- # Class: "Thing" Description: "Represents a Thing" --- * Slot: primary_email Description: The main email address of a person --- * Slot: birth_date Description: Date on which a person is born --- * Slot: age_in_years Description: Number of years since birth --- * Slot: vital_status Description: living or dead status --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: description Description: A human-readable description for a thing --- * Slot: ThingCollection_id Description: Autocreated FK slot --- # Class: "ThingCollection" Description: "A holder for Thing objects" +-- # Class: "VersionInfo" Description: "Provides version information." -- * Slot: id Description: +-- * Slot: instance Description: +-- * Slot: model Description: +-- # Class: "MultiLanguage" Description: "" +-- * Slot: key Description: +-- * Slot: SecurityScheme_id Description: Autocreated FK slot +-- * Slot: InteractionAffordance_name Description: Autocreated FK slot +-- * Slot: PropertyAffordance_name Description: Autocreated FK slot +-- * Slot: ActionAffordance_name Description: Autocreated FK slot +-- * Slot: EventAffordance_name Description: Autocreated FK slot +-- * Slot: Thing_id Description: Autocreated FK slot +-- # Class: "Link" Description: "A link can be viewed as a statement of the form link context that has a relation type resource at link target", where the optional target attributes may further describe the resource." +-- * Slot: id Description: +-- * Slot: target Description: Target IRI of a link or submission target of a Form +-- * Slot: hintsAtMediaType Description: Target attribute providing a hint indicating what the media type [IANA-MEDIA-TYPES] of the result of dereferencing the link should be. +-- * Slot: type Description: +-- * Slot: relation Description: A link relation type identifies the semantics of a link. +-- * Slot: anchor Description: By default, the context, or anchor, of a link conveyed in the Link header field is the URL of the representation it is associated with, as defined in RFC7231, Section 3.1.4.1, and is serialized as a URI. +-- * Slot: sizes Description: Target attribute that specifies one or more sizes for the referenced icon. Only applicable for relation type 'icon'. The value pattern follows {Height}x{Width} (e.g., \"16x16\", \"16x16 32x32\"). +-- * Slot: hreflang Description: The hreflang attribute specifies the language of a linked document. The value of this must be a valid language tag [[BCP47]]. +-- # Class: "ExpectedResponse" Description: "Communication metadata describing the expected response message for the primary response." +-- * Slot: id Description: +-- * Slot: contentType Description: TODO Check, was not in hctl ontology, if not could be source of discrepancy +-- # Class: "AdditionalExpectedResponse" Description: "Communication metadata describing the expected response message for additional responses." +-- * Slot: id Description: +-- * Slot: additionalOutputSchema Description: This optional term can be used to define a data schema for an additional response if it differs from the default output data schema. Rather than a DataSchema object, the name of a previous definition given in a SchemaDefinitions map must be used. +-- * Slot: success Description: Signals if the additional response should not be considered an error. +-- * Slot: schema Description: TODO Check, was not in hctl ontology, if not could be source of discrepancy +-- * Slot: contentType Description: TODO Check, was not in hctl ontology, if not could be source of discrepancy +-- # Class: "Form" Description: "A form can be viewed as a statement of to perform an operation type on form context, make a request method to submission target, where the optional form fields may further describe the required request. In Thing Descriptions, the form context is the surrounding Object, such as Properties, Actions, and Events or the Thing itself for meta-interactions." +-- * Slot: id Description: +-- * Slot: target Description: Target IRI of a link or submission target of a Form +-- * Slot: href Description: +-- * Slot: contentType Description: Assign a content type based on a media type IANA-MEDIA-TYPES (e.g., 'text/plain') and potential parameters (e.g., 'charset=utf-8') for the media type. +-- * Slot: contentCoding Description: Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Examples of content coding include \"gzip\", \"deflate\", etc. +-- * Slot: securityDefinitions Description: A security schema applied to a (set of) affordance(s). +-- * Slot: scopes Description: TODO Check, was not in hctl ontology, if not could be source of discrepancy +-- * Slot: subprotocol Description: Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options. +-- * Slot: returns_id Description: This optional term can be used if, e.g., the output communication metadata differ from input metadata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the response messages. +-- # Class: "SecurityScheme" Description: "" +-- * Slot: id Description: +-- * Slot: description Description: +-- * Slot: proxy Description: URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint. +-- * Slot: scheme Description: +-- # Class: "DataSchema" Description: "Metadata that describes the data format used. It can be used for validation." +-- * Slot: id Description: +-- * Slot: description Description: +-- * Slot: title Description: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. +-- * Slot: titleInLanguage Description: title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: descriptionInLanguage Description: description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: propertyName Description: Used to store the indexing name in the parent object when this schema appears as a property of an object schema. +-- * Slot: writeOnly Description: Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false). +-- * Slot: readonly Description: Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false). +-- # Class: "InteractionAffordance" Description: "TOOD" +-- * Slot: title Description: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. +-- * Slot: description Description: +-- * Slot: titleInLanguage Description: title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: descriptionInLanguage Description: description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: name Description: Indexing property to store entity names when serializing them in a JSON-LD @index container. +-- # Class: "PropertyAffordance" Description: "An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated." +-- * Slot: observable Description: A hint that indicates whether Servients hosting the Thing and Intermediaries should probide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property. +-- * Slot: description Description: +-- * Slot: title Description: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. +-- * Slot: titleInLanguage Description: title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: descriptionInLanguage Description: description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: propertyName Description: Used to store the indexing name in the parent object when this schema appears as a property of an object schema. +-- * Slot: writeOnly Description: Boolean value that is a hint to indicate whether a property interaction/value is write only (=true) or not (=false). +-- * Slot: readonly Description: Boolean value that is a hint to indicate whether a property interaction/value is read only (=true) or not (=false). +-- * Slot: name Description: Indexing property to store entity names when serializing them in a JSON-LD @index container. +-- * Slot: Thing_id Description: Autocreated FK slot +-- # Class: "ActionAffordance" Description: "An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time)." +-- * Slot: safe Description: Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action. +-- * Slot: synchronous Description: Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made. +-- * Slot: idempotent Description: Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same results, if present, based on the same input. +-- * Slot: title Description: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. +-- * Slot: description Description: +-- * Slot: titleInLanguage Description: title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: descriptionInLanguage Description: description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: name Description: Indexing property to store entity names when serializing them in a JSON-LD @index container. +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: input_id Description: Used to define the input data schema of the action. +-- * Slot: output_id Description: Used to define the output data schema of the action. +-- # Class: "EventAffordance" Description: "An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overhearing alerts)." +-- * Slot: title Description: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. +-- * Slot: description Description: +-- * Slot: titleInLanguage Description: title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: descriptionInLanguage Description: description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: name Description: Indexing property to store entity names when serializing them in a JSON-LD @index container. +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: subscription_id Description: Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks. +-- * Slot: cancellation_id Description: Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook. +-- * Slot: notification_id Description: Defines the data schema of the Event instance messages pushed by the Thing. +-- * Slot: notificationResponse_id Description: Defines the data schema of the Event response messages sent by the consumer in a response to a data message. +-- # Class: "Thing" Description: "An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things." +-- * Slot: id Description: TODO +-- * Slot: title Description: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. +-- * Slot: description Description: +-- * Slot: titleInLanguage Description: title of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: descriptionInLanguage Description: description of the TD element (Thing, interaction affordance, security scheme or data scheme) with language tag. By convention, a language tag must be added to the object of descriptionInLanguage. Otherwise use description. +-- * Slot: instance Description: Provides a version identicator of this TD instance. +-- * Slot: created Description: Provides information when the TD instance was created. +-- * Slot: modified Description: Provides information when the TD instance was last modified. +-- * Slot: supportContact Description: Provides information about the TD maintainer as URI scheme (e.g., <code>mailto</code> [[RFC6068]],<code>tel</code> [[RFC3966]],<code>https</code> [[RFC9112]]). +-- * Slot: base Description: Define the base URI that is used for all relative URI references throughout a TD document. +-- * Slot: version_id Description: +-- # Class: "Form_additionalReturns" Description: "" +-- * Slot: Form_id Description: Autocreated FK slot +-- * Slot: additionalReturns_id Description: This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific response code), and may also have its own data schema. +-- # Class: "Form_operationType" Description: "" +-- * Slot: Form_id Description: Autocreated FK slot +-- * Slot: operationType Description: Indicates the semantic intention of performing the operation(s) described by the form. +-- # Class: "SecurityScheme_@type" Description: "" +-- * Slot: SecurityScheme_id Description: Autocreated FK slot +-- * Slot: @type Description: +-- # Class: "InteractionAffordance_uriVariables" Description: "" +-- * Slot: InteractionAffordance_name Description: Autocreated FK slot +-- * Slot: uriVariables_id Description: Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology. +-- # Class: "InteractionAffordance_forms" Description: "" +-- * Slot: InteractionAffordance_name Description: Autocreated FK slot +-- * Slot: forms_id Description: Set of form hypermedia controls that describe how an operation can be performed. +-- # Class: "PropertyAffordance_uriVariables" Description: "" +-- * Slot: PropertyAffordance_name Description: Autocreated FK slot +-- * Slot: uriVariables_id Description: Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology. +-- # Class: "PropertyAffordance_forms" Description: "" +-- * Slot: PropertyAffordance_name Description: Autocreated FK slot +-- * Slot: forms_id Description: Set of form hypermedia controls that describe how an operation can be performed. +-- # Class: "ActionAffordance_uriVariables" Description: "" +-- * Slot: ActionAffordance_name Description: Autocreated FK slot +-- * Slot: uriVariables_id Description: Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology. +-- # Class: "ActionAffordance_forms" Description: "" +-- * Slot: ActionAffordance_name Description: Autocreated FK slot +-- * Slot: forms_id Description: Set of form hypermedia controls that describe how an operation can be performed. +-- # Class: "EventAffordance_uriVariables" Description: "" +-- * Slot: EventAffordance_name Description: Autocreated FK slot +-- * Slot: uriVariables_id Description: Define URI template variables according to RFC6570 as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema. TODO: range is not obvious from the ontology. +-- # Class: "EventAffordance_forms" Description: "" +-- * Slot: EventAffordance_name Description: Autocreated FK slot +-- * Slot: forms_id Description: Set of form hypermedia controls that describe how an operation can be performed. +-- # Class: "Thing_@type" Description: "" +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: @type Description: +-- # Class: "Thing_securityDefinitions" Description: "" +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: securityDefinitions Description: A security scheme applied to a (set of) affordance(s). TODO check +-- # Class: "Thing_security" Description: "" +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: security Description: A Thing may define abstract security schemes, used to configure the secure access of (a set of) affordance(s). TODO: check +-- # Class: "Thing_schemaDefinitions" Description: "" +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: schemaDefinitions_id Description: TODO CHECK +-- # Class: "Thing_profile" Description: "" +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: profile Description: Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation. +-- # Class: "Thing_forms" Description: "" +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: forms_id Description: Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings. +-- # Class: "Thing_links" Description: "" +-- * Slot: Thing_id Description: Autocreated FK slot +-- * Slot: links_id Description: Provides Web links to arbitrary resources that relate to the specified Thing Description. -CREATE TABLE "NamedThing" ( - id TEXT NOT NULL, - name TEXT, - description TEXT, +CREATE TABLE "VersionInfo" ( + id INTEGER NOT NULL, + instance TEXT NOT NULL, + model TEXT, PRIMARY KEY (id) ); -CREATE TABLE "ThingCollection" ( +CREATE TABLE "MultiLanguage" ( + "key" TEXT NOT NULL, + "SecurityScheme_id" INTEGER, + "InteractionAffordance_name" TEXT, + "PropertyAffordance_name" TEXT, + "ActionAffordance_name" TEXT, + "EventAffordance_name" TEXT, + "Thing_id" TEXT, + PRIMARY KEY ("key"), + FOREIGN KEY("SecurityScheme_id") REFERENCES "SecurityScheme" (id), + FOREIGN KEY("InteractionAffordance_name") REFERENCES "InteractionAffordance" (name), + FOREIGN KEY("PropertyAffordance_name") REFERENCES "PropertyAffordance" (name), + FOREIGN KEY("ActionAffordance_name") REFERENCES "ActionAffordance" (name), + FOREIGN KEY("EventAffordance_name") REFERENCES "EventAffordance" (name), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id) +); +CREATE TABLE "Link" ( id INTEGER NOT NULL, + target TEXT NOT NULL, + "hintsAtMediaType" TEXT, + type TEXT, + relation TEXT, + anchor TEXT, + sizes TEXT, + hreflang TEXT, PRIMARY KEY (id) ); +CREATE TABLE "ExpectedResponse" ( + id INTEGER NOT NULL, + "contentType" TEXT NOT NULL, + PRIMARY KEY (id) +); +CREATE TABLE "AdditionalExpectedResponse" ( + id INTEGER NOT NULL, + "additionalOutputSchema" TEXT, + success BOOLEAN, + schema TEXT, + "contentType" TEXT NOT NULL, + PRIMARY KEY (id) +); +CREATE TABLE "SecurityScheme" ( + id INTEGER NOT NULL, + description TEXT, + proxy TEXT, + scheme VARCHAR(6) NOT NULL, + PRIMARY KEY (id) +); +CREATE TABLE "DataSchema" ( + id INTEGER NOT NULL, + description TEXT, + title TEXT, + "titleInLanguage" TEXT, + "descriptionInLanguage" TEXT, + "propertyName" TEXT, + "writeOnly" TEXT, + readonly TEXT, + PRIMARY KEY (id), + FOREIGN KEY(description) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY(title) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("titleInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("descriptionInLanguage") REFERENCES "MultiLanguage" ("key") +); +CREATE TABLE "InteractionAffordance" ( + title TEXT, + description TEXT, + "titleInLanguage" TEXT, + "descriptionInLanguage" TEXT, + name TEXT NOT NULL, + PRIMARY KEY (name), + FOREIGN KEY(title) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY(description) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("titleInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("descriptionInLanguage") REFERENCES "MultiLanguage" ("key") +); +CREATE TABLE "PropertyAffordance" ( + observable BOOLEAN, + description TEXT, + title TEXT, + "titleInLanguage" TEXT, + "descriptionInLanguage" TEXT, + "propertyName" TEXT, + "writeOnly" TEXT, + readonly TEXT, + name TEXT NOT NULL, + "Thing_id" TEXT, + PRIMARY KEY (name), + FOREIGN KEY(description) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY(title) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("titleInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("descriptionInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id) +); +CREATE TABLE "ActionAffordance" ( + safe BOOLEAN, + synchronous BOOLEAN, + idempotent BOOLEAN, + title TEXT, + description TEXT, + "titleInLanguage" TEXT, + "descriptionInLanguage" TEXT, + name TEXT NOT NULL, + "Thing_id" TEXT, + input_id INTEGER, + output_id INTEGER, + PRIMARY KEY (name), + FOREIGN KEY(title) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY(description) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("titleInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("descriptionInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id), + FOREIGN KEY(input_id) REFERENCES "DataSchema" (id), + FOREIGN KEY(output_id) REFERENCES "DataSchema" (id) +); +CREATE TABLE "EventAffordance" ( + title TEXT, + description TEXT, + "titleInLanguage" TEXT, + "descriptionInLanguage" TEXT, + name TEXT NOT NULL, + "Thing_id" TEXT, + subscription_id INTEGER, + cancellation_id INTEGER, + notification_id INTEGER, + "notificationResponse_id" INTEGER, + PRIMARY KEY (name), + FOREIGN KEY(title) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY(description) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("titleInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("descriptionInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id), + FOREIGN KEY(subscription_id) REFERENCES "DataSchema" (id), + FOREIGN KEY(cancellation_id) REFERENCES "DataSchema" (id), + FOREIGN KEY(notification_id) REFERENCES "DataSchema" (id), + FOREIGN KEY("notificationResponse_id") REFERENCES "DataSchema" (id) +); CREATE TABLE "Thing" ( - primary_email TEXT, - birth_date DATE, - age_in_years INTEGER, - vital_status VARCHAR(7), id TEXT NOT NULL, - name TEXT, + title TEXT, description TEXT, - "ThingCollection_id" INTEGER, + "titleInLanguage" TEXT, + "descriptionInLanguage" TEXT, + instance TEXT, + created DATETIME, + modified DATETIME, + "supportContact" TEXT, + base TEXT, + version_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY("ThingCollection_id") REFERENCES "ThingCollection" (id) + FOREIGN KEY(title) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY(description) REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("titleInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY("descriptionInLanguage") REFERENCES "MultiLanguage" ("key"), + FOREIGN KEY(version_id) REFERENCES "VersionInfo" (id) +); +CREATE TABLE "Form" ( + id INTEGER NOT NULL, + target TEXT NOT NULL, + href TEXT NOT NULL, + "contentType" TEXT, + "contentCoding" TEXT, + "securityDefinitions" TEXT, + scopes TEXT, + subprotocol TEXT, + returns_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(returns_id) REFERENCES "ExpectedResponse" (id) +); +CREATE TABLE "SecurityScheme_@type" ( + "SecurityScheme_id" INTEGER, + "@type" TEXT, + PRIMARY KEY ("SecurityScheme_id", "@type"), + FOREIGN KEY("SecurityScheme_id") REFERENCES "SecurityScheme" (id) +); +CREATE TABLE "InteractionAffordance_uriVariables" ( + "InteractionAffordance_name" TEXT, + "uriVariables_id" INTEGER, + PRIMARY KEY ("InteractionAffordance_name", "uriVariables_id"), + FOREIGN KEY("InteractionAffordance_name") REFERENCES "InteractionAffordance" (name), + FOREIGN KEY("uriVariables_id") REFERENCES "DataSchema" (id) +); +CREATE TABLE "PropertyAffordance_uriVariables" ( + "PropertyAffordance_name" TEXT, + "uriVariables_id" INTEGER, + PRIMARY KEY ("PropertyAffordance_name", "uriVariables_id"), + FOREIGN KEY("PropertyAffordance_name") REFERENCES "PropertyAffordance" (name), + FOREIGN KEY("uriVariables_id") REFERENCES "DataSchema" (id) +); +CREATE TABLE "ActionAffordance_uriVariables" ( + "ActionAffordance_name" TEXT, + "uriVariables_id" INTEGER, + PRIMARY KEY ("ActionAffordance_name", "uriVariables_id"), + FOREIGN KEY("ActionAffordance_name") REFERENCES "ActionAffordance" (name), + FOREIGN KEY("uriVariables_id") REFERENCES "DataSchema" (id) +); +CREATE TABLE "EventAffordance_uriVariables" ( + "EventAffordance_name" TEXT, + "uriVariables_id" INTEGER, + PRIMARY KEY ("EventAffordance_name", "uriVariables_id"), + FOREIGN KEY("EventAffordance_name") REFERENCES "EventAffordance" (name), + FOREIGN KEY("uriVariables_id") REFERENCES "DataSchema" (id) +); +CREATE TABLE "Thing_@type" ( + "Thing_id" TEXT, + "@type" TEXT, + PRIMARY KEY ("Thing_id", "@type"), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id) +); +CREATE TABLE "Thing_securityDefinitions" ( + "Thing_id" TEXT, + "securityDefinitions" TEXT, + PRIMARY KEY ("Thing_id", "securityDefinitions"), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id) +); +CREATE TABLE "Thing_security" ( + "Thing_id" TEXT, + security TEXT, + PRIMARY KEY ("Thing_id", security), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id) +); +CREATE TABLE "Thing_schemaDefinitions" ( + "Thing_id" TEXT, + "schemaDefinitions_id" INTEGER, + PRIMARY KEY ("Thing_id", "schemaDefinitions_id"), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id), + FOREIGN KEY("schemaDefinitions_id") REFERENCES "DataSchema" (id) +); +CREATE TABLE "Thing_profile" ( + "Thing_id" TEXT, + profile TEXT, + PRIMARY KEY ("Thing_id", profile), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id) +); +CREATE TABLE "Thing_links" ( + "Thing_id" TEXT, + links_id INTEGER, + PRIMARY KEY ("Thing_id", links_id), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id), + FOREIGN KEY(links_id) REFERENCES "Link" (id) +); +CREATE TABLE "Form_additionalReturns" ( + "Form_id" INTEGER, + "additionalReturns_id" INTEGER, + PRIMARY KEY ("Form_id", "additionalReturns_id"), + FOREIGN KEY("Form_id") REFERENCES "Form" (id), + FOREIGN KEY("additionalReturns_id") REFERENCES "AdditionalExpectedResponse" (id) +); +CREATE TABLE "Form_operationType" ( + "Form_id" INTEGER, + "operationType" VARCHAR(23), + PRIMARY KEY ("Form_id", "operationType"), + FOREIGN KEY("Form_id") REFERENCES "Form" (id) +); +CREATE TABLE "InteractionAffordance_forms" ( + "InteractionAffordance_name" TEXT, + forms_id INTEGER, + PRIMARY KEY ("InteractionAffordance_name", forms_id), + FOREIGN KEY("InteractionAffordance_name") REFERENCES "InteractionAffordance" (name), + FOREIGN KEY(forms_id) REFERENCES "Form" (id) +); +CREATE TABLE "PropertyAffordance_forms" ( + "PropertyAffordance_name" TEXT, + forms_id INTEGER, + PRIMARY KEY ("PropertyAffordance_name", forms_id), + FOREIGN KEY("PropertyAffordance_name") REFERENCES "PropertyAffordance" (name), + FOREIGN KEY(forms_id) REFERENCES "Form" (id) +); +CREATE TABLE "ActionAffordance_forms" ( + "ActionAffordance_name" TEXT, + forms_id INTEGER, + PRIMARY KEY ("ActionAffordance_name", forms_id), + FOREIGN KEY("ActionAffordance_name") REFERENCES "ActionAffordance" (name), + FOREIGN KEY(forms_id) REFERENCES "Form" (id) +); +CREATE TABLE "EventAffordance_forms" ( + "EventAffordance_name" TEXT, + forms_id INTEGER, + PRIMARY KEY ("EventAffordance_name", forms_id), + FOREIGN KEY("EventAffordance_name") REFERENCES "EventAffordance" (name), + FOREIGN KEY(forms_id) REFERENCES "Form" (id) +); +CREATE TABLE "Thing_forms" ( + "Thing_id" TEXT, + forms_id INTEGER, + PRIMARY KEY ("Thing_id", forms_id), + FOREIGN KEY("Thing_id") REFERENCES "Thing" (id), + FOREIGN KEY(forms_id) REFERENCES "Form" (id) ); \ No newline at end of file diff --git a/src/thing_description_schema/datamodel/thing_description_schema.py b/src/thing_description_schema/datamodel/thing_description_schema.py index 7d199c7..50116e1 100644 --- a/src/thing_description_schema/datamodel/thing_description_schema.py +++ b/src/thing_description_schema/datamodel/thing_description_schema.py @@ -1,9 +1,10 @@ # Auto generated from thing_description_schema.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-04-15T09:31:15 +# Generation date: 2024-05-15T15:38:14 # Schema: thing-description-schema # -# id: https://w3id.org/mahda/thing-description-schema -# description: Thing Description Standard +# id: td +# description: LinkML schema for modelling the W3C Web of Things Thing Description information model. This schema is used to generate +# JSON Schema, SHACL shapes, and RDF. # license: MIT import dataclasses @@ -22,8 +23,8 @@ from linkml_runtime.utils.enumerations import EnumDefinitionImpl from rdflib import Namespace, URIRef from linkml_runtime.utils.curienamespace import CurieNamespace -from linkml_runtime.linkml_model.types import Date, Integer, String, Uriorcurie -from linkml_runtime.utils.metamodelcore import URIorCURIE, XSDDate +from linkml_runtime.linkml_model.types import Boolean, Datetime, String +from linkml_runtime.utils.metamodelcore import Bool, URI, XSDDateTime metamodel_version = "1.7.0" version = None @@ -32,163 +33,974 @@ dataclasses._init_fn = dataclasses_init_fn_with_kwargs # Namespaces -PATO = CurieNamespace('PATO', 'http://purl.obolibrary.org/obo/PATO_') -BIOLINK = CurieNamespace('biolink', 'https://w3id.org/biolink/') -EXAMPLE = CurieNamespace('example', 'https://example.org/') +DCT = CurieNamespace('dct', 'http://purl.org/dc/terms/') +DCTERMS = CurieNamespace('dcterms', 'http://purl.org/dc/terms/') +HCTL = CurieNamespace('hctl', 'https://www.w3.org/2019/wot/hypermedia#') +HTV = CurieNamespace('htv', 'http://www.w3.org/2011/http#') +JSONSCHEMA = CurieNamespace('jsonschema', 'https://www.w3.org/2019/wot/json-schema#') LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') +RDF = CurieNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#') +RDFS = CurieNamespace('rdfs', 'http://www.w3.org/2000/01/rdf-schema#') SCHEMA = CurieNamespace('schema', 'http://schema.org/') -THING_DESCRIPTION_SCHEMA = CurieNamespace('thing_description_schema', 'https://w3id.org/mahda/thing-description-schema/') -DEFAULT_ = THING_DESCRIPTION_SCHEMA +TD = CurieNamespace('td', 'https://www.w3.org/2019/wot/td#') +TM = CurieNamespace('tm', 'https://www.w3.org/2019/wot/tm#') +WOTSEC = CurieNamespace('wotsec', 'https://www.w3.org/2019/wot/security#') +XSD = CurieNamespace('xsd', 'http://www.w3.org/2001/XMLSchema#') +DEFAULT_ = TD # Types +class AnyUri(URI): + """ a complete URI """ + type_class_uri = XSD["anyURI"] + type_class_curie = "xsd:anyURI" + type_name = "anyUri" + type_model_uri = TD.AnyUri + # Class references -class NamedThingId(URIorCURIE): +class MultiLanguageKey(extended_str): pass -class ThingId(NamedThingId): +class InteractionAffordanceName(extended_str): pass +class PropertyAffordanceName(InteractionAffordanceName): + pass + + +class ActionAffordanceName(InteractionAffordanceName): + pass + + +class EventAffordanceName(InteractionAffordanceName): + pass + + +class ThingId(URI): + pass + + +@dataclass +class VersionInfo(YAMLRoot): + """ + Provides version information. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = SCHEMA["version"] + class_class_curie: ClassVar[str] = "schema:version" + class_name: ClassVar[str] = "VersionInfo" + class_model_uri: ClassVar[URIRef] = TD.VersionInfo + + instance: str = None + model: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.instance): + self.MissingRequiredField("instance") + if not isinstance(self.instance, str): + self.instance = str(self.instance) + + if self.model is not None and not isinstance(self.model, str): + self.model = str(self.model) + + super().__post_init__(**kwargs) + + +@dataclass +class MultiLanguage(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = TD["MultiLanguage"] + class_class_curie: ClassVar[str] = "td:MultiLanguage" + class_name: ClassVar[str] = "MultiLanguage" + class_model_uri: ClassVar[URIRef] = TD.MultiLanguage + + key: Union[str, MultiLanguageKey] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.key): + self.MissingRequiredField("key") + if not isinstance(self.key, MultiLanguageKey): + self.key = MultiLanguageKey(self.key) + + super().__post_init__(**kwargs) + + +@dataclass +class Link(YAMLRoot): + """ + A link can be viewed as a statement of the form link context that has a relation type resource at link target", + where the optional target attributes may further describe the resource. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = HCTL["Link"] + class_class_curie: ClassVar[str] = "hctl:Link" + class_name: ClassVar[str] = "Link" + class_model_uri: ClassVar[URIRef] = TD.Link + + target: URI = None + hintsAtMediaType: Optional[str] = None + type: Optional[str] = None + relation: Optional[str] = None + anchor: Optional[URI] = None + sizes: Optional[str] = None + hreflang: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.target): + self.MissingRequiredField("target") + if not isinstance(self.target, URI): + self.target = URI(self.target) + + if self.hintsAtMediaType is not None and not isinstance(self.hintsAtMediaType, str): + self.hintsAtMediaType = str(self.hintsAtMediaType) + + if self.type is not None and not isinstance(self.type, str): + self.type = str(self.type) + + if self.relation is not None and not isinstance(self.relation, str): + self.relation = str(self.relation) + + if self.anchor is not None and not isinstance(self.anchor, URI): + self.anchor = URI(self.anchor) + + if self.sizes is not None and not isinstance(self.sizes, str): + self.sizes = str(self.sizes) + + if self.hreflang is not None and not isinstance(self.hreflang, str): + self.hreflang = str(self.hreflang) + + super().__post_init__(**kwargs) + + +@dataclass +class ExpectedResponse(YAMLRoot): + """ + Communication metadata describing the expected response message for the primary response. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = HCTL["ExpectedResponse"] + class_class_curie: ClassVar[str] = "hctl:ExpectedResponse" + class_name: ClassVar[str] = "ExpectedResponse" + class_model_uri: ClassVar[URIRef] = TD.ExpectedResponse + + contentType: str = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.contentType): + self.MissingRequiredField("contentType") + if not isinstance(self.contentType, str): + self.contentType = str(self.contentType) + + super().__post_init__(**kwargs) + + +@dataclass +class AdditionalExpectedResponse(ExpectedResponse): + """ + Communication metadata describing the expected response message for additional responses. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = HCTL["AdditionalExpectedResponse"] + class_class_curie: ClassVar[str] = "hctl:AdditionalExpectedResponse" + class_name: ClassVar[str] = "AdditionalExpectedResponse" + class_model_uri: ClassVar[URIRef] = TD.AdditionalExpectedResponse + + contentType: str = None + additionalOutputSchema: Optional[str] = None + success: Optional[Union[bool, Bool]] = None + schema: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.additionalOutputSchema is not None and not isinstance(self.additionalOutputSchema, str): + self.additionalOutputSchema = str(self.additionalOutputSchema) + + if self.success is not None and not isinstance(self.success, Bool): + self.success = Bool(self.success) + + if self.schema is not None and not isinstance(self.schema, str): + self.schema = str(self.schema) + + super().__post_init__(**kwargs) + + @dataclass -class NamedThing(YAMLRoot): +class Form(YAMLRoot): """ - A generic grouping for any identifiable entity + A form can be viewed as a statement of to perform an operation type on form context, make a request method to + submission target, where the optional form fields may further describe the required request. In Thing + Descriptions, the form context is the surrounding Object, such as Properties, Actions, and Events or the Thing + itself for meta-interactions. """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = SCHEMA["Thing"] - class_class_curie: ClassVar[str] = "schema:Thing" - class_name: ClassVar[str] = "NamedThing" - class_model_uri: ClassVar[URIRef] = THING_DESCRIPTION_SCHEMA.NamedThing + class_class_uri: ClassVar[URIRef] = HCTL["Form"] + class_class_curie: ClassVar[str] = "hctl:Form" + class_name: ClassVar[str] = "Form" + class_model_uri: ClassVar[URIRef] = TD.Form + + target: URI = None + href: URI = None + contentType: Optional[str] = None + contentCoding: Optional[str] = None + securityDefinitions: Optional[str] = None + scopes: Optional[str] = None + returns: Optional[Union[dict, ExpectedResponse]] = None + additionalReturns: Optional[Union[Union[dict, AdditionalExpectedResponse], List[Union[dict, AdditionalExpectedResponse]]]] = empty_list() + subprotocol: Optional[str] = None + operationType: Optional[Union[Union[str, "OperationTypes"], List[Union[str, "OperationTypes"]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.target): + self.MissingRequiredField("target") + if not isinstance(self.target, URI): + self.target = URI(self.target) + + if self._is_empty(self.href): + self.MissingRequiredField("href") + if not isinstance(self.href, URI): + self.href = URI(self.href) + + if self.contentType is not None and not isinstance(self.contentType, str): + self.contentType = str(self.contentType) + + if self.contentCoding is not None and not isinstance(self.contentCoding, str): + self.contentCoding = str(self.contentCoding) + + if self.securityDefinitions is not None and not isinstance(self.securityDefinitions, str): + self.securityDefinitions = str(self.securityDefinitions) + + if self.scopes is not None and not isinstance(self.scopes, str): + self.scopes = str(self.scopes) + + if self.returns is not None and not isinstance(self.returns, ExpectedResponse): + self.returns = ExpectedResponse(**as_dict(self.returns)) + + self._normalize_inlined_as_dict(slot_name="additionalReturns", slot_type=AdditionalExpectedResponse, key_name="contentType", keyed=False) + + if self.subprotocol is not None and not isinstance(self.subprotocol, str): + self.subprotocol = str(self.subprotocol) + + if not isinstance(self.operationType, list): + self.operationType = [self.operationType] if self.operationType is not None else [] + self.operationType = [v if isinstance(v, OperationTypes) else OperationTypes(v) for v in self.operationType] + + super().__post_init__(**kwargs) + + +@dataclass +class SecurityScheme(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = TD["SecurityScheme"] + class_class_curie: ClassVar[str] = "td:SecurityScheme" + class_name: ClassVar[str] = "SecurityScheme" + class_model_uri: ClassVar[URIRef] = TD.SecurityScheme - id: Union[str, NamedThingId] = None - name: Optional[str] = None + scheme: Union[str, "SecuritySchemeType"] = None + @type: Optional[Union[str, List[str]]] = empty_list() + descriptions: Optional[Union[List[Union[str, MultiLanguageKey]], Dict[Union[str, MultiLanguageKey], Union[dict, MultiLanguage]]]] = empty_dict() description: Optional[str] = None + proxy: Optional[URI] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, NamedThingId): - self.id = NamedThingId(self.id) + if self._is_empty(self.scheme): + self.MissingRequiredField("scheme") + if not isinstance(self.scheme, SecuritySchemeType): + self.scheme = SecuritySchemeType(self.scheme) + + if not isinstance(self.@type, list): + self.@type = [self.@type] if self.@type is not None else [] + self.@type = [v if isinstance(v, str) else str(v) for v in self.@type] - if self.name is not None and not isinstance(self.name, str): - self.name = str(self.name) + self._normalize_inlined_as_dict(slot_name="descriptions", slot_type=MultiLanguage, key_name="key", keyed=True) if self.description is not None and not isinstance(self.description, str): self.description = str(self.description) + if self.proxy is not None and not isinstance(self.proxy, URI): + self.proxy = URI(self.proxy) + super().__post_init__(**kwargs) @dataclass -class Thing(NamedThing): +class DataSchema(YAMLRoot): """ - Represents a Thing + Metadata that describes the data format used. It can be used for validation. """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = THING_DESCRIPTION_SCHEMA["Thing"] - class_class_curie: ClassVar[str] = "thing_description_schema:Thing" - class_name: ClassVar[str] = "Thing" - class_model_uri: ClassVar[URIRef] = THING_DESCRIPTION_SCHEMA.Thing + class_class_uri: ClassVar[URIRef] = JSONSCHEMA["DataSchema"] + class_class_curie: ClassVar[str] = "jsonschema:DataSchema" + class_name: ClassVar[str] = "DataSchema" + class_model_uri: ClassVar[URIRef] = TD.DataSchema - id: Union[str, ThingId] = None - primary_email: Optional[str] = None - birth_date: Optional[Union[str, XSDDate]] = None - age_in_years: Optional[int] = None - vital_status: Optional[Union[str, "PersonStatus"]] = None + description: Optional[Union[str, MultiLanguageKey]] = None + title: Optional[Union[str, MultiLanguageKey]] = None + titleInLanguage: Optional[Union[str, MultiLanguageKey]] = None + descriptionInLanguage: Optional[Union[str, MultiLanguageKey]] = None + propertyName: Optional[str] = None + writeOnly: Optional[str] = None + readonly: Optional[str] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, ThingId): - self.id = ThingId(self.id) + if self.description is not None and not isinstance(self.description, MultiLanguageKey): + self.description = MultiLanguageKey(self.description) + + if self.title is not None and not isinstance(self.title, MultiLanguageKey): + self.title = MultiLanguageKey(self.title) + + if self.titleInLanguage is not None and not isinstance(self.titleInLanguage, MultiLanguageKey): + self.titleInLanguage = MultiLanguageKey(self.titleInLanguage) + + if self.descriptionInLanguage is not None and not isinstance(self.descriptionInLanguage, MultiLanguageKey): + self.descriptionInLanguage = MultiLanguageKey(self.descriptionInLanguage) + + if self.propertyName is not None and not isinstance(self.propertyName, str): + self.propertyName = str(self.propertyName) + + if self.writeOnly is not None and not isinstance(self.writeOnly, str): + self.writeOnly = str(self.writeOnly) + + if self.readonly is not None and not isinstance(self.readonly, str): + self.readonly = str(self.readonly) + + super().__post_init__(**kwargs) + + +@dataclass +class InteractionAffordance(YAMLRoot): + """ + TOOD + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = TD["InteractionAffordance"] + class_class_curie: ClassVar[str] = "td:InteractionAffordance" + class_name: ClassVar[str] = "InteractionAffordance" + class_model_uri: ClassVar[URIRef] = TD.InteractionAffordance + + name: Union[str, InteractionAffordanceName] = None + titles: Optional[Union[List[Union[str, MultiLanguageKey]], Dict[Union[str, MultiLanguageKey], Union[dict, MultiLanguage]]]] = empty_dict() + descriptions: Optional[Union[List[Union[str, MultiLanguageKey]], Dict[Union[str, MultiLanguageKey], Union[dict, MultiLanguage]]]] = empty_dict() + title: Optional[Union[str, MultiLanguageKey]] = None + description: Optional[Union[str, MultiLanguageKey]] = None + titleInLanguage: Optional[Union[str, MultiLanguageKey]] = None + descriptionInLanguage: Optional[Union[str, MultiLanguageKey]] = None + uriVariables: Optional[Union[Union[dict, DataSchema], List[Union[dict, DataSchema]]]] = empty_list() + forms: Optional[Union[Union[dict, Form], List[Union[dict, Form]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, InteractionAffordanceName): + self.name = InteractionAffordanceName(self.name) + + self._normalize_inlined_as_dict(slot_name="titles", slot_type=MultiLanguage, key_name="key", keyed=True) + + self._normalize_inlined_as_dict(slot_name="descriptions", slot_type=MultiLanguage, key_name="key", keyed=True) + + if self.title is not None and not isinstance(self.title, MultiLanguageKey): + self.title = MultiLanguageKey(self.title) + + if self.description is not None and not isinstance(self.description, MultiLanguageKey): + self.description = MultiLanguageKey(self.description) + + if self.titleInLanguage is not None and not isinstance(self.titleInLanguage, MultiLanguageKey): + self.titleInLanguage = MultiLanguageKey(self.titleInLanguage) + + if self.descriptionInLanguage is not None and not isinstance(self.descriptionInLanguage, MultiLanguageKey): + self.descriptionInLanguage = MultiLanguageKey(self.descriptionInLanguage) + + if not isinstance(self.uriVariables, list): + self.uriVariables = [self.uriVariables] if self.uriVariables is not None else [] + self.uriVariables = [v if isinstance(v, DataSchema) else DataSchema(**as_dict(v)) for v in self.uriVariables] + + self._normalize_inlined_as_dict(slot_name="forms", slot_type=Form, key_name="target", keyed=False) + + super().__post_init__(**kwargs) - if self.primary_email is not None and not isinstance(self.primary_email, str): - self.primary_email = str(self.primary_email) - if self.birth_date is not None and not isinstance(self.birth_date, XSDDate): - self.birth_date = XSDDate(self.birth_date) +@dataclass +class PropertyAffordance(InteractionAffordance): + """ + An Interaction Affordance that exposes state of the Thing. This state can be retrieved (read) and/or updated. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = TD["PropertyAffordance"] + class_class_curie: ClassVar[str] = "td:PropertyAffordance" + class_name: ClassVar[str] = "PropertyAffordance" + class_model_uri: ClassVar[URIRef] = TD.PropertyAffordance + + name: Union[str, PropertyAffordanceName] = None + title: Optional[Union[str, MultiLanguageKey]] = None + description: Optional[Union[str, MultiLanguageKey]] = None + titleInLanguage: Optional[Union[str, MultiLanguageKey]] = None + descriptionInLanguage: Optional[Union[str, MultiLanguageKey]] = None + observable: Optional[Union[bool, Bool]] = None + propertyName: Optional[str] = None + writeOnly: Optional[str] = None + readonly: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, PropertyAffordanceName): + self.name = PropertyAffordanceName(self.name) + + if self.title is not None and not isinstance(self.title, MultiLanguageKey): + self.title = MultiLanguageKey(self.title) + + if self.description is not None and not isinstance(self.description, MultiLanguageKey): + self.description = MultiLanguageKey(self.description) + + if self.titleInLanguage is not None and not isinstance(self.titleInLanguage, MultiLanguageKey): + self.titleInLanguage = MultiLanguageKey(self.titleInLanguage) + + if self.descriptionInLanguage is not None and not isinstance(self.descriptionInLanguage, MultiLanguageKey): + self.descriptionInLanguage = MultiLanguageKey(self.descriptionInLanguage) + + if self.observable is not None and not isinstance(self.observable, Bool): + self.observable = Bool(self.observable) + + if self.propertyName is not None and not isinstance(self.propertyName, str): + self.propertyName = str(self.propertyName) + + if self.writeOnly is not None and not isinstance(self.writeOnly, str): + self.writeOnly = str(self.writeOnly) + + if self.readonly is not None and not isinstance(self.readonly, str): + self.readonly = str(self.readonly) + + super().__post_init__(**kwargs) - if self.age_in_years is not None and not isinstance(self.age_in_years, int): - self.age_in_years = int(self.age_in_years) - if self.vital_status is not None and not isinstance(self.vital_status, PersonStatus): - self.vital_status = PersonStatus(self.vital_status) +@dataclass +class ActionAffordance(InteractionAffordance): + """ + An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a + lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time). + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = TD["ActionAffordance"] + class_class_curie: ClassVar[str] = "td:ActionAffordance" + class_name: ClassVar[str] = "ActionAffordance" + class_model_uri: ClassVar[URIRef] = TD.ActionAffordance + + name: Union[str, ActionAffordanceName] = None + safe: Optional[Union[bool, Bool]] = None + synchronous: Optional[Union[bool, Bool]] = None + idempotent: Optional[Union[bool, Bool]] = None + input: Optional[Union[dict, DataSchema]] = None + output: Optional[Union[dict, DataSchema]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, ActionAffordanceName): + self.name = ActionAffordanceName(self.name) + + if self.safe is not None and not isinstance(self.safe, Bool): + self.safe = Bool(self.safe) + + if self.synchronous is not None and not isinstance(self.synchronous, Bool): + self.synchronous = Bool(self.synchronous) + + if self.idempotent is not None and not isinstance(self.idempotent, Bool): + self.idempotent = Bool(self.idempotent) + + if self.input is not None and not isinstance(self.input, DataSchema): + self.input = DataSchema(**as_dict(self.input)) + + if self.output is not None and not isinstance(self.output, DataSchema): + self.output = DataSchema(**as_dict(self.output)) super().__post_init__(**kwargs) @dataclass -class ThingCollection(YAMLRoot): +class EventAffordance(InteractionAffordance): """ - A holder for Thing objects + An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers + (e.g., overhearing alerts). """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = THING_DESCRIPTION_SCHEMA["ThingCollection"] - class_class_curie: ClassVar[str] = "thing_description_schema:ThingCollection" - class_name: ClassVar[str] = "ThingCollection" - class_model_uri: ClassVar[URIRef] = THING_DESCRIPTION_SCHEMA.ThingCollection + class_class_uri: ClassVar[URIRef] = TD["EventAffordance"] + class_class_curie: ClassVar[str] = "td:EventAffordance" + class_name: ClassVar[str] = "EventAffordance" + class_model_uri: ClassVar[URIRef] = TD.EventAffordance - entries: Optional[Union[Dict[Union[str, ThingId], Union[dict, Thing]], List[Union[dict, Thing]]]] = empty_dict() + name: Union[str, EventAffordanceName] = None + subscription: Optional[Union[dict, DataSchema]] = None + cancellation: Optional[Union[dict, DataSchema]] = None + notification: Optional[Union[dict, DataSchema]] = None + notificationResponse: Optional[Union[dict, DataSchema]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - self._normalize_inlined_as_dict(slot_name="entries", slot_type=Thing, key_name="id", keyed=True) + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, EventAffordanceName): + self.name = EventAffordanceName(self.name) + + if self.subscription is not None and not isinstance(self.subscription, DataSchema): + self.subscription = DataSchema(**as_dict(self.subscription)) + + if self.cancellation is not None and not isinstance(self.cancellation, DataSchema): + self.cancellation = DataSchema(**as_dict(self.cancellation)) + + if self.notification is not None and not isinstance(self.notification, DataSchema): + self.notification = DataSchema(**as_dict(self.notification)) + + if self.notificationResponse is not None and not isinstance(self.notificationResponse, DataSchema): + self.notificationResponse = DataSchema(**as_dict(self.notificationResponse)) + + super().__post_init__(**kwargs) + + +@dataclass +class Thing(YAMLRoot): + """ + An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing + Description, whereas a virtual entity is the composition of one or more Things. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = TD["Thing"] + class_class_curie: ClassVar[str] = "td:Thing" + class_name: ClassVar[str] = "Thing" + class_model_uri: ClassVar[URIRef] = TD.Thing + + id: Union[URI, ThingId] = None + title: Optional[Union[str, MultiLanguageKey]] = None + description: Optional[Union[str, MultiLanguageKey]] = None + titles: Optional[Union[List[Union[str, MultiLanguageKey]], Dict[Union[str, MultiLanguageKey], Union[dict, MultiLanguage]]]] = empty_dict() + descriptions: Optional[Union[List[Union[str, MultiLanguageKey]], Dict[Union[str, MultiLanguageKey], Union[dict, MultiLanguage]]]] = empty_dict() + @type: Optional[Union[str, List[str]]] = empty_list() + titleInLanguage: Optional[Union[str, MultiLanguageKey]] = None + descriptionInLanguage: Optional[Union[str, MultiLanguageKey]] = None + securityDefinitions: Optional[Union[str, List[str]]] = empty_list() + security: Optional[Union[str, List[str]]] = empty_list() + schemaDefinitions: Optional[Union[Union[dict, DataSchema], List[Union[dict, DataSchema]]]] = empty_list() + profile: Optional[Union[URI, List[URI]]] = empty_list() + instance: Optional[str] = None + created: Optional[Union[str, XSDDateTime]] = None + modified: Optional[Union[str, XSDDateTime]] = None + supportContact: Optional[URI] = None + base: Optional[URI] = None + version: Optional[Union[dict, VersionInfo]] = None + forms: Optional[Union[Union[dict, Form], List[Union[dict, Form]]]] = empty_list() + links: Optional[Union[Union[dict, Link], List[Union[dict, Link]]]] = empty_list() + properties: Optional[Union[Dict[Union[str, PropertyAffordanceName], Union[dict, PropertyAffordance]], List[Union[dict, PropertyAffordance]]]] = empty_dict() + actions: Optional[Union[Dict[Union[str, ActionAffordanceName], Union[dict, ActionAffordance]], List[Union[dict, ActionAffordance]]]] = empty_dict() + events: Optional[Union[Dict[Union[str, EventAffordanceName], Union[dict, EventAffordance]], List[Union[dict, EventAffordance]]]] = empty_dict() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ThingId): + self.id = ThingId(self.id) + + if self.title is not None and not isinstance(self.title, MultiLanguageKey): + self.title = MultiLanguageKey(self.title) + + if self.description is not None and not isinstance(self.description, MultiLanguageKey): + self.description = MultiLanguageKey(self.description) + + self._normalize_inlined_as_dict(slot_name="titles", slot_type=MultiLanguage, key_name="key", keyed=True) + + self._normalize_inlined_as_dict(slot_name="descriptions", slot_type=MultiLanguage, key_name="key", keyed=True) + + if not isinstance(self.@type, list): + self.@type = [self.@type] if self.@type is not None else [] + self.@type = [v if isinstance(v, str) else str(v) for v in self.@type] + + if self.titleInLanguage is not None and not isinstance(self.titleInLanguage, MultiLanguageKey): + self.titleInLanguage = MultiLanguageKey(self.titleInLanguage) + + if self.descriptionInLanguage is not None and not isinstance(self.descriptionInLanguage, MultiLanguageKey): + self.descriptionInLanguage = MultiLanguageKey(self.descriptionInLanguage) + + if not isinstance(self.securityDefinitions, list): + self.securityDefinitions = [self.securityDefinitions] if self.securityDefinitions is not None else [] + self.securityDefinitions = [v if isinstance(v, str) else str(v) for v in self.securityDefinitions] + + if not isinstance(self.security, list): + self.security = [self.security] if self.security is not None else [] + self.security = [v if isinstance(v, str) else str(v) for v in self.security] + + if not isinstance(self.schemaDefinitions, list): + self.schemaDefinitions = [self.schemaDefinitions] if self.schemaDefinitions is not None else [] + self.schemaDefinitions = [v if isinstance(v, DataSchema) else DataSchema(**as_dict(v)) for v in self.schemaDefinitions] + + if not isinstance(self.profile, list): + self.profile = [self.profile] if self.profile is not None else [] + self.profile = [v if isinstance(v, URI) else URI(v) for v in self.profile] + + if self.instance is not None and not isinstance(self.instance, str): + self.instance = str(self.instance) + + if self.created is not None and not isinstance(self.created, XSDDateTime): + self.created = XSDDateTime(self.created) + + if self.modified is not None and not isinstance(self.modified, XSDDateTime): + self.modified = XSDDateTime(self.modified) + + if self.supportContact is not None and not isinstance(self.supportContact, URI): + self.supportContact = URI(self.supportContact) + + if self.base is not None and not isinstance(self.base, URI): + self.base = URI(self.base) + + if self.version is not None and not isinstance(self.version, VersionInfo): + self.version = VersionInfo(**as_dict(self.version)) + + self._normalize_inlined_as_dict(slot_name="forms", slot_type=Form, key_name="target", keyed=False) + + self._normalize_inlined_as_dict(slot_name="links", slot_type=Link, key_name="target", keyed=False) + + self._normalize_inlined_as_dict(slot_name="properties", slot_type=PropertyAffordance, key_name="name", keyed=True) + + self._normalize_inlined_as_dict(slot_name="actions", slot_type=ActionAffordance, key_name="name", keyed=True) + + self._normalize_inlined_as_dict(slot_name="events", slot_type=EventAffordance, key_name="name", keyed=True) super().__post_init__(**kwargs) # Enumerations -class PersonStatus(EnumDefinitionImpl): - - ALIVE = PermissibleValue( - text="ALIVE", - description="the person is living", - meaning=PATO["0001421"]) - DEAD = PermissibleValue( - text="DEAD", - description="the person is deceased", - meaning=PATO["0001422"]) - UNKNOWN = PermissibleValue( - text="UNKNOWN", - description="the vital status is not known") +class OperationTypes(EnumDefinitionImpl): + """ + Enumerations of well-known operation types necessary to implement the WoT interaction model. + """ + readproperty = PermissibleValue( + text="readproperty", + description="Identifies the read operation on Property Affordances to retrieve the corresponding data.", + meaning=TD["readProperty"]) + writeproperty = PermissibleValue( + text="writeproperty", + description="Identifies the write operation on Property Affordances to update the corresponding data.", + meaning=TD["writeProperty"]) + observeproperty = PermissibleValue( + text="observeproperty", + description="""Identifies the observe operation on Property Affordances to be notified with the new data when the Property is updated.""", + meaning=TD["observeProperty"]) + unobserveproperty = PermissibleValue( + text="unobserveproperty", + description="""Identifies the unobserve operation on Property Affordances to stop the corresponding notifications.""", + meaning=TD["unobserveProperty"]) + invokeaction = PermissibleValue( + text="invokeaction", + description="Identifies the invoke operation on Action Affordances to perform the corresponding action.", + meaning=TD["invokeAction"]) + queryaction = PermissibleValue( + text="queryaction", + description="""Identifies the querying operation on Action Affordances to get the status of the corresponding action.""", + meaning=TD["queryAction"]) + cancelaction = PermissibleValue( + text="cancelaction", + description="""Identifies the cancel operation on Action Affordances to cancel the ongoing corresponding action.""", + meaning=TD["cancelAction"]) + subscribeevent = PermissibleValue( + text="subscribeevent", + description="""Identifies the subscribe operation on Event Affordances to be notified by the Thing when the event occurs.""", + meaning=TD["subscribeEvent"]) + unsubscribeevent = PermissibleValue( + text="unsubscribeevent", + description="""Identifies the unsubscribe operation on Event Affordances to stop the corresponding notifications.""", + meaning=TD["unsubscribeEvent"]) + readallproperties = PermissibleValue( + text="readallproperties", + description="""Identifies the readallproperties operation on a Thing to retrieve the data of all Properties in a single interaction.""", + meaning=TD["readAllProperties"]) + writeallproperties = PermissibleValue( + text="writeallproperties", + description="""Identifies the writeallproperties operation on a Thing to update the data of all writable Properties in a single interaction.""", + meaning=TD["writeAllProperties"]) + readmultipleproperties = PermissibleValue( + text="readmultipleproperties", + description="""Identifies the readmultipleproperties operation on a Thing to retrieve the data of selected Properties in a single interaction.""", + meaning=TD["readMultipleProperties"]) + writemultipleproperties = PermissibleValue( + text="writemultipleproperties", + description="""Identifies the writemultipleproperties operation on a Thing to update the data of selected writable Properties in a single interaction.""", + meaning=TD["writeMultipleProperties"]) + observeallproperties = PermissibleValue( + text="observeallproperties", + description="""Identifies the observeallproperties operation on Properties to be notified with new data when any Property is updated.""", + meaning=TD["observeAllProperties"]) + unobserveallproperties = PermissibleValue( + text="unobserveallproperties", + description="""Identifies the unobserveallproperties operation on Properties to stop notifications from all Properties in a single interaction.""", + meaning=TD["unobserveAllProperties"]) + subscribeallevents = PermissibleValue( + text="subscribeallevents", + description="""Identifies the subscribeallevents operation on Events to subscribe to notifications from all Events in a single interaction.""", + meaning=TD["subscribeAllEvents"]) + unsubscribeallevents = PermissibleValue( + text="unsubscribeallevents", + description="""Identifies the unsubscribeallevents operation on Events to unsubscribe from notifications from all Events in a single interaction.""", + meaning=TD["unsubscribeAllEvents"]) + queryallactions = PermissibleValue( + text="queryallactions", + description="""Identifies the queryallactions operation on a Thing to get the status of all Actions in a single interaction.""", + meaning=TD["queryAllActions"]) _defn = EnumDefinition( - name="PersonStatus", + name="OperationTypes", + description="Enumerations of well-known operation types necessary to implement the WoT interaction model.", + ) + +class SecuritySchemeType(EnumDefinitionImpl): + + nosec = PermissibleValue( + text="nosec", + description="""A security configuration corresponding to identified by the Vocabulary Term nosec, indicating there is no authentication or other mechanism required to access the resource.""", + meaning=WOTSEC["NoSecurityScheme"]) + combo = PermissibleValue( + text="combo", + description="""Elements of this scheme define various ways in which other named schemes defined in securityDefinitions, including other ComboSecurityScheme definitions, are to be combined to create a new scheme definition.""", + meaning=WOTSEC["ComboSecurityScheme"]) + basic = PermissibleValue( + text="basic", + description="Uses an unencrypted username and password.", + meaning=WOTSEC["BasicSecurityScheme"]) + digest = PermissibleValue( + text="digest", + description="""This scheme is similar to basic authentication but with added features to avoid man-in-the-middle attacks.""", + meaning=WOTSEC["DigestSecurityScheme"]) + bearer = PermissibleValue( + text="bearer", + description="Bearer tokens are used independently of OAuth2.", + meaning=WOTSEC["BearerSecurityScheme"]) + psk = PermissibleValue( + text="psk", + description="""This is meant to identify that a standard is used for pre-shared keys such as TLS-PSK [RFC4279], and that the ciphersuite used for keys will be established during protocol negotiation.""", + meaning=WOTSEC["PSKSecurityScheme"]) + oauth2 = PermissibleValue( + text="oauth2", + description="""OAuth 2.0 authentication security configuration for systems conformant with [RFC6749] and [RFC8252].""", + meaning=WOTSEC["OAuth2SecurityScheme"]) + apikey = PermissibleValue( + text="apikey", + description="This scheme is to be used when the access token is opaque.", + meaning=WOTSEC["APIKeySecurityScheme"]) + auto = PermissibleValue( + text="auto", + description="""This scheme indicates that the security parameters are going to be negotiated by the underlying protocols at runtime""", + meaning=WOTSEC["AutoSecurityScheme"]) + + _defn = EnumDefinition( + name="SecuritySchemeType", ) # Slots class slots: pass -slots.id = Slot(uri=SCHEMA.identifier, name="id", curie=SCHEMA.curie('identifier'), - model_uri=THING_DESCRIPTION_SCHEMA.id, domain=None, range=URIRef) +slots.id = Slot(uri=TD.id, name="id", curie=TD.curie('id'), + model_uri=TD.id, domain=None, range=URIRef) + +slots.title = Slot(uri=TD.title, name="title", curie=TD.curie('title'), + model_uri=TD.title, domain=None, range=Optional[Union[str, MultiLanguageKey]]) + +slots.description = Slot(uri=TD.description, name="description", curie=TD.curie('description'), + model_uri=TD.description, domain=None, range=Optional[Union[str, MultiLanguageKey]]) + +slots.titles = Slot(uri=TD.titles, name="titles", curie=TD.curie('titles'), + model_uri=TD.titles, domain=None, range=Optional[Union[List[Union[str, MultiLanguageKey]], Dict[Union[str, MultiLanguageKey], Union[dict, MultiLanguage]]]]) + +slots.descriptions = Slot(uri=TD.descriptions, name="descriptions", curie=TD.curie('descriptions'), + model_uri=TD.descriptions, domain=None, range=Optional[Union[List[Union[str, MultiLanguageKey]], Dict[Union[str, MultiLanguageKey], Union[dict, MultiLanguage]]]]) + +slots.descriptionInLanguage = Slot(uri=TD.descriptionInLanguage, name="descriptionInLanguage", curie=TD.curie('descriptionInLanguage'), + model_uri=TD.descriptionInLanguage, domain=None, range=Optional[Union[str, MultiLanguageKey]]) + +slots.titleInLanguage = Slot(uri=TD.titleInLanguage, name="titleInLanguage", curie=TD.curie('titleInLanguage'), + model_uri=TD.titleInLanguage, domain=None, range=Optional[Union[str, MultiLanguageKey]]) + +slots.@type = Slot(uri=TD['@type'], name="@type", curie=TD.curie('@type'), + model_uri=TD['@type'], domain=None, range=Optional[Union[str, List[str]]]) + +slots.target = Slot(uri=HCTL.target, name="target", curie=HCTL.curie('target'), + model_uri=TD.target, domain=None, range=URI) + +slots.versionInfo__instance = Slot(uri=TD.instance, name="versionInfo__instance", curie=TD.curie('instance'), + model_uri=TD.versionInfo__instance, domain=None, range=str) + +slots.versionInfo__model = Slot(uri=TD.model, name="versionInfo__model", curie=TD.curie('model'), + model_uri=TD.versionInfo__model, domain=None, range=Optional[str]) + +slots.multiLanguage__key = Slot(uri=TD.key, name="multiLanguage__key", curie=TD.curie('key'), + model_uri=TD.multiLanguage__key, domain=None, range=URIRef, + pattern=re.compile(r'^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$')) + +slots.link__hintsAtMediaType = Slot(uri=TD.hintsAtMediaType, name="link__hintsAtMediaType", curie=TD.curie('hintsAtMediaType'), + model_uri=TD.link__hintsAtMediaType, domain=None, range=Optional[str]) + +slots.link__type = Slot(uri=TD.type, name="link__type", curie=TD.curie('type'), + model_uri=TD.link__type, domain=None, range=Optional[str]) + +slots.link__relation = Slot(uri=TD.relation, name="link__relation", curie=TD.curie('relation'), + model_uri=TD.link__relation, domain=None, range=Optional[str]) + +slots.link__anchor = Slot(uri=TD.anchor, name="link__anchor", curie=TD.curie('anchor'), + model_uri=TD.link__anchor, domain=None, range=Optional[URI]) + +slots.link__sizes = Slot(uri=TD.sizes, name="link__sizes", curie=TD.curie('sizes'), + model_uri=TD.link__sizes, domain=None, range=Optional[str]) + +slots.link__hreflang = Slot(uri=TD.hreflang, name="link__hreflang", curie=TD.curie('hreflang'), + model_uri=TD.link__hreflang, domain=None, range=Optional[str], + pattern=re.compile(r'^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$')) + +slots.expectedResponse__contentType = Slot(uri=TD.contentType, name="expectedResponse__contentType", curie=TD.curie('contentType'), + model_uri=TD.expectedResponse__contentType, domain=None, range=str) + +slots.additionalExpectedResponse__additionalOutputSchema = Slot(uri=TD.additionalOutputSchema, name="additionalExpectedResponse__additionalOutputSchema", curie=TD.curie('additionalOutputSchema'), + model_uri=TD.additionalExpectedResponse__additionalOutputSchema, domain=None, range=Optional[str]) + +slots.additionalExpectedResponse__success = Slot(uri=TD.success, name="additionalExpectedResponse__success", curie=TD.curie('success'), + model_uri=TD.additionalExpectedResponse__success, domain=None, range=Optional[Union[bool, Bool]]) + +slots.additionalExpectedResponse__schema = Slot(uri=TD.schema, name="additionalExpectedResponse__schema", curie=TD.curie('schema'), + model_uri=TD.additionalExpectedResponse__schema, domain=None, range=Optional[str]) + +slots.form__href = Slot(uri=TD.href, name="form__href", curie=TD.curie('href'), + model_uri=TD.form__href, domain=None, range=URI) + +slots.form__contentType = Slot(uri=TD.contentType, name="form__contentType", curie=TD.curie('contentType'), + model_uri=TD.form__contentType, domain=None, range=Optional[str]) + +slots.form__contentCoding = Slot(uri=TD.contentCoding, name="form__contentCoding", curie=TD.curie('contentCoding'), + model_uri=TD.form__contentCoding, domain=None, range=Optional[str]) + +slots.form__securityDefinitions = Slot(uri=TD.securityDefinitions, name="form__securityDefinitions", curie=TD.curie('securityDefinitions'), + model_uri=TD.form__securityDefinitions, domain=None, range=Optional[str]) + +slots.form__scopes = Slot(uri=TD.scopes, name="form__scopes", curie=TD.curie('scopes'), + model_uri=TD.form__scopes, domain=None, range=Optional[str]) + +slots.form__returns = Slot(uri=TD.returns, name="form__returns", curie=TD.curie('returns'), + model_uri=TD.form__returns, domain=None, range=Optional[Union[dict, ExpectedResponse]]) + +slots.form__additionalReturns = Slot(uri=TD.additionalReturns, name="form__additionalReturns", curie=TD.curie('additionalReturns'), + model_uri=TD.form__additionalReturns, domain=None, range=Optional[Union[Union[dict, AdditionalExpectedResponse], List[Union[dict, AdditionalExpectedResponse]]]]) + +slots.form__subprotocol = Slot(uri=TD.subprotocol, name="form__subprotocol", curie=TD.curie('subprotocol'), + model_uri=TD.form__subprotocol, domain=None, range=Optional[str]) + +slots.form__operationType = Slot(uri=TD.operationType, name="form__operationType", curie=TD.curie('operationType'), + model_uri=TD.form__operationType, domain=None, range=Optional[Union[Union[str, "OperationTypes"], List[Union[str, "OperationTypes"]]]]) + +slots.securityScheme__description = Slot(uri=TD.description, name="securityScheme__description", curie=TD.curie('description'), + model_uri=TD.securityScheme__description, domain=None, range=Optional[str]) + +slots.securityScheme__proxy = Slot(uri=TD.proxy, name="securityScheme__proxy", curie=TD.curie('proxy'), + model_uri=TD.securityScheme__proxy, domain=None, range=Optional[URI]) + +slots.securityScheme__scheme = Slot(uri=TD.scheme, name="securityScheme__scheme", curie=TD.curie('scheme'), + model_uri=TD.securityScheme__scheme, domain=None, range=Union[str, "SecuritySchemeType"]) + +slots.dataSchema__propertyName = Slot(uri=TD.propertyName, name="dataSchema__propertyName", curie=TD.curie('propertyName'), + model_uri=TD.dataSchema__propertyName, domain=None, range=Optional[str]) + +slots.dataSchema__writeOnly = Slot(uri=TD.writeOnly, name="dataSchema__writeOnly", curie=TD.curie('writeOnly'), + model_uri=TD.dataSchema__writeOnly, domain=None, range=Optional[str]) + +slots.dataSchema__readonly = Slot(uri=TD.readonly, name="dataSchema__readonly", curie=TD.curie('readonly'), + model_uri=TD.dataSchema__readonly, domain=None, range=Optional[str]) + +slots.interactionAffordance__name = Slot(uri=TD.name, name="interactionAffordance__name", curie=TD.curie('name'), + model_uri=TD.interactionAffordance__name, domain=None, range=URIRef) + +slots.interactionAffordance__uriVariables = Slot(uri=TD.uriVariables, name="interactionAffordance__uriVariables", curie=TD.curie('uriVariables'), + model_uri=TD.interactionAffordance__uriVariables, domain=None, range=Optional[Union[Union[dict, DataSchema], List[Union[dict, DataSchema]]]]) + +slots.interactionAffordance__forms = Slot(uri=TD.forms, name="interactionAffordance__forms", curie=TD.curie('forms'), + model_uri=TD.interactionAffordance__forms, domain=None, range=Optional[Union[Union[dict, Form], List[Union[dict, Form]]]]) + +slots.propertyAffordance__observable = Slot(uri=TD.observable, name="propertyAffordance__observable", curie=TD.curie('observable'), + model_uri=TD.propertyAffordance__observable, domain=None, range=Optional[Union[bool, Bool]]) + +slots.actionAffordance__safe = Slot(uri=TD.safe, name="actionAffordance__safe", curie=TD.curie('safe'), + model_uri=TD.actionAffordance__safe, domain=None, range=Optional[Union[bool, Bool]]) + +slots.actionAffordance__synchronous = Slot(uri=TD.synchronous, name="actionAffordance__synchronous", curie=TD.curie('synchronous'), + model_uri=TD.actionAffordance__synchronous, domain=None, range=Optional[Union[bool, Bool]]) + +slots.actionAffordance__idempotent = Slot(uri=TD.idempotent, name="actionAffordance__idempotent", curie=TD.curie('idempotent'), + model_uri=TD.actionAffordance__idempotent, domain=None, range=Optional[Union[bool, Bool]]) + +slots.actionAffordance__input = Slot(uri=TD.input, name="actionAffordance__input", curie=TD.curie('input'), + model_uri=TD.actionAffordance__input, domain=None, range=Optional[Union[dict, DataSchema]]) + +slots.actionAffordance__output = Slot(uri=TD.output, name="actionAffordance__output", curie=TD.curie('output'), + model_uri=TD.actionAffordance__output, domain=None, range=Optional[Union[dict, DataSchema]]) + +slots.eventAffordance__subscription = Slot(uri=TD.subscription, name="eventAffordance__subscription", curie=TD.curie('subscription'), + model_uri=TD.eventAffordance__subscription, domain=None, range=Optional[Union[dict, DataSchema]]) + +slots.eventAffordance__cancellation = Slot(uri=TD.cancellation, name="eventAffordance__cancellation", curie=TD.curie('cancellation'), + model_uri=TD.eventAffordance__cancellation, domain=None, range=Optional[Union[dict, DataSchema]]) + +slots.eventAffordance__notification = Slot(uri=TD.notification, name="eventAffordance__notification", curie=TD.curie('notification'), + model_uri=TD.eventAffordance__notification, domain=None, range=Optional[Union[dict, DataSchema]]) + +slots.eventAffordance__notificationResponse = Slot(uri=TD.notificationResponse, name="eventAffordance__notificationResponse", curie=TD.curie('notificationResponse'), + model_uri=TD.eventAffordance__notificationResponse, domain=None, range=Optional[Union[dict, DataSchema]]) + +slots.thing__securityDefinitions = Slot(uri=TD.securityDefinitions, name="thing__securityDefinitions", curie=TD.curie('securityDefinitions'), + model_uri=TD.thing__securityDefinitions, domain=None, range=Optional[Union[str, List[str]]]) + +slots.thing__security = Slot(uri=TD.security, name="thing__security", curie=TD.curie('security'), + model_uri=TD.thing__security, domain=None, range=Optional[Union[str, List[str]]]) + +slots.thing__schemaDefinitions = Slot(uri=TD.schemaDefinitions, name="thing__schemaDefinitions", curie=TD.curie('schemaDefinitions'), + model_uri=TD.thing__schemaDefinitions, domain=None, range=Optional[Union[Union[dict, DataSchema], List[Union[dict, DataSchema]]]]) + +slots.thing__profile = Slot(uri=TD.profile, name="thing__profile", curie=TD.curie('profile'), + model_uri=TD.thing__profile, domain=None, range=Optional[Union[URI, List[URI]]]) + +slots.thing__instance = Slot(uri=TD.instance, name="thing__instance", curie=TD.curie('instance'), + model_uri=TD.thing__instance, domain=None, range=Optional[str]) + +slots.thing__created = Slot(uri=TD.created, name="thing__created", curie=TD.curie('created'), + model_uri=TD.thing__created, domain=None, range=Optional[Union[str, XSDDateTime]]) + +slots.thing__modified = Slot(uri=TD.modified, name="thing__modified", curie=TD.curie('modified'), + model_uri=TD.thing__modified, domain=None, range=Optional[Union[str, XSDDateTime]]) -slots.name = Slot(uri=SCHEMA.name, name="name", curie=SCHEMA.curie('name'), - model_uri=THING_DESCRIPTION_SCHEMA.name, domain=None, range=Optional[str]) +slots.thing__supportContact = Slot(uri=TD.supportContact, name="thing__supportContact", curie=TD.curie('supportContact'), + model_uri=TD.thing__supportContact, domain=None, range=Optional[URI]) -slots.description = Slot(uri=SCHEMA.description, name="description", curie=SCHEMA.curie('description'), - model_uri=THING_DESCRIPTION_SCHEMA.description, domain=None, range=Optional[str]) +slots.thing__base = Slot(uri=TD.base, name="thing__base", curie=TD.curie('base'), + model_uri=TD.thing__base, domain=None, range=Optional[URI]) -slots.primary_email = Slot(uri=SCHEMA.email, name="primary_email", curie=SCHEMA.curie('email'), - model_uri=THING_DESCRIPTION_SCHEMA.primary_email, domain=None, range=Optional[str]) +slots.thing__version = Slot(uri=TD.version, name="thing__version", curie=TD.curie('version'), + model_uri=TD.thing__version, domain=None, range=Optional[Union[dict, VersionInfo]]) -slots.birth_date = Slot(uri=SCHEMA.birthDate, name="birth_date", curie=SCHEMA.curie('birthDate'), - model_uri=THING_DESCRIPTION_SCHEMA.birth_date, domain=None, range=Optional[Union[str, XSDDate]]) +slots.thing__forms = Slot(uri=TD.forms, name="thing__forms", curie=TD.curie('forms'), + model_uri=TD.thing__forms, domain=None, range=Optional[Union[Union[dict, Form], List[Union[dict, Form]]]]) -slots.age_in_years = Slot(uri=THING_DESCRIPTION_SCHEMA.age_in_years, name="age_in_years", curie=THING_DESCRIPTION_SCHEMA.curie('age_in_years'), - model_uri=THING_DESCRIPTION_SCHEMA.age_in_years, domain=None, range=Optional[int]) +slots.thing__links = Slot(uri=TD.links, name="thing__links", curie=TD.curie('links'), + model_uri=TD.thing__links, domain=None, range=Optional[Union[Union[dict, Link], List[Union[dict, Link]]]]) -slots.vital_status = Slot(uri=THING_DESCRIPTION_SCHEMA.vital_status, name="vital_status", curie=THING_DESCRIPTION_SCHEMA.curie('vital_status'), - model_uri=THING_DESCRIPTION_SCHEMA.vital_status, domain=None, range=Optional[Union[str, "PersonStatus"]]) +slots.thing__properties = Slot(uri=TD.properties, name="thing__properties", curie=TD.curie('properties'), + model_uri=TD.thing__properties, domain=None, range=Optional[Union[Dict[Union[str, PropertyAffordanceName], Union[dict, PropertyAffordance]], List[Union[dict, PropertyAffordance]]]]) -slots.thingCollection__entries = Slot(uri=THING_DESCRIPTION_SCHEMA.entries, name="thingCollection__entries", curie=THING_DESCRIPTION_SCHEMA.curie('entries'), - model_uri=THING_DESCRIPTION_SCHEMA.thingCollection__entries, domain=None, range=Optional[Union[Dict[Union[str, ThingId], Union[dict, Thing]], List[Union[dict, Thing]]]]) +slots.thing__actions = Slot(uri=TD.actions, name="thing__actions", curie=TD.curie('actions'), + model_uri=TD.thing__actions, domain=None, range=Optional[Union[Dict[Union[str, ActionAffordanceName], Union[dict, ActionAffordance]], List[Union[dict, ActionAffordance]]]]) -slots.Thing_primary_email = Slot(uri=SCHEMA.email, name="Thing_primary_email", curie=SCHEMA.curie('email'), - model_uri=THING_DESCRIPTION_SCHEMA.Thing_primary_email, domain=Thing, range=Optional[str], - pattern=re.compile(r'^\S+@[\S+\.]+\S+')) \ No newline at end of file +slots.thing__events = Slot(uri=TD.events, name="thing__events", curie=TD.curie('events'), + model_uri=TD.thing__events, domain=None, range=Optional[Union[Dict[Union[str, EventAffordanceName], Union[dict, EventAffordance]], List[Union[dict, EventAffordance]]]]) \ No newline at end of file diff --git a/src/thing_description_schema/schema/thing_description_schema.yaml b/src/thing_description_schema/schema/thing_description_schema.yaml index 6fd74ba..8060566 100644 --- a/src/thing_description_schema/schema/thing_description_schema.yaml +++ b/src/thing_description_schema/schema/thing_description_schema.yaml @@ -3,7 +3,7 @@ id: td name: thing-description-schema title: thing-description-schema description: |- - LinkML schema for modelling the Web of Things Thing Description information model. This schema is used to generate + LinkML schema for modelling the W3C Web of Things Thing Description information model. This schema is used to generate JSON Schema, SHACL shapes, and RDF. license: MIT see_also: From 83d045bc4699de5f3d56455ec06e6df1809f6999 Mon Sep 17 00:00:00 2001 From: Ege Korkan <egekorkan@gmail.com> Date: Wed, 15 May 2024 15:47:59 +0200 Subject: [PATCH 4/5] fix documentation for installing --- README.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 24a526b..4c6459c 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,9 @@ For more information please refer to the [WoT github repo](https://github.com/w3 ## Developer Documentation -- Install Python 3 -- Install [Poetry](https://python-poetry.org/) -- Run `poetry install` to install dependencies - -<details> -Use the `make` command to generate project artifacts: - -* `make test`: validate the LinkML schema on test instances -* `make all`: make everything -<!-- * `make deploy`: deploys site --> -</details> +* Install [Make](https://www.gnu.org/software/make) +* Install Python 3 +* Install [Poetry](https://python-poetry.org/) +* Run `poetry install` to install dependencies +* Run `make all` create all resources +* When ready, run `make test` to validate the LinkML schema, based on the test data found in `examples` folder From 86fe4f41200ca27ffd366a1dde03c80c66864996 Mon Sep 17 00:00:00 2001 From: Ege Korkan <egekorkan@gmail.com> Date: Wed, 15 May 2024 16:02:28 +0200 Subject: [PATCH 5/5] mention python3 version issues --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c6459c..70598d5 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ For more information please refer to the [WoT github repo](https://github.com/w3 ## Developer Documentation * Install [Make](https://www.gnu.org/software/make) -* Install Python 3 +* Install Python 3 (try to upgrade your version if the following steps do not work) * Install [Poetry](https://python-poetry.org/) * Run `poetry install` to install dependencies * Run `make all` create all resources