diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2552992710..1deb997310 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,11 +1,13 @@ # LinkML CODEOWNERS — DRAFT (see linkml/linkml#3140) # -# Opt-in model: no default (`*`) rule. Paths not listed here have no required -# CODEOWNER and are reviewed normally. Rules only appear where someone has -# explicitly volunteered to steward an area. +# Default model: all paths require core-team approval unless a more specific +# CODEOWNER rule applies. Later rules override earlier ones (last match wins), +# so per-subsystem rules below take precedence over the default for their paths. # # Process for adding rules: docs/maintainers/codeowners.md -# Later rules override earlier ones for matched paths. + +# --- Default: require core-team approval everywhere --- +* @linkml/core-team # --- CODEOWNERS and governance docs --- /.github/CODEOWNERS @linkml/core-team @@ -13,7 +15,17 @@ /docs/maintainers/codeowners.md @linkml/core-team /docs/maintainers/generator-governance.md @linkml/core-team -# --- Per-subsystem ownership (opt-in) --- +# --- Per-subsystem ownership (overrides the default for these paths) --- + +# javagen +# +# EXPERIMENT: delegated self-contained area, see +# docs/maintainers/codeowners.md#experiment-delegating-self-contained-areas + +/docs/generators/java.rst @gouttegd @noelmcloughlin +/packages/linkml/src/linkml/generators/javagen.py @gouttegd @noelmcloughlin +/packages/linkml/src/linkml/generators/javagen/ @gouttegd @noelmcloughlin +/tests/linkml/test_generators/test_javagen.py @gouttegd @noelmcloughlin # pydanticgen: /packages/linkml/src/linkml/generators/pydanticgen/ @sneakers-the-rat @kevinschaper @@ -29,3 +41,22 @@ /docs/generators/yarrrml.rst @Ostrzyciel @lapkinvladimir /packages/linkml/src/linkml/generators/yarrrmlgen.py @Ostrzyciel @lapkinvladimir /tests/linkml/test_generators/test_yarrrmlgen.py @Ostrzyciel @lapkinvladimir + +# openapigen: +# +# EXPERIMENT: delegated self-contained area, see +# docs/maintainers/codeowners.md#experiment-delegating-self-contained-areas +# @Silvanoc and @noelmcloughlin jointly own the OpenAPI generator and can +# review each other's changes and merge them without core-team approval. + +/docs/generators/openapi.rst @Silvanoc @noelmcloughlin +/packages/linkml/src/linkml/generators/openapigen.py @Silvanoc @noelmcloughlin +/tests/linkml/test_generators/test_openapigen.py @Silvanoc @noelmcloughlin +/tests/linkml/test_generators/input/openapi/ @Silvanoc @noelmcloughlin +/tests/linkml/test_scripts/test_gen_openapi.py @Silvanoc @noelmcloughlin + +# zodgen: +/docs/generators/zod.rst @linkml/core-team @noelmcloughlin +/packages/linkml/src/linkml/generators/zodgen.py @linkml/core-team @noelmcloughlin +/packages/linkml/src/linkml/generators/zod_ifabsent_processor.py @linkml/core-team @noelmcloughlin +/tests/linkml/test_generators/test_zodgen.py @linkml/core-team @noelmcloughlin diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c90c81eda6..a2a9792616 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -20,9 +20,10 @@ updates: - package-ecosystem: "uv" directory: "/" + # Daily refills the three open slots as they drain, rather than once a week. + # The limit below, not the interval, is what bounds concurrent CI load. schedule: - interval: "weekly" - day: "sunday" + interval: "daily" groups: # Individual pull requests for major/minor updates and grouped for patch updates patch-updates: @@ -31,7 +32,9 @@ updates: - "*" update-types: - "patch" - open-pull-requests-limit: 10 + # Bounds rebase storms: every open PR runs the full matrix, and dependabot + # rebases all of them when main moves. + open-pull-requests-limit: 3 # Wait 7 days after a release before opening an update PR, giving time for # malware/CVE advisories to surface (mirrors the uv `exclude-newer` cooldown). cooldown: diff --git a/.github/scripts/check_links.py b/.github/scripts/check_links.py index 256fa18163..351549a85c 100644 --- a/.github/scripts/check_links.py +++ b/.github/scripts/check_links.py @@ -11,6 +11,7 @@ import random import re import sys +import time from collections import defaultdict from datetime import datetime, timedelta from pathlib import Path @@ -139,24 +140,19 @@ def needs_check(url: str, cache: dict[str, dict], ttl_days: int, jitter_days: in return True -def check_url(url: str, timeout: int = 10) -> tuple[str, str]: - """ - Check a URL and return (status, error_message). +TRANSIENT_STATUSES = {"timeout", "connection_error"} +"""Failures that say the network misbehaved, not that the link is dead. - Don't follow redirects - accept 3xx as valid (the redirect itself is the response). - This avoids false failures when redirect targets have bot protection. +A dead link answers with 404. A dropped connection or a timeout is weather, and +retrying clears it -- so these are retried before being reported. +""" + +RETRY_ATTEMPTS = 3 +RETRY_BACKOFF_SECONDS = 2 - Returns: - Tuple of (status_code_or_error, error_message_or_empty) - """ - # Self-referencing repo URLs: verify the file exists locally - repo_match = REPO_FILE_PATTERN.match(url) - if repo_match: - path = Path(repo_match.group(1)) - if path.exists(): - return "200", "" - return "404", f"Local path not found: {path}" +def _attempt_url(url: str, timeout: int) -> tuple[str, str]: + """Make a single request and classify the outcome. See ``check_url``.""" try: response = requests.head( url, @@ -184,6 +180,37 @@ def check_url(url: str, timeout: int = 10) -> tuple[str, str]: return "error", str(e) +def check_url(url: str, timeout: int = 10) -> tuple[str, str]: + """ + Check a URL and return (status, error_message). + + Don't follow redirects - accept 3xx as valid (the redirect itself is the response). + This avoids false failures when redirect targets have bot protection. + + Transient network failures are retried up to ``RETRY_ATTEMPTS`` times with a + linear backoff, so a single dropped connection is not reported as a broken link. + + Returns: + Tuple of (status_code_or_error, error_message_or_empty) + """ + # Self-referencing repo URLs: verify the file exists locally + repo_match = REPO_FILE_PATTERN.match(url) + if repo_match: + path = Path(repo_match.group(1)) + if path.exists(): + return "200", "" + return "404", f"Local path not found: {path}" + + for attempt in range(1, RETRY_ATTEMPTS + 1): + status, message = _attempt_url(url, timeout) + if status not in TRANSIENT_STATUSES or attempt == RETRY_ATTEMPTS: + return status, message + time.sleep(RETRY_BACKOFF_SECONDS * attempt) + + # Unreachable: the loop always returns on its final attempt. + raise AssertionError("retry loop exited without returning") + + def main(): parser = argparse.ArgumentParser(description="Check links in documentation with caching and rate limiting.") parser.add_argument( diff --git a/.github/scripts/uv_lock_deps_changed.py b/.github/scripts/uv_lock_deps_changed.py new file mode 100644 index 0000000000..c320ffc72d --- /dev/null +++ b/.github/scripts/uv_lock_deps_changed.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +"""Decide whether the resolved ``uv.lock`` dependency set changed between refs. + +``uv.lock`` is regenerated non-deterministically: reordering, hashes, and +metadata can differ between two lockfiles that resolve to exactly the same +packages. ``uv audit`` only cares about the multiset of ``(name, version)`` +pairs, so this script compares that set between a base ref and ``HEAD`` and +prints ``true`` only when it actually differs. + +Usage: + uv_lock_deps_changed.py + +Prints ``true`` when the resolved ``(name, version)`` set at ``HEAD`` differs +from the one at ```` (or when the lockfile is absent at either ref), +otherwise ``false``. +""" + +from __future__ import annotations + +import subprocess +import sys + +import tomllib + + +def package_set(ref: str) -> set[tuple[str, str | None]] | None: + """Return the ``{(name, version)}`` set from ``uv.lock`` at ``ref``. + + Args: + ref: A git ref (SHA, branch, ``HEAD``) to read ``uv.lock`` from. + + Returns: + The set of ``(name, version)`` tuples for every locked package, or + ``None`` if ``uv.lock`` does not exist at ``ref``. + """ + result = subprocess.run( + ["git", "show", f"{ref}:uv.lock"], + capture_output=True, + text=True, + ) + if result.returncode != 0: + return None + data = tomllib.loads(result.stdout) + return {(pkg["name"], pkg.get("version")) for pkg in data.get("package", [])} + + +def resolved_set_changed(base_ref: str) -> bool: + """Return whether the resolved dependency set differs between refs. + + Args: + base_ref: The ref to compare ``HEAD`` against. + + Returns: + ``True`` if the ``(name, version)`` set differs, or if ``uv.lock`` is + missing at either ref; ``False`` when the sets are identical. + """ + base = package_set(base_ref) + head = package_set("HEAD") + return base is None or head is None or base != head + + +def main() -> None: + """Print ``true``/``false`` for the base ref given as the sole argument.""" + print("true" if resolved_set_changed(sys.argv[1]) else "false") + + +if __name__ == "__main__": + main() diff --git a/.github/workflows/check-external-links.yaml b/.github/workflows/check-external-links.yaml index 8263c3f549..2a5bb1a548 100644 --- a/.github/workflows/check-external-links.yaml +++ b/.github/workflows/check-external-links.yaml @@ -1,6 +1,12 @@ name: Check Sphinx external links env: UV_VERSION: "0.11.21" +concurrency: + # Cancel superseded runs on the same PR. github.ref is refs/pull//merge, + # so each PR is its own group and never cancels another's runs. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + on: push: branches: [main] @@ -14,15 +20,15 @@ jobs: timeout-minutes: 30 steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Set up Python 3. - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 with: python-version: "3.12" - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} @@ -30,7 +36,7 @@ jobs: run: uv pip install --system requests - name: Restore link cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: .github/link-cache.csv key: link-cache-${{ github.run_id }} diff --git a/.github/workflows/dependency-audit.yaml b/.github/workflows/dependency-audit.yaml index 68cd7e80ab..65b25318d4 100644 --- a/.github/workflows/dependency-audit.yaml +++ b/.github/workflows/dependency-audit.yaml @@ -9,6 +9,12 @@ env: UV_PREVIEW: "1" # Enables the preview uv audit and malware engines UV_MALWARE_CHECK: "1" # Automatically blocks malicious installs on sync/run +concurrency: + # Cancel superseded runs on the same PR. github.ref is refs/pull//merge, + # so each PR is its own group and never cancels another's runs. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + on: push: branches: @@ -24,30 +30,81 @@ jobs: steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 + with: + # Full history so we can diff against a base ref to see whether the + # resolved dependency set changed (see "Detect dependency changes"). + fetch-depth: 0 # Pin uv to a known-good, recent release. - name: Install uv and setup uv caching - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 id: setup-python with: python-version: 3.13 - # Step 1: Run uv audit to check for vulnerabilities (CVEs) + # The CVE audit reflects the state of the *upstream advisory database*, + # not the change under test: a newly-published advisory against an + # already-pinned package would otherwise turn every open PR — and the next + # innocent merge to main — red, regardless of whether it touched deps. # - # GHSA-6w46-j5rx-g56g (pytest predictable tmpdir path) is fixed only in - # pytest 9.0.3, but pytest 9 removed the private _pytest.assertion.util - # ._diff_text API that tests/conftest.py depends on. We pin pytest <9 - # (see packages/linkml/pyproject.toml) and ignore this single test-only, - # low-risk advisory until conftest is migrated to stdlib difflib. + # So gate the audit on whether the change actually altered dependencies, + # relative to each event's natural base: + # * pull_request -> the PR base + # * push (main) -> the commit before the push (github.event.before) + # * merge_group -> the queue base + # * otherwise (workflow_dispatch, first/force push) -> audit + # + # A pyproject.toml change is always a real dependency change. uv.lock is + # regenerated non-deterministically, so a textual change there is only + # treated as real if the resolved (name, version) set actually differs. + - name: Detect dependency changes + id: deps + shell: bash + run: | + set -euo pipefail + case "${{ github.event_name }}" in + pull_request) base="${{ github.event.pull_request.base.sha }}" ;; + merge_group) base="${{ github.event.merge_group.base_sha }}" ;; + push) base="${{ github.event.before }}" ;; + *) base="" ;; + esac + + zero="0000000000000000000000000000000000000000" + if [ -z "$base" ] || [ "$base" = "$zero" ] || ! git cat-file -e "$base^{commit}" 2>/dev/null; then + echo "No comparable base ref for '${{ github.event_name }}'; auditing." + echo "changed=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + + changed_files="$(git diff --name-only "$base...HEAD")" + + if grep -qE '(^|/)pyproject\.toml$' <<<"$changed_files"; then + echo "pyproject.toml changed; auditing." + echo "changed=true" >> "$GITHUB_OUTPUT" + elif grep -qE '(^|/)uv\.lock$' <<<"$changed_files"; then + changed="$(python3 .github/scripts/uv_lock_deps_changed.py "$base")" + if [ "$changed" = "true" ]; then + echo "uv.lock resolved dependency set changed; auditing." + else + echo "uv.lock changed but the resolved dependency set is identical; skipping audit." + fi + echo "changed=$changed" >> "$GITHUB_OUTPUT" + else + echo "No dependency files changed; skipping audit." + echo "changed=false" >> "$GITHUB_OUTPUT" + fi + + # Step 1: Run uv audit to check for vulnerabilities (CVEs) - name: Audit lockfile for CVEs - run: uv audit --ignore GHSA-6w46-j5rx-g56g + if: steps.deps.outputs.changed == 'true' + run: uv audit # Step 2: Run a sync. If a package contains known malware, # the OSV-lookup triggers an immediate, non-zero failure exit. diff --git a/.github/workflows/doc-pages.yaml b/.github/workflows/doc-pages.yaml index 9cc6533615..57ebe27e03 100644 --- a/.github/workflows/doc-pages.yaml +++ b/.github/workflows/doc-pages.yaml @@ -13,7 +13,7 @@ jobs: python-version: [ "3.12" ] steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 @@ -24,13 +24,13 @@ jobs: git fetch upstream --tags - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 id: setup-python with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index 935414e83f..ddc43adca5 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -1,5 +1,11 @@ name: Build Docker Image +concurrency: + # Cancel superseded runs on the same PR. github.ref is refs/pull//merge, + # so each PR is its own group and never cancels another's runs. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + on: push: branches: @@ -19,13 +25,13 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 - name: Docker metadata id: meta - uses: docker/metadata-action@v6.1.0 + uses: docker/metadata-action@v6.2.0 with: images: linkml/linkml tags: | @@ -42,20 +48,20 @@ jobs: echo "Ref: ${{ github.ref }}" - name: Set up QEMU - uses: docker/setup-qemu-action@v4.1.0 + uses: docker/setup-qemu-action@v4.2.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4.1.0 + uses: docker/setup-buildx-action@v4.2.0 - name: Login to DockerHub if: startsWith(github.ref, 'refs/tags/v') - uses: docker/login-action@v4.2.0 + uses: docker/login-action@v4.6.0 with: username: cjmungall password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build and push - uses: docker/build-push-action@v7.2.0 + uses: docker/build-push-action@v7.3.0 with: context: . platforms: linux/amd64,linux/arm64/v8 diff --git a/.github/workflows/docs-test.yaml b/.github/workflows/docs-test.yaml index 067277eaa7..4b748ba50b 100644 --- a/.github/workflows/docs-test.yaml +++ b/.github/workflows/docs-test.yaml @@ -1,6 +1,12 @@ name: Build and test documentation env: UV_VERSION: "0.11.21" +concurrency: + # Cancel superseded runs on the same PR. github.ref is refs/pull//merge, + # so each PR is its own group and never cancels another's runs. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + on: push: branches: @@ -19,7 +25,7 @@ jobs: python-version: ["3.12"] steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 @@ -30,13 +36,13 @@ jobs: git fetch upstream --tags - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 id: setup-python with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index a2c8860602..72abfd4686 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -4,6 +4,12 @@ name: Build and test linkml env: UV_VERSION: "0.11.21" +concurrency: + # Cancel superseded runs on the same PR. github.ref is refs/pull//merge, + # so each PR is its own group and never cancels another's runs. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + on: push: branches: @@ -16,13 +22,13 @@ jobs: quality-checks: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} - - uses: actions/setup-python@v6.2.0 + - uses: actions/setup-python@v7.0.0 with: python-version: 3.13 - name: Check pyproject.toml and uv.lock @@ -59,7 +65,7 @@ jobs: steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 @@ -70,13 +76,13 @@ jobs: git fetch upstream --tags - name: Install uv and setup uv caching - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 id: setup-python with: python-version: ${{ matrix.python-version }} @@ -121,8 +127,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest, windows-latest ] - python-version: [ "3.10", "3.13" ] + os: [ubuntu-latest, windows-latest] + python-version: ["3.10", "3.13"] needs: - quality-checks runs-on: ${{ matrix.os }} @@ -131,15 +137,15 @@ jobs: shell: bash steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 id: setup-python with: python-version: ${{ matrix.python-version }} @@ -171,8 +177,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest ] - python-version: [ "3.10", "3.13" ] + os: [ubuntu-latest] + python-version: ["3.10", "3.13"] needs: - quality-checks runs-on: ${{ matrix.os }} @@ -181,15 +187,15 @@ jobs: shell: bash steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 id: setup-python with: python-version: ${{ matrix.python-version }} @@ -216,17 +222,17 @@ jobs: runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 with: python-version: 3.13 - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} - name: Build source and wheel archives diff --git a/.github/workflows/metamodel-compat.yaml b/.github/workflows/metamodel-compat.yaml index 1406593a18..fff2904423 100644 --- a/.github/workflows/metamodel-compat.yaml +++ b/.github/workflows/metamodel-compat.yaml @@ -3,6 +3,9 @@ # This workflow downloads the latest metamodel from linkml-model and runs # the compatibility tests to ensure the linkml toolkit can process it. # If tests pass and the metamodel has changed, it creates a PR with the update. +# +# It also checks whether the vendored linkml-model files have drifted from +# upstream main, and opens (or updates) a tracking issue when drift is found. name: Metamodel Compatibility env: @@ -21,16 +24,16 @@ jobs: shell: bash steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 with: python-version: "3.12" @@ -63,7 +66,11 @@ jobs: if: steps.run_tests.outcome == 'failure' run: | ISSUE_TITLE="Metamodel compatibility test failure" - ISSUE_BODY=$(cat <<'EOF' + + # Build the body in a file rather than a shell variable: the test output is + # untrusted text that must not be re-evaluated by the shell. + { + cat < temp/issue_body.md if [ -n "${{ steps.check_issue.outputs.existing_issue }}" ]; then - gh issue comment "${{ steps.check_issue.outputs.existing_issue }}" --body "${ISSUE_BODY}" + gh issue comment "${{ steps.check_issue.outputs.existing_issue }}" --body-file temp/issue_body.md else gh issue create \ --title "${ISSUE_TITLE}" \ - --body "${ISSUE_BODY}" \ + --body-file temp/issue_body.md \ --label "metamodel-compat" fi env: @@ -113,3 +122,84 @@ jobs: branch: update-metamodel-fixtures delete-branch: true labels: metamodel-compat + + # Only the soft upstream-main comparison runs here. Scoping to that single test + # keeps an unrelated failure -- a hard UPSTREAM_SHA mismatch, a collection error -- + # from being reported as upstream drift. + # + # pytest exit 1 means "tests failed", i.e. genuine drift. Anything else (2 interrupted, + # 3 internal error, 4 usage error, or a network blip killing the run) is a broken job, + # not drift, so it fails loudly instead of filing a misleading issue. + - name: Check vendored files for drift against upstream main + id: drift_tests + if: always() + run: | + mkdir -p temp + set +e + uv run pytest tests/linkml_runtime/test_linkml_model/test_linkml_files.py \ + -k test_vendored_files_match_upstream_main \ + --with-network --with-upstream-main -v 2>&1 | tee temp/drift_output.txt + PYTEST_RC=${PIPESTATUS[0]} + set -e + case "$PYTEST_RC" in + 0) echo "drifted=false" >> $GITHUB_OUTPUT ;; + 1) echo "drifted=true" >> $GITHUB_OUTPUT ;; + *) echo "::error::Drift check did not run cleanly (pytest exit $PYTEST_RC); not reporting drift." + exit "$PYTEST_RC" ;; + esac + + - name: Check for existing drift issue + if: always() && steps.drift_tests.outputs.drifted == 'true' + id: check_drift_issue + run: | + EXISTING_ISSUE=$(gh issue list --label "vendored-model-drift" --state open --json number --jq '.[0].number // empty') + echo "existing_issue=${EXISTING_ISSUE}" >> $GITHUB_OUTPUT + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create or update issue on drift + if: always() && steps.drift_tests.outputs.drifted == 'true' + run: | + ISSUE_TITLE="Vendored linkml-model files have drifted from upstream main" + + { + cat < temp/drift_issue_body.md + + if [ -n "${{ steps.check_drift_issue.outputs.existing_issue }}" ]; then + gh issue comment "${{ steps.check_drift_issue.outputs.existing_issue }}" --body-file temp/drift_issue_body.md + else + gh issue create \ + --title "${ISSUE_TITLE}" \ + --body-file temp/drift_issue_body.md \ + --label "vendored-model-drift" + fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Close drift issue if drift is resolved + if: always() && steps.drift_tests.outputs.drifted == 'false' + run: | + EXISTING_ISSUE=$(gh issue list --label "vendored-model-drift" --state open --json number --jq '.[0].number // empty') + if [ -n "${EXISTING_ISSUE}" ]; then + gh issue close "${EXISTING_ISSUE}" \ + --comment "Vendored files are now in sync with upstream main. Closing." + fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pypi-publish.yaml b/.github/workflows/pypi-publish.yaml index 67c0278e2a..505ec747bd 100644 --- a/.github/workflows/pypi-publish.yaml +++ b/.github/workflows/pypi-publish.yaml @@ -12,18 +12,18 @@ jobs: name: Build Python 🐍 distributions 📦 for publishing to PyPI runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: # Checkout the code including tags required for dynamic versioning fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 with: python-version: 3.13 - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} @@ -56,6 +56,6 @@ jobs: - name: Publish package 📦 to PyPI if: github.event_name == 'release' - uses: pypa/gh-action-pypi-publish@v1.14.0 + uses: pypa/gh-action-pypi-publish@v1.14.2 with: verbose: true diff --git a/.github/workflows/rustgen.yaml b/.github/workflows/rustgen.yaml index 13fafb1d32..67435405fb 100644 --- a/.github/workflows/rustgen.yaml +++ b/.github/workflows/rustgen.yaml @@ -3,6 +3,12 @@ name: Build and test linkml (rustgen) env: UV_VERSION: "0.11.21" +concurrency: + # Cancel superseded runs on the same PR. github.ref is refs/pull//merge, + # so each PR is its own group and never cancels another's runs. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + on: pull_request: branches: @@ -17,7 +23,7 @@ jobs: shell: bash steps: - name: Check out repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 @@ -28,13 +34,13 @@ jobs: git fetch upstream --tags - name: Install uv and setup uv caching - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 with: python-version: '3.12' diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index f37d43b890..bb806cd767 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/stale@v10 + - uses: actions/stale@v11.0.0 with: # Timeframes from issue #3080 days-before-stale: 1080 # 3 years diff --git a/.github/workflows/typedb-integration.yaml b/.github/workflows/typedb-integration.yaml index 49e9361973..d854871cb7 100644 --- a/.github/workflows/typedb-integration.yaml +++ b/.github/workflows/typedb-integration.yaml @@ -1,5 +1,11 @@ # .github/workflows/typedb-integration.yaml name: TypeDB Integration Tests +concurrency: + # Cancel superseded runs on the same PR. github.ref is refs/pull//merge, + # so each PR is its own group and never cancels another's runs. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + on: pull_request: paths: @@ -12,7 +18,9 @@ jobs: runs-on: ubuntu-latest services: typedb: - image: typedb/typedb:3.8.0 + # Keep in step with typedb-driver in packages/linkml/pyproject.toml: the + # driver refuses to connect to a server on a different network protocol. + image: typedb/typedb:3.12.1 ports: - 1729:1729 options: >- @@ -22,9 +30,9 @@ jobs: --health-retries 10 --health-start-period 30s steps: - - uses: actions/checkout@v6 - - uses: astral-sh/setup-uv@v8.2.0 - - uses: actions/setup-python@v6.2.0 + - uses: actions/checkout@v7 + - uses: astral-sh/setup-uv@v9.0.0 + - uses: actions/setup-python@v7.0.0 with: python-version: "3.12" - run: uv sync --group typedb --group tests-extra diff --git a/.github/workflows/update-feature-dashboard.yaml b/.github/workflows/update-feature-dashboard.yaml index 15a9d3d17d..9e88910fa4 100644 --- a/.github/workflows/update-feature-dashboard.yaml +++ b/.github/workflows/update-feature-dashboard.yaml @@ -21,7 +21,7 @@ jobs: pull-requests: write steps: - name: Check out repository - uses: actions/checkout@v6.0.2 + uses: actions/checkout@v7 with: fetch-depth: 0 @@ -32,13 +32,13 @@ jobs: git fetch upstream --tags - name: Install uv - uses: astral-sh/setup-uv@v8.2.0 + uses: astral-sh/setup-uv@v9.0.0 with: version: ${{ env.UV_VERSION }} enable-cache: true - name: Set up Python - uses: actions/setup-python@v6.2.0 + uses: actions/setup-python@v7.0.0 with: python-version: "3.12" diff --git a/docs/generators/dashboard.md b/docs/generators/dashboard.md index 81cb7f204b..a46a0c6270 100644 --- a/docs/generators/dashboard.md +++ b/docs/generators/dashboard.md @@ -45,19 +45,19 @@ Percentage of tests where the generator fully implements the feature (excluding | Generator | Implements | Partial | Ignores | N/A | Total | Score | |-----------|:----------:|:-------:|:-------:|:---:|:-----:|:-----:| -| Pydantic | 29 | 34 | 1 | 0 | 64 | 45% | -| Python DC | 16 | 38 | 10 | 0 | 64 | 25% | -| JSON Schema | 39 | 23 | 2 | 0 | 64 | 61% | -| Java | 0 | 24 | 40 | 0 | 64 | 0% | -| SHACL | 19 | 25 | 20 | 0 | 64 | 30% | -| ShEx | 0 | 24 | 40 | 0 | 64 | 0% | -| OWL | 0 | 26 | 38 | 0 | 64 | 0% | -| JSON-LD Ctx | 34 | 24 | 6 | 0 | 64 | 53% | -| SQLite DDL | 12 | 40 | 12 | 0 | 64 | 19% | -| Postgres DDL | 0 | 23 | 41 | 0 | 64 | 0% | -| Pandera | 14 | 28 | 22 | 0 | 64 | 22% | -| Polars Schema | 28 | 23 | 13 | 0 | 64 | 44% | -| sql_ddl_bigquery | 0 | 24 | 40 | 0 | 64 | 0% | +| Pydantic | 30 | 34 | 1 | 0 | 65 | 46% | +| Python DC | 17 | 38 | 10 | 0 | 65 | 26% | +| JSON Schema | 40 | 23 | 2 | 0 | 65 | 62% | +| Java | 0 | 24 | 41 | 0 | 65 | 0% | +| SHACL | 20 | 25 | 20 | 0 | 65 | 31% | +| ShEx | 0 | 24 | 41 | 0 | 65 | 0% | +| OWL | 0 | 26 | 39 | 0 | 65 | 0% | +| JSON-LD Ctx | 35 | 24 | 6 | 0 | 65 | 54% | +| SQLite DDL | 13 | 40 | 12 | 0 | 65 | 20% | +| Postgres DDL | 0 | 23 | 42 | 0 | 65 | 0% | +| Pandera | 15 | 28 | 22 | 0 | 65 | 23% | +| Polars Schema | 29 | 23 | 13 | 0 | 65 | 45% | +| sql_ddl_bigquery | 0 | 24 | 41 | 0 | 65 | 0% | ## Details by Category @@ -115,6 +115,7 @@ Percentage of tests where the generator fully implements the feature (excluding | Enum aliases | ✅ | ✅ | ✅ | ❓ | ✅ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ | ✅ | ❓ | | Enum hierarchy | ✅ | ✅ | ✅ | ❓ | ✅ | ❓ | ❓ | ✅ | ⚠️ | ❓ | ⚠️ | ✅ | ❓ | | Non-standard enum names | ⚠️ | ⚠️ | ✅ | ❓ | ⚠️ | ❓ | ⚠️ | ✅ | ⚠️ | ❓ | ⚠️ | ❓ | ❓ | +| Optional enum nullability | ✅ | ✅ | ✅ | ❓ | ✅ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ | ✅ | ❓ | | Static enums | ⚠️ | ⚠️ | ✅ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | | Typed permissible values | ✅ | ✅ | ✅ | ❓ | ✅ | ❓ | ❓ | ✅ | ⚠️ | ❓ | ⚠️ | ✅ | ❓ | diff --git a/docs/generators/java.rst b/docs/generators/java.rst index 3736c9e718..82162d2fc2 100644 --- a/docs/generators/java.rst +++ b/docs/generators/java.rst @@ -4,7 +4,7 @@ Java Overview -------- -The Java Generator produces java class files from a linkml model, +The Java generator produces java class files from a LinkML model, with optional support for user-supplied jinja2 templates to generate classes with alternate annotations or additional documentation. @@ -27,31 +27,264 @@ Code .. autoclass:: JavaGenerator :members: serialize -Additional Notes ----------------- +Configurable Behaviors +---------------------- -The Java generator's default template uses Project Lombok's `@Data `__ annotation, which provides getters, setters, equals and hashcode functionality. +Rendering of Enumerations +^^^^^^^^^^^^^^^^^^^^^^^^^ +LinkML enumerations can be rendered in two ways: + +* as plain `String` objects: that is, the enumeration themselves are + *not* rendered at all, and slots whose range is set to an enumeration + are rendered as `String`-typed fields; +* as standard Java ``enum`` objects. + +For backwards compatibility reasons, the default behavior is to render +enumerations as `String` objects. Use the ``--true-enums`` option +(from the command line) or the ``true_enums`` named parameter (in the +`JavaGenerator` constructor) to render LinkML enumerations as standard +Java ``enum`` objects. Of note, this settings applies to all enumerations +defined in the LinkML schema – it is not possible to render some +enumerations as `String` objects and others as standard ``enum`` +objects. + +Use of Slot Aliases +^^^^^^^^^^^^^^^^^^^ + +Slots in a LinkML schema can optionally have an +`alias `__, which, if +present, is intended to be “used instead of the actual slot name”. + +By default, the Java generator always derives the name of a field in a +class from the actual name of the slot, *not* from its alias. Use the +``--use-aliases`` option (from the command line) or the ``use_aliases`` +named parameter (in the `JavaGenerator` constructor) to force the +generator to honor the presence of a slot alias. + +For example, given the definition of the ``slot_definitions`` slot in +LinkML’s own metamodel: + +.. code-block:: yaml + + slot_definitions: + domain: schema_definition + multivalued: true + range: slot_definition + inlined: true + alias: slots + +the generator will, by default, render this slot as a field named +``slotDefinitions`` (derived from the actual slot name, ignoring the +``slots`` alias): + +.. code-block:: java + + private List slotDefinitions; + +With ``--use-aliases``, that slot will instead be rendered as: + +.. code-block:: java + + private List slots; + +Of note, when using the ``org.incenp.linkml`` template variant, the slot +alias, when present, is always used to determine how the slot is +expected to be serialised in the JSON or YAML serialisations; the +``--use-aliases`` option only affects the symbol used to represent the +slot in the Java code. + +Generating Visitor Patterns +--------------------------- + +The Java generator includes a built-in feature to easily implement a +`visitor pattern `__ over +a class hierarchy defined in a LinkML schema. + +Assuming the following schema (simplified excerpt from the +`KGCL Schema `__): + +.. code-block:: yaml + + classes: + Change: + description: Any change perform on an ontology or knowledge graph. + slots: + - id + - type + + SimpleChange: + is_a: Change + description: A change that is about a single ontology element. + slots: + - old_value + - new_value + + ComplexChange: + is_a: Change + description: A change that is a composition of other changes. + slots: + - change_set + + # Several dozens of other subclasses (direct or indirect) of Change, + # representing various specialized types of change... + +Calling the Java generator with ``--visitor Change`` (on the command +line; ``visitors=["Change"]`` when calling the ``serialize`` method) +will cause the generator to + +(a) create a `IChangeVisitor` interface containing a ``visit`` method +for each subclass of `Change` (and for `Change` itself): + +.. code-block:: java + + public interface IChangeVisitor { + public void visit(Change visited); + public void visit(SimpleChange visited); + public void visit(ComplexChange visited); + /* and so on for all other subclasses... */ + } + +(b) add a ``accept(IChangeVisitor)`` method to the `Change` class and to +all its subclasses, e.g. in ``SimpleChange.java``: + +.. code-block:: java + + public class SimpleChange extends Change { + + /* Normal code generated for the SimpleChange class... */ + + public void accept(IChangeVisitor visitor) { + visitor.visit(this); + } + } + +Template Variants +----------------- + +The Java generator offers different templates allowing to generate +different “flavors” of Java code to represent the same LinkML schema. + +A set of template (hereafter called a “template variant”) is selected on +the command line by the ``--template-variant`` option, or in Python code +by the ``template_variant`` named parameter to the ``serialize`` method. + +LinkML currently provides three Java template variants: + +* the default variant; +* the `records` variant; +* and the `org.incenp.linkml` variant. + +Default Variant +^^^^^^^^^^^^^^^ + +The default template variant (which is used when no other variant is +explicitly requested) generates Java classes that use Project Lombok’s +`@Data `__ annotations to provide getters, +setters, equals and hashcode functionality. + +Records Variant +^^^^^^^^^^^^^^^ + +The `records` variant represents LinkML classes as Java +`Record classes `__, which are intended to +hold *immutable data*. + +Note that Record classes are only available since Java 14 as a feature +preview, and as an official feature since Java 16. + +Also note that a Record class cannot extend another class. If a class +`Bar` is defined in a LinkML schema as extending a class `Foo`, the +`records` variant will generate a Java `Bar` class that will contain all +the slots from the `Foo` class but that will *not* be a subclass of +`Foo` (meaning for example that it will not be possible to assign an +instance of `Bar` to a `Foo`-typed slot). This makes the `records` +variant unlikely to be suitable for schemas that have complex class +hierarchies. + +org.incenp.linkml Variant +^^^^^^^^^^^^^^^^^^^^^^^^^ + +The `org.incenp.linkml` variant generates Java code that is suitable for +use with the `LinkML-Java `__ +runtime library – that is, code that meets the requirements set forth in +the `runtime documentation `__. + +This allows to use said runtime to easily load data (conformant to the +LinkML schema from which the code was generated) from files into the +Java in-memory representation, and conversely to dump data from the +Java representation into files. + +Template Selection Logic +------------------------ + +The template selection logic used by the Java generator allows to +fine-tune which template is used for any given class or enum. + +When generating the code for a given class *Foo*, and assuming a +template variant *V* has been requested (with ``--template-variant=V``), +the generator will look up for the following template files, using the +first one that it finds: + +* ``Foo-V.jinja2`` (the *V* variant template specific for the *Foo* + class); +* ``class-V.jinja2`` (the generic *V* variant template for all classes); +* ``Foo.jinja2`` (default template specific for the *Foo* class); +* ``class.jinja2`` (generic default template for all classes). + +When no variant is explicitly requested, the first two lookups are +skipped, meaning the generator will look up first for ``Foo.jinja2`` and +then for ``class.jinja2``. + +When the ``--true-enums`` option is enabled, the same logic will also be +used to find the template file to render an enumeration *Bar*: + +* ``Bar-V.jinja2`` (the *V* variant template specific for the *Bar* + enumeration); +* ``enum-V.jinja2`` (the generic *V* variant template for all + enumerations); +* ``Bar.jinja2`` (default template specific for the *Bar* enumeration); +* ``enum.jinja2`` (generic default template for all enumerations). + +By default, all templates are looked up in the generator’s internal +template directory. Use the ``--template-dir=D`` option to make the +generator look up first in the specified directory *D*; any template +file found in that directory will take precedence over the templates +from the internal directory. + +Lastly, use the ``--template-file=F`` option to force the generator to +always use the specified template. This overrides all the logic +described above. + +Examples +-------- Biolink Example ---------------- +^^^^^^^^^^^^^^^ + +This example illustrates how to generate a Java package containing a +Java representation of the Biolink model, using the default +(Lombok-dependent) templates. -Begin by downloading the Biolink Model YAML and adding a virtual environment and installing linkml. +This assumes a working installation of LinkML. Check the +:doc:`Quick Install Guide <../intro/install>` if needed. + +Begin by downloading the YAML file containing the Biolink schema: .. code-block:: bash curl -OJ https://raw.githubusercontent.com/biolink/biolink-model/master/biolink-model.yaml - python3 -m venv venv - source venv/bin/activate - pip install linkml -Now generate the classes using the `gen-java` command +Now generate the classes using the `generate java` command: .. code-block:: bash - gen-java --package org.biolink.model --output-directory org/biolink/model biolink-model.yaml + linkml generate java --package org.biolink.model \ + --output-directory org/biolink/model \ + biolink-model.yaml -Finally, fetch the Lombok jar, build the java classes and package into a jar file +Finally, fetch the Lombok jar, build the java classes and package into a +jar file: .. code-block:: bash @@ -59,12 +292,11 @@ Finally, fetch the Lombok jar, build the java classes and package into a jar fil javac org/biolink/model/*.java -cp lombok-1.18.20.jar jar -cf biolink-model.jar org - Alternate Template Example --------------------------- - +^^^^^^^^^^^^^^^^^^^^^^^^^^ -Here is an alternate template using Hibernate JPA annotations, named `example_template.java.jinja2` +Here is an alternate template using Hibernate JPA annotations, named +``example_template.java.jinja2``: .. code-block:: @@ -89,9 +321,12 @@ Here is an alternate template using Hibernate JPA annotations, named `example_te } -The alternate template for the generator can be specified with the `--template_file` option +The alternate template for the generator can be specified with the +``--template-file`` option: .. code-block:: - gen-java --package org.biolink.model --output-directory org/biolink/model \ - --template_file example_template.java.jinja2 biolink-model.yaml + linkml generate java --package org.biolink.model \ + --output-directory org/biolink/model \ + --template-file example_template.java.jinja2 \ + biolink-model.yaml diff --git a/docs/get-involved/Community-Meetings.md b/docs/get-involved/Community-Meetings.md index 1f5a1f1d70..6e47e9e654 100644 --- a/docs/get-involved/Community-Meetings.md +++ b/docs/get-involved/Community-Meetings.md @@ -27,8 +27,11 @@ Join the LinkML community for regular sessions featuring presentations on LinkML | Date | Presenter 1 | Topic 1 | Presenter 2 | Topic 2 | | :---: | :---: | :---: | :----: | :---: | -| August 20, 2026 | Patrick Golden | Use of LinkML in the [Zebrafish Toxicology Phenotype Atlas Project](https://zappfish.org/) | | | -| July 16, 2026 | Sierra Moxon | LinkML Microschemas |Stephan Heunis |TBD | +| November 19, 2026|Open slot!| Volunteers welcome| Open slot!| Volunteers welcome| +| October 15, 2026|Open slot!| Volunteers welcome| Open slot!| Volunteers welcome| +| September 17, 2026| Matt Gehring| Use of LinkML at [sniff.world](https://sniff.world/)| Open slot!| Volunteers welcome| +| August 20, 2026| Patrick Golden| Use of LinkML in the [Zebrafish Toxicology Phenotype Atlas Project](https://zappfish.org/)|Alex Anderson| schema-to-schema mapping and data conversion at [PNNL](https://www.pnnl.gov/)| +| [July 16, 2026](https://docs.google.com/presentation/d/1A05qfTbmI8RXyvoBSplpjSU9e4OP6BlIKJvQ1-eWhGw/edit?slide=id.g36e69bd970c_1_50#slide=id.g36e69bd970c_1_50)| Sierra Moxon | LinkML Microschemas |Stephan Heunis |[The ORINOCO project at Research Center Jülich - building self-hostable research information infrastructure](https://pool.psychoinformatics.de/ui/?sh%3ANodeShape=xyzri%3AXYZProject&pid=xyzrins%3Aprojects%2Forinoco) | | [June 18, 2026](https://docs.google.com/presentation/d/1mA3xBfPglJLtMPbDLXT8lJ7SAu6iDPNL_HBJs_DZuB0/edit?slide=id.g36e69bd970c_1_50#slide=id.g36e69bd970c_1_50) | Anh Nguyet Vu | Adopting LinkML at Sage: Workflows, Wins, and Works in Progress | Cory Levinson | OAE Data Protocol: Data standardization for carbon removal research and deployment with LinkML | | [May 21, 2026](https://docs.google.com/presentation/d/13KL_5xUkXBNg9IoGrv62OXUfzWXp-M94Pu4GF2TnIBc/edit?slide=id.g36e69bd970c_1_50#slide=id.g36e69bd970c_1_50) | Inge Vejsbjerg | [LinkML for AI Governance at IBM](https://ibm.github.io/ai-atlas-nexus/) |Joshua Send|Why TypeDB is the Natural Backend for LinkML| | | [April 16, 2026](https://docs.google.com/presentation/d/1d2AjM9TBESO6njMXBB-lw5A6WDIFMBb14ZhCRKN2GiY/edit?slide=id.g36e69bd970c_1_50#slide=id.g36e69bd970c_1_50) | Daniel Kapitan| [Introducing PLUGIN and why we fell in love with LinkML](https://docs.google.com/presentation/d/1KqwKnq-f4JsSwHVRtCXZrwqBI7JIP1aqbUqlO7iEjd0/edit?slide=id.p1#slide=id.p1)| Community Discussion Topics| RareLink/REDCap + LinkML with Adam Graefe | | diff --git a/docs/maintainers/codeowners.md b/docs/maintainers/codeowners.md index 4aac4617fe..4624c245a1 100644 --- a/docs/maintainers/codeowners.md +++ b/docs/maintainers/codeowners.md @@ -9,24 +9,34 @@ For the underlying GitHub mechanics, see the upstream [CODEOWNERS documentation](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). This page only covers how LinkML uses it. -## The LinkML model: opt-in stewardship +## The LinkML model: core-team default with per-area stewardship -LinkML uses an **opt-in** model. The `CODEOWNERS` file contains: +LinkML uses a **default-rule** model. The `CODEOWNERS` file contains: -- **No default (`*`) rule.** Paths that no one has claimed are reviewed - normally, exactly as they were before CODEOWNERS existed. CODEOWNERS does - not create a new approval gate for the rest of the codebase. +- **A default (`*`) rule** requiring `@linkml/core-team` approval on any path + not covered by a more specific rule. This closes the gap where a + write-access holder could merge a PR touching an unclaimed area without any + core-team sign-off. Because GitHub applies the *last* matching rule, the + per-subsystem rules below still take precedence over the default for their + own paths. - **Per-generator / per-subsystem rules** for specific directories (e.g. `packages/linkml/src/linkml/generators/pydanticgen/`, `packages/linkml/src/linkml/generators/yarrrmlgen.py`) where a contributor - has explicitly volunteered to steward the code. The baseline for - identifying candidate stewards per generator is - [Generator and Validator Governance](generator-governance.md), which - records contributor history from `git blame`. + has explicitly volunteered to steward the code. These override the default + for their paths. The baseline for identifying candidate stewards per + generator is [Generator and Validator Governance](generator-governance.md), + which records contributor history from `git blame`. - **Governance rules** — `CODEOWNERS` itself and the governance documents in `docs/maintainers/` are owned by `@linkml/core-team` to prevent accidental self-appointments. +```{note} +The default rule only has teeth if the branch protection rule **"Require +review from Code Owners"** is enabled on `main`. Without it, GitHub records +the code-owner requirement but does not block merges. Enabling that setting +requires [admin](contributor-hierarchy.md) access. +``` + Implications: - Being listed in `CODEOWNERS` does **not** grant repository write access. @@ -75,6 +85,20 @@ including PRs authored by CODEOWNERS or core developers. The mechanisms below — the 1-month fallback, the project-direction override, and the stepping-down process — exist within that frame. +## Experiment: delegating self-contained areas + +A few generators are self-contained enough that core-team review adds little. +Where trusted, established community members know such an area well, we hand +it to them outright: they review each other's changes and merge without +core-team sign-off. +This does not preclude participants, at their discretion, from occasionally +explicitly requesting approval from the core-team for some reason. + +The goal is to let those areas move at the pace of the people who care about +them rather than at the pace of core-team availability. Rules covering them +are marked `EXPERIMENT` in +[`.github/CODEOWNERS`](https://github.com/linkml/linkml/blob/main/.github/CODEOWNERS). + ## Avoiding review bottlenecks: the 1-month fallback CODEOWNERS is a stewardship signal, **not a veto**. If CODEOWNERS become diff --git a/docs/maintainers/contributor-hierarchy.md b/docs/maintainers/contributor-hierarchy.md index 49e25df652..b144ee5bc5 100644 --- a/docs/maintainers/contributor-hierarchy.md +++ b/docs/maintainers/contributor-hierarchy.md @@ -67,9 +67,9 @@ Team: [`core-team`](https://github.com/orgs/linkml/teams/core-team) Capabilities: - All collaborator capabilities -- Can review and approve PRs anywhere in the monorepo (team write access is - sufficient; CODEOWNER approval is only required for paths explicitly listed - in the [CODEOWNERS](codeowners.md) file) +- Can review and approve PRs anywhere in the monorepo. By default, core-team + approval is what the [CODEOWNERS](codeowners.md) file requires everywhere; + paths with a per-subsystem rule additionally require that area's CODEOWNER - May invoke the [1-month CODEOWNER fallback](codeowners.md#avoiding-review-bottlenecks-the-1-month-fallback) to approve stalled PRs in areas with unresponsive CODEOWNERS - Still subject to branch protection rules (cannot force-push, etc.) diff --git a/examples/PersonSchema/personinfo/sqlvalidation/personinfo.sql b/examples/PersonSchema/personinfo/sqlvalidation/personinfo.sql index b7e25da9b2..c13f099010 100644 --- a/examples/PersonSchema/personinfo/sqlvalidation/personinfo.sql +++ b/examples/PersonSchema/personinfo/sqlvalidation/personinfo.sql @@ -1,7 +1,7 @@ -- ==================================================================== -- SQL Validation Queries -- Generated from LinkML schema --- LinkML v0.0.0.post3958.dev0+0979fc25 +-- LinkML v0.0.0.post4237.dev0+893c1568 -- Generator: sqlvalidationgen.py v0.1.0 -- Dialect: sqlite -- ==================================================================== @@ -28,7 +28,7 @@ UNION ALL SELECT 'Person' AS table_name, 'primary_email' AS column_name, 'pattern' AS constraint_type, id AS record_id, primary_email AS invalid_value FROM "Person" -WHERE "Person".primary_email IS NOT NULL AND NOT (REGEXP('^\S+@[\S+\.]+\S+', primary_email) = 1) +WHERE "Person".primary_email NOT REGEXP '^\S+@[\S+\.]+\S+' UNION ALL @@ -46,7 +46,7 @@ UNION ALL SELECT 'Person' AS table_name, 'telephone' AS column_name, 'pattern' AS constraint_type, id AS record_id, telephone AS invalid_value FROM "Person" -WHERE "Person".telephone IS NOT NULL AND NOT (REGEXP('^[\d\(\)\-]+$', telephone) = 1) +WHERE "Person".telephone NOT REGEXP '^[\d\(\)\-]+$' UNION ALL @@ -270,4 +270,10 @@ UNION ALL SELECT 'InterPersonalRelationship' AS table_name, 'type' AS column_name, 'required' AS constraint_type, id AS record_id, NULL AS invalid_value FROM "InterPersonalRelationship" -WHERE "InterPersonalRelationship".type IS NULL; +WHERE "InterPersonalRelationship".type IS NULL + +UNION ALL + +SELECT 'Organization' AS table_name, 'score' AS column_name, 'rule' AS constraint_type, id AS record_id, score AS invalid_value +FROM "Organization" +WHERE "Organization".min_salary <= 80000.0 AND "Organization".score > 0; diff --git a/notebooks/DistributedModels.ipynb b/notebooks/DistributedModels.ipynb index 404ae17249..1ca02b087e 100644 --- a/notebooks/DistributedModels.ipynb +++ b/notebooks/DistributedModels.ipynb @@ -168,7 +168,7 @@ "# (biolink:model), or relative (includes/myfile) file names. Note, however, that this latter form is being deprecated.\n", "# The location of imported files can now be specified in an accompanying mapping file. The imports below reference:\n", "# https://w3id.org/biolink/biolink-model -- the biolink model\n", - "# https://w3id.org/linkml/types -- the biolink modeling language types definitions\n", + "# https://w3id.org/linkml/types -- linked open data modeling language, types definitions\n", "imports:\n", " - https://w3id.org/biolink/biolink-model\n", " - linkml:types\n", diff --git a/notebooks/examples.ipynb b/notebooks/examples.ipynb index 5ba91cc38b..a0b434f144 100644 --- a/notebooks/examples.ipynb +++ b/notebooks/examples.ipynb @@ -18,7 +18,7 @@ } }, "source": [ - "!uv pip -q --disable-pip-version-check install yamlmagic\n", + "!uv pip install -q --disable-pip-version-check yamlmagic\n", "%reload_ext yamlmagic" ], "outputs": [], diff --git a/packages/linkml/pyproject.toml b/packages/linkml/pyproject.toml index 89ea73226f..348f8563f9 100644 --- a/packages/linkml/pyproject.toml +++ b/packages/linkml/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ # Specifier syntax: https://peps.python.org/pep-0631/ "isodate >= 0.6.0", "jinja2 >= 3.1.0", "jsonasobj2 >= 1.0.3, < 2.0.0", - "jsonschema[format] >= 4.0.0", + "jsonschema[format]>=4.26.0", "linkml-runtime >= 1.10.0, < 2.0.0", "openpyxl", "parse", @@ -57,9 +57,9 @@ dependencies = [ # Specifier syntax: https://peps.python.org/pep-0631/ "pyshexc >= 0.10.3", "python-dateutil", "pyyaml", - "rdflib >=6.0.0", + "rdflib>=7.6.0", "requests >= 2.22", - "sqlalchemy >= 1.4.31", + "sqlalchemy>=2.0.51", "watchdog >= 0.9.0", "typing-extensions >= 4.6.0; python_version < '3.12'", "sphinx-click (>=6.0.0)", @@ -71,7 +71,7 @@ lint = [ "black >= 24.0.0", ] typing = [ - "numpydantic >= 1.6.1", + "numpydantic>=1.10.0", ] shacl = [ "pyshacl >= 0.25.0", @@ -80,8 +80,8 @@ tests = [ { include-group = "lint" }, { include-group = "typing" }, { include-group = "shacl" }, - "duckdb>=1.5.2", - "sqlalchemy-bigquery >= 1.9.0", + "duckdb>=1.5.5", + "sqlalchemy-bigquery>=1.17.2", ] dev = [ {include-group = "tests" }, @@ -93,7 +93,7 @@ dev = [ "jupyter", "nbconvert", "nbformat", - "coverage >= 6.4.1", + "coverage>=7.15.4", "tox >= 4", "tox-uv", "myst-nb >= 1.0.0; python_version >= '3.10'", @@ -103,7 +103,7 @@ dev = [ ] pandera = [ - "pandera >= 0.19.0", + "pandera>=0.32.1", "polars-lts-cpu >= 1.0.0", "pandas" ] @@ -111,20 +111,16 @@ tests-rustgen = [ "maturin>=1.14.1" ] typedb = [ - "typedb-driver >= 3.0, < 4.0", + "typedb-driver>=3.12.1,<4.0", ] bigquery = [ "sqlalchemy-bigquery >= 1.9.0", ] tests-extra = [ - # pytest 9 removed the private _pytest.assertion.util._diff_text API that - # tests/conftest.py relies on for snapshot diffs. Pin <9 until conftest is - # migrated to stdlib difflib. The only pytest 9 CVE (GHSA-6w46-j5rx-g56g, - # predictable tmpdir path) is test-infrastructure-only. - "pytest >= 7.4.0, < 9", + "pytest >= 7.4.0", "pytest-subtests >= 0.11.0", - "pytest-cov >= 4.1.0", + "pytest-cov>=7.1.0", "pytest-xdist >= 3.6.1", "numpy >= 1.24.3; python_version < '3.12'", "numpy >= 1.25.2; python_version >= '3.12'", @@ -135,15 +131,15 @@ tests-extra = [ "openapi-spec-validator >= 0.8.4", ] docs = [ - "furo >= 2023.03.27", - "sphinxcontrib-mermaid >= 0.7.1", + "furo>=2025.12.19", + "sphinxcontrib-mermaid>=2.1.0", "sphinx", "sphinx-click", "sphinx-rtd-theme", "myst-parser", "matplotlib >= 3.7", "sphinx-jinja >= 2.0.2", - "sphinxcontrib-programoutput >= 0.17", + "sphinxcontrib-programoutput>=0.20", ] [tool.uv.sources] diff --git a/packages/linkml/src/linkml/generators/javagen.py b/packages/linkml/src/linkml/generators/javagen.py index 068c9e0a04..d4d632dff4 100644 --- a/packages/linkml/src/linkml/generators/javagen.py +++ b/packages/linkml/src/linkml/generators/javagen.py @@ -101,6 +101,25 @@ def __post_init__(self): self.type = "_visitor" +@dataclass +class JavaBundle: + """In-memory result of rendering a LinkML schema to Java source. + + A ``JavaBundle`` is the output of :meth:`JavaGenerator.render`. It carries + the rendered Java source for every file that would be written to disk by + :meth:`JavaGenerator.serialize`, keyed by filename. + + Mirrors render/serialize split used by `rustgen.RustGenerator` (FileResult / + CrateResult) and `pydanticgen.PydanticGenerator` (PydanticModule). + """ + + files: dict[str, str] = field(default_factory=dict) + """Rendered Java source, keyed by filename (e.g. ``"Address.java"``).""" + + package: str = "" + """Java package name the rendered files belong to (informational).""" + + class TemplateCache: """Cache for template objects. @@ -177,12 +196,6 @@ class JavaGenerator(OOCodeGenerator): This generators supports an arbitrary number of different styles through the use of “template variants“. - - Currently, two variants are available: - - - the default variant represents LinkML classes as Java classes carrying - Lombok annotations (https://projectlombok.org); - - the `records` variant represents LinkML classes as Java 16 records. """ # ClassVars @@ -242,17 +255,17 @@ def map_type(self, t: TypeDefinition, required: bool = False) -> str: else: raise ValueError(f"{t} cannot be mapped to a type") - def serialize( + def render( self, - directory: str, template_variant: str | None = None, extra_templates: list[str] | None = None, visitors: list[str] | None = None, - **kwargs, - ) -> None: - """Generate and write the Java code to files. + ) -> JavaBundle: + """Render the schema to an in-memory :class:`JavaBundle`. + + Pure counterpart of :meth:`serialize`: returns the rendered Java + source for every file without touching the filesystem. - :param directory: The directory where to write the code files. :param template_variant: The name of the template variant to use, if any. :param extra_templates: A list of additional templates from which to generate additional code files. For example, if set to `[Foo,Bar]`, this will @@ -266,6 +279,8 @@ def serialize( `IFooVisitor` interface, and the generated code for both the `Foo` class and all its descendants will include a `accept(IFooVisitor)` method. + :return: A :class:`JavaBundle` whose ``files`` maps each output filename + (e.g. ``"Address.java"``) to its rendered source. """ oodocs = self.create_documents() # Create additional documents for additional templates and visitors @@ -279,7 +294,8 @@ class and all its descendants will include a `accept(IFooVisitor)` oodocs.append(OOVisitorDocument(name=visitor_name, package=self.package, visited_object=visited_name)) else: visitors = [] - self.directory = directory + + files: dict[str, str] = {} for oodoc in oodocs: cls = None enum = None @@ -306,8 +322,52 @@ class and all its descendants will include a `accept(IFooVisitor)` model_version=self.schema.version, ) - os.makedirs(directory, exist_ok=True) - filename = f"{oodoc.name}.java" + files[f"{oodoc.name}.java"] = code + + return JavaBundle(files=files, package=self.package) + + def serialize( + self, + directory: str | Path, + template_variant: str | None = None, + extra_templates: list[str] | None = None, + visitors: list[str] | None = None, + rendered_module: JavaBundle | None = None, + **kwargs, + ) -> None: + """Generate the Java code and write it to ``directory``, one file per class. + + Java requires one public class per file, so there is no meaningful + single-string serialization of a schema; callers that want the + generated code in memory should use :meth:`render` and work from the + returned :class:`JavaBundle` instead. + + :param directory: The directory where to write the code files. + :param template_variant: The name of the template variant to use, if any. + Ignored when ``rendered_module`` is provided. + :param extra_templates: A list of additional templates from which to generate + additional code files. See :meth:`render` for details. Ignored when + ``rendered_module`` is provided. + :param visitors: A list of class names for which to generate a visitor + interface. See :meth:`render` for details. Ignored when + ``rendered_module`` is provided. + :param rendered_module: Optional pre-computed :class:`JavaBundle` to + write instead of calling :meth:`render` afresh. Allows caller to + render once and inspect/write multiple times. When supplied, + ``template_variant``, ``extra_templates``, and ``visitors`` + are ignored (the bundle is used as-is). + """ + bundle = ( + rendered_module + if rendered_module is not None + else self.render( + template_variant=template_variant, + extra_templates=extra_templates, + visitors=visitors, + ) + ) + os.makedirs(directory, exist_ok=True) + for filename, code in bundle.files.items(): path = os.path.join(directory, filename) with open(path, "w", encoding="UTF-8") as stream: stream.write(code) diff --git a/packages/linkml/src/linkml/generators/jsonschemagen.py b/packages/linkml/src/linkml/generators/jsonschemagen.py index b9cfa6b883..0b3821c27f 100644 --- a/packages/linkml/src/linkml/generators/jsonschemagen.py +++ b/packages/linkml/src/linkml/generators/jsonschemagen.py @@ -835,12 +835,22 @@ def get_subschema_for_slot( prop = JsonSchema.ref_for(reference, required=slot.required or not include_null) else: - if reference is not None: - prop = JsonSchema.ref_for(reference) - elif typ and fmt is None: - prop = JsonSchema({"type": typ}) - elif typ: - prop = JsonSchema({"type": typ, "format": fmt}) + if not slot_is_boolean or slot.range != self.schemaview.schema.default_range: + # When a slot uses boolean constraints (any_of, all_of, etc.) AND its range + # was not set explicitly but inherited from the schema's default_range, the + # boolean constraints already fully describe the type. Emitting prop["type"] + # from the default_range would duplicate that constraint. Skip it. + # An explicit range on a boolean slot is intentional and is kept. + if reference is not None: + # for multivalued slots, nullability applies to the array (via array_of + # below), not to the individual elements + prop = JsonSchema.ref_for( + reference, required=slot.required or slot_is_multivalued or not include_null + ) + elif typ and fmt is None: + prop = JsonSchema({"type": typ}) + elif typ: + prop = JsonSchema({"type": typ, "format": fmt}) if slot_is_multivalued: prop = JsonSchema.array_of(prop, include_null, required=slot.required) diff --git a/packages/linkml/src/linkml/generators/oocodegen.py b/packages/linkml/src/linkml/generators/oocodegen.py index 050c58f7a7..be25417af3 100644 --- a/packages/linkml/src/linkml/generators/oocodegen.py +++ b/packages/linkml/src/linkml/generators/oocodegen.py @@ -128,7 +128,13 @@ def __post_init__(self): super().__post_init__() @abc.abstractmethod - def serialize(self, directory: str) -> None: + def serialize(self, directory: str | None = None, **kwargs) -> str | None: + """Serialize the schema to generated code. + + Single-file generators return the generated code as a ``str``; + multi-file generators (e.g. javagen) write one file per class + into ``directory`` and return ``None``. + """ raise NotImplementedError("Not implemented.") @abc.abstractmethod @@ -331,7 +337,7 @@ def create_documents(self) -> list[OODocument]: source_slot=slot, range=range, default_value=default_value, - slot_uri=sv.get_uri(slot.name, expand=True), + slot_uri=sv.get_uri(slot, expand=True), ) if sn not in parent_slots: diff --git a/packages/linkml/src/linkml/generators/openapigen.py b/packages/linkml/src/linkml/generators/openapigen.py index faab72e1ae..020bd7cf4f 100644 --- a/packages/linkml/src/linkml/generators/openapigen.py +++ b/packages/linkml/src/linkml/generators/openapigen.py @@ -3,19 +3,24 @@ import json import os import re +import textwrap from dataclasses import dataclass, field +from typing import cast import click import yaml -from openapi_spec_validator import OpenAPIV30SpecValidator, validate +from openapi_spec_validator import OpenAPIV30SpecValidator +from openapi_spec_validator import validate as openapi_validate +from openapi_spec_validator.validation.validators import SpecValidator as OaSpecValidator +from yaml import MappingNode, ScalarNode from linkml._version import __version__ -from linkml.generators.jsonschemagen import JsonSchemaGenerator +from linkml.generators.jsonschemagen import JsonSchemaGenerator, json_schema_types from linkml.utils.generator import Generator, shared_arguments openapi_generic_template = """openapi: 3.0.3 # This is a valid OpenAPI template to be used by the LinkML OpenAPI generator. -# It adds one (random) class of the schema as an example. +# It adds one (random) class or type of the LinkML schema as an example. # Please adapt it to your needs. # See more information in the online documentation: # https://linkml.io/linkml/generators/openapi.html @@ -31,27 +36,28 @@ get: responses: '200': - description: Endpoint example involving random schema class + description: Endpoint example involving random data schema content: application/json: schema: # any broken reference will cause template instantiation to fail # OpenAPI editors typically also report them - $ref: '#/components/schemas/{schema_class}' + $ref: '#/components/schemas/{data_schema}' components: - # any class schema provided here that is not used by at least + # any data schema provided here that is not used by at least # one endpoint will be eliminated from the template instantiation # OpenAPI editors typically also report them schemas: # this resource name can differ from the name in the LinkML schema # it must only match the corresponding endpoint `$ref` references - {schema_class}: + # it creates a mapping between names in OpenAPI and LinkML + {data_schema}: type: object description: Resource schema to be generated from the LinkML data model. # schema ID mismatching with provided schema will cause template # instantiation to fail - x-linkml-schema: {schema_id} - x-linkml-source: {schema_class} + x-linkml-schema: {linkml_schema_id} + x-linkml-source: {data_schema} """ @@ -62,9 +68,9 @@ class OpenApiGenerator(Generator): The generator composes a user-provided OpenAPI template (containing the API header, paths/endpoints, and security schemes) with JSON Schema components generated from - the LinkML schema via :class:`.JsonSchemaGenerator`. Only classes referenced by the - template's endpoints (and their transitive dependencies) are included in the - ``components/schemas`` section. + the LinkML schema via :class:`.JsonSchemaGenerator`. Only data schemas referenced + by the template's endpoints (and their transitive dependencies) are included in + the ``components/schemas`` section. """ generatorname = os.path.basename(__file__) @@ -74,7 +80,6 @@ class OpenApiGenerator(Generator): uses_schemaloader = False _template: dict = field(default_factory=dict, init=False, repr=False) - _renaming: dict[str, str] = field(default_factory=dict, init=False, repr=False) # Mapping of valid_formats entries to OpenAPI version strings. # Extend this dict when adding support for additional OpenAPI versions. _openapi_versions: dict[str, str] = field( @@ -84,13 +89,39 @@ class OpenApiGenerator(Generator): ) # Mapping of OpenAPI version strings to validators from openapi-spec-validator. # Extend this dict when adding support for additional OpenAPI versions. - _openapi_validators: dict[str, type] = field( + _openapi_validators: dict[str, type[OaSpecValidator]] = field( default_factory=lambda: {"3.0.3": OpenAPIV30SpecValidator}, init=False, repr=False, ) - def _find_referenced_resources(self) -> set[str]: + def _validate_oad_template( + self, oad_validator_class: type[OaSpecValidator], expected_version: str, format_name: str + ): + """Validate the OpenAPI template""" + # Validate that the template declares the expected OpenAPI version + declared_version = self._template.get("openapi") + if declared_version != expected_version: + raise ValueError( + f"Template OpenAPI version is '{declared_version}', " + f"but format '{format_name}' requires version '{expected_version}'" + ) + # Validate the input template against the OpenAPI specification. + # This also catches dangling $ref targets in endpoints. + openapi_validate(self._template, cls=oad_validator_class) + # Validation: every template schema must declare this LinkML schema. + if "components" in self._template and "schemas" in self._template["components"]: + for name, schema in self._template["components"]["schemas"].items(): + if "x-linkml-schema" not in schema: + raise KeyError(f"Template data schema '{name}' is missing required 'x-linkml-schema'") + if schema["x-linkml-schema"] != self.schemaview.schema.id: + raise ValueError( + f"Template data schema '{name}' declares " + f"x-linkml-schema '{schema['x-linkml-schema']}' " + f"but the loaded schema has id '{self.schemaview.schema.id}'" + ) + + def _find_referenced_schemas(self) -> set[str]: """Return the set of resource names referenced by the template's endpoints.""" result = set() for endp_spec in self._template["paths"].values(): @@ -98,18 +129,57 @@ def _find_referenced_resources(self) -> set[str]: if "requestBody" in req_spec and "content" in req_spec["requestBody"]: for content_spec in req_spec["requestBody"]["content"].values(): if "$ref" in content_spec["schema"]: - class_name = content_spec["schema"]["$ref"].removeprefix("#/components/schemas/") - result.add(class_name) + resource_name = content_spec["schema"]["$ref"].removeprefix("#/components/schemas/") + result.add(resource_name) + if "parameters" in req_spec: + for param_spec in req_spec["parameters"]: + if "$ref" in param_spec["schema"]: + resource_name = param_spec["schema"]["$ref"].removeprefix("#/components/schemas/") + result.add(resource_name) if "responses" in req_spec: for response in req_spec["responses"].values(): if "content" in response: for content_spec in response["content"].values(): if "$ref" in content_spec["schema"]: - class_name = content_spec["schema"]["$ref"].removeprefix("#/components/schemas/") - result.add(class_name) + resource_name = content_spec["schema"]["$ref"].removeprefix("#/components/schemas/") + result.add(resource_name) return result - def _fix_openapi_spec(self, element: dict | list) -> dict | list | None: + def _generate_type_schema(self, type_name: str) -> dict: + """Build an OpenAPI-compatible JSON Schema for a LinkML TypeDefinition.""" + type_def = self.schemaview.get_type(type_name) + typ, fmt = json_schema_types.get(type_def.base.lower(), ("string", None)) + schema: dict = {} + if typ: + schema["type"] = str(typ) + if fmt: + schema["format"] = str(fmt) + if type_def.pattern: + schema["pattern"] = str(type_def.pattern) + if type_def.minimum_value is not None: + schema["minimum"] = str(type_def.minimum_value) + if type_def.maximum_value is not None: + schema["maximum"] = str(type_def.maximum_value) + if type_def.equals_string is not None: + schema["const"] = str(type_def.equals_string) + if type_def.equals_number is not None: + schema["const"] = str(type_def.equals_number) + if type_def.description: + schema["description"] = str(type_def.description) + return schema + + def _find_references(self, element: dict | list, referenced_data_schemas: set[str]) -> None: + """Recursively collect all ``$ref`` target names from ``element`` into ``referenced_data_schemas``.""" + if isinstance(element, dict): + if "$ref" in element: + referenced_data_schemas.add(element["$ref"].replace("#/$defs/", "")) + for value in element.values(): + self._find_references(value, referenced_data_schemas) + elif isinstance(element, list): + for item in element: + self._find_references(item, referenced_data_schemas) + + def _fix_openapi_spec(self, element: dict | list) -> dict | list: """ Transform JSON Schema constructs into OpenAPI v3.0.3 compatible forms: @@ -141,136 +211,166 @@ def _fix_openapi_spec(self, element: dict | list) -> dict | list | None: fixed_element.append(item) return fixed_element - def _rename(self, element: dict | list) -> dict | list | None: + def _rename(self, name_map: dict[str, str], element: dict | list) -> dict | list: """ - If the resource names do not correspond the schema class names, + If the resource names do not correspond the data schema names, then some renaming is needed so that OpenAPI resource names are properly referenced throughout the whole OpenAPI file. """ - renamed_element = None if isinstance(element, dict): - renamed_element = {} + renamed_element: dict | list = {} for key, value in element.items(): - if key in self._renaming: - key = self._renaming[key] + if key in name_map: + key = name_map[key] if isinstance(value, dict | list): - value = self._rename(value) + value = self._rename(name_map, value) elif isinstance(value, str) and value.startswith("#/components/schemas/"): - class_name = value[len("#/components/schemas/") :] - if class_name in self._renaming: - value = value.replace(class_name, self._renaming[class_name]) + data_schema_name = value[len("#/components/schemas/") :] + if data_schema_name in name_map: + value = value.replace(data_schema_name, name_map[data_schema_name]) renamed_element[key] = value elif isinstance(element, list): - renamed_element = [] + renamed_element: dict | list = [] for item in element: if isinstance(item, dict | list): - item = self._rename(item) + item = self._rename(name_map, item) elif isinstance(item, str) and item.startswith("#/components/schemas/"): - class_name = item[len("#/components/schemas/") :] - if class_name in self._renaming: - item = item.replace(class_name, self._renaming[class_name]) + data_schema_name = item[len("#/components/schemas/") :] + if data_schema_name in name_map: + item = item.replace(data_schema_name, name_map[data_schema_name]) renamed_element.append(item) + else: + raise TypeError(f"Unexpected type '{type(element)}', only 'dict' and 'list' supported.") return renamed_element - def _find_references(self, element: dict | list, referenced_classes: set[str]) -> None: - """Recursively collect all ``$ref`` target names from ``element`` into ``referenced_classes``.""" - if isinstance(element, dict): - if "$ref" in element: - referenced_classes.add(element["$ref"].replace("#/$defs/", "")) - for value in element.values(): - self._find_references(value, referenced_classes) - elif isinstance(element, list): - for item in element: - self._find_references(item, referenced_classes) + def _sanitize_schemas( + self, name_map: dict[str, str], openapi_schemas: dict, endpoint_ref_linkml_names: set[str] + ) -> dict: + """ + Prune unreachable schemas, remove redundant metadata, convert JSON Schema constructs + to OpenAPI 3.0.3 compat, and apply any OpenAPI↔LinkML name renames. + """ + referenced_schemas = endpoint_ref_linkml_names.copy() + for openapi_schema in openapi_schemas.values(): + self._find_references(openapi_schema, referenced_schemas) + while set(openapi_schemas.keys()).difference(referenced_schemas): + openapi_schema_names = list(openapi_schemas.keys()) + for openapi_schema_name in openapi_schema_names: + if openapi_schema_name not in referenced_schemas: + del openapi_schemas[openapi_schema_name] + referenced_schemas = endpoint_ref_linkml_names.copy() + for openapi_schema in openapi_schemas.values(): + self._find_references(openapi_schema, referenced_schemas) + # title always duplicates the schema dict key, so it is redundant in components/schemas + for openapi_schema in openapi_schemas.values(): + openapi_schema.pop("title", None) + openapi_schemas = cast(dict, self._fix_openapi_spec(openapi_schemas)) + if name_map: + openapi_schemas = cast(dict, self._rename(name_map, openapi_schemas)) + return openapi_schemas - def _sanitize_schemas(self, class_schemas: dict, endpoint_referenced_classes: set[str]) -> dict: - """Remove schemas not transitively reachable from any endpoint-referenced class.""" - referenced_classes = endpoint_referenced_classes.copy() - for class_schema in class_schemas.values(): - self._find_references(class_schema, referenced_classes) - while set(class_schemas.keys()).difference(referenced_classes): - class_schema_names = list(class_schemas.keys()) - for class_name in class_schema_names: - if class_name not in referenced_classes: - del class_schemas[class_name] - referenced_classes = endpoint_referenced_classes.copy() - for class_schema in class_schemas.values(): - self._find_references(class_schema, referenced_classes) - return class_schemas + def _find_schemas_line(self, template_text: str) -> int: + """Return the 0-indexed line number of the ``schemas`` key under ``components``.""" + doc = yaml.compose(template_text) + if not isinstance(doc, MappingNode): + raise ValueError("OpenAPI template is not a YAML mapping") + components_node = None + for key, value in doc.value: + if isinstance(key, ScalarNode) and key.value == "components": + components_node = value + break + if not isinstance(components_node, MappingNode): + raise ValueError("OpenAPI template is missing a valid 'components' section") + for key, _ in components_node.value: + if isinstance(key, ScalarNode) and key.value == "schemas": + return key.start_mark.line + raise ValueError("OpenAPI template is missing 'schemas' section under 'components'") def serialize(self, template_file: str = "", **kwargs) -> str: """Generate an OpenAPI v3.0.3 spec from ``template_file`` and the loaded LinkML schema.""" + # load the template if not template_file: raise ValueError("An OpenAPI template file is required") with open(template_file) as tf: - self._template = yaml.safe_load(tf) - # Determine the expected OpenAPI version from the active output format + template_text = tf.read() + self._template = yaml.safe_load(template_text) + # determine the expected OpenAPI version from the active output format format_name = getattr(self, "format", self.valid_formats[0]) or self.valid_formats[0] expected_version = self._openapi_versions.get(format_name) if expected_version is None: raise ValueError(f"Unsupported output format '{format_name}'") - validator_class = self._openapi_validators.get(expected_version) - if validator_class is None: + + # get the corresponding OpenAPI validator + oad_validator_class = self._openapi_validators.get(expected_version) + if oad_validator_class is None: raise ValueError(f"No validator available for OpenAPI version {expected_version}") - # Validate that the template declares the expected OpenAPI version - declared_version = self._template.get("openapi") - if declared_version != expected_version: - raise ValueError( - f"Template OpenAPI version is '{declared_version}', " - f"but format '{format_name}' requires version '{expected_version}'" - ) - # Validate the input template against the OpenAPI specification - validate(self._template, cls=validator_class) - if not isinstance(self._template.get("paths"), dict): - raise ValueError("OpenAPI template is missing required 'paths' section") - if not isinstance(self._template.get("components"), dict): - raise ValueError("OpenAPI template is missing required 'components' section") - referenced_resource_names = self._find_referenced_resources() - resource_schemas = self._template["components"]["schemas"] - class_schemas = {} - self._renaming = {} - referenced_class_names = set() - # get only the resource schemas that are really referenced from an endpoint - for referenced_resource_name in referenced_resource_names: - if referenced_resource_name not in resource_schemas: - raise KeyError( - f"resource '{referenced_resource_name}' referenced in one of the endpoints " - "does not have a schema declaration" - ) - resource_schema = resource_schemas[referenced_resource_name] - # validate that linkml schema id is correct - if resource_schema["x-linkml-schema"] != self.schema.id: - raise ValueError( - f"Template resource '{referenced_resource_name}' declares " - f"x-linkml-schema '{resource_schema['x-linkml-schema']}' " - f"but the loaded schema has id '{self.schema.id}'" - ) - # if resource name differs from schema class name, keep mapping - class_name = resource_schema["x-linkml-source"] - if referenced_resource_name != class_name: - self._renaming[class_name] = referenced_resource_name - referenced_class_names.add(class_name) - json_schema = JsonSchemaGenerator(self.schema, include_null=False, top_class=class_name).generate() - json_schema_classes = json.loads(json_schema.to_json())["$defs"] - class_schemas = class_schemas | json_schema_classes - class_schemas = self._sanitize_schemas(class_schemas, referenced_class_names) - # title always duplicates the schema dict key, so it is redundant in components/schemas - for class_schema in class_schemas.values(): - class_schema.pop("title", None) - class_schemas = self._fix_openapi_spec(class_schemas) - if self._renaming: - class_schemas = self._rename(class_schemas) - self._template["components"]["schemas"] = class_schemas - # Validate the generated output against the OpenAPI specification - validate(self._template, cls=validator_class) - return yaml.dump(self._template, sort_keys=False) + # validate the OpenAPI template before further processing + self._validate_oad_template(oad_validator_class, expected_version, format_name) + # if no schemas to instantiate, return the template itself + if ( + "components" not in self._template + or "schemas" not in self._template["components"] + or not self._template["components"]["schemas"] + ): + return template_text + + # Two namespaces exist: OpenAPI schema names (from the template's + # components/schemas keys) and LinkML element names (from the LinkML schema). + # Every schema has a name in both namespaces and the template declares the + # mapping between them in the x-linkml-schema values; they may be identical or differ. + # When they differ, name_map records the synonym (LinkML element name -> OpenAPI schema name). + endpoint_ref_openapi_names = self._find_referenced_schemas() # OpenAPI names referenced by endpoints + openapi_schemas = self._template["components"]["schemas"] # schemas provided by the OpenAPI template + # collect the LinkML names referenced by endpoints (seed for sanitizing below) + endpoint_ref_linkml_names: set[str] = { + openapi_schemas[n]["x-linkml-source"] for n in endpoint_ref_openapi_names + } + # when OpenAPI and LinkML names differ, record the synonym for later renaming + name_map: dict[str, str] = { + openapi_schemas[n]["x-linkml-source"]: n + for n in endpoint_ref_openapi_names + if n != openapi_schemas[n]["x-linkml-source"] + } + + # JsonSchemaGenerator.generate() emits every class/enum of the LinkML schema into + # $defs. LinkML types are not part of $defs and are generated separately. + # all_req_schemas contains all directly or transitively required schemas from + # LinkML classes and types + json_schema = JsonSchemaGenerator(self.schemaview.schema, include_null=False).generate() + all_req_schemas: dict[str, dict] = json.loads(json_schema.to_json())["$defs"] + for linkml_name in endpoint_ref_linkml_names: + if linkml_name in self.schemaview.all_types(): + all_req_schemas[linkml_name] = self._generate_type_schema(linkml_name) + + # sanitize schemas not transitively reachable from any endpoint-referenced schema + sanitized_data_schemas = self._sanitize_schemas(name_map, all_req_schemas, endpoint_ref_linkml_names) + + # instantiate the real OpenAPI YAML replacing the schema placeholders + lines = template_text.splitlines(keepends=True) + schemas_line_idx = self._find_schemas_line(template_text) + text_before_schemas = "".join(lines[:schemas_line_idx]) + schemas_yaml = yaml.dump(sanitized_data_schemas, sort_keys=False) + indented_schemas = textwrap.indent(schemas_yaml, " ") + result = text_before_schemas + " schemas:\n" + indented_schemas + + # validate the generated output against the OpenAPI specification before returning + openapi_validate(yaml.safe_load(result), cls=oad_validator_class) + return result def printout_template(self) -> str: - """Return a generic OpenAPI template pre-filled with the first class of the schema.""" - first_class = next(iter(self.schema.classes.keys())) - if re.search(r"[ :\d]", first_class): - first_class = f'"{first_class}"' - return openapi_generic_template.format(schema_id=self.schema.id, schema_class=first_class) + """Return a generic OpenAPI template pre-filled with the first class/type of the LinkML schema.""" + element_names = self.schemaview.all_classes().keys() + if not element_names: + element_names = self.schemaview.all_types().keys() + if not element_names: + # if no realistic schema and data can be used, put some placeholders + return openapi_generic_template.format( + linkml_schema_id="", data_schema="" + ) + first_element = next(iter(element_names)) + if re.search(r"[ :\d]", first_element): + first_element = f'"{first_element}"' + return openapi_generic_template.format(linkml_schema_id=self.schemaview.schema.id, data_schema=first_element) @shared_arguments(OpenApiGenerator) @@ -284,12 +384,15 @@ def printout_template(self) -> str: def cli(yamlfile, template, **args): """Generate an OpenAPI v3.0.3 spec with resources modelled with LinkML. If no OpenAPI template is provided, - a generic one with placeholders for all the classes in the schema is printed out.""" - # if no template provided, print out a generic one with all the classes of the schema + a generic one with one exemplary class/type schema is printed out.""" + # if no template provided, print out a generic one if not template: print(OpenApiGenerator(yamlfile, **args).printout_template()) return - print(OpenApiGenerator(yamlfile, **args).serialize(template_file=template, **args), end="") + print( + OpenApiGenerator(yamlfile, **args).serialize(template_file=template, **args), + end="", + ) if __name__ == "__main__": diff --git a/packages/linkml/src/linkml/generators/pydanticgen/pydanticgen.py b/packages/linkml/src/linkml/generators/pydanticgen/pydanticgen.py index 0bc98458bc..175aa4d871 100644 --- a/packages/linkml/src/linkml/generators/pydanticgen/pydanticgen.py +++ b/packages/linkml/src/linkml/generators/pydanticgen/pydanticgen.py @@ -769,7 +769,16 @@ def get_class_slot_range(self, slot_range: str, inlined: bool, inlined_as_list: len([x for x in sv.class_induced_slots(slot_range) if x.designates_type]) > 0 and len(sv.class_descendants(slot_range)) > 1 ): - descendants = [self._get_class_python_name(c) for c in sv.class_descendants(slot_range)] + descendants = [ + self._get_class_python_name(c) + for c in sv.class_descendants(slot_range) + if not sv.get_class(c).abstract + ] + if not descendants: + raise ValueError( + f"Slot range '{slot_range}' is abstract and has no concrete descendants; " + f"cannot generate a valid Pydantic type." + ) return "Union[" + ",".join(descendants) + "]" else: return f"{self._get_class_python_name(slot_range)}" diff --git a/packages/linkml/src/linkml/generators/shaclgen.py b/packages/linkml/src/linkml/generators/shaclgen.py index afdd0cf953..8e6a1b267b 100644 --- a/packages/linkml/src/linkml/generators/shaclgen.py +++ b/packages/linkml/src/linkml/generators/shaclgen.py @@ -16,7 +16,7 @@ from linkml.generators.shacl.shacl_ifabsent_processor import ShaclIfAbsentProcessor from linkml.utils.generator import Generator, shared_arguments from linkml.utils.language_tags import LanguageTagResolver -from linkml_runtime.linkml_model.meta import ClassDefinition, ElementName +from linkml_runtime.linkml_model.meta import ClassDefinition, ElementName, PresenceEnum from linkml_runtime.utils.formatutils import underscore from linkml_runtime.utils.rdf_canonicalize import canonicalize_rdf_graph from linkml_runtime.utils.yamlutils import TypedNode, extended_float, extended_int, extended_str @@ -142,6 +142,22 @@ class ShaclGenerator(Generator): ignores any per-slot ``in_language``. """ + emit_rules: bool = True + """Emit ``sh:sparql`` constraints from LinkML ``rules:`` blocks. + + When ``True`` (default), recognised rule patterns are translated into + SHACL-SPARQL constraints (``sh:SPARQLConstraint``) on the corresponding + ``sh:NodeShape``. Currently two patterns are recognised: + + * *Boolean guard* — a precondition with ``value_presence: PRESENT`` on a + value slot and a postcondition with ``equals_string: "true"`` on a + boolean flag slot. + * *Exclusive value* — a precondition with ``equals_string`` on a slot and + a postcondition with ``maximum_cardinality`` on the *same* slot. + + See `W3C SHACL §5 `_ + and `linkml/linkml#2464 `_. + """ generatorname = os.path.basename(__file__) generatorversion = "0.0.1" valid_formats = ["ttl"] @@ -275,9 +291,9 @@ def prop_pv_text(p, v): if msg_text: g.add((pnode, SH.message, Literal(msg_text, lang=self._resolve_language(None)))) # minCount - if s.minimum_cardinality: + if s.minimum_cardinality is not None: prop_pv_literal(SH.minCount, s.minimum_cardinality) - elif s.exact_cardinality: + elif s.exact_cardinality is not None: prop_pv_literal(SH.minCount, s.exact_cardinality) # Identifiers map to the node's IRI rather than a property triple, # so there's no arc to constrain with sh:minCount 1 — emitting it @@ -285,9 +301,9 @@ def prop_pv_text(p, v): elif s.required and not s.identifier: prop_pv_literal(SH.minCount, 1) # maxCount - if s.maximum_cardinality: + if s.maximum_cardinality is not None: prop_pv_literal(SH.maxCount, s.maximum_cardinality) - elif s.exact_cardinality: + elif s.exact_cardinality is not None: prop_pv_literal(SH.maxCount, s.exact_cardinality) elif not s.multivalued: prop_pv_literal(SH.maxCount, 1) @@ -389,10 +405,239 @@ def st_node_pv(p, v): if default_value: prop_pv(SH.defaultValue, default_value) + if self.emit_rules: + self._add_rules(g, class_uri_with_suffix, c) + return g LINKML_ANY_URI = "https://w3id.org/linkml/Any" + # ------------------------------------------------------------------- + # Rules → sh:sparql + # ------------------------------------------------------------------- + + def _add_rules(self, g: Graph, shape_uri: URIRef, cls: ClassDefinition) -> None: + """Emit ``sh:sparql`` constraints from LinkML ``rules:`` blocks. + + Each recognised rule is converted into an ``sh:SPARQLConstraint`` + attached to *shape_uri*. Unrecognised patterns are logged at + ``DEBUG`` level and silently skipped. + + Currently recognised patterns: + + * **Boolean guard** — a *precondition* with + ``value_presence: PRESENT`` on a value slot and a *postcondition* + with ``equals_string: "true"`` on a boolean flag slot. + + * **Exclusive value** — a *precondition* with ``equals_string`` on + a slot and a *postcondition* with ``maximum_cardinality`` on the + *same* slot. Enforces that when a specific value is present in a + multivalued slot, the total number of values must not exceed the + given cardinality (typically 1 for mutual exclusion). + + See `W3C SHACL §5 `_. + """ + if not cls.rules: + return + + sv = self.schemaview + for rule in cls.rules: + if getattr(rule, "deactivated", False): + continue + + if getattr(rule, "bidirectional", False): + logger.warning( + "Rule in class %r has bidirectional=true; " + "SHACL-SPARQL generation does not support bidirectional rules. " + "Skipping this rule entirely.", + cls.name, + ) + continue + + if getattr(rule, "open_world", False): + logger.warning( + "Rule in class %r has open_world=true; " + "SHACL operates under closed-world assumption. " + "The constraint is emitted but may not match open-world semantics.", + cls.name, + ) + + if getattr(rule, "elseconditions", None): + logger.warning( + "Rule in class %r has elseconditions; " + "only the forward (if/then) branch is emitted as sh:sparql. " + "The else branch cannot be represented in SHACL-SPARQL.", + cls.name, + ) + + sparql_query = self._rule_to_sparql(sv, cls, rule) + if sparql_query is None: + logger.debug( + "Skipping unsupported rule pattern in class %r: %s", + cls.name, + getattr(rule, "description", "(no description)"), + ) + continue + + constraint = BNode() + g.add((shape_uri, SH.sparql, constraint)) + g.add((constraint, RDF.type, SH.SPARQLConstraint)) + + message = getattr(rule, "description", None) + if message: + g.add((constraint, SH.message, Literal(message))) + + g.add((constraint, SH.select, Literal(sparql_query))) + + def _rule_to_sparql(self, sv, cls: ClassDefinition, rule) -> str | None: + """Convert a ``ClassRule`` to a SPARQL SELECT query string. + + Returns ``None`` when the rule does not match any supported pattern. + """ + pre = getattr(rule, "preconditions", None) + post = getattr(rule, "postconditions", None) + if not pre or not post: + return None + + pre_slots = getattr(pre, "slot_conditions", None) or {} + post_slots = getattr(post, "slot_conditions", None) or {} + + # Pattern: boolean guard + # preconditions: exactly one slot with value_presence PRESENT + # postconditions: exactly one slot with equals_string "true" + if len(pre_slots) == 1 and len(post_slots) == 1: + pre_slot_name = next(iter(pre_slots)) + post_slot_name = next(iter(post_slots)) + + pre_cond = pre_slots[pre_slot_name] + post_cond = post_slots[post_slot_name] + + # Note: PresenceEnum.PRESENT is a PermissibleValue, but parsed schemas + # return PresenceEnum instances — wrapping ensures type-compatible comparison. + is_value_present = getattr(pre_cond, "value_presence", None) == PresenceEnum(PresenceEnum.PRESENT) + is_flag_true = getattr(post_cond, "equals_string", None) == "true" + + if is_value_present and is_flag_true: + return self._build_boolean_guard_sparql(sv, cls, post_slot_name, pre_slot_name) + + # Pattern: exclusive value + # preconditions: slot X has equals_string (a specific enum value) + # postconditions: same slot X has maximum_cardinality N + # Semantics: "If value V is present in slot X, then X has at most N values." + pre_equals = getattr(pre_cond, "equals_string", None) + post_max_card = getattr(post_cond, "maximum_cardinality", None) + + if pre_equals is not None and post_max_card is not None and pre_slot_name == post_slot_name: + return self._build_exclusive_value_sparql(sv, cls, pre_slot_name, pre_equals, int(post_max_card)) + + return None + + def _build_boolean_guard_sparql(self, sv, cls: ClassDefinition, flag_slot_name: str, value_slot_name: str) -> str: + """Build a SPARQL SELECT query for the boolean-guard pattern. + + The query detects violations where the value property is present + but the boolean flag is absent or not ``true``. + + Conforms to `SHACL §5.3.1 + `_: + ``$this`` is pre-bound to each focus node. + """ + flag_uri = self._slot_uri(sv, flag_slot_name, cls) + value_uri = self._slot_uri(sv, value_slot_name, cls) + + return ( + f"SELECT $this WHERE {{\n" + f" OPTIONAL {{ $this <{flag_uri}> ?flag . }}\n" + f" OPTIONAL {{ $this <{value_uri}> ?value . }}\n" + f" FILTER (\n" + f' ( !BOUND(?flag) || str(?flag) != "true" ) &&\n' + f" BOUND(?value)\n" + f" )\n" + f"}}" + ) + + def _build_exclusive_value_sparql( + self, + sv, + cls: ClassDefinition, + slot_name: str, + value_name: str, + max_card: int, + ) -> str | None: + """Build a SPARQL SELECT query for the exclusive-value pattern. + + Detects violations where a specific value is present in a multivalued + slot but the total number of values exceeds *max_card*. + + For the common case ``max_card == 1``, the query checks whether the + exclusive value coexists with any other value (simple existence test). + For ``max_card > 1``, a subquery counts all values and checks against + the limit. + + The exclusive value is resolved to its full IRI via the slot's enum + ``meaning`` field. If the slot is not an enum or the value has no + ``meaning``, the value is compared as a plain literal. + + Conforms to `SHACL §5.3.1 + `_: + ``$this`` is pre-bound to each focus node. + """ + slot_uri = self._slot_uri(sv, slot_name, cls) + value_ref = self._resolve_enum_value_ref(sv, slot_name, value_name) + + if max_card == 1: + return ( + f"SELECT $this WHERE {{\n" + f" $this <{slot_uri}> {value_ref} .\n" + f" $this <{slot_uri}> ?other .\n" + f" FILTER (?other != {value_ref})\n" + f"}}" + ) + + return ( + f"SELECT $this WHERE {{\n" + f" $this <{slot_uri}> {value_ref} .\n" + f" {{\n" + f" SELECT $this (COUNT(?val) AS ?count)\n" + f" WHERE {{ $this <{slot_uri}> ?val . }}\n" + f" GROUP BY $this\n" + f" HAVING (?count > {max_card})\n" + f" }}\n" + f"}}" + ) + + def _resolve_enum_value_ref(self, sv, slot_name: str, value_name: str) -> str: + """Resolve an enum value name to a SPARQL term (IRI or literal). + + Looks up the slot's range as an enum, finds the permissible value + matching *value_name*, and returns its ``meaning`` as a full IRI + wrapped in angle brackets. Falls back to a quoted literal if the + slot is not an enum or the value lacks a ``meaning``. + """ + slot = sv.get_slot(slot_name) + if slot: + range_name = slot.range + if range_name and range_name in sv.all_enums(): + enum = sv.get_enum(range_name) + pv = enum.permissible_values.get(value_name) + if pv and pv.meaning: + iri = sv.expand_curie(pv.meaning) + return f"<{iri}>" + return f'"{value_name}"' + + def _slot_uri(self, sv, slot_name: str, cls: ClassDefinition) -> str: + """Resolve a slot name to a full IRI string for use in SPARQL queries. + + Mirrors the resolution logic used for ``sh:path`` in the main slot loop: + prefer ``sv.get_uri()`` for slots registered in the schema map, fall + back to ``default_prefix:underscored_name``. + """ + slot = sv.get_slot(slot_name) + if slot and slot_name in sv.element_by_schema_map(): + return sv.get_uri(slot, expand=True) + pfx = sv.schema.default_prefix + return sv.expand_curie(f"{pfx}:{underscore(slot_name)}") + def _add_class(self, func: Callable, r: ElementName) -> None: """Add an sh:class constraint for range class *r*. @@ -660,6 +905,17 @@ def add_simple_data_type(func: Callable, r: ElementName) -> None: 'Example: "{name} ({class}): {description} [{comments}]"' ), ) +@click.option( + "--emit-rules/--no-emit-rules", + default=True, + show_default=True, + help=( + "Emit sh:sparql constraints from LinkML rules: blocks. " + "When enabled (default), recognised rule patterns (e.g. boolean-guard) " + "are translated into SHACL-SPARQL constraints on the corresponding " + "sh:NodeShape. Use --no-emit-rules to suppress rule generation." + ), +) @click.version_option(__version__, "-V", "--version") def cli(yamlfile, **args): """Generate SHACL turtle from a LinkML model""" diff --git a/packages/linkml/src/linkml/generators/sqlvalidationgen.py b/packages/linkml/src/linkml/generators/sqlvalidationgen.py index 024e485589..caead4dab4 100644 --- a/packages/linkml/src/linkml/generators/sqlvalidationgen.py +++ b/packages/linkml/src/linkml/generators/sqlvalidationgen.py @@ -1,25 +1,39 @@ from __future__ import annotations +import copy import logging import os from dataclasses import dataclass from typing import Any import click -from sqlalchemy import and_, column, func, literal_column, or_, select, table, union_all +from sqlalchemy import and_, cast, column, func, literal, null, or_, select, table, tuple_, union_all from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import sqlite as sqlite_dialect -from sqlalchemy.types import Text +from sqlalchemy.sql.elements import ColumnElement +from sqlalchemy.sql.selectable import Select, TableClause +from sqlalchemy.types import Float, Integer, Text from linkml._version import __version__ from linkml.transformers.relmodel_transformer import ForeignKeyPolicy, RelationalModelTransformer from linkml.utils.generator import Generator, shared_arguments -from linkml_runtime.linkml_model.meta import ClassDefinition, SlotDefinition +from linkml_runtime.linkml_model.meta import ( + AnonymousClassExpression, + AnonymousSlotExpression, + ClassRule, + SlotDefinition, +) +from linkml_runtime.utils.formatutils import underscore from linkml_runtime.utils.schemaview import SchemaView logger = logging.getLogger(__name__) +def _literal_num(val): + """Return a typed SQLAlchemy literal for a numeric value.""" + return literal(val, type_=Integer() if isinstance(val, int) else Float()) + + @dataclass class SQLValidationGenerator(Generator): """ @@ -66,29 +80,7 @@ class SQLValidationGenerator(Generator): check_patterns: bool = True check_enums: bool = True check_unique_keys: bool = True - - def _get_dialect(self): - """ - Get the SQLAlchemy dialect object for the configured dialect. - - :return: SQLAlchemy dialect instance - """ - dialect_map = { - "postgresql": postgresql.dialect(), - "sqlite": sqlite_dialect.dialect(), - } - return dialect_map.get(self.dialect, sqlite_dialect.dialect()) - - def _compile_query(self, query) -> str: - """ - Compile a SQLAlchemy query to SQL string for the configured dialect. - - :param query: SQLAlchemy selectable object - :return: Compiled SQL string - """ - dialect = self._get_dialect() - compiled = query.compile(dialect=dialect, compile_kwargs={"literal_binds": True}) - return str(compiled) + check_rules: bool = True def serialize(self, **kwargs: dict[str, Any]) -> str: """ @@ -122,38 +114,46 @@ def generate_validation_queries(self, **kwargs: dict[str, Any]) -> str: """ query_objects = [] - # Transform schema to relational model - sqltr = RelationalModelTransformer(SchemaView(self.schema)) + # Transform schema to relational model. The untransformed view is kept around: + # the transformer renames attributes to their alias and drops rules, so both + # unique_keys and rules need it to map schema slot names onto SQL column names. + source_sv = SchemaView(self.schema) + sqltr = RelationalModelTransformer(source_sv) sqltr.foreign_key_policy = ForeignKeyPolicy.NO_FOREIGN_KEYS tr_result = sqltr.transform(tgt_schema_name=kwargs.get("tgt_schema_name"), top_class=kwargs.get("top_class")) schema = tr_result.schema sv = SchemaView(schema) # Iterate through all classes - for class_name, class_def in schema.classes.items(): - if class_def.abstract: + for class_name in sv.all_classes(): + class_def = sv.get_class(class_name) + if class_def.abstract or class_def.mixin: continue - if not class_def.attributes: - # skip if no attributes are present + raw_induced_slots = sv.class_induced_slots(class_name) + if not raw_induced_slots: continue - # Find the identifier slot for this class - identifier_slot_name = "id" # default fallback - for slot_name, _ in class_def.attributes.items(): - induced = sv.induced_slot(slot_name, class_name) - if induced.identifier: - identifier_slot_name = slot_name - break - - for slot_name, _ in class_def.attributes.items(): - # Get induced slot to capture inherited constraints - induced = sv.induced_slot(slot_name, class_name) + induced_slots = [] + for slot in raw_induced_slots: + slot = copy.copy(slot) + slot.name = underscore(slot.alias or slot.name) + if slot.identifier or slot.key: + slot.required = True + induced_slots.append(slot) + # Find the identifier slot for this class + identifier_slot_name = self._identifier_slot_name(induced_slots) + if identifier_slot_name is None: + logger.warning( + f"Class '{class_name}' has no identifier or key slot: there is no column to point at, " + "so its violations are reported with a NULL record_id." + ) + + for induced in induced_slots: # Generate validation queries for each constraint type if self.check_required and induced.required: query = self._generate_required_violations(class_name, induced, identifier_slot_name) - if query is not None: query_objects.append(query) @@ -182,8 +182,41 @@ def generate_validation_queries(self, **kwargs: dict[str, Any]) -> str: # Check unique_keys constraints (multi-column uniqueness) if self.check_unique_keys and class_def.unique_keys: + slot_names = {s.name for s in induced_slots} + column_name_map = self._column_name_map(source_sv, class_name) for _, uk in class_def.unique_keys.items(): - query = self._generate_unique_key_violations(class_name, class_def, uk, identifier_slot_name) + query = self._generate_unique_key_violations( + class_name, slot_names, uk, identifier_slot_name, column_name_map + ) + if query is not None: + query_objects.append(query) + + # Check rules (precondition/postcondition constraints) + if self.check_rules: + # We need to iterate over the source schema, since the + # RelationalModelTransformer removes rules + for class_name in source_sv.all_classes(): + class_def = source_sv.get_class(class_name) + if not class_def.rules: + continue + if class_def.abstract or class_def.mixin: + continue + identifier_slot_name = self._identifier_slot_name(source_sv.class_induced_slots(class_name)) + # Rules reference slots by schema name (or alias); map them to the SQL + # column names. + column_name_map = self._column_name_map(source_sv, class_name) + for rule in class_def.rules: + if rule.deactivated: + continue + rule = copy.deepcopy(rule) + for expr in (rule.preconditions, rule.postconditions): + if expr and expr.slot_conditions: + renamed = { + column_name_map.get(n, underscore(n)): c for n, c in expr.slot_conditions.items() + } + expr.slot_conditions.clear() + expr.slot_conditions.update(renamed) + query = self._generate_rule_violations(class_name, rule, identifier_slot_name) if query is not None: query_objects.append(query) @@ -210,6 +243,39 @@ def generate_validation_queries(self, **kwargs: dict[str, Any]) -> str: result += "\n" return result + def _get_dialect(self): + """ + Get the SQLAlchemy dialect object for the configured dialect. + + Only ``sqlite`` and ``postgresql`` are supported. Any other value is + rejected: a warning is logged and the dialect is reset to ``sqlite``. + + :return: SQLAlchemy dialect instance + """ + supported = {"postgresql", "sqlite"} + if self.dialect not in supported: + logger.warning( + f"Dialect '{self.dialect}' is not supported. " + "Only 'sqlite' and 'postgresql' are supported. Falling back to 'sqlite'." + ) + self.dialect = "sqlite" + dialect_map = { + "postgresql": postgresql.dialect(), + "sqlite": sqlite_dialect.dialect(), + } + return dialect_map[self.dialect] + + def _compile_query(self, query) -> str: + """ + Compile a SQLAlchemy query to SQL string for the configured dialect. + + :param query: SQLAlchemy selectable object + :return: Compiled SQL string + """ + dialect = self._get_dialect() + compiled = query.compile(dialect=dialect, compile_kwargs={"literal_binds": True}) + return str(compiled) + def _generate_header(self) -> str: """Generate a header comment for the SQL output.""" header = ( @@ -223,111 +289,203 @@ def _generate_header(self) -> str: ) return header - def _generate_required_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str): + @staticmethod + def _identifier_slot_name(slots: list[SlotDefinition]) -> str | None: """ - Generate query to find NULL values in required fields. + Determine the column that identifies a record, for use as ``record_id``. + + An ``identifier`` slot is preferred, falling back to a ``key`` slot. Both are + optional in LinkML, so a class may have neither, in which case there is no column + to point at. + + :param slots: Induced slots of a class + :return: SQL column name of the identifying slot, or None if the class has none + """ + key_slot_name = None + for slot in slots: + if slot.identifier: + return underscore(slot.alias or slot.name) + if slot.key and key_slot_name is None: + key_slot_name = underscore(slot.alias or slot.name) + return key_slot_name + + @staticmethod + def _table(class_name: str, identifier_slot_name: str | None, *col_names: str) -> TableClause: + """ + Build a table clause over the identifying column (if any) plus the given columns. :param class_name: Name of the class/table - :param slot: Slot definition with required=True - :param identifier_slot_name: Name of the identifier slot + :param identifier_slot_name: Name of the identifying slot, or None if the class has none + :param col_names: Names of the other columns referenced by the query + :return: SQLAlchemy table object + """ + names = [identifier_slot_name, *col_names] if identifier_slot_name else list(col_names) + # dict.fromkeys de-duplicates while preserving order: a constraint may be checked on the + # identifying column itself + return table(class_name, *[column(n) for n in dict.fromkeys(names)]) + + def _build_violation_query( + self, + class_name: str, + column_name: str, + constraint_type: str, + identifier_slot_name: str | None, + invalid_value, + tbl: TableClause, + where_condition=None, + ): + """ + Build a standardized violation query SELECT statement. + + :param class_name: Name of the class/table + :param column_name: Name of the slot/constraint for column_name label + :param constraint_type: Type of constraint violated + :param identifier_slot_name: Name of the identifier slot, or None if the class has none + :param invalid_value: Expression for invalid_value column (literal or column) + :param where_condition: SQLAlchemy WHERE condition + :param tbl: SQLAlchemy table object :return: SQLAlchemy select object """ - tbl = table(class_name, column(identifier_slot_name), column(slot.name)) + # for postgres, all values in a column need to be of same type so we need to CAST them to text + _invalid_value = cast(invalid_value, Text()) if self.dialect == "postgresql" else invalid_value - query = ( - select( - literal_column(f"'{class_name}'").label("table_name"), - literal_column(f"'{slot.name}'").label("column_name"), - literal_column("'required'").label("constraint_type"), - column(identifier_slot_name).label("record_id"), - literal_column("NULL").label("invalid_value"), - ) - .select_from(tbl) - .where(tbl.c[slot.name].is_(None)) - ) + if identifier_slot_name: + record_id = column(identifier_slot_name) + else: + record_id = cast(null(), Text()) if self.dialect == "postgresql" else null() + + query = select( + literal(class_name, type_=Text()).label("table_name"), + literal(column_name, type_=Text()).label("column_name"), + literal(constraint_type, type_=Text()).label("constraint_type"), + record_id.label("record_id"), + _invalid_value.label("invalid_value"), + ).select_from(tbl) + + if where_condition is not None: + query = query.where(where_condition) return query - def _generate_range_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str): + @staticmethod + def _required_condition(col, negate: bool = False): """ - Generate query to find minimum_value/maximum_value violations. + Build a SQLAlchemy condition for a required (non-null) constraint. - :param class_name: Name of the class/table - :param slot: Slot definition with min/max constraints - :param identifier_slot_name: Name of the identifier slot - :return: SQLAlchemy select object or None + :param col: SQLAlchemy column expression + :param negate: If True, return the violation condition (IS NULL); + if False, the conformance condition (IS NOT NULL) + :return: SQLAlchemy condition """ - conditions = [] + return col.is_(None) if negate else col.isnot(None) - tbl = table(class_name, column(identifier_slot_name), column(slot.name)) - - if slot.minimum_value is not None: - conditions.append(tbl.c[slot.name] < literal_column(str(slot.minimum_value))) - - if slot.maximum_value is not None: - conditions.append(tbl.c[slot.name] > literal_column(str(slot.maximum_value))) + @staticmethod + def _range_condition(col, min_val, max_val, negate: bool = False): + """ + Build a SQLAlchemy condition for a range (minimum_value/maximum_value) constraint. + :param col: SQLAlchemy column expression + :param min_val: Minimum value (inclusive), or None + :param max_val: Maximum value (inclusive), or None + :param negate: If True, return the violation condition; if False, the conformance condition + :return: SQLAlchemy condition, or None if both bounds are None + """ + conditions = [] + if min_val is not None: + conditions.append(col < _literal_num(min_val) if negate else col >= _literal_num(min_val)) + if max_val is not None: + conditions.append(col > _literal_num(max_val) if negate else col <= _literal_num(max_val)) if not conditions: return None + return or_(*conditions) if negate else and_(*conditions) - query = ( - select( - literal_column(f"'{class_name}'").label("table_name"), - literal_column(f"'{slot.name}'").label("column_name"), - literal_column("'range'").label("constraint_type"), - column(identifier_slot_name).label("record_id"), - column(slot.name).label("invalid_value"), - ) - .select_from(tbl) - .where(or_(*conditions)) - ) + @staticmethod + def _pattern_condition(col, pattern: str, negate: bool = False): + """ + Build a SQLAlchemy condition for a pattern (regex) constraint. - return query + Uses SQLAlchemy's ``regexp_match`` which compiles to the dialect-specific + syntax (PostgreSQL: ``~``, SQLite: ``REGEXP``). - def _generate_pattern_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str): + NULL values are excluded regardless of ``negate``, since a NULL is not a pattern + violation but a required violation. This is needed since native sqlite has no + regexp implementation and some registered functions might fail if null is not excluded. + + :param col: SQLAlchemy column expression + :param pattern: Regular expression pattern string + :param negate: If True, return the violation condition; if False, the conformance condition + :return: SQLAlchemy condition """ - Generate query to find pattern (regex) violations. + match = col.regexp_match(literal(pattern, type_=Text())) + return and_(col.isnot(None), ~match if negate else match) - Handles dialect-specific regex syntax: - - PostgreSQL: ~ operator - - SQLite: REGEXP function (requires extension) + def _generate_required_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str | None): + """ + Generate query to find NULL values in required fields. :param class_name: Name of the class/table - :param slot: Slot definition with pattern constraint - :param identifier_slot_name: Name of the identifier slot + :param slot: Slot definition with required=True + :param identifier_slot_name: Name of the identifier slot, or None if the class has none :return: SQLAlchemy select object """ - tbl = table(class_name, column(identifier_slot_name), column(slot.name)) + tbl = self._table(class_name, identifier_slot_name, slot.name) + + return self._build_violation_query( + class_name=class_name, + column_name=slot.name, + constraint_type="required", + identifier_slot_name=identifier_slot_name, + invalid_value=null(), + tbl=tbl, + where_condition=self._required_condition(tbl.c[slot.name], negate=True), + ) - pattern = slot.pattern + def _generate_range_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str | None): + """ + Generate query to find minimum_value/maximum_value violations. - # Generate dialect-specific pattern matching using SQLAlchemy - # We need to use literal_column for dialect-specific operators - if self.dialect == "postgresql": - pattern_check = ~literal_column(f"{slot.name} ~ '{pattern}'") - elif self.dialect == "sqlite": - # SQLite REGEXP requires extension - pattern_check = ~literal_column(f"(REGEXP('{pattern}', {slot.name}) = 1)") + :param class_name: Name of the class/table + :param slot: Slot definition with min/max constraints + :param identifier_slot_name: Name of the identifier slot, or None if the class has none + :return: SQLAlchemy select object or None + """ + tbl = self._table(class_name, identifier_slot_name, slot.name) + where_condition = self._range_condition(tbl.c[slot.name], slot.minimum_value, slot.maximum_value, negate=True) + if where_condition is None: + return None - else: - # Default to PostgreSQL syntax - pattern_check = ~literal_column(f"{slot.name} ~ '{pattern}'") - - query = ( - select( - literal_column(f"'{class_name}'").label("table_name"), - literal_column(f"'{slot.name}'").label("column_name"), - literal_column("'pattern'").label("constraint_type"), - column(identifier_slot_name).label("record_id"), - column(slot.name).label("invalid_value"), - ) - .select_from(tbl) - .where(and_(tbl.c[slot.name].isnot(None), pattern_check)) + return self._build_violation_query( + class_name=class_name, + column_name=slot.name, + constraint_type="range", + identifier_slot_name=identifier_slot_name, + invalid_value=column(slot.name), + tbl=tbl, + where_condition=where_condition, ) - return query + def _generate_pattern_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str | None): + """ + Generate query to find pattern (regex) violations. + + :param class_name: Name of the class/table + :param slot: Slot definition with pattern constraint + :param identifier_slot_name: Name of the identifier slot, or None if the class has none + :return: SQLAlchemy select object + """ + tbl = self._table(class_name, identifier_slot_name, slot.name) + + return self._build_violation_query( + class_name=class_name, + column_name=slot.name, + constraint_type="pattern", + identifier_slot_name=identifier_slot_name, + invalid_value=column(slot.name), + tbl=tbl, + where_condition=self._pattern_condition(tbl.c[slot.name], slot.pattern, negate=True), + ) - def _generate_identifier_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str): + def _generate_identifier_violations(self, class_name: str, slot: SlotDefinition, identifier_slot_name: str | None): """ Generate query to find identifier/key uniqueness violations. @@ -335,10 +493,10 @@ def _generate_identifier_violations(self, class_name: str, slot: SlotDefinition, :param class_name: Name of the class/table :param slot: Slot definition with identifier=True or key=True - :param identifier_slot_name: Name of the identifier slot + :param identifier_slot_name: Name of the identifier slot, or None if the class has none :return: SQLAlchemy select object """ - tbl = table(class_name, column(identifier_slot_name), column(slot.name)) + tbl = self._table(class_name, identifier_slot_name, slot.name) constraint_type = "identifier" if slot.identifier else "key" @@ -350,23 +508,18 @@ def _generate_identifier_violations(self, class_name: str, slot: SlotDefinition, .having(func.count() > 1) ) - # Main query to find all records with those duplicate values - query = ( - select( - literal_column(f"'{class_name}'").label("table_name"), - literal_column(f"'{slot.name}'").label("column_name"), - literal_column(f"'{constraint_type}'").label("constraint_type"), - column(identifier_slot_name).label("record_id"), - column(slot.name).label("invalid_value"), - ) - .select_from(tbl) - .where(tbl.c[slot.name].in_(duplicate_subquery)) + return self._build_violation_query( + class_name=class_name, + column_name=slot.name, + constraint_type=constraint_type, + identifier_slot_name=identifier_slot_name, + invalid_value=column(slot.name), + where_condition=tbl.c[slot.name].in_(duplicate_subquery), + tbl=tbl, ) - return query - def _generate_enum_violations( - self, class_name: str, slot: SlotDefinition, sv: SchemaView, identifier_slot_name: str + self, class_name: str, slot: SlotDefinition, sv: SchemaView, identifier_slot_name: str | None ): """ Generate query to find enum constraint violations. @@ -376,7 +529,7 @@ def _generate_enum_violations( :param class_name: Name of the class/table :param slot: Slot definition with enum range :param sv: SchemaView for looking up enum values - :param identifier_slot_name: Name of the identifier slot + :param identifier_slot_name: Name of the identifier slot, or None if the class has none :return: SQLAlchemy select object or None """ # Get the enum definition @@ -384,26 +537,84 @@ def _generate_enum_violations( if not enum or not enum.permissible_values: return None - permissible_values = [str(v) for v in enum.permissible_values.keys()] + permissible_values = [literal(str(v), type_=Text()) for v in enum.permissible_values.keys()] - tbl = table(class_name, column(identifier_slot_name), column(slot.name)) + tbl = self._table(class_name, identifier_slot_name, slot.name) - query = ( - select( - literal_column(f"'{class_name}'").label("table_name"), - literal_column(f"'{slot.name}'").label("column_name"), - literal_column("'enum'").label("constraint_type"), - column(identifier_slot_name).label("record_id"), - column(slot.name).label("invalid_value"), - ) - .select_from(tbl) - .where(and_(tbl.c[slot.name].isnot(None), tbl.c[slot.name].notin_(permissible_values))) + return self._build_violation_query( + class_name=class_name, + column_name=slot.name, + constraint_type="enum", + identifier_slot_name=identifier_slot_name, + invalid_value=column(slot.name), + tbl=tbl, + where_condition=and_(tbl.c[slot.name].isnot(None), tbl.c[slot.name].notin_(permissible_values)), ) - return query + def _concat_columns(self, col_names: list[str]): + """Build a pipe-separated SQLAlchemy concatenation expression for the given column names + and casts these columns as TEXT. + This is necessary if several postconditions apply to different data types. + + Example: + precondition -> human has drivers license + postcondition -> 1. human age > 18, 2. human is "adult" + + Data that does not conform then returns the following `invalid_value`: + 16 | adult + 22 | teenager + + Here we need both the number and the adult/teenager status to be of type TEXT + to concat them. + + :param col_names: list of column names to concatenate + :return: SQLAlchemy expression + """ + + if len(col_names) == 1: + return column(col_names[0]) + concat_parts = [] + # Build concatenation: CAST(col1 AS TEXT) || '|' || CAST(col2 AS TEXT) || ... + for i, col_name in enumerate(col_names): + concat_parts.append(cast(column(col_name), Text())) + if i < len(col_names) - 1: + concat_parts.append(literal("|", type_=Text())) + expr = concat_parts[0] + for part in concat_parts[1:]: + expr = expr + part + return expr + + @staticmethod + def _column_name_map(sv: SchemaView, class_name: str) -> dict[str, str]: + """ + Map the slot names of a class onto the column names the relational transform gives them. + + The RelationalModelTransformer names each column after ``underscore(alias or name)``, while + unique_keys and rules reference slots by either their schema name or their alias, so both + are accepted as keys. + + :param sv: SchemaView over the *untransformed* schema + :param class_name: Name of the class whose slots are mapped + :return: Mapping of slot name and alias onto SQL column name; empty if the class is not in + the schema (the transform may introduce classes of its own, e.g. linking tables) + """ + if class_name not in sv.all_classes(): + return {} + name_map = {} + for slot in sv.class_induced_slots(class_name): + sql_name = underscore(slot.alias or slot.name) + name_map[slot.name] = sql_name + if slot.alias: + name_map[slot.alias] = sql_name + return name_map def _generate_unique_key_violations( - self, class_name: str, class_def: ClassDefinition, uk, identifier_slot_name: str + self, + class_name: str, + slot_names: set[str], + uk, + identifier_slot_name: str | None, + column_name_map: dict[str, str], ): """ Generate query to find unique_keys violations (multi-column uniqueness). @@ -411,39 +622,36 @@ def _generate_unique_key_violations( Finds individual records with duplicate combinations of values across multiple columns. :param class_name: Name of the class/table - :param class_def: Class definition + :param slot_names: Set of valid slot names for this class :param uk: UniqueKey definition - :param identifier_slot_name: Name of the identifier slot + :param identifier_slot_name: Name of the identifier slot, or None if the class has none + :param column_name_map: Mapping of schema slot names and aliases onto SQL column names :return: SQLAlchemy select object or None """ - # Get column names from unique key slots + # Get column names from unique key slots (underscored for SQL) columns = [] + unresolved = [] for slot_name in uk.unique_key_slots: - if slot_name in class_def.attributes: - columns.append(slot_name) + sql_name = column_name_map.get(slot_name, underscore(slot_name)) + if sql_name in slot_names: + columns.append(sql_name) + else: + unresolved.append(slot_name) + + if unresolved: + logger.warning( + f"Skipping uniqueness constraint '{uk.unique_key_name}' on class '{class_name}': " + f"no column found for slots {unresolved}." + ) + return None if not columns: return None # Main table with identifier and all columns - tbl = table(class_name, column(identifier_slot_name), *[column(col) for col in columns]) + tbl = self._table(class_name, identifier_slot_name, *columns) - # Build concatenated value expression (pipe-separated) - # Use CAST to ensure all values are strings before concatenation - if len(columns) == 1: - concat_expr = func.cast(column(columns[0]), Text) - else: - # Build concatenation: CAST(col1 AS TEXT) || '|' || CAST(col2 AS TEXT) || ... - concat_parts = [] - for i, col in enumerate(columns): - concat_parts.append(func.cast(column(col), Text)) - if i < len(columns) - 1: - concat_parts.append(literal_column("'|'")) - - # Chain concatenation operations - concat_expr = concat_parts[0] - for part in concat_parts[1:]: - concat_expr = concat_expr.op("||")(part) + concat_expr = self._concat_columns(columns) # Subquery to find duplicate combinations subquery_tbl = table(class_name, *[column(col) for col in columns]) @@ -460,24 +668,173 @@ def _generate_unique_key_violations( else: # For multiple columns, use tuple IN syntax # SQLAlchemy's tuple_() function handles this properly across dialects - from sqlalchemy import tuple_ - where_clause = tuple_(*[tbl.c[col] for col in columns]).in_(duplicate_subquery) - # Main query to find all records with duplicate combinations - query = ( - select( - literal_column(f"'{class_name}'").label("table_name"), - literal_column(f"'{uk.unique_key_name}'").label("column_name"), - literal_column("'unique_key'").label("constraint_type"), - column(identifier_slot_name).label("record_id"), - concat_expr.label("invalid_value"), - ) - .select_from(tbl) - .where(where_clause) + return self._build_violation_query( + class_name=class_name, + column_name=uk.unique_key_name, + constraint_type="unique_key", + identifier_slot_name=identifier_slot_name, + invalid_value=concat_expr, + tbl=tbl, + where_condition=where_clause, ) - return query + def _slot_condition_to_sqlalchemy( + self, + tbl: TableClause, + slot_name: str, + slot_condition: AnonymousSlotExpression, + negate: bool = False, + ) -> list[ColumnElement[bool]]: + """ + Convert a single slot condition to SQLAlchemy WHERE clause(s). + + :param tbl: SQLAlchemy table object + :param slot_name: Name of the slot/column + :param slot_condition: SlotDefinition with constraint properties + :param negate: If True, negate the condition (for postcondition violation detection) + :return: list of SQLAlchemy conditions + """ + conditions = [] + col = tbl.c[slot_name] + + if slot_condition.equals_string is not None: + lit = literal(slot_condition.equals_string, type_=Text()) + conditions.append(or_(col != lit, col.is_(None)) if negate else col == lit) + + if slot_condition.equals_number is not None: + lit_num = _literal_num(slot_condition.equals_number) + conditions.append(or_(col != lit_num, col.is_(None)) if negate else col == lit_num) + + if slot_condition.equals_string_in: + lit_vals = [literal(v, type_=Text()) for v in slot_condition.equals_string_in] + conditions.append(or_(col.notin_(lit_vals), col.is_(None)) if negate else col.in_(lit_vals)) + + range_cond = self._range_condition( + col, slot_condition.minimum_value, slot_condition.maximum_value, negate=negate + ) + if range_cond is not None: + conditions.append(range_cond) + + if slot_condition.pattern is not None: + conditions.append(self._pattern_condition(col, slot_condition.pattern, negate=negate)) + + if slot_condition.required: + conditions.append(self._required_condition(col, negate=negate)) + + return conditions + + def _class_expression_to_sqlalchemy( + self, + tbl: TableClause, + expression: AnonymousClassExpression | None, + negate: bool = False, + ) -> ColumnElement[bool] | None: + """ + Convert an AnonymousClassExpression to a composite WHERE clause. + + :param tbl: SQLAlchemy table object + :param expression: AnonymousClassExpression with slot_conditions + :param negate: If True, negate the expression (for postcondition violation detection). Note that negated + conditions are concatenated with OR -> De Morgan's law. + :return: SQLAlchemy condition or None + """ + if not expression: + return None + + # Warn about unsupported features + for attr in ("any_of", "all_of", "none_of", "exactly_one_of"): + if getattr(expression, attr, None): + logger.warning(f"Rule class expression '{attr}' is not yet supported in SQL validation") + + if not expression.slot_conditions: + return None + + all_conditions = [] + for slot_name, slot_condition in expression.slot_conditions.items(): + conds = self._slot_condition_to_sqlalchemy(tbl, slot_name, slot_condition, negate=negate) + all_conditions.extend(conds) + + if not all_conditions: + return None + + if negate: + # De Morgan's law: negating AND → OR + return or_(*all_conditions) + else: + return and_(*all_conditions) + + def _generate_rule_violations( + self, class_name: str, rule: ClassRule, identifier_slot_name: str | None + ) -> Select | None: + """ + Generate query to find rows violating a rule's postconditions. + + A violation occurs when the precondition is met but the postcondition is not. + + Preconditions are concatenated with AND. Postconditions are concatenated with OR. + Postcondition is required, precondition is not required. If no precondition is given, + the postcondition applies to all entries. + + :param class_name: Name of the class/table + :param rule: ClassRule with preconditions/postconditions + :param identifier_slot_name: Name of the identifier slot, or None if the class has none + :return: SQLAlchemy select object or None + """ + if not rule.postconditions: + logger.warning( + f"Could not generate rule-based query for class '{class_name}': a rule needs 'postconditions'." + ) + return None + + # Collect all referenced column names + col_names = [] + if rule.preconditions and rule.preconditions.slot_conditions: + col_names.extend(rule.preconditions.slot_conditions.keys()) + col_names.extend(rule.postconditions.slot_conditions.keys()) + + postcondition_slot_names = list(rule.postconditions.slot_conditions.keys()) + column_name_label = ",".join(postcondition_slot_names) + + tbl = self._table(class_name, identifier_slot_name, *col_names) + + # Build WHERE: precondition AND (negated postcondition) + where_parts = [] + if rule.preconditions: + pre = self._class_expression_to_sqlalchemy(tbl, rule.preconditions, negate=False) + if pre is None: + # Fail closed: dropping an untranslatable precondition would apply the + # postcondition check to every row, producing false-positive violations. + logger.warning( + f"Could not generate rule-based query for class '{class_name}': preconditions exist " + "but produced no SQL conditions (unsupported class expression or slot condition " + "types?). Skipping the rule." + ) + return None + where_parts.append(pre) + + post = self._class_expression_to_sqlalchemy(tbl, rule.postconditions, negate=True) + if post is None: + logger.warning( + f"Could not generate rule-based query for class '{class_name}': postconditions exist but " + "produced no SQL conditions (unsupported class expression or slot condition types?). " + "Skipping the rule." + ) + return None + where_parts.append(post) + + where_clause = and_(*where_parts) if len(where_parts) > 1 else where_parts[0] + + return self._build_violation_query( + class_name=class_name, + column_name=column_name_label, + constraint_type="rule", + identifier_slot_name=identifier_slot_name, + invalid_value=self._concat_columns(postcondition_slot_names), + tbl=tbl, + where_condition=where_clause, + ) @shared_arguments(SQLValidationGenerator) @@ -518,6 +875,12 @@ def _generate_unique_key_violations( show_default=True, help="Generate queries for unique key violations", ) +@click.option( + "--check-rules/--no-check-rules", + default=True, + show_default=True, + help="Generate queries for rule (precondition/postcondition) violations", +) @click.option( "--include-comments/--no-include-comments", default=True, diff --git a/packages/linkml_runtime/Makefile b/packages/linkml_runtime/Makefile index 1ed931acf7..9d5cebc35e 100644 --- a/packages/linkml_runtime/Makefile +++ b/packages/linkml_runtime/Makefile @@ -1,26 +1,46 @@ -# Currently the main purposing of this makefile is to synchronize -# latest releases of linkml-model into linkml_runtime/linkml_model +# Currently the main purpose of this makefile is to synchronize the +# latest release of linkml-model (including release candidates) into +# linkml_runtime/linkml_model. # -# Set LINKML_MODEL_RELEASE to the linkml-model release tag to sync from -# (see https://github.com/linkml/linkml-model/releases). Bump manually -# when pulling in a new linkml-model release. +# Run `make update_model` to pull the newest release or pre-release from +# https://github.com/linkml/linkml-model/releases, copy the vendored files, +# and record the upstream commit SHA in src/linkml_runtime/linkml_model/UPSTREAM_SHA. +# Commit the resulting changes together. -LINKML_MODEL_RELEASE = v1.11.0 +UPSTREAM_SHA_FILE = src/linkml_runtime/linkml_model/UPSTREAM_SHA all: update_model update_validation_model update_model: + # Resolve the latest release or pre-release tag from the GitHub Releases API + $(eval LINKML_MODEL_TAG := $(shell \ + curl -fsSL "https://api.github.com/repos/linkml/linkml-model/releases?per_page=1" \ + | python3 -c "import sys, json; releases = json.load(sys.stdin); print(releases[0]['tag_name'])")) + + # Resolve the tag to its commit SHA. The commits endpoint dereferences the ref for + # us, so this yields a commit SHA for annotated tags as well as lightweight ones -- + # /git/refs/tags returns the tag *object* SHA for annotated tags, which is not + # something `git fetch ` can resolve. + $(eval LINKML_MODEL_SHA := $(shell \ + curl -fsSL "https://api.github.com/repos/linkml/linkml-model/commits/$(LINKML_MODEL_TAG)" \ + | python3 -c "import sys, json; print(json.load(sys.stdin)['sha'])")) + + @echo "Vendoring linkml-model $(LINKML_MODEL_TAG) @ $(LINKML_MODEL_SHA)" + # Clean up rm -rf linkml-model-github/ mkdir -p linkml-model-github/ rm -rf src/linkml_runtime/linkml_model mkdir -p src/linkml_runtime/linkml_model - # Clone from the pinned linkml-model release tag - git clone --depth 1 --branch $(LINKML_MODEL_RELEASE) https://github.com/linkml/linkml-model.git linkml-model-github/ + # Clone from the resolved tag + git clone --depth 1 --branch $(LINKML_MODEL_TAG) https://github.com/linkml/linkml-model.git linkml-model-github/ cp -pr linkml-model-github/linkml_model/* src/linkml_runtime/linkml_model + # Record the upstream commit SHA so tests can compare against the exact vendored revision + echo "$(LINKML_MODEL_SHA)" > $(UPSTREAM_SHA_FILE) + # Clean up some files that are not needed at the moment, https://github.com/linkml/linkml/issues/3129 rm src/linkml_runtime/linkml_model/model/schema/extended_types.yaml cd ../../ && pre-commit run --all-files || pre-commit run --all-files diff --git a/packages/linkml_runtime/pyproject.toml b/packages/linkml_runtime/pyproject.toml index b043910ef2..9d062e7a25 100644 --- a/packages/linkml_runtime/pyproject.toml +++ b/packages/linkml_runtime/pyproject.toml @@ -40,22 +40,22 @@ dependencies = [ "hbreader", "json-flattener >=0.1.9", "jsonasobj2 ==1.*,>=1.0.0,>=1.0.4", - "jsonschema >=3.2.0", + "jsonschema>=4.26.0", "prefixcommons >=0.1.12", "pyyaml", - "rdflib >=6.0.0", + "rdflib>=7.6.0", "requests", "prefixmaps >=0.1.4", - "curies >=0.5.4", - "pyoxigraph >=0.5.6", + "curies>=0.14.6", + "pyoxigraph>=0.5.9", "pydantic >=1.10.2, <3.0.0", "isodate >=0.7.2, <1.0.0; python_version < '3.11'", ] [dependency-groups] dev = [ - "coverage >=6.2", - "requests-cache >=1.3.2", + "coverage>=7.15.4", + "requests-cache>=1.3.3", ] [project.scripts] @@ -64,7 +64,7 @@ linkml-normalize = "linkml_runtime.processing.referencevalidator:cli" [project.optional-dependencies] dev = [ "coverage", - "requests-cache >=1.3.2", + "requests-cache>=1.3.3", ] [tool.codespell] diff --git a/packages/linkml_runtime/src/linkml_runtime/dumpers/rdflib_dumper.py b/packages/linkml_runtime/src/linkml_runtime/dumpers/rdflib_dumper.py index 96b064dbbb..177186051a 100644 --- a/packages/linkml_runtime/src/linkml_runtime/dumpers/rdflib_dumper.py +++ b/packages/linkml_runtime/src/linkml_runtime/dumpers/rdflib_dumper.py @@ -43,6 +43,7 @@ def as_rdf_graph( :return: """ g = Graph() + schemaview.imports_closure() # ensure all imported sub-schemas are in schema_map before namespaces() caches if isinstance(prefix_map, Converter): # TODO replace with `prefix_map = prefix_map.bimap` after making minimum requirement on python 3.8 prefix_map = {record.prefix: record.uri_prefix for record in prefix_map.records} diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/UPSTREAM_SHA b/packages/linkml_runtime/src/linkml_runtime/linkml_model/UPSTREAM_SHA new file mode 100644 index 0000000000..29a14d1e81 --- /dev/null +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/UPSTREAM_SHA @@ -0,0 +1 @@ +7657de64dc7098a55dc51dbc9ec500e66f2a1b4f diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/annotations.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/annotations.py index be9d7cd2cb..f4b438c9a4 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/annotations.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/annotations.py @@ -1,5 +1,5 @@ # Auto generated from annotations.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:09 +# Generation date: 2026-08-12T09:42:07 # Schema: annotations # # id: https://w3id.org/linkml/annotations @@ -18,7 +18,7 @@ from .extensions import AnyValue, Extension, ExtensionTag -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = "2.0.0" # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/array.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/array.py index 033bee6728..1c1aa8b7f3 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/array.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/array.py @@ -1,5 +1,5 @@ # Auto generated from array.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:10 +# Generation date: 2026-08-12T09:42:08 # Schema: arrays # # id: https://w3id.org/linkml/lib/arrays @@ -19,7 +19,7 @@ from linkml_runtime.utils.slot import Slot from linkml_runtime.utils.yamlutils import YAMLRoot -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = None # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/datasets.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/datasets.py index 8fe878ee68..7b90913ec0 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/datasets.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/datasets.py @@ -1,5 +1,5 @@ # Auto generated from datasets.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:10 +# Generation date: 2026-08-12T09:42:09 # Schema: datasets # # id: https://w3id.org/linkml/datasets @@ -17,7 +17,7 @@ from linkml_runtime.utils.slot import Slot from linkml_runtime.utils.yamlutils import YAMLRoot, extended_str -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = None # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/excel/meta.xlsx b/packages/linkml_runtime/src/linkml_runtime/linkml_model/excel/meta.xlsx index ba15ecefe5..04e0b0bd9c 100644 Binary files a/packages/linkml_runtime/src/linkml_runtime/linkml_model/excel/meta.xlsx and b/packages/linkml_runtime/src/linkml_runtime/linkml_model/excel/meta.xlsx differ diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/extensions.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/extensions.py index 48aa5b38f1..0518d54724 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/extensions.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/extensions.py @@ -1,5 +1,5 @@ # Auto generated from extensions.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:11 +# Generation date: 2026-08-12T09:42:10 # Schema: extensions # # id: https://w3id.org/linkml/extensions @@ -16,7 +16,7 @@ from linkml_runtime.utils.slot import Slot from linkml_runtime.utils.yamlutils import YAMLRoot -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = "2.0.0" # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonld/meta.jsonld b/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonld/meta.jsonld index b53ec4aca7..1098a217dd 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonld/meta.jsonld +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonld/meta.jsonld @@ -83,6 +83,18 @@ { "prefix_prefix": "SIO", "prefix_reference": "http://semanticscience.org/resource/SIO_" + }, + { + "prefix_prefix": "dcterms", + "prefix_reference": "http://purl.org/dc/terms/" + }, + { + "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#" } ], "emit_prefixes": [ @@ -2955,7 +2967,10 @@ { "name": "unique_keys", "definition_uri": "https://w3id.org/linkml/unique_keys", - "description": "A collection of named unique keys for this class. Unique keys may be singular or compound.", + "description": "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key.", + "comments": [ + "Not to be confused with a \"singular unique key\", which is defined by means of the `key` slot, or with an \"identifier\", which is defined by means of the \"identifier\" slot. Compound keys, singular unique keys, and identifiers all create a unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have.\n" + ], "in_subset": [ "SpecificationSubset", "BasicSubset", @@ -2963,7 +2978,9 @@ ], "from_schema": "https://w3id.org/linkml/meta", "see_also": [ - "https://linkml.io/linkml/schemas/constraints.html#unique-key" + "https://linkml.io/linkml/schemas/constraints.html#unique-keys", + "linkml:key", + "linkml:identifier" ], "exact_mappings": [ "http://www.w3.org/2002/07/owl#hasKey" @@ -3941,12 +3958,12 @@ { "name": "key", "definition_uri": "https://w3id.org/linkml/key", - "description": "True means that the key slot(s) uniquely identify the elements within a single container", + "description": "True means that the slot is the \"singular unique key\" (also known more simply as the \"key slot\") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container.", "comments": [ - "key is inherited", - "a given domain can have at most one key slot (restriction to be removed in the future)", - "identifiers and keys are mutually exclusive. A given domain cannot have both", - "a key slot is automatically required. Keys cannot be optional" + "The key slot is inherited.", + "A domain can have at most one key slot OR one identifier slot. However a domain can have both a key slot and any number of compound keys.", + "A key slot is automatically required. Singular unique keys cannot be optional.", + "The presence of a key slot makes a class eligible for inlining as a dictionary." ], "in_subset": [ "SpecificationSubset", @@ -3955,7 +3972,10 @@ ], "from_schema": "https://w3id.org/linkml/meta", "see_also": [ - "linkml:unique_keys" + "https://linkml.io/linkml/schemas/constraints.html#singular-unique-keys", + "https://linkml.io/linkml/schemas/inlining.html", + "linkml:unique_keys", + "linkml:identifier" ], "domain": "SlotDefinition", "slot_uri": "https://w3id.org/linkml/key", @@ -3970,12 +3990,13 @@ { "name": "identifier", "definition_uri": "https://w3id.org/linkml/identifier", - "description": "True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container", + "description": "True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document.", "comments": [ - "identifier is inherited", - "a key slot is automatically required. Identifiers cannot be optional", - "a given domain can have at most one identifier", - "identifiers and keys are mutually exclusive. A given domain cannot have both" + "The identifier slot is inherited.", + "A domain can have at most one identifier slot OR a key slot. However a domain can have both an identifier slot and any number of compound keys.", + "An identifier slot is automatically required. Identifiers cannot be optional.", + "The presence of an identifier slot makes a class eligible for inlining as a dictionary.", + "The presence of an identifier slot makes a class eligible for being referenced rather than inlined." ], "in_subset": [ "SpecificationSubset", @@ -3986,7 +4007,10 @@ "from_schema": "https://w3id.org/linkml/meta", "see_also": [ "https://en.wikipedia.org/wiki/Identifier", - "linkml:unique_keys" + "https://linkml.io/linkml/schemas/constraints.html#unique-keys", + "https://linkml.io/linkml/schemas/inlining.html", + "linkml:unique_keys", + "linkml:key" ], "aliases": [ "primary key", @@ -5504,6 +5528,13 @@ { "name": "extension_value", "definition_uri": "https://w3id.org/linkml/extension_value", + "annotations": [ + { + "tag": "simple_dict_value", + "value": true, + "@type": "Annotation" + } + ], "description": "the actual annotation", "from_schema": "https://w3id.org/linkml/extensions", "imported_from": "linkml:extensions", @@ -5649,7 +5680,7 @@ { "name": "abbreviation", "definition_uri": "https://w3id.org/linkml/abbreviation", - "description": "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)", + "description": "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)", "from_schema": "https://w3id.org/linkml/units", "imported_from": "linkml:units", "mappings": [ @@ -8777,7 +8808,7 @@ { "name": "UnitOfMeasure", "definition_uri": "https://w3id.org/linkml/UnitOfMeasure", - "description": "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension).", + "description": "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension).", "from_schema": "https://w3id.org/linkml/units", "imported_from": "linkml:units", "mappings": [ @@ -8842,9 +8873,9 @@ ], "metamodel_version": "1.11.0", "source_file": "meta.yaml", - "source_file_date": "2026-05-05T16:16:44", - "source_file_size": 99888, - "generation_date": "2026-05-05T18:49:57", + "source_file_date": "2026-08-12T09:39:08", + "source_file_size": 101875, + "generation_date": "2026-08-12T09:43:11", "@type": "SchemaDefinition", "@context": [ "staging/jsonld/meta.context.jsonld", diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonschema/meta.schema.json b/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonschema/meta.schema.json index 7eedb05f34..a0a1be2fe1 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonschema/meta.schema.json +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/jsonschema/meta.schema.json @@ -2859,7 +2859,7 @@ } ] }, - "description": "A collection of named unique keys for this class. Unique keys may be singular or compound.", + "description": "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key.", "type": [ "object", "null" @@ -3565,7 +3565,7 @@ } ] }, - "description": "A collection of named unique keys for this class. Unique keys may be singular or compound.", + "description": "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key.", "type": [ "object", "null" @@ -10693,7 +10693,7 @@ ] }, "identifier": { - "description": "True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container", + "description": "True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document.", "type": [ "boolean", "null" @@ -10821,7 +10821,7 @@ ] }, "key": { - "description": "True means that the key slot(s) uniquely identify the elements within a single container", + "description": "True means that the slot is the \"singular unique key\" (also known more simply as the \"key slot\") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container.", "type": [ "boolean", "null" @@ -11714,7 +11714,7 @@ ] }, "identifier": { - "description": "True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container", + "description": "True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document.", "type": [ "boolean", "null" @@ -11842,7 +11842,7 @@ ] }, "key": { - "description": "True means that the key slot(s) uniquely identify the elements within a single container", + "description": "True means that the slot is the \"singular unique key\" (also known more simply as the \"key slot\") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container.", "type": [ "boolean", "null" @@ -16503,10 +16503,44 @@ }, "UnitOfMeasure": { "additionalProperties": false, - "description": "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension).", + "anyOf": [ + { + "properties": { + "ucum_code": {} + }, + "required": [ + "ucum_code" + ] + }, + { + "properties": { + "iec61360code": {} + }, + "required": [ + "iec61360code" + ] + }, + { + "properties": { + "symbol": {} + }, + "required": [ + "symbol" + ] + }, + { + "properties": { + "exact_mappings": {} + }, + "required": [ + "exact_mappings" + ] + } + ], + "description": "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension).", "properties": { "abbreviation": { - "description": "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)", + "description": "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)", "type": [ "string", "null" diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/linkml_files.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/linkml_files.py index 2a49cadbaa..57489426b8 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/linkml_files.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/linkml_files.py @@ -123,8 +123,14 @@ def _build_path(source: Source, fmt: Format) -> str: return filename +# Published schema/artifact files live under the ``linkml_model`` package directory +# on GitHub (raw + GitHub Pages), so GitHub URLs need this prefix even though +# ``LOCAL_PATH_FOR`` does not (its base already points inside the package). +PACKAGE_DIR = "linkml_model" + + def _build_loc(base: str, source: Source, fmt: Format) -> str: - return f"{base}{_build_path(source, fmt)}".replace("blob/", "") + return f"{base}{PACKAGE_DIR}/{_build_path(source, fmt)}".replace("blob/", "") def URL_FOR(source: Source, fmt: Format) -> str: @@ -137,8 +143,13 @@ def LOCAL_PATH_FOR(source: Source, fmt: Format) -> str: return os.path.join(LOCAL_BASE, _build_path(source, fmt)) -def GITHUB_IO_PATH_FOR(source: Source, fmt: Format) -> str: - return _build_loc(GITHUB_IO_BASE, source, fmt) +def GITHUB_IO_PATH_FOR(source: Source, fmt: Format, version: str = "latest") -> str: + """Return the GitHub Pages URL for source in format. + + The docs site is versioned, so files live under ``/linkml_model/``; + ``version`` defaults to the ``latest`` alias. + """ + return f"{GITHUB_IO_BASE}{version}/{PACKAGE_DIR}/{_build_path(source, fmt)}" def GITHUB_PATH_FOR( @@ -165,7 +176,7 @@ def tag_to_commit(tag: str) -> str: # Return the absolute latest entry for branch if release is ReleaseTag.LATEST or (release is ReleaseTag.CURRENT and branch != "main"): - return f"{GITHUB_BASE}{branch}/{_build_path(source, fmt)}" + return f"{GITHUB_BASE}{branch}/{PACKAGE_DIR}/{_build_path(source, fmt)}" # Return the latest published version elif release is ReleaseTag.CURRENT: diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/mappings.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/mappings.py index a707995388..4420cd62ba 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/mappings.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/mappings.py @@ -1,5 +1,5 @@ # Auto generated from mappings.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:12 +# Generation date: 2026-08-12T09:42:11 # Schema: mappings # # id: https://w3id.org/linkml/mappings @@ -12,7 +12,7 @@ from linkml_runtime.utils.metamodelcore import URIorCURIE from linkml_runtime.utils.slot import Slot -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = "2.0.0" # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/meta.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/meta.py index 74a83a56bb..9f6e1d3020 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/meta.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/meta.py @@ -1,5 +1,5 @@ # Auto generated from meta.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:13 +# Generation date: 2026-08-12T09:42:13 # Schema: meta # # id: https://w3id.org/linkml/meta diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/02instances.md b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/02instances.md index 10235edac3..fc08647cb1 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/02instances.md +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/02instances.md @@ -6,7 +6,7 @@ This specification provides a grammar for a **functional syntax** for expressing This syntax is not intended for data exchange, but instead for unambiguous describing data in LinkML in a way that is independent of any particular syntax. -[Section 6](../06mapping) specifies how the instance model is serialized as JSON, YAML, and RDF, and guidelines for mapping to object-oriented programming representations. +[Section 6](06mapping.md) specifies how the instance model is serialized as JSON, YAML, and RDF, and guidelines for mapping to object-oriented programming representations. This section uses BNF to define the structure of the LinkML instance abstract model. We also include UML-style diagrams for informative purposes. @@ -33,7 +33,7 @@ classDiagram ### Definition Types and Names -Definition names are used to unambiguously indicate *elements* specified in a **Schema** (described in [Part 3](../03schemas)): +Definition names are used to unambiguously indicate *elements* specified in a **Schema** (described in [Part 3](03schemas.md)): > **ClassDefinitionName** := **ElementName** @@ -223,7 +223,7 @@ Examples of collections: * `[Person(name=..., ...), Integer^5, None]` -- a heterogeneous collection * `[]` -- an empty collection -Note that collections can be serialized in different ways depending on the target syntax, for examples, lists vs dictionaries. See section [6](../06mapping) for details of serializations. +Note that collections can be serialized in different ways depending on the target syntax, for examples, lists vs dictionaries. See section [6](06mapping.md) for details of serializations. ### None (Null) instances diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/03schemas.md b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/03schemas.md index 206c1959b9..7b22c65326 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/03schemas.md +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/03schemas.md @@ -37,7 +37,7 @@ This part of the specification specifies schemas in terms of the abstract functi For practical purposes, the canonical serialization of a schema is in YAML. The rules for serializing and deserializing LinkML schemas are the same as for instances, because every schema is an object that instantiates a SchemaDefinition class in the metamodel. -See [section 6](06mapping) for rules for mapping to YAML. +See [section 6](06mapping.md) for rules for mapping to YAML. ### Analogies to other modeling frameworks diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/07codegen.md b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/07codegen.md index c5c4d4807f..58bd91ca15 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/07codegen.md +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/07codegen.md @@ -42,6 +42,7 @@ Current implementations: | Pydantic | One file per schema | | Java | One file per class | | Typescript | One file per schema | +| Scala | One file per class | ### Imports @@ -75,6 +76,7 @@ Current implementations: | Pydantic | underscore | | Java | CamelCase | | Typescript | CamelCase | +| Scala | CamelCase | ## Mapping of LinkML Classes @@ -87,6 +89,7 @@ appropriate targets for LinkML classes. For example: * Scala has traits and sealed traits * Rust has structs, traits, and enums * Typescript has classes and interfaces +* Scala has final case classes and abstract classes or traits The choice should reflect whatever is most idiomatic for the target language. The generation MAY allow for different mappings, controlled by either user configuration, @@ -130,6 +133,7 @@ Current implementations: | Pydantic | none (planned) | | Java | none (planned) | | Typescript | none | +| Scala | none | ### Inheritance diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/index.md b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/index.md index 1eefb0f390..49abd97acd 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/index.md +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/docs/specification/index.md @@ -2,10 +2,11 @@ ## Table of Contents -- [Preamble](00preamble) -- [Introduction](01introduction) -- [Instances](02instances) -- [Schemas](03schemas) -- [Derived Schemas](D04derived-schemas) -- [Validation](05validation) -- [Mapping](06mapping) +- [Preamble](00preamble.md) +- [Introduction](01introduction.md) +- [Instances](02instances.md) +- [Schemas](03schemas.md) +- [Derived Schemas](04derived-schemas.md) +- [Validation](05validation.md) +- [Mapping](06mapping.md) +- [Code Generation](07codegen.md) diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/datasets.yaml b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/datasets.yaml index 2edc3a57f2..e0d92dc198 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/datasets.yaml +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/datasets.yaml @@ -23,6 +23,7 @@ prefixes: mediatypes: https://www.iana.org/assignments/media-types/ oslc: http://open-services.net/ns/core# bibo: http://purl.org/ontology/bibo/ + dcterms: http://purl.org/dc/terms/ default_prefix: datasets default_range: string diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/meta.yaml b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/meta.yaml index 4b1b651408..adcbf14b05 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/meta.yaml +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/meta.yaml @@ -50,6 +50,9 @@ prefixes: qudt: http://qudt.org/schema/qudt/ cdisc: http://rdf.cdisc.org/mms# SIO: http://semanticscience.org/resource/SIO_ + dcterms: http://purl.org/dc/terms/ + rdfs: http://www.w3.org/2000/01/rdf-schema# + rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# default_prefix: linkml default_range: string @@ -1310,7 +1313,7 @@ slots: multivalued: true inlined: true description: >- - A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why there + A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called "compound keys". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key. comments: diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/units.yaml b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/units.yaml index fc05247f31..15e201359b 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/units.yaml +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/model/schema/units.yaml @@ -6,6 +6,7 @@ license: https://creativecommons.org/publicdomain/zero/1.0/ prefixes: linkml: https://w3id.org/linkml/ qudt: http://qudt.org/schema/qudt/ + rdfs: http://www.w3.org/2000/01/rdf-schema# default_prefix: linkml default_range: string diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/owl/meta.owl.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/owl/meta.owl.ttl index 5c86b1291c..b63b5c6c33 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/owl/meta.owl.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/owl/meta.owl.ttl @@ -155,41 +155,41 @@ linkml:DimensionExpression a owl:Class, rdfs:label "dimension_expression" ; bibo:status ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:minimum_cardinality ], + [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:exact_cardinality ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:maximum_cardinality ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:alias ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:alias ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:minimum_cardinality ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minimum_cardinality ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:alias ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:minimum_cardinality ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:maximum_cardinality ], + owl:onProperty linkml:exact_cardinality ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -200,19 +200,19 @@ linkml:ExtraSlotsExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "extra_slots_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:minCardinality 0 ; owl:onProperty linkml:allowed ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousSlotExpression ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:allowed ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -316,32 +316,32 @@ linkml:TypeMapping a owl:Class, linkml:ClassDefinition ; rdfs:label "type_mapping" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:framework_key ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:string_serialization ], + owl:onProperty linkml:mapped_type ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:framework_key ], + owl:maxCardinality 1 ; + owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:framework_key ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; - owl:onProperty linkml:mapped_type ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:mapped_type ], + owl:minCardinality 1 ; + owl:onProperty linkml:framework_key ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:mapped_type ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:framework_key ], + owl:allValuesFrom linkml:TypeDefinition ; + owl:onProperty linkml:mapped_type ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -763,10 +763,10 @@ linkml:Annotation a owl:Class, linkml:ClassDefinition ; rdfs:label "annotation" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Annotation ; owl:onProperty linkml:annotations ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Annotation ; + owl:minCardinality 0 ; owl:onProperty linkml:annotations ], linkml:Annotatable, linkml:Extension ; @@ -777,47 +777,47 @@ linkml:ClassExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "class_expression" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; owl:onProperty linkml:slot_conditions ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:any_of ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:slot_conditions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:none_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:exactly_one_of ] ; + owl:maxCardinality 1 ; + owl:onProperty linkml:all_of ] ; skos:definition "A boolean expression that can be used to dynamically determine membership of a class" ; skos:inScheme linkml:meta . @@ -825,20 +825,23 @@ linkml:ClassRule a owl:Class, linkml:ClassDefinition ; rdfs:label "class_rule" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:bidirectional ], + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:elseconditions ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:open_world ], + owl:onProperty linkml:rank ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:bidirectional ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:rank ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:deactivated ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:bidirectional ], + owl:minCardinality 0 ; + owl:onProperty linkml:rank ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:postconditions ], @@ -846,47 +849,44 @@ linkml:ClassRule a owl:Class, owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:preconditions ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:elseconditions ], + owl:maxCardinality 1 ; + owl:onProperty linkml:preconditions ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:preconditions ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:deactivated ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:elseconditions ], + owl:onProperty linkml:deactivated ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:rank ], + owl:maxCardinality 1 ; + owl:onProperty linkml:elseconditions ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:bidirectional ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:open_world ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:rank ], + owl:onProperty linkml:bidirectional ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:elseconditions ], + owl:onProperty linkml:postconditions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:open_world ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:postconditions ], + owl:onProperty linkml:elseconditions ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:postconditions ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:deactivated ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:deactivated ], + owl:onProperty linkml:open_world ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:preconditions ], + owl:onProperty linkml:open_world ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:open_world ], linkml:Annotatable, linkml:ClassLevelRule, linkml:CommonMetadata, @@ -901,6 +901,9 @@ linkml:MatchQuery a owl:Class, linkml:ClassDefinition ; rdfs:label "match_query" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:identifier_pattern ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; @@ -908,15 +911,12 @@ linkml:MatchQuery a owl:Class, owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:source_ontology ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml:identifier_pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:identifier_pattern ], + owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty linkml:identifier_pattern ] ; skos:definition "A query that is used on an enum expression to dynamically obtain a set of permissible values via a query that matches on properties of the external concepts." ; skos:inScheme linkml:meta . @@ -925,119 +925,119 @@ linkml:TypeExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "type_expression" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:implicit_prefix ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:pattern ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:pattern ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:implicit_prefix ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; owl:onProperty linkml:minimum_value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousTypeExpression ; - owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:maximum_value ], + owl:minCardinality 0 ; + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:pattern ], + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:none_of ], + owl:maxCardinality 1 ; + owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:equals_string_in ], + owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:exactly_one_of ], + owl:allValuesFrom linkml:PatternExpression ; + owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:any_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:pattern ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:maximum_value ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minimum_value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_string ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:UnitOfMeasure ; owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:equals_string_in ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:all_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:equals_number ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:any_of ], + owl:onProperty linkml:equals_string_in ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:maximum_value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PatternExpression ; - owl:onProperty linkml:structured_pattern ], + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousTypeExpression ; owl:onProperty linkml:none_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:equals_string ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:minimum_value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:structured_pattern ], + owl:onProperty linkml:unit ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:minimum_value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:UnitOfMeasure ; - owl:onProperty linkml:unit ], + owl:maxCardinality 1 ; + owl:onProperty linkml:equals_string ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_string ], + owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:none_of ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:unit ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousTypeExpression ; - owl:onProperty linkml:any_of ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:implicit_prefix ], linkml:Expression ; skos:definition "An abstract class grouping named types and anonymous type expressions" ; skos:inScheme linkml:meta . @@ -1045,7 +1045,7 @@ linkml:TypeExpression a owl:Class, linkml:abbreviation a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "abbreviation" ; - skos:definition "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; + skos:definition "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; skos:inScheme linkml:units . linkml:abstract a owl:ObjectProperty, @@ -1360,7 +1360,8 @@ linkml:extension_value a owl:ObjectProperty, rdfs:range linkml:AnyValue ; skos:definition "the actual annotation" ; skos:inScheme linkml:extensions ; - skos:prefLabel "value" . + skos:prefLabel "value" ; + linkml:simple_dict_value true . linkml:extra_slots a owl:ObjectProperty, linkml:SlotDefinition ; @@ -1444,25 +1445,6 @@ linkml:id_prefixes_are_closed a owl:ObjectProperty, skos:definition "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; skos:inScheme linkml:meta . -linkml:identifier a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "identifier" ; - rdfs:domain linkml:SlotDefinition ; - rdfs:range linkml:Boolean ; - rdfs:seeAlso , - linkml:unique_keys ; - skos:altLabel "ID", - "UID", - "code", - "primary key" ; - skos:definition "True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container" ; - skos:inScheme linkml:meta ; - skos:note "a given domain can have at most one identifier", - "a key slot is automatically required. Identifiers cannot be optional", - "identifier is inherited", - "identifiers and keys are mutually exclusive. A given domain cannot have both" ; - sh:order 5 . - linkml:identifier_pattern a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "identifier_pattern" ; @@ -1623,19 +1605,6 @@ linkml:is_usage_slot a owl:ObjectProperty, skos:definition "True means that this slot was defined in a slot_usage situation" ; skos:inScheme linkml:meta . -linkml:key a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "key" ; - rdfs:domain linkml:SlotDefinition ; - rdfs:range linkml:Boolean ; - rdfs:seeAlso linkml:unique_keys ; - skos:definition "True means that the key slot(s) uniquely identify the elements within a single container" ; - skos:inScheme linkml:meta ; - skos:note "a given domain can have at most one key slot (restriction to be removed in the future)", - "a key slot is automatically required. Keys cannot be optional", - "identifiers and keys are mutually exclusive. A given domain cannot have both", - "key is inherited" . - linkml:last_updated_on a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "last_updated_on" ; @@ -2244,6 +2213,12 @@ linkml:AltDescription a owl:Class, linkml:ClassDefinition ; rdfs:label "alt_description" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:alt_description_text ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml:alt_description_text ], + [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:alt_description_source ], [ a owl:Restriction ; @@ -2252,14 +2227,8 @@ linkml:AltDescription a owl:Class, [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:alt_description_source ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:alt_description_text ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:alt_description_text ], - [ a owl:Restriction ; - owl:minCardinality 1 ; owl:onProperty linkml:alt_description_text ] ; skos:altLabel "structured description" ; skos:definition "an attributed description" ; @@ -2283,41 +2252,41 @@ linkml:EnumBinding a owl:Class, linkml:ClassDefinition ; rdfs:label "enum_binding" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:obligation_level ], - [ a owl:Restriction ; owl:allValuesFrom linkml:ObligationLevelEnum ; owl:onProperty linkml:obligation_level ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:EnumDefinition ; + owl:onProperty linkml:range ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:binds_value_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:pv_formula ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:range ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:obligation_level ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:binds_value_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumDefinition ; - owl:onProperty linkml:range ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:range ], + owl:onProperty linkml:binds_value_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:obligation_level ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:range ], [ a owl:Restriction ; owl:allValuesFrom linkml:PvFormulaOptions ; owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:binds_value_of ], + owl:onProperty linkml:pv_formula ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -2329,28 +2298,28 @@ linkml:ImportExpression a owl:Class, rdfs:label "import_expression" ; bibo:status ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Setting ; owl:onProperty linkml:import_map ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:import_as ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Setting ; + owl:maxCardinality 1 ; + owl:onProperty linkml:import_from ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:import_map ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:import_from ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:import_as ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:import_from ], [ a owl:Restriction ; owl:allValuesFrom linkml:Ncname ; owl:onProperty linkml:import_as ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:import_from ], linkml:Annotatable, linkml:CommonMetadata, @@ -2362,23 +2331,23 @@ linkml:LocalName a owl:Class, linkml:ClassDefinition ; rdfs:label "local_name" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:local_name_value ], + [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:local_name_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:local_name_source ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:local_name_value ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:local_name_value ], + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:local_name_source ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:local_name_value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:local_name_source ] ; + owl:maxCardinality 1 ; + owl:onProperty linkml:local_name_value ] ; skos:definition "an attributed label" ; skos:inScheme linkml:meta . @@ -2386,23 +2355,23 @@ linkml:Prefix a owl:Class, linkml:ClassDefinition ; rdfs:label "prefix" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:prefix_reference ], + owl:maxCardinality 1 ; + owl:onProperty linkml:prefix_prefix ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:prefix_prefix ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uri ; + owl:maxCardinality 1 ; owl:onProperty linkml:prefix_reference ], [ a owl:Restriction ; owl:allValuesFrom linkml:Ncname ; owl:onProperty linkml:prefix_prefix ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uri ; owl:onProperty linkml:prefix_reference ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:prefix_prefix ] ; + owl:minCardinality 1 ; + owl:onProperty linkml:prefix_reference ] ; skos:definition "prefix URI tuple" ; skos:inScheme linkml:meta ; sh:order 12 . @@ -2528,29 +2497,30 @@ linkml:unique_keys a owl:ObjectProperty, rdfs:label "unique_keys" ; rdfs:domain linkml:ClassDefinition ; rdfs:range linkml:UniqueKey ; - rdfs:seeAlso ; - skos:definition "A collection of named unique keys for this class. Unique keys may be singular or compound." ; + rdfs:seeAlso , + linkml:identifier, + linkml:key ; + skos:definition "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; skos:exactMatch owl:hasKey ; - skos:inScheme linkml:meta . + skos:inScheme linkml:meta ; + skos:note """Not to be confused with a "singular unique key", which is defined by means of the `key` slot, or with an "identifier", which is defined by means of the "identifier" slot. Compound keys, singular unique keys, and identifiers all create a unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have. +""" . linkml:Example a owl:Class, linkml:ClassDefinition ; rdfs:label "example" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; owl:onProperty linkml:value_object ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:value_object ], + owl:onProperty linkml:value_description ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:value ], + owl:onProperty linkml:value_description ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:value_description ], @@ -2559,10 +2529,13 @@ linkml:Example a owl:Class, owl:onProperty linkml:value_object ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:value_description ], + owl:onProperty linkml:value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:value_description ] ; + owl:onProperty linkml:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:value_object ] ; skos:definition "usage example and description" ; skos:inScheme linkml:meta . @@ -2570,269 +2543,269 @@ linkml:SlotExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "slot_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:minimum_value ], - [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:inlined_as_list ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:enum_range ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:equals_expression ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:multivalued ], + owl:minCardinality 0 ; + owl:onProperty linkml:none_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_string_in ], + owl:onProperty linkml:equals_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:maximum_value ], + owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PatternExpression ; - owl:onProperty linkml:structured_pattern ], + owl:allValuesFrom linkml:EnumBinding ; + owl:onProperty linkml:bindings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:equals_string_in ], + owl:maxCardinality 1 ; + owl:onProperty linkml:exact_cardinality ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:equals_number ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:inlined ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:unit ], + owl:onProperty linkml:none_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:has_member ], + owl:maxCardinality 1 ; + owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:minimum_value ], + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:exact_cardinality ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:structured_pattern ], + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:minimum_value ], + owl:maxCardinality 1 ; + owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:array ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:minimum_cardinality ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumBinding ; - owl:onProperty linkml:bindings ], + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:none_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_expression ], + owl:minCardinality 0 ; + owl:onProperty linkml:array ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:required ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:inlined_as_list ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:recommended ], + owl:maxCardinality 1 ; + owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:all_members ], + owl:onProperty linkml:inlined ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:required ], + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:any_of ], + owl:allValuesFrom linkml:UnitOfMeasure ; + owl:onProperty linkml:unit ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:multivalued ], + owl:minCardinality 0 ; + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:inlined ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:multivalued ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:range ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:array ], + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:all_members ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:has_member ], [ a owl:Restriction ; - owl:allValuesFrom linkml:UnitOfMeasure ; - owl:onProperty linkml:unit ], + owl:maxCardinality 1 ; + owl:onProperty linkml:multivalued ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:range_expression ], + owl:minCardinality 0 ; + owl:onProperty linkml:minimum_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:has_member ], + owl:onProperty linkml:required ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:all_members ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:implicit_prefix ], + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:multivalued ], + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:minimum_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:unit ], + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:all_members ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:maximum_cardinality ], + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:bindings ], + owl:onProperty linkml:required ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_string ], + owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:array ], + owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:inlined ], + owl:maxCardinality 1 ; + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:all_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Element ; - owl:onProperty linkml:range ], + owl:allValuesFrom linkml:PresenceEnum ; + owl:onProperty linkml:value_presence ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:inlined ], + owl:onProperty linkml:recommended ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:exact_cardinality ], + owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:pattern ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:recommended ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:recommended ], + owl:onProperty linkml:unit ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:any_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:equals_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minimum_cardinality ], + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:inlined_as_list ], + owl:onProperty linkml:multivalued ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:exactly_one_of ], + owl:allValuesFrom linkml:ArrayExpression ; + owl:onProperty linkml:array ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:range ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:range_expression ], + owl:onProperty linkml:inlined ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:enum_range ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:structured_pattern ], + owl:onProperty linkml:pattern ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:range_expression ], + owl:onProperty linkml:recommended ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_string ], + owl:minCardinality 0 ; + owl:onProperty linkml:has_member ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:minimum_cardinality ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:equals_string_in ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty linkml:equals_string_in ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:pattern ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:range ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:value_presence ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ArrayExpression ; - owl:onProperty linkml:array ], + owl:allValuesFrom linkml:Element ; + owl:onProperty linkml:range ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_string ], + owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:minimum_cardinality ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:maximum_value ], + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; owl:allValuesFrom linkml:EnumExpression ; owl:onProperty linkml:enum_range ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:required ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:maximum_cardinality ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:required ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:pattern ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:value_presence ], + owl:onProperty linkml:inlined_as_list ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:any_of ], + owl:onProperty linkml:enum_range ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:implicit_prefix ], + owl:allValuesFrom linkml:PatternExpression ; + owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:range ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:value_presence ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_expression ], + owl:onProperty linkml:bindings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PresenceEnum ; - owl:onProperty linkml:value_presence ], + owl:maxCardinality 1 ; + owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:recommended ], + owl:onProperty linkml:minimum_value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:implicit_prefix ], + owl:maxCardinality 1 ; + owl:onProperty linkml:has_member ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:maximum_cardinality ], + owl:minCardinality 0 ; + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:has_member ], + owl:onProperty linkml:all_members ], linkml:Expression ; skos:definition "an expression that constrains the range of values a slot can take" ; skos:inScheme linkml:meta . @@ -2841,14 +2814,8 @@ linkml:StructuredAlias a owl:Class, linkml:ClassDefinition ; rdfs:label "structured_alias" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 1 ; owl:onProperty linkml:literal_form ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:categories ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AliasPredicateEnum ; - owl:onProperty linkml:alias_predicate ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uri ; owl:onProperty linkml:alias_contexts ], @@ -2856,19 +2823,25 @@ linkml:StructuredAlias a owl:Class, owl:maxCardinality 1 ; owl:onProperty linkml:alias_predicate ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty linkml:literal_form ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:literal_form ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:categories ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:alias_contexts ], + owl:onProperty linkml:alias_predicate ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:literal_form ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:categories ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:alias_contexts ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AliasPredicateEnum ; owl:onProperty linkml:alias_predicate ], linkml:Annotatable, linkml:CommonMetadata, @@ -2890,29 +2863,29 @@ linkml:UniqueKey a owl:Class, linkml:ClassDefinition ; rdfs:label "unique_key" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:unique_key_name ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:unique_key_slots ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:consider_nulls_inequal ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:unique_key_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:consider_nulls_inequal ], + owl:minCardinality 1 ; + owl:onProperty linkml:unique_key_slots ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:unique_key_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:unique_key_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:consider_nulls_inequal ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:unique_key_slots ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:consider_nulls_inequal ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:unique_key_slots ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -2924,35 +2897,44 @@ linkml:UnitOfMeasure a owl:Class, linkml:ClassDefinition ; rdfs:label "UnitOfMeasure" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:symbol ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:descriptive_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:abbreviation ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exact_mappings ], + owl:onProperty linkml:symbol ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:abbreviation ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:iec61360code ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:derivation ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:descriptive_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:has_quantity_kind ], + owl:onProperty linkml:exact_mappings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:has_quantity_kind ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:iec61360code ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:iec61360code ], + owl:onProperty linkml:ucum_code ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:has_quantity_kind ], + owl:onProperty linkml:symbol ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:descriptive_name ], + owl:maxCardinality 1 ; + owl:onProperty linkml:ucum_code ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:abbreviation ], + owl:minCardinality 0 ; + owl:onProperty linkml:iec61360code ], [ owl:unionOf ( [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:ucum_code ] [ a owl:Restriction ; @@ -2963,45 +2945,36 @@ linkml:UnitOfMeasure a owl:Class, owl:allValuesFrom linkml:String ; owl:onProperty linkml:exact_mappings ] ) ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:iec61360code ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:ucum_code ], + owl:minCardinality 0 ; + owl:onProperty linkml:abbreviation ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:derivation ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:ucum_code ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:exact_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:derivation ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:symbol ], + owl:minCardinality 0 ; + owl:onProperty linkml:descriptive_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:symbol ], + owl:minCardinality 0 ; + owl:onProperty linkml:exact_mappings ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:has_quantity_kind ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:descriptive_name ], + owl:onProperty linkml:has_quantity_kind ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:descriptive_name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml:ucum_code ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:abbreviation ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:symbol ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:derivation ] ; - skos:definition "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:has_quantity_kind ] ; + skos:definition "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; skos:exactMatch qudt:Unit ; skos:inScheme linkml:units . @@ -3024,6 +2997,29 @@ linkml:exact_mappings a owl:ObjectProperty, skos:definition "A list of terms from different schemas or terminology systems that have identical meaning." ; skos:inScheme linkml:mappings . +linkml:identifier a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "identifier" ; + rdfs:domain linkml:SlotDefinition ; + rdfs:range linkml:Boolean ; + rdfs:seeAlso , + , + , + linkml:key, + linkml:unique_keys ; + skos:altLabel "ID", + "UID", + "code", + "primary key" ; + skos:definition "True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document." ; + skos:inScheme linkml:meta ; + skos:note "A domain can have at most one identifier slot OR a key slot. However a domain can have both an identifier slot and any number of compound keys.", + "An identifier slot is automatically required. Identifiers cannot be optional.", + "The identifier slot is inherited.", + "The presence of an identifier slot makes a class eligible for being referenced rather than inlined.", + "The presence of an identifier slot makes a class eligible for inlining as a dictionary." ; + sh:order 5 . + linkml:implements a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "implements" ; @@ -3041,44 +3037,60 @@ linkml:is_grouping_slot a owl:ObjectProperty, skos:definition "true if this slot is a grouping slot" ; skos:inScheme linkml:meta . -linkml:ArrayExpression a owl:Class, - linkml:ClassDefinition ; - rdfs:label "array_expression" ; - bibo:status ; - rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:DimensionExpression ; - owl:onProperty linkml:dimensions ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; +linkml:key a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "key" ; + rdfs:domain linkml:SlotDefinition ; + rdfs:range linkml:Boolean ; + rdfs:seeAlso , + , + linkml:identifier, + linkml:unique_keys ; + skos:definition "True means that the slot is the \"singular unique key\" (also known more simply as the \"key slot\") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container." ; + skos:inScheme linkml:meta ; + skos:note "A domain can have at most one key slot OR one identifier slot. However a domain can have both a key slot and any number of compound keys.", + "A key slot is automatically required. Singular unique keys cannot be optional.", + "The key slot is inherited.", + "The presence of a key slot makes a class eligible for inlining as a dictionary." . + +linkml:ArrayExpression a owl:Class, + linkml:ClassDefinition ; + rdfs:label "array_expression" ; + bibo:status ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:minimum_number_dimensions ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:minimum_number_dimensions ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:maximum_number_dimensions ], + owl:allValuesFrom linkml:DimensionExpression ; + owl:onProperty linkml:dimensions ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:exact_number_dimensions ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:minimum_number_dimensions ], [ a owl:Restriction ; owl:allValuesFrom [ owl:intersectionOf ( [ a rdfs:Datatype ; owl:unionOf ( linkml:Integer linkml:Boolean ) ] linkml:Anything ) ] ; owl:onProperty linkml:maximum_number_dimensions ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:dimensions ], + owl:maxCardinality 1 ; + owl:onProperty linkml:exact_number_dimensions ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:maximum_number_dimensions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exact_number_dimensions ], + owl:onProperty linkml:dimensions ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:exact_number_dimensions ], + owl:minCardinality 0 ; + owl:onProperty linkml:maximum_number_dimensions ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:exact_number_dimensions ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:minimum_number_dimensions ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -3089,14 +3101,17 @@ linkml:Extension a owl:Class, linkml:ClassDefinition ; rdfs:label "extension" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Extension ; + owl:minCardinality 0 ; owl:onProperty linkml:extensions ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty linkml:extension_tag ], + owl:onProperty linkml:extension_value ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnyValue ; owl:onProperty linkml:extension_value ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml:extension_tag ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:extension_tag ], @@ -3104,14 +3119,11 @@ linkml:Extension a owl:Class, owl:maxCardinality 1 ; owl:onProperty linkml:extension_value ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:extension_value ], + owl:allValuesFrom linkml:Extension ; + owl:onProperty linkml:extensions ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:extension_tag ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:extensions ] ; + owl:onProperty linkml:extension_tag ] ; skos:definition "a tag/value pair used to add non-model information to an entry" ; skos:inScheme linkml:extensions . @@ -3120,31 +3132,31 @@ linkml:PatternExpression a owl:Class, rdfs:label "pattern_expression" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:syntax ], + owl:onProperty linkml:partial_match ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:syntax ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:interpolated ], + owl:onProperty linkml:partial_match ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:syntax ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:interpolated ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:partial_match ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:partial_match ], + owl:maxCardinality 1 ; + owl:onProperty linkml:interpolated ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:interpolated ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:partial_match ], + owl:onProperty linkml:syntax ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:interpolated ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -3155,68 +3167,68 @@ linkml:PermissibleValue a owl:Class, linkml:ClassDefinition ; rdfs:label "permissible_value" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:description ], - [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:unit ], + owl:onProperty linkml:text ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:meaning ], [ a owl:Restriction ; owl:allValuesFrom linkml:PermissibleValue ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:mixins ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:implements ], + owl:minCardinality 0 ; + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:meaning ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:mixins ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:description ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:minCardinality 1 ; + owl:onProperty linkml:text ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:implements ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:description ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:meaning ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:description ], + owl:onProperty linkml:text ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:unit ], + owl:onProperty linkml:implements ], [ a owl:Restriction ; owl:allValuesFrom linkml:UnitOfMeasure ; owl:onProperty linkml:unit ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:meaning ], + owl:minCardinality 0 ; + owl:onProperty linkml:unit ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PermissibleValue ; - owl:onProperty linkml:mixins ], + owl:maxCardinality 1 ; + owl:onProperty linkml:unit ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:text ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:instantiates ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:text ], + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:instantiates ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:text ], + owl:allValuesFrom linkml:PermissibleValue ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:meaning ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:instantiates ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:mixins ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -3230,23 +3242,23 @@ linkml:Setting a owl:Class, linkml:ClassDefinition ; rdfs:label "setting" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml:setting_value ], + [ a owl:Restriction ; owl:allValuesFrom linkml:Ncname ; owl:onProperty linkml:setting_key ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty linkml:setting_value ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:setting_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:setting_key ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty linkml:setting_key ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:setting_value ] ; + owl:onProperty linkml:setting_key ] ; skos:definition "assignment of a key to a value" ; skos:inScheme linkml:meta . @@ -3478,32 +3490,32 @@ linkml:PathExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "path_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:followed_by ], + owl:minCardinality 0 ; + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:range_expression ], + owl:onProperty linkml:reversed ], [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; owl:onProperty linkml:traverse ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:traverse ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; + owl:onProperty linkml:traverse ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:reversed ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:maxCardinality 1 ; owl:onProperty linkml:reversed ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:none_of ], @@ -3511,44 +3523,44 @@ linkml:PathExpression a owl:Class, owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:none_of ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:traverse ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:traverse ], + owl:maxCardinality 1 ; + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:followed_by ], + owl:onProperty linkml:none_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:exactly_one_of ], + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:reversed ], + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:followed_by ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:none_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:followed_by ], [ a owl:Restriction ; owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:any_of ], + owl:onProperty linkml:followed_by ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:any_of ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:all_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:all_of ], linkml:Annotatable, linkml:CommonMetadata, linkml:Expression, @@ -3560,53 +3572,53 @@ linkml:ReachabilityQuery a owl:Class, linkml:ClassDefinition ; rdfs:label "reachability_query" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:maxCardinality 1 ; owl:onProperty linkml:is_direct ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:source_ontology ], + owl:onProperty linkml:is_direct ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:source_ontology ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:traverse_up ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:relationship_types ], + owl:minCardinality 0 ; + owl:onProperty linkml:include_self ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:traverse_up ], + owl:minCardinality 0 ; + owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:source_nodes ], + owl:onProperty linkml:relationship_types ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_direct ], + owl:onProperty linkml:traverse_up ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:source_ontology ], + owl:onProperty linkml:source_nodes ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:include_self ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:relationship_types ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:traverse_up ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:include_self ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:include_self ], + owl:onProperty linkml:source_ontology ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:is_direct ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:source_nodes ], + owl:onProperty linkml:relationship_types ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:is_direct ], + owl:onProperty linkml:source_nodes ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:traverse_up ] ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:source_ontology ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:include_self ] ; skos:definition "A query that is used on an enum expression to dynamically obtain a set of permissible values via walking from a set of source nodes to a set of descendants or ancestors over a set of relationship types." ; skos:inScheme linkml:meta . @@ -3714,13 +3726,13 @@ linkml:EnumDefinition a owl:Class, linkml:ClassDefinition ; rdfs:label "enum_definition" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:enum_uri ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty linkml:enum_uri ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:enum_uri ], linkml:Definition, linkml:EnumExpression ; @@ -3816,248 +3828,248 @@ linkml:CommonMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "common_metadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:source ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:close_mappings ], - [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:status ], + owl:onProperty linkml:deprecated_element_has_possible_replacement ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:in_language ], + owl:onProperty linkml:aliases ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:exact_mappings ], + owl:minCardinality 0 ; + owl:onProperty linkml:created_by ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:modified_by ], + owl:allValuesFrom linkml:Uri ; + owl:onProperty linkml:from_schema ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:aliases ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:categories ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:mappings ], + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:modified_by ], + owl:onProperty linkml:rank ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:last_updated_on ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:categories ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:rank ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:close_mappings ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:notes ], + owl:onProperty linkml:in_language ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:in_language ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:title ], + owl:onProperty linkml:status ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:from_schema ], + owl:onProperty linkml:alt_descriptions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:imported_from ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:status ], + owl:onProperty linkml:categories ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:in_language ], + owl:onProperty linkml:status ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:mappings ], + owl:minCardinality 0 ; + owl:onProperty linkml:see_also ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:created_on ], + owl:onProperty linkml:imported_from ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:deprecated ], + owl:onProperty linkml:title ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:broad_mappings ], + owl:maxCardinality 1 ; + owl:onProperty linkml:title ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exact_mappings ], + owl:onProperty linkml:keywords ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:deprecated_element_has_exact_replacement ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:contributors ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty linkml:created_on ], + owl:minCardinality 0 ; + owl:onProperty linkml:deprecated ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:comments ], + owl:onProperty linkml:contributors ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:deprecated_element_has_exact_replacement ], + owl:onProperty linkml:narrow_mappings ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml:deprecated ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:status ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:rank ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:comments ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:examples ], + owl:maxCardinality 1 ; + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:source ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:title ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:deprecated_element_has_possible_replacement ], + owl:onProperty linkml:rank ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:broad_mappings ], + owl:allValuesFrom linkml:SubsetDefinition ; + owl:onProperty linkml:in_subset ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:deprecated_element_has_exact_replacement ], + owl:onProperty linkml:exact_mappings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:imported_from ], + owl:minCardinality 0 ; + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:alt_descriptions ], + owl:onProperty linkml:todos ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:rank ], + owl:maxCardinality 1 ; + owl:onProperty linkml:from_schema ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:related_mappings ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:notes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:notes ], + owl:onProperty linkml:deprecated_element_has_possible_replacement ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:narrow_mappings ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AltDescription ; + owl:onProperty linkml:alt_descriptions ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:source ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:from_schema ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:created_by ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:modified_by ], + owl:onProperty linkml:from_schema ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:imported_from ], + owl:onProperty linkml:created_by ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:contributors ], + owl:onProperty linkml:exact_mappings ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:keywords ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:deprecated ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:categories ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:last_updated_on ], + owl:onProperty linkml:structured_aliases ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:created_by ], + owl:onProperty linkml:mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:imported_from ], + owl:onProperty linkml:related_mappings ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:created_by ], + owl:onProperty linkml:source ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:created_by ], + owl:onProperty linkml:title ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:deprecated ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:todos ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:narrow_mappings ], + owl:onProperty linkml:close_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:aliases ], + owl:onProperty linkml:modified_by ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty linkml:last_updated_on ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:deprecated_element_has_possible_replacement ], + owl:onProperty linkml:created_on ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:todos ], + owl:maxCardinality 1 ; + owl:onProperty linkml:deprecated_element_has_exact_replacement ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:title ], + owl:onProperty linkml:deprecated_element_has_possible_replacement ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:description ], + owl:minCardinality 0 ; + owl:onProperty linkml:in_language ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Example ; - owl:onProperty linkml:examples ], + owl:minCardinality 0 ; + owl:onProperty linkml:mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:keywords ], + owl:onProperty linkml:examples ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:narrow_mappings ], + owl:onProperty linkml:deprecated_element_has_exact_replacement ], [ a owl:Restriction ; owl:allValuesFrom linkml:Datetime ; + owl:onProperty linkml:created_on ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:modified_by ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:imported_from ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:last_updated_on ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:rank ], + owl:onProperty linkml:broad_mappings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:todos ], + owl:maxCardinality 1 ; + owl:onProperty linkml:modified_by ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:comments ], + owl:minCardinality 0 ; + owl:onProperty linkml:deprecated_element_has_exact_replacement ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:deprecated_element_has_possible_replacement ], + owl:onProperty linkml:broad_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:description ], + owl:onProperty linkml:created_on ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:in_subset ], + owl:onProperty linkml:aliases ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:structured_aliases ], + owl:onProperty linkml:comments ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SubsetDefinition ; - owl:onProperty linkml:in_subset ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:deprecated ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:see_also ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:see_also ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:related_mappings ], + owl:onProperty linkml:notes ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uri ; - owl:onProperty linkml:from_schema ], + owl:minCardinality 0 ; + owl:onProperty linkml:in_subset ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:close_mappings ], + owl:allValuesFrom linkml:Example ; + owl:onProperty linkml:examples ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:description ], + owl:allValuesFrom linkml:StructuredAlias ; + owl:onProperty linkml:structured_aliases ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:contributors ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:created_on ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AltDescription ; - owl:onProperty linkml:alt_descriptions ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:in_language ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:StructuredAlias ; - owl:onProperty linkml:structured_aliases ] ; + owl:onProperty linkml:related_mappings ] ; skos:definition "Generic metadata shared across definitions" ; skos:inScheme linkml:meta . @@ -4085,10 +4097,10 @@ linkml:Extensible a owl:Class, linkml:ClassDefinition ; rdfs:label "extensible" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Extension ; owl:onProperty linkml:extensions ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Extension ; + owl:minCardinality 0 ; owl:onProperty linkml:extensions ] ; skos:definition "mixin for classes that support extension" ; skos:inScheme linkml:extensions . @@ -4098,46 +4110,46 @@ linkml:TypeDefinition a owl:Class, rdfs:label "type_definition" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:repr ], + owl:onProperty linkml:type_uri ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:union_of ], + owl:onProperty linkml:repr ], [ a owl:Restriction ; owl:allValuesFrom linkml:TypeDefinition ; owl:onProperty linkml:union_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:repr ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:type_uri ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; + owl:maxCardinality 1 ; owl:onProperty linkml:typeof ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:typeof ], + owl:onProperty linkml:base ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:type_uri ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:repr ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:base ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:type_uri ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:base ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty linkml:type_uri ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:base ], + owl:onProperty linkml:typeof ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty linkml:repr ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:TypeDefinition ; owl:onProperty linkml:typeof ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:union_of ], linkml:Element, linkml:TypeExpression ; skos:definition "an element that whose instances are atomic scalar values that can be mapped to primitive types" ; @@ -4160,58 +4172,67 @@ linkml:EnumExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "enum_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:concepts ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:reachable_from ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumDefinition ; - owl:onProperty linkml:inherits ], + owl:minCardinality 0 ; + owl:onProperty linkml:code_set ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minus ], + owl:onProperty linkml:include ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:permissible_values ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:code_set ], + owl:onProperty linkml:reachable_from ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:AnonymousEnumExpression ; owl:onProperty linkml:include ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:matches ], + owl:onProperty linkml:code_set_version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:reachable_from ], + owl:onProperty linkml:minus ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ReachabilityQuery ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:code_set_version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:reachable_from ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:concepts ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousEnumExpression ; owl:onProperty linkml:minus ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousEnumExpression ; - owl:onProperty linkml:include ], + owl:minCardinality 0 ; + owl:onProperty linkml:inherits ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PermissibleValue ; - owl:onProperty linkml:permissible_values ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:code_set_tag ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:code_set_version ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty linkml:pv_formula ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:MatchQuery ; + owl:onProperty linkml:matches ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:EnumDefinition ; + owl:onProperty linkml:inherits ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:code_set_tag ], + owl:onProperty linkml:code_set_version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:code_set ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:PermissibleValue ; + owl:onProperty linkml:permissible_values ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:concepts ], [ a owl:Restriction ; - owl:allValuesFrom linkml:MatchQuery ; + owl:maxCardinality 1 ; owl:onProperty linkml:matches ], [ a owl:Restriction ; owl:minCardinality 0 ; @@ -4220,29 +4241,20 @@ linkml:EnumExpression a owl:Class, owl:allValuesFrom linkml:PvFormulaOptions ; owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:code_set_version ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:code_set_version ], + owl:allValuesFrom linkml:ReachabilityQuery ; + owl:onProperty linkml:reachable_from ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:matches ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:code_set_tag ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:inherits ], + owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:maxCardinality 1 ; owl:onProperty linkml:code_set ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:pv_formula ], + owl:onProperty linkml:matches ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:code_set ], + owl:maxCardinality 1 ; + owl:onProperty linkml:code_set_tag ], linkml:Expression ; skos:definition "An expression that constrains the range of a slot" ; skos:inScheme linkml:meta . @@ -4270,14 +4282,14 @@ linkml:AnonymousClassExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "anonymous_class_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Definition ; - owl:onProperty linkml:is_a ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:is_a ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Definition ; + owl:onProperty linkml:is_a ], linkml:AnonymousExpression, linkml:ClassExpression ; skos:inScheme linkml:meta . @@ -4287,179 +4299,179 @@ linkml:SchemaDefinition a owl:Class, rdfs:label "schema_definition" ; rdfs:seeAlso ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:slot_names_unique ], + owl:maxCardinality 1 ; + owl:onProperty linkml:source_file_size ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:generation_date ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:default_curi_maps ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:bindings ], + owl:onProperty linkml:source_file ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:source_file_date ], + owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:settings ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:default_range ], + owl:onProperty linkml:subsets ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:version ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; - owl:onProperty linkml:default_range ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:slot_names_unique ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:name ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:types ], + owl:onProperty linkml:default_curi_maps ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:source_file ], + owl:onProperty linkml:default_prefix ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:version ], + owl:minCardinality 0 ; + owl:onProperty linkml:types ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:generation_date ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:metamodel_version ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:source_file ], + owl:onProperty linkml:license ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:enums ], + owl:maxCardinality 1 ; + owl:onProperty linkml:version ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:default_prefix ], + owl:allValuesFrom linkml:Setting ; + owl:onProperty linkml:settings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:source_file_size ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:source_file_size ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumBinding ; - owl:onProperty linkml:bindings ], + owl:onProperty linkml:enums ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:default_curi_maps ], + owl:onProperty linkml:metamodel_version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:classes ], + owl:onProperty linkml:source_file_size ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:default_range ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:license ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:subsets ], + owl:onProperty linkml:settings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:prefixes ], + owl:maxCardinality 1 ; + owl:onProperty linkml:metamodel_version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_names_unique ], + owl:onProperty linkml:emit_prefixes ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:name ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:slot_definitions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:generation_date ], + owl:onProperty linkml:classes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:default_prefix ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:classes ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SubsetDefinition ; - owl:onProperty linkml:subsets ], + owl:allValuesFrom linkml:Prefix ; + owl:onProperty linkml:prefixes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:slot_names_unique ], + owl:allValuesFrom linkml:EnumBinding ; + owl:onProperty linkml:bindings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:imports ], + owl:allValuesFrom linkml:TypeDefinition ; + owl:onProperty linkml:types ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:license ], + owl:onProperty linkml:source_file_date ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:slot_definitions ], + owl:allValuesFrom linkml:SubsetDefinition ; + owl:onProperty linkml:subsets ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:imports ], + owl:allValuesFrom linkml:EnumDefinition ; + owl:onProperty linkml:enums ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Datetime ; owl:onProperty linkml:source_file_date ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:metamodel_version ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Prefix ; - owl:onProperty linkml:prefixes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:source_file_size ], + owl:onProperty linkml:source_file ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml:license ], + [ a owl:Restriction ; + owl:minCardinality 1 ; owl:onProperty linkml:name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:emit_prefixes ], + owl:allValuesFrom linkml:Datetime ; + owl:onProperty linkml:generation_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:id ], + owl:onProperty linkml:default_range ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:emit_prefixes ], + owl:allValuesFrom linkml:TypeDefinition ; + owl:onProperty linkml:default_range ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:source_file ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty linkml:source_file_date ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumDefinition ; - owl:onProperty linkml:enums ], + owl:onProperty linkml:license ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:metamodel_version ], + owl:onProperty linkml:default_prefix ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; - owl:onProperty linkml:types ], + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:version ], + owl:onProperty linkml:slot_definitions ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:license ], + owl:minCardinality 0 ; + owl:onProperty linkml:metamodel_version ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Setting ; - owl:onProperty linkml:settings ], + owl:minCardinality 0 ; + owl:onProperty linkml:prefixes ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty linkml:generation_date ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:source_file ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:name ], + owl:minCardinality 0 ; + owl:onProperty linkml:bindings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:default_prefix ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:source_file_size ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:id ], + owl:minCardinality 0 ; + owl:onProperty linkml:version ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uri ; owl:onProperty linkml:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_definitions ], + owl:onProperty linkml:imports ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:imports ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:slot_names_unique ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:source_file_date ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:classes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:emit_prefixes ], linkml:Element ; skos:altLabel "data dictionary", "data model", @@ -4478,60 +4490,60 @@ linkml:Definition a owl:Class, rdfs:label "definition" ; rdfs:seeAlso ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:abstract ], - [ owl:unionOf ( linkml:ClassDefinition linkml:EnumDefinition linkml:SlotDefinition ) ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Definition ; owl:onProperty linkml:is_a ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:values_from ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:abstract ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:mixin ], + [ owl:unionOf ( linkml:ClassDefinition linkml:EnumDefinition linkml:SlotDefinition ) ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:string_serialization ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Definition ; - owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:mixin ], + owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:values_from ], + owl:maxCardinality 1 ; + owl:onProperty linkml:mixin ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:abstract ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:is_a ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:mixins ], + owl:onProperty linkml:mixin ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:string_serialization ], + owl:onProperty linkml:abstract ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Definition ; - owl:onProperty linkml:is_a ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:mixin ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:values_from ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Definition ; + owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:mixin ], + owl:onProperty linkml:apply_to ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:string_serialization ], + owl:minCardinality 0 ; + owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:allValuesFrom linkml:Definition ; owl:onProperty linkml:apply_to ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:values_from ], linkml:Element ; skos:definition "abstract base class for core metaclasses" ; skos:inScheme linkml:meta . @@ -4541,66 +4553,66 @@ linkml:Element a owl:Class, rdfs:label "element" ; rdfs:seeAlso ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:definition_uri ], + owl:allValuesFrom linkml:LocalName ; + owl:onProperty linkml:local_names ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:instantiates ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:id_prefixes ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:definition_uri ], - [ owl:unionOf ( linkml:Definition linkml:SchemaDefinition linkml:SubsetDefinition linkml:TypeDefinition ) ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 1 ; owl:onProperty linkml:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:id_prefixes_are_closed ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:local_names ], + owl:onProperty linkml:conforms_to ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:implements ], + [ owl:unionOf ( linkml:Definition linkml:SchemaDefinition linkml:SubsetDefinition linkml:TypeDefinition ) ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:conforms_to ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:conforms_to ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml:definition_uri ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:LocalName ; - owl:onProperty linkml:local_names ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:id_prefixes_are_closed ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:id_prefixes ], + owl:maxCardinality 1 ; + owl:onProperty linkml:conforms_to ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:instantiates ], + owl:minCardinality 0 ; + owl:onProperty linkml:definition_uri ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty linkml:implements ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:id_prefixes_are_closed ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:id_prefixes_are_closed ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:conforms_to ], + owl:maxCardinality 1 ; + owl:onProperty linkml:name ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:id_prefixes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:definition_uri ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:instantiates ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:id_prefixes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:implements ], + owl:onProperty linkml:local_names ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -4613,152 +4625,152 @@ linkml:ClassDefinition a owl:Class, linkml:ClassDefinition ; rdfs:label "class_definition" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:subclass_of ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:represents_relationship ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:tree_root ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:class_uri ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:children_are_mutually_disjoint ], + owl:maxCardinality 1 ; + owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:maxCardinality 1 ; owl:onProperty linkml:tree_root ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:is_a ], + owl:minCardinality 0 ; + owl:onProperty linkml:class_uri ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slots ], + owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:alias ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:apply_to ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:represents_relationship ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:union_of ], + owl:onProperty linkml:alias ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:slot_names_unique ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:disjoint_with ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:class_uri ], + owl:onProperty linkml:classification_rules ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ExtraSlotsExpression ; - owl:onProperty linkml:extra_slots ], + owl:allValuesFrom linkml:ClassRule ; + owl:onProperty linkml:rules ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_usage ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_names_unique ], + owl:onProperty linkml:slot_usage ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:mixins ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:disjoint_with ], + owl:onProperty linkml:slots ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:attributes ], + owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:class_uri ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:alias ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:union_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:UniqueKey ; owl:onProperty linkml:unique_keys ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:extra_slots ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:attributes ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:defining_slots ], + owl:maxCardinality 1 ; + owl:onProperty linkml:alias ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:classification_rules ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:children_are_mutually_disjoint ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:subclass_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:tree_root ], + owl:allValuesFrom linkml:ExtraSlotsExpression ; + owl:onProperty linkml:extra_slots ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:subclass_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:ClassDefinition ; owl:onProperty linkml:mixins ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:disjoint_with ], + owl:minCardinality 0 ; + owl:onProperty linkml:extra_slots ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:is_a ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:attributes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:children_are_mutually_disjoint ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:slots ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:children_are_mutually_disjoint ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; owl:onProperty linkml:apply_to ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:rules ], + owl:maxCardinality 1 ; + owl:onProperty linkml:class_uri ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:attributes ], + owl:maxCardinality 1 ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; owl:onProperty linkml:defining_slots ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:disjoint_with ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:extra_slots ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassRule ; - owl:onProperty linkml:rules ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:subclass_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:tree_root ], + owl:onProperty linkml:unique_keys ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:classification_rules ], + owl:minCardinality 0 ; + owl:onProperty linkml:rules ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:represents_relationship ], + owl:minCardinality 0 ; + owl:onProperty linkml:defining_slots ], [ a owl:Restriction ; owl:allValuesFrom linkml:ClassDefinition ; owl:onProperty linkml:union_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:slot_usage ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:slots ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:subclass_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:tree_root ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:alias ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:alias ], + owl:onProperty linkml:represents_relationship ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:unique_keys ], + owl:onProperty linkml:mixins ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:represents_relationship ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:slot_usage ], linkml:ClassExpression, linkml:Definition ; skos:altLabel "message", @@ -4806,348 +4818,348 @@ linkml:SlotDefinition a owl:Class, rdfs:label "slot_definition" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:ifabsent ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:domain ], + owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:alias ], + owl:onProperty linkml:inherited ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:transitive_form_of ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:inherited ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:reflexive ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:children_are_mutually_disjoint ], + owl:onProperty linkml:role ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:list_elements_unique ], + owl:onProperty linkml:owner ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:subproperty_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:list_elements_ordered ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:reflexive_transitive_form_of ], + owl:onProperty linkml:symmetric ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:identifier ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:irreflexive ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:readonly ], + owl:onProperty linkml:reflexive ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Definition ; + owl:onProperty linkml:owner ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:locally_reflexive ], + owl:onProperty linkml:inherited ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:usage_slot_name ], + owl:onProperty linkml:symmetric ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:shared ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:domain ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:subproperty_of ], + owl:allValuesFrom linkml:RelationalRoleEnum ; + owl:onProperty linkml:relational_role ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:role ], + owl:onProperty linkml:irreflexive ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:children_are_mutually_disjoint ], + owl:minCardinality 0 ; + owl:onProperty linkml:designates_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:relational_role ], + owl:onProperty linkml:singular_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:list_elements_ordered ], + owl:minCardinality 0 ; + owl:onProperty linkml:domain ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:mixins ], + owl:maxCardinality 1 ; + owl:onProperty linkml:identifier ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_uri ], + owl:onProperty linkml:key ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:role ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:transitive ], + owl:onProperty linkml:is_usage_slot ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:readonly ], + owl:minCardinality 0 ; + owl:onProperty linkml:slot_group ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:TypeMapping ; + owl:onProperty linkml:type_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:owner ], + owl:onProperty linkml:asymmetric ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:reflexive_transitive_form_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:is_grouping_slot ], + owl:onProperty linkml:subproperty_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:path_rule ], + owl:maxCardinality 1 ; + owl:onProperty linkml:role ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:inverse ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:designates_type ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty linkml:reflexive_transitive_form_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; owl:onProperty linkml:disjoint_with ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:is_usage_slot ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:key ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:symmetric ], + owl:onProperty linkml:asymmetric ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:irreflexive ], + owl:onProperty linkml:singular_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:irreflexive ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:shared ], + owl:onProperty linkml:usage_slot_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:list_elements_unique ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:key ], + owl:onProperty linkml:is_class_field ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:domain_of ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:ifabsent ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:type_mappings ], + owl:onProperty linkml:is_class_field ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:key ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:identifier ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_group ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:slot_group ], + owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:domain ], + owl:onProperty linkml:readonly ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:is_grouping_slot ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:alias ], + owl:onProperty linkml:locally_reflexive ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:identifier ], + owl:minCardinality 0 ; + owl:onProperty linkml:inverse ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty linkml:slot_uri ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:relational_role ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:symmetric ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:identifier ], + owl:onProperty linkml:shared ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:role ], + owl:minCardinality 0 ; + owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:is_a ], + owl:minCardinality 0 ; + owl:onProperty linkml:shared ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:is_class_field ], + owl:minCardinality 0 ; + owl:onProperty linkml:transitive_form_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; + owl:maxCardinality 1 ; owl:onProperty linkml:transitive_form_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:alias ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:symmetric ], + owl:onProperty linkml:reflexive_transitive_form_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:subproperty_of ], + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:path_rule ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:is_grouping_slot ], + owl:minCardinality 0 ; + owl:onProperty linkml:identifier ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:list_elements_unique ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty linkml:readonly ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:transitive ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:inherited ], + owl:maxCardinality 1 ; + owl:onProperty linkml:inverse ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:asymmetric ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:singular_name ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:apply_to ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:relational_role ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:designates_type ], + owl:onProperty linkml:list_elements_unique ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:slot_uri ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:domain_of ], + [ a owl:Restriction ; + owl:allValuesFrom [ owl:intersectionOf ( [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:is_grouping_slot ] linkml:SlotDefinition ) ] ; + owl:onProperty linkml:slot_group ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:usage_slot_name ], + owl:onProperty linkml:singular_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:disjoint_with ], + owl:onProperty linkml:transitive ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:inherited ], + owl:onProperty linkml:slot_group ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:inverse ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:domain_of ], + owl:onProperty linkml:domain ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:ifabsent ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:transitive_form_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:reflexive ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml:irreflexive ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:subproperty_of ], + owl:onProperty linkml:disjoint_with ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:asymmetric ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:inherited ], + owl:maxCardinality 1 ; + owl:onProperty linkml:is_grouping_slot ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:union_of ], + owl:onProperty linkml:type_mappings ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:list_elements_ordered ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:locally_reflexive ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:path_rule ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:domain ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:children_are_mutually_disjoint ], + owl:onProperty linkml:usage_slot_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:reflexive ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:ifabsent ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:is_usage_slot ], + owl:onProperty linkml:is_grouping_slot ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:designates_type ], [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; owl:onProperty linkml:union_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:list_elements_unique ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:is_usage_slot ], + owl:onProperty linkml:apply_to ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:designates_type ], + owl:maxCardinality 1 ; + owl:onProperty linkml:slot_uri ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:transitive ], [ a owl:Restriction ; - owl:allValuesFrom linkml:RelationalRoleEnum ; - owl:onProperty linkml:relational_role ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeMapping ; - owl:onProperty linkml:type_mappings ], + owl:maxCardinality 1 ; + owl:onProperty linkml:readonly ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:usage_slot_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:locally_reflexive ], + owl:onProperty linkml:ifabsent ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:locally_reflexive ], + owl:minCardinality 0 ; + owl:onProperty linkml:reflexive ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Definition ; + owl:maxCardinality 1 ; owl:onProperty linkml:owner ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_class_field ], - [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty linkml:reflexive_transitive_form_of ], + owl:onProperty linkml:shared ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:readonly ], + owl:onProperty linkml:is_grouping_slot ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:is_class_field ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:inverse ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_usage_slot ], + owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:path_rule ], + owl:onProperty linkml:key ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:transitive_form_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:asymmetric ], + owl:onProperty linkml:list_elements_ordered ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:reflexive_transitive_form_of ], + owl:onProperty linkml:subproperty_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:singular_name ], + owl:minCardinality 0 ; + owl:onProperty linkml:locally_reflexive ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:inverse ], + owl:onProperty linkml:ifabsent ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:slot_uri ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:key ], + owl:onProperty linkml:is_usage_slot ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:role ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:symmetric ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:owner ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:designates_type ], + owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:relational_role ], + owl:onProperty linkml:path_rule ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:alias ], - [ a owl:Restriction ; - owl:allValuesFrom [ owl:intersectionOf ( [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:is_grouping_slot ] linkml:SlotDefinition ) ] ; - owl:onProperty linkml:slot_group ], + owl:onProperty linkml:union_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:shared ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:reflexive ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:singular_name ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:is_class_field ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:mixins ], + owl:maxCardinality 1 ; + owl:onProperty linkml:list_elements_unique ], linkml:Definition, linkml:SlotExpression ; skos:altLabel "attribute", diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto b/packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto index 5fd517e2ce..7a2d796ecc 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto @@ -1152,7 +1152,7 @@ message UniqueKey repeated uriorcurie categories = 0 repeated string keywords = 0 } -// A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). +// A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). message UnitOfMeasure { string symbol = 0 diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.model.ttl index 0d8450e532..9aa76b6938 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.model.ttl @@ -240,13 +240,13 @@ linkml:annotations a linkml:SchemaDefinition, linkml:domain_of linkml:Annotatable, linkml:Annotation ; linkml:emit_prefixes "linkml" ; - linkml:generation_date "2026-05-05T18:49:20"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:20"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/annotations"^^xsd:anyURI ; linkml:imports "linkml:extensions"^^xsd:anyURI, "linkml:types"^^xsd:anyURI ; linkml:inlined true ; linkml:is_a linkml:extensions ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:multivalued true ; linkml:owner linkml:Annotation ; linkml:range linkml:Annotation ; @@ -295,6 +295,9 @@ linkml:extension_tag a linkml:SlotDefinition ; linkml:extension_value a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; skos:prefLabel "value" ; + linkml:annotations [ a linkml:Annotation ; + skos:example true ; + linkml:tag linkml:simple_dict_value ] ; linkml:definition_uri "https://w3id.org/linkml/extension_value"^^xsd:anyURI ; linkml:description "the actual annotation" ; linkml:domain linkml:Extension ; @@ -316,6 +319,16 @@ linkml:Annotatable a linkml:ClassDefinition ; linkml:slot_usage [ ] ; linkml:slots linkml:annotations . +linkml:Extensible a linkml:ClassDefinition ; + skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; + linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:description "mixin for classes that support extension" ; + linkml:imported_from "linkml:extensions" ; + linkml:mixin true ; + linkml:slot_usage [ ] ; + linkml:slots linkml:extensions . + linkml:Annotation a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; @@ -329,16 +342,6 @@ linkml:Annotation a linkml:ClassDefinition ; linkml:extension_value, linkml:extensions . -linkml:Extensible a linkml:ClassDefinition ; - skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; - linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:description "mixin for classes that support extension" ; - linkml:imported_from "linkml:extensions" ; - linkml:mixin true ; - linkml:slot_usage [ ] ; - linkml:slots linkml:extensions . - linkml:extensions a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/extensions"^^xsd:anyURI ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.ttl index f294d74985..fbaa9d57bc 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/annotations.ttl @@ -240,13 +240,13 @@ linkml:annotations a linkml:SchemaDefinition, linkml:domain_of linkml:Annotatable, linkml:Annotation ; linkml:emit_prefixes "linkml" ; - linkml:generation_date "2026-05-05T18:49:17"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:18"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/annotations"^^xsd:anyURI ; linkml:imports "linkml:extensions"^^xsd:anyURI, "linkml:types"^^xsd:anyURI ; linkml:inlined true ; linkml:is_a linkml:extensions ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:multivalued true ; linkml:owner linkml:Annotation ; linkml:range linkml:Annotation ; @@ -295,6 +295,9 @@ linkml:extension_tag a linkml:SlotDefinition ; linkml:extension_value a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; skos:prefLabel "value" ; + linkml:annotations [ a linkml:Annotation ; + skos:example true ; + linkml:tag linkml:simple_dict_value ] ; linkml:definition_uri "https://w3id.org/linkml/extension_value"^^xsd:anyURI ; linkml:description "the actual annotation" ; linkml:domain linkml:Extension ; @@ -316,6 +319,16 @@ linkml:Annotatable a linkml:ClassDefinition ; linkml:slot_usage [ ] ; linkml:slots linkml:annotations . +linkml:Extensible a linkml:ClassDefinition ; + skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; + linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:description "mixin for classes that support extension" ; + linkml:imported_from "linkml:extensions" ; + linkml:mixin true ; + linkml:slot_usage [ ] ; + linkml:slots linkml:extensions . + linkml:Annotation a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; @@ -329,16 +342,6 @@ linkml:Annotation a linkml:ClassDefinition ; linkml:extension_value, linkml:extensions . -linkml:Extensible a linkml:ClassDefinition ; - skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; - linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:description "mixin for classes that support extension" ; - linkml:imported_from "linkml:extensions" ; - linkml:mixin true ; - linkml:slot_usage [ ] ; - linkml:slots linkml:extensions . - linkml:extensions a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/extensions"^^xsd:anyURI ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.model.ttl index 3868a60867..5ed5b095a6 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.model.ttl @@ -11,34 +11,36 @@ linkml:datasets a linkml:SchemaDefinition ; rdfs:seeAlso "https://specs.frictionlessdata.io/data-resource"^^xsd:anyURI, "https://www.w3.org/TR/hcls-dataset/"^^xsd:anyURI, "https://www.w3.org/TR/void/"^^xsd:anyURI ; - sh:declare [ sh:namespace "https://w3id.org/linkml/report"^^xsd:anyURI ; - sh:prefix "datasets" ], - [ sh:namespace "http://rdfs.org/ns/void#"^^xsd:anyURI ; + sh:declare [ sh:namespace "http://rdfs.org/ns/void#"^^xsd:anyURI ; sh:prefix "void" ], - [ sh:namespace "https://www.iana.org/assignments/media-types/"^^xsd:anyURI ; - sh:prefix "mediatypes" ], - [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; - sh:prefix "skos" ], - [ sh:namespace "http://www.w3.org/ns/formats/"^^xsd:anyURI ; - sh:prefix "formats" ], - [ sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; - sh:prefix "oslc" ], [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; sh:prefix "pav" ], - [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; - sh:prefix "linkml" ], - [ sh:namespace "http://www.w3.org/ns/dcat#"^^xsd:anyURI ; - sh:prefix "dcat" ], [ sh:namespace "http://purl.org/ontology/bibo/"^^xsd:anyURI ; sh:prefix "bibo" ], [ sh:namespace "http://schema.org/"^^xsd:anyURI ; sh:prefix "schema" ], - [ sh:namespace "https://specs.frictionlessdata.io/"^^xsd:anyURI ; - sh:prefix "frictionless" ], [ sh:namespace "http://www.w3.org/ns/csvw#"^^xsd:anyURI ; sh:prefix "csvw" ], + [ sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; + sh:prefix "oslc" ], + [ sh:namespace "https://specs.frictionlessdata.io/"^^xsd:anyURI ; + sh:prefix "frictionless" ], + [ sh:namespace "https://www.iana.org/assignments/media-types/"^^xsd:anyURI ; + sh:prefix "mediatypes" ], + [ sh:namespace "http://www.w3.org/ns/dcat#"^^xsd:anyURI ; + sh:prefix "dcat" ], + [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; + sh:prefix "linkml" ], [ sh:namespace "https://w3id.org/shacl/"^^xsd:anyURI ; - sh:prefix "sh" ] ; + sh:prefix "sh" ], + [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; + sh:prefix "skos" ], + [ sh:namespace "https://w3id.org/linkml/report"^^xsd:anyURI ; + sh:prefix "datasets" ], + [ sh:namespace "http://www.w3.org/ns/formats/"^^xsd:anyURI ; + sh:prefix "formats" ], + [ sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ; + sh:prefix "dcterms" ] ; linkml:classes linkml:DataPackage, linkml:DataResource, linkml:FormatDialect, @@ -55,10 +57,10 @@ linkml:datasets a linkml:SchemaDefinition ; linkml:enums linkml:FormatEnum, linkml:MediaTypeEnum, linkml:TestRole ; - linkml:generation_date "2026-05-05T18:49:23"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:26"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/datasets"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:slots linkml:bytes, linkml:compression, linkml:conforms_to, @@ -99,8 +101,8 @@ linkml:datasets a linkml:SchemaDefinition ; linkml:version, linkml:was_derived_from ; linkml:source_file "datasets.yaml" ; - linkml:source_file_date "2026-05-05T18:15:53"^^xsd:dateTime ; - linkml:source_file_size 7835 ; + linkml:source_file_date "2026-08-12T09:36:51"^^xsd:dateTime ; + linkml:source_file_size 7872 ; linkml:types linkml:boolean, linkml:curie, linkml:date, diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.ttl index 956a77cf85..1d17bb6210 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/datasets.ttl @@ -11,34 +11,36 @@ linkml:datasets a linkml:SchemaDefinition ; rdfs:seeAlso "https://specs.frictionlessdata.io/data-resource"^^xsd:anyURI, "https://www.w3.org/TR/hcls-dataset/"^^xsd:anyURI, "https://www.w3.org/TR/void/"^^xsd:anyURI ; - sh:declare [ sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; - sh:prefix "oslc" ], - [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; + sh:declare [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; sh:prefix "linkml" ], - [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; - sh:prefix "pav" ], - [ sh:namespace "https://w3id.org/shacl/"^^xsd:anyURI ; - sh:prefix "sh" ], - [ sh:namespace "http://purl.org/ontology/bibo/"^^xsd:anyURI ; - sh:prefix "bibo" ], - [ sh:namespace "https://www.iana.org/assignments/media-types/"^^xsd:anyURI ; - sh:prefix "mediatypes" ], - [ sh:namespace "https://specs.frictionlessdata.io/"^^xsd:anyURI ; - sh:prefix "frictionless" ], + [ sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ; + sh:prefix "dcterms" ], + [ sh:namespace "https://w3id.org/linkml/report"^^xsd:anyURI ; + sh:prefix "datasets" ], [ sh:namespace "http://www.w3.org/ns/csvw#"^^xsd:anyURI ; sh:prefix "csvw" ], [ sh:namespace "http://rdfs.org/ns/void#"^^xsd:anyURI ; sh:prefix "void" ], - [ sh:namespace "https://w3id.org/linkml/report"^^xsd:anyURI ; - sh:prefix "datasets" ], + [ sh:namespace "http://purl.org/ontology/bibo/"^^xsd:anyURI ; + sh:prefix "bibo" ], [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; sh:prefix "skos" ], - [ sh:namespace "http://www.w3.org/ns/dcat#"^^xsd:anyURI ; - sh:prefix "dcat" ], + [ sh:namespace "https://w3id.org/shacl/"^^xsd:anyURI ; + sh:prefix "sh" ], + [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; + sh:prefix "pav" ], [ sh:namespace "http://www.w3.org/ns/formats/"^^xsd:anyURI ; sh:prefix "formats" ], [ sh:namespace "http://schema.org/"^^xsd:anyURI ; - sh:prefix "schema" ] ; + sh:prefix "schema" ], + [ sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; + sh:prefix "oslc" ], + [ sh:namespace "https://www.iana.org/assignments/media-types/"^^xsd:anyURI ; + sh:prefix "mediatypes" ], + [ sh:namespace "https://specs.frictionlessdata.io/"^^xsd:anyURI ; + sh:prefix "frictionless" ], + [ sh:namespace "http://www.w3.org/ns/dcat#"^^xsd:anyURI ; + sh:prefix "dcat" ] ; linkml:classes linkml:DataPackage, linkml:DataResource, linkml:FormatDialect, @@ -55,10 +57,10 @@ linkml:datasets a linkml:SchemaDefinition ; linkml:enums linkml:FormatEnum, linkml:MediaTypeEnum, linkml:TestRole ; - linkml:generation_date "2026-05-05T18:49:22"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:24"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/datasets"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:slots linkml:bytes, linkml:compression, linkml:conforms_to, @@ -99,8 +101,8 @@ linkml:datasets a linkml:SchemaDefinition ; linkml:version, linkml:was_derived_from ; linkml:source_file "datasets.yaml" ; - linkml:source_file_date "2026-05-05T18:15:53"^^xsd:dateTime ; - linkml:source_file_size 7835 ; + linkml:source_file_date "2026-08-12T09:36:51"^^xsd:dateTime ; + linkml:source_file_size 7872 ; linkml:types linkml:boolean, linkml:curie, linkml:date, diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.model.ttl index 467b4c07bc..edba8d2ab6 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.model.ttl @@ -267,11 +267,11 @@ linkml:extensions a linkml:SchemaDefinition, linkml:domain_of linkml:Extensible, linkml:Extension ; linkml:emit_prefixes "linkml" ; - linkml:generation_date "2026-05-05T18:49:27"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:30"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/extensions"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; linkml:inlined true ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:multivalued true ; linkml:owner linkml:Extensible ; linkml:range linkml:Extension ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.ttl index 3ddb492fba..e99dcd6afe 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/extensions.ttl @@ -267,11 +267,11 @@ linkml:extensions a linkml:SchemaDefinition, linkml:domain_of linkml:Extensible, linkml:Extension ; linkml:emit_prefixes "linkml" ; - linkml:generation_date "2026-05-05T18:49:25"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:28"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/extensions"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; linkml:inlined true ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:multivalued true ; linkml:owner linkml:Extensible ; linkml:range linkml:Extension ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.model.ttl index cb4adda463..11109a22a6 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.model.ttl @@ -280,12 +280,12 @@ linkml:mappings a linkml:SchemaDefinition, skos:mappingRelation "http://www.w3.org/2004/02/skos/core#mappingRelation"^^xsd:anyURI ; sh:declare [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; sh:prefix "linkml" ], - [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; - sh:prefix "skos" ], + [ sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; + sh:prefix "OIO" ], [ sh:namespace "http://purl.obolibrary.org/obo/IAO_"^^xsd:anyURI ; sh:prefix "IAO" ], - [ sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; - sh:prefix "OIO" ] ; + [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; + sh:prefix "skos" ] ; linkml:default_curi_maps "semweb_context" ; linkml:default_prefix "linkml" ; linkml:default_range linkml:string ; @@ -299,10 +299,10 @@ linkml:mappings a linkml:SchemaDefinition, "rdfs", "skos", "xsd" ; - linkml:generation_date "2026-05-05T18:49:30"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:34"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/mappings"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:multivalued true ; linkml:range linkml:uriorcurie ; linkml:slot_uri "http://www.w3.org/2004/02/skos/core#mappingRelation"^^xsd:anyURI ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.ttl index 7117ecad94..692447ad96 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/mappings.ttl @@ -282,10 +282,10 @@ linkml:mappings a linkml:SchemaDefinition, sh:prefix "IAO" ], [ sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; sh:prefix "OIO" ], - [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; - sh:prefix "skos" ], [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; - sh:prefix "linkml" ] ; + sh:prefix "linkml" ], + [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; + sh:prefix "skos" ] ; linkml:default_curi_maps "semweb_context" ; linkml:default_prefix "linkml" ; linkml:default_range linkml:string ; @@ -299,10 +299,10 @@ linkml:mappings a linkml:SchemaDefinition, "rdfs", "skos", "xsd" ; - linkml:generation_date "2026-05-05T18:49:28"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:32"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/mappings"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:multivalued true ; linkml:range linkml:uriorcurie ; linkml:slot_uri "http://www.w3.org/2004/02/skos/core#mappingRelation"^^xsd:anyURI ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.model.ttl index 6ba27dcccf..3f3e0e93a1 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.model.ttl @@ -23,42 +23,48 @@ linkml:meta a linkml:SchemaDefinition ; dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; dcterms:title "LinkML Schema Metamodel" ; - sh:declare [ sh:namespace "http://www.w3.org/ns/prov#"^^xsd:anyURI ; - sh:prefix "prov" ], - [ sh:namespace "http://purl.org/ontology/bibo/"^^xsd:anyURI ; - sh:prefix "bibo" ], - [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; - sh:prefix "skos" ], + sh:declare [ sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ; + sh:prefix "rdfs" ], + [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; + sh:prefix "linkml" ], [ sh:namespace "http://www.w3.org/2008/05/skos-xl#"^^xsd:anyURI ; sh:prefix "skosxl" ], + [ sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; + sh:prefix "qudt" ], + [ sh:namespace "http://semanticscience.org/resource/SIO_"^^xsd:anyURI ; + sh:prefix "SIO" ], + [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; + sh:prefix "skos" ], [ sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; sh:prefix "oslc" ], + [ sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ; + sh:prefix "dcterms" ], [ sh:namespace "http://www.w3.org/2003/11/swrl#"^^xsd:anyURI ; sh:prefix "swrl" ], - [ sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; - sh:prefix "qudt" ], + [ sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + sh:prefix "rdf" ], [ sh:namespace "https://vocab.org/vann/"^^xsd:anyURI ; sh:prefix "vann" ], [ sh:namespace "http://rdf.cdisc.org/mms#"^^xsd:anyURI ; sh:prefix "cdisc" ], [ sh:namespace "http://schema.org/"^^xsd:anyURI ; sh:prefix "schema" ], - [ sh:namespace "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#"^^xsd:anyURI ; - sh:prefix "NCIT" ], + [ sh:namespace "http://purl.org/linked-data/cube#"^^xsd:anyURI ; + sh:prefix "qb" ], + [ sh:namespace "http://purl.org/ontology/bibo/"^^xsd:anyURI ; + sh:prefix "bibo" ], + [ sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; + sh:prefix "OIO" ], + [ sh:namespace "http://www.w3.org/ns/prov#"^^xsd:anyURI ; + sh:prefix "prov" ], [ sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ; sh:prefix "sh" ], [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; sh:prefix "pav" ], - [ sh:namespace "http://semanticscience.org/resource/SIO_"^^xsd:anyURI ; - sh:prefix "SIO" ], - [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; - sh:prefix "linkml" ], - [ sh:namespace "http://purl.org/linked-data/cube#"^^xsd:anyURI ; - sh:prefix "qb" ], [ sh:namespace "http://www.w3.org/2002/07/owl#"^^xsd:anyURI ; sh:prefix "owl" ], - [ sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; - sh:prefix "OIO" ] ; + [ sh:namespace "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#"^^xsd:anyURI ; + sh:prefix "NCIT" ] ; linkml:classes linkml:AltDescription, linkml:Annotatable, linkml:Annotation, @@ -148,7 +154,7 @@ refer to the official URI for each construct, e.g. linkml:presence_enum, linkml:pv_formula_options, linkml:relational_role_enum ; - linkml:generation_date "2026-05-05T18:49:36"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:42"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:imports "linkml:annotations"^^xsd:anyURI, "linkml:extensions"^^xsd:anyURI, @@ -429,8 +435,8 @@ refer to the official URI for each construct, e.g. linkml:values_from, linkml:version ; linkml:source_file "meta.yaml" ; - linkml:source_file_date "2026-05-05T16:16:44"^^xsd:dateTime ; - linkml:source_file_size 99888 ; + linkml:source_file_date "2026-08-12T09:39:08"^^xsd:dateTime ; + linkml:source_file_size 101875 ; linkml:subsets linkml:BasicSubset, linkml:MinimalSubset, linkml:ObjectOrientedProfile, @@ -692,7 +698,7 @@ linkml:abbreviation a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/units"^^xsd:anyURI ; skos:mappingRelation qudt:abbreviation ; linkml:definition_uri "https://w3id.org/linkml/abbreviation"^^xsd:anyURI ; - linkml:description "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; + linkml:description "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; linkml:domain_of linkml:UnitOfMeasure ; linkml:imported_from "linkml:units" ; linkml:owner linkml:UnitOfMeasure ; @@ -1285,6 +1291,19 @@ Possible values: linkml:domain linkml:ClassDefinition ; linkml:domain_of linkml:ClassDefinition ; linkml:examples [ a linkml:Example ; + linkml:description """A semantically *invalid* use of `extra_slots`, as extra slots will be forbidden and the +`anonymous_slot_expression` will be ignored. +""" ; + linkml:object [ linkml:allowed false ; + linkml:range_expression [ linkml:range linkml:string ] ] ], + [ a linkml:Example ; + linkml:description "allow additional data if they are either strings or integers" ; + linkml:object [ linkml:range_expression [ linkml:any_of [ linkml:range linkml:integer ], + [ linkml:range linkml:string ] ] ] ], + [ a linkml:Example ; + linkml:description "Allow all additional data" ; + linkml:object [ linkml:allowed true ] ], + [ a linkml:Example ; linkml:description "Allow additional data if they are instances of the class definition \"AClassDefinition\"" ; linkml:object [ linkml:range_expression [ linkml:range linkml:AClassDefinition ] ] ], [ a linkml:Example ; @@ -1296,29 +1315,16 @@ Possible values: [ a linkml:Example ; linkml:description "Forbid any additional data" ; linkml:object [ linkml:allowed false ] ], + [ a linkml:Example ; + linkml:description "Allow additional data that are strings" ; + linkml:object [ linkml:range_expression [ linkml:range linkml:string ] ] ], [ a linkml:Example ; linkml:description """Allow additional data if they are lists of integers of at most length 5. Note that this does *not* mean that a maximum of 5 extra slots are allowed. """ ; linkml:object [ linkml:range_expression [ linkml:maximum_cardinality 5 ; linkml:multivalued true ; - linkml:range linkml:integer ] ] ], - [ a linkml:Example ; - linkml:description "Allow additional data that are strings" ; - linkml:object [ linkml:range_expression [ linkml:range linkml:string ] ] ], - [ a linkml:Example ; - linkml:description """A semantically *invalid* use of `extra_slots`, as extra slots will be forbidden and the -`anonymous_slot_expression` will be ignored. -""" ; - linkml:object [ linkml:allowed false ; - linkml:range_expression [ linkml:range linkml:string ] ] ], - [ a linkml:Example ; - linkml:description "allow additional data if they are either strings or integers" ; - linkml:object [ linkml:range_expression [ linkml:any_of [ linkml:range linkml:integer ], - [ linkml:range linkml:string ] ] ] ], - [ a linkml:Example ; - linkml:description "Allow all additional data" ; - linkml:object [ linkml:allowed true ] ] ; + linkml:range linkml:integer ] ] ] ; linkml:inlined true ; linkml:inlined_as_list true ; linkml:owner linkml:ClassDefinition ; @@ -1413,19 +1419,23 @@ linkml:identifier a linkml:SlotDefinition ; linkml:RelationalModelProfile, linkml:SpecificationSubset ; rdfs:seeAlso "https://en.wikipedia.org/wiki/Identifier"^^xsd:anyURI, + "https://linkml.io/linkml/schemas/constraints.html#unique-keys"^^xsd:anyURI, + "https://linkml.io/linkml/schemas/inlining.html"^^xsd:anyURI, + "linkml:key"^^xsd:anyURI, "linkml:unique_keys"^^xsd:anyURI ; skos:altLabel "ID", "UID", "code", "primary key" ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; - skos:note "a given domain can have at most one identifier", - "a key slot is automatically required. Identifiers cannot be optional", - "identifier is inherited", - "identifiers and keys are mutually exclusive. A given domain cannot have both" ; + skos:note "A domain can have at most one identifier slot OR a key slot. However a domain can have both an identifier slot and any number of compound keys.", + "An identifier slot is automatically required. Identifiers cannot be optional.", + "The identifier slot is inherited.", + "The presence of an identifier slot makes a class eligible for being referenced rather than inlined.", + "The presence of an identifier slot makes a class eligible for inlining as a dictionary." ; sh:order 5 ; linkml:definition_uri "https://w3id.org/linkml/identifier"^^xsd:anyURI ; - linkml:description "True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container" ; + linkml:description "True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document." ; linkml:domain linkml:SlotDefinition ; linkml:domain_of linkml:SlotDefinition ; linkml:inherited true ; @@ -1644,14 +1654,17 @@ linkml:key a linkml:SlotDefinition ; OIO:inSubset linkml:BasicSubset, linkml:RelationalModelProfile, linkml:SpecificationSubset ; - rdfs:seeAlso "linkml:unique_keys"^^xsd:anyURI ; + rdfs:seeAlso "https://linkml.io/linkml/schemas/constraints.html#singular-unique-keys"^^xsd:anyURI, + "https://linkml.io/linkml/schemas/inlining.html"^^xsd:anyURI, + "linkml:identifier"^^xsd:anyURI, + "linkml:unique_keys"^^xsd:anyURI ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; - skos:note "a given domain can have at most one key slot (restriction to be removed in the future)", - "a key slot is automatically required. Keys cannot be optional", - "identifiers and keys are mutually exclusive. A given domain cannot have both", - "key is inherited" ; + skos:note "A domain can have at most one key slot OR one identifier slot. However a domain can have both a key slot and any number of compound keys.", + "A key slot is automatically required. Singular unique keys cannot be optional.", + "The key slot is inherited.", + "The presence of a key slot makes a class eligible for inlining as a dictionary." ; linkml:definition_uri "https://w3id.org/linkml/key"^^xsd:anyURI ; - linkml:description "True means that the key slot(s) uniquely identify the elements within a single container" ; + linkml:description "True means that the slot is the \"singular unique key\" (also known more simply as the \"key slot\") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container." ; linkml:domain linkml:SlotDefinition ; linkml:domain_of linkml:SlotDefinition ; linkml:inherited true ; @@ -1764,9 +1777,9 @@ linkml:maximum_number_dimensions a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; skos:note "maximum_number_dimensions cannot be less than minimum_number_dimensions" ; linkml:any_of [ a linkml:AnonymousSlotExpression ; - linkml:range linkml:boolean ], + linkml:range linkml:integer ], [ a linkml:AnonymousSlotExpression ; - linkml:range linkml:integer ] ; + linkml:range linkml:boolean ] ; linkml:definition_uri "https://w3id.org/linkml/maximum_number_dimensions"^^xsd:anyURI ; linkml:description "maximum number of dimensions in the array, or False if explicitly no maximum. If this is unset, and an explicit list of dimensions are passed using dimensions, then this is interpreted as a closed list and the maximum_number_dimensions is the length of the dimensions list, unless this value is set to False" ; linkml:domain linkml:ArrayExpression ; @@ -2903,11 +2916,15 @@ linkml:unique_keys a linkml:SlotDefinition ; OIO:inSubset linkml:BasicSubset, linkml:RelationalModelProfile, linkml:SpecificationSubset ; - rdfs:seeAlso "https://linkml.io/linkml/schemas/constraints.html#unique-key"^^xsd:anyURI ; + rdfs:seeAlso "https://linkml.io/linkml/schemas/constraints.html#unique-keys"^^xsd:anyURI, + "linkml:identifier"^^xsd:anyURI, + "linkml:key"^^xsd:anyURI ; skos:exactMatch owl:hasKey ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; + skos:note """Not to be confused with a "singular unique key", which is defined by means of the `key` slot, or with an "identifier", which is defined by means of the "identifier" slot. Compound keys, singular unique keys, and identifiers all create a unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have. +""" ; linkml:definition_uri "https://w3id.org/linkml/unique_keys"^^xsd:anyURI ; - linkml:description "A collection of named unique keys for this class. Unique keys may be singular or compound." ; + linkml:description "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; linkml:domain linkml:ClassDefinition ; linkml:domain_of linkml:ClassDefinition ; linkml:inlined true ; @@ -3062,6 +3079,9 @@ linkml:extension_tag a linkml:SlotDefinition ; linkml:extension_value a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; skos:prefLabel "value" ; + linkml:annotations [ a linkml:Annotation ; + skos:example true ; + linkml:tag linkml:simple_dict_value ] ; linkml:definition_uri "https://w3id.org/linkml/extension_value"^^xsd:anyURI ; linkml:description "the actual annotation" ; linkml:domain linkml:Extension ; @@ -3151,20 +3171,6 @@ linkml:ucum_code a linkml:SlotDefinition ; linkml:required true ; linkml:slot_uri "http://qudt.org/schema/qudt/ucumCode"^^xsd:anyURI . -linkml:Annotation a linkml:ClassDefinition ; - skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; - linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; - linkml:definition_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; - linkml:description "a tag/value pair with the semantics of OWL Annotation" ; - linkml:imported_from "linkml:annotations" ; - linkml:is_a linkml:Extension ; - linkml:mixins linkml:Annotatable ; - linkml:slot_usage [ ] ; - linkml:slots linkml:annotations, - linkml:extension_tag, - linkml:extension_value, - linkml:extensions . - linkml:alias a linkml:SlotDefinition ; OIO:inSubset linkml:SpecificationSubset ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; @@ -3670,6 +3676,20 @@ linkml:type_expression_none_of a linkml:SlotDefinition ; linkml:slot_uri "https://w3id.org/linkml/none_of"^^xsd:anyURI ; linkml:usage_slot_name "none_of" . +linkml:Annotation a linkml:ClassDefinition ; + skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; + linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; + linkml:definition_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; + linkml:description "a tag/value pair with the semantics of OWL Annotation" ; + linkml:imported_from "linkml:annotations" ; + linkml:is_a linkml:Extension ; + linkml:mixins linkml:Annotatable ; + linkml:slot_usage [ ] ; + linkml:slots linkml:annotations, + linkml:extension_tag, + linkml:extension_value, + linkml:extensions . + linkml:AnonymousTypeExpression a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:class_uri "https://w3id.org/linkml/AnonymousTypeExpression"^^xsd:anyURI ; @@ -5339,16 +5359,16 @@ linkml:UnitOfMeasure a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/units"^^xsd:anyURI ; skos:mappingRelation qudt:Unit ; linkml:any_of [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:iec61360code ], + linkml:slot_conditions linkml:symbol ], [ a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:exact_mappings ], [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:ucum_code ], + linkml:slot_conditions linkml:iec61360code ], [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:symbol ] ; + linkml:slot_conditions linkml:ucum_code ] ; linkml:class_uri "http://qudt.org/schema/qudt/Unit"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/UnitOfMeasure"^^xsd:anyURI ; - linkml:description "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; + linkml:description "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; linkml:imported_from "linkml:units" ; linkml:slot_usage [ ] ; linkml:slots linkml:UnitOfMeasure_exact_mappings, diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.ttl index c03c2ef55a..29df8b55b2 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/meta.ttl @@ -23,42 +23,48 @@ linkml:meta a linkml:SchemaDefinition ; dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; dcterms:title "LinkML Schema Metamodel" ; - sh:declare [ sh:namespace "https://vocab.org/vann/"^^xsd:anyURI ; + sh:declare [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; + sh:prefix "pav" ], + [ sh:namespace "http://purl.org/linked-data/cube#"^^xsd:anyURI ; + sh:prefix "qb" ], + [ sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ; + sh:prefix "sh" ], + [ sh:namespace "https://vocab.org/vann/"^^xsd:anyURI ; sh:prefix "vann" ], - [ sh:namespace "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#"^^xsd:anyURI ; - sh:prefix "NCIT" ], - [ sh:namespace "http://www.w3.org/2002/07/owl#"^^xsd:anyURI ; - sh:prefix "owl" ], [ sh:namespace "http://www.w3.org/ns/prov#"^^xsd:anyURI ; sh:prefix "prov" ], - [ sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ; - sh:prefix "sh" ], + [ sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ; + sh:prefix "rdfs" ], + [ sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; + sh:prefix "oslc" ], + [ sh:namespace "http://rdf.cdisc.org/mms#"^^xsd:anyURI ; + sh:prefix "cdisc" ], [ sh:namespace "http://purl.org/ontology/bibo/"^^xsd:anyURI ; sh:prefix "bibo" ], + [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; + sh:prefix "skos" ], + [ sh:namespace "http://www.w3.org/2002/07/owl#"^^xsd:anyURI ; + sh:prefix "owl" ], [ sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; sh:prefix "qudt" ], - [ sh:namespace "http://schema.org/"^^xsd:anyURI ; - sh:prefix "schema" ], + [ sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ; + sh:prefix "dcterms" ], [ sh:namespace "http://www.w3.org/2003/11/swrl#"^^xsd:anyURI ; sh:prefix "swrl" ], - [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; - sh:prefix "pav" ], - [ sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; - sh:prefix "oslc" ], - [ sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; - sh:prefix "OIO" ], + [ sh:namespace "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#"^^xsd:anyURI ; + sh:prefix "NCIT" ], + [ sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + sh:prefix "rdf" ], [ sh:namespace "http://semanticscience.org/resource/SIO_"^^xsd:anyURI ; sh:prefix "SIO" ], - [ sh:namespace "http://rdf.cdisc.org/mms#"^^xsd:anyURI ; - sh:prefix "cdisc" ], [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; sh:prefix "linkml" ], - [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; - sh:prefix "skos" ], + [ sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; + sh:prefix "OIO" ], [ sh:namespace "http://www.w3.org/2008/05/skos-xl#"^^xsd:anyURI ; sh:prefix "skosxl" ], - [ sh:namespace "http://purl.org/linked-data/cube#"^^xsd:anyURI ; - sh:prefix "qb" ] ; + [ sh:namespace "http://schema.org/"^^xsd:anyURI ; + sh:prefix "schema" ] ; linkml:classes linkml:AltDescription, linkml:Annotatable, linkml:Annotation, @@ -148,7 +154,7 @@ refer to the official URI for each construct, e.g. linkml:presence_enum, linkml:pv_formula_options, linkml:relational_role_enum ; - linkml:generation_date "2026-05-05T18:49:31"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:36"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:imports "linkml:annotations"^^xsd:anyURI, "linkml:extensions"^^xsd:anyURI, @@ -429,8 +435,8 @@ refer to the official URI for each construct, e.g. linkml:values_from, linkml:version ; linkml:source_file "meta.yaml" ; - linkml:source_file_date "2026-05-05T16:16:44"^^xsd:dateTime ; - linkml:source_file_size 99888 ; + linkml:source_file_date "2026-08-12T09:39:08"^^xsd:dateTime ; + linkml:source_file_size 101875 ; linkml:subsets linkml:BasicSubset, linkml:MinimalSubset, linkml:ObjectOrientedProfile, @@ -692,7 +698,7 @@ linkml:abbreviation a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/units"^^xsd:anyURI ; skos:mappingRelation qudt:abbreviation ; linkml:definition_uri "https://w3id.org/linkml/abbreviation"^^xsd:anyURI ; - linkml:description "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; + linkml:description "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; linkml:domain_of linkml:UnitOfMeasure ; linkml:imported_from "linkml:units" ; linkml:owner linkml:UnitOfMeasure ; @@ -1285,6 +1291,18 @@ Possible values: linkml:domain linkml:ClassDefinition ; linkml:domain_of linkml:ClassDefinition ; linkml:examples [ a linkml:Example ; + linkml:description "Allow additional data that are strings" ; + linkml:object [ linkml:range_expression [ linkml:range linkml:string ] ] ], + [ a linkml:Example ; + linkml:description """Allow additional data if they are integers. +`required` is meaningless in this context and ignored, since by definition all "extra" slots are optional. +""" ; + linkml:object [ linkml:range_expression [ linkml:range linkml:integer ; + linkml:required true ] ] ], + [ a linkml:Example ; + linkml:description "Forbid any additional data" ; + linkml:object [ linkml:allowed false ] ], + [ a linkml:Example ; linkml:description """A semantically *invalid* use of `extra_slots`, as extra slots will be forbidden and the `anonymous_slot_expression` will be ignored. """ ; @@ -1297,28 +1315,16 @@ Note that this does *not* mean that a maximum of 5 extra slots are allowed. linkml:object [ linkml:range_expression [ linkml:maximum_cardinality 5 ; linkml:multivalued true ; linkml:range linkml:integer ] ] ], - [ a linkml:Example ; - linkml:description "Allow additional data that are strings" ; - linkml:object [ linkml:range_expression [ linkml:range linkml:string ] ] ], [ a linkml:Example ; linkml:description "Allow all additional data" ; linkml:object [ linkml:allowed true ] ], - [ a linkml:Example ; - linkml:description "Allow additional data if they are instances of the class definition \"AClassDefinition\"" ; - linkml:object [ linkml:range_expression [ linkml:range linkml:AClassDefinition ] ] ], - [ a linkml:Example ; - linkml:description "Forbid any additional data" ; - linkml:object [ linkml:allowed false ] ], - [ a linkml:Example ; - linkml:description """Allow additional data if they are integers. -`required` is meaningless in this context and ignored, since by definition all "extra" slots are optional. -""" ; - linkml:object [ linkml:range_expression [ linkml:range linkml:integer ; - linkml:required true ] ] ], [ a linkml:Example ; linkml:description "allow additional data if they are either strings or integers" ; linkml:object [ linkml:range_expression [ linkml:any_of [ linkml:range linkml:integer ], - [ linkml:range linkml:string ] ] ] ] ; + [ linkml:range linkml:string ] ] ] ], + [ a linkml:Example ; + linkml:description "Allow additional data if they are instances of the class definition \"AClassDefinition\"" ; + linkml:object [ linkml:range_expression [ linkml:range linkml:AClassDefinition ] ] ] ; linkml:inlined true ; linkml:inlined_as_list true ; linkml:owner linkml:ClassDefinition ; @@ -1413,19 +1419,23 @@ linkml:identifier a linkml:SlotDefinition ; linkml:RelationalModelProfile, linkml:SpecificationSubset ; rdfs:seeAlso "https://en.wikipedia.org/wiki/Identifier"^^xsd:anyURI, + "https://linkml.io/linkml/schemas/constraints.html#unique-keys"^^xsd:anyURI, + "https://linkml.io/linkml/schemas/inlining.html"^^xsd:anyURI, + "linkml:key"^^xsd:anyURI, "linkml:unique_keys"^^xsd:anyURI ; skos:altLabel "ID", "UID", "code", "primary key" ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; - skos:note "a given domain can have at most one identifier", - "a key slot is automatically required. Identifiers cannot be optional", - "identifier is inherited", - "identifiers and keys are mutually exclusive. A given domain cannot have both" ; + skos:note "A domain can have at most one identifier slot OR a key slot. However a domain can have both an identifier slot and any number of compound keys.", + "An identifier slot is automatically required. Identifiers cannot be optional.", + "The identifier slot is inherited.", + "The presence of an identifier slot makes a class eligible for being referenced rather than inlined.", + "The presence of an identifier slot makes a class eligible for inlining as a dictionary." ; sh:order 5 ; linkml:definition_uri "https://w3id.org/linkml/identifier"^^xsd:anyURI ; - linkml:description "True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container" ; + linkml:description "True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document." ; linkml:domain linkml:SlotDefinition ; linkml:domain_of linkml:SlotDefinition ; linkml:inherited true ; @@ -1644,14 +1654,17 @@ linkml:key a linkml:SlotDefinition ; OIO:inSubset linkml:BasicSubset, linkml:RelationalModelProfile, linkml:SpecificationSubset ; - rdfs:seeAlso "linkml:unique_keys"^^xsd:anyURI ; + rdfs:seeAlso "https://linkml.io/linkml/schemas/constraints.html#singular-unique-keys"^^xsd:anyURI, + "https://linkml.io/linkml/schemas/inlining.html"^^xsd:anyURI, + "linkml:identifier"^^xsd:anyURI, + "linkml:unique_keys"^^xsd:anyURI ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; - skos:note "a given domain can have at most one key slot (restriction to be removed in the future)", - "a key slot is automatically required. Keys cannot be optional", - "identifiers and keys are mutually exclusive. A given domain cannot have both", - "key is inherited" ; + skos:note "A domain can have at most one key slot OR one identifier slot. However a domain can have both a key slot and any number of compound keys.", + "A key slot is automatically required. Singular unique keys cannot be optional.", + "The key slot is inherited.", + "The presence of a key slot makes a class eligible for inlining as a dictionary." ; linkml:definition_uri "https://w3id.org/linkml/key"^^xsd:anyURI ; - linkml:description "True means that the key slot(s) uniquely identify the elements within a single container" ; + linkml:description "True means that the slot is the \"singular unique key\" (also known more simply as the \"key slot\") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container." ; linkml:domain linkml:SlotDefinition ; linkml:domain_of linkml:SlotDefinition ; linkml:inherited true ; @@ -2903,11 +2916,15 @@ linkml:unique_keys a linkml:SlotDefinition ; OIO:inSubset linkml:BasicSubset, linkml:RelationalModelProfile, linkml:SpecificationSubset ; - rdfs:seeAlso "https://linkml.io/linkml/schemas/constraints.html#unique-key"^^xsd:anyURI ; + rdfs:seeAlso "https://linkml.io/linkml/schemas/constraints.html#unique-keys"^^xsd:anyURI, + "linkml:identifier"^^xsd:anyURI, + "linkml:key"^^xsd:anyURI ; skos:exactMatch owl:hasKey ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; + skos:note """Not to be confused with a "singular unique key", which is defined by means of the `key` slot, or with an "identifier", which is defined by means of the "identifier" slot. Compound keys, singular unique keys, and identifiers all create a unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have. +""" ; linkml:definition_uri "https://w3id.org/linkml/unique_keys"^^xsd:anyURI ; - linkml:description "A collection of named unique keys for this class. Unique keys may be singular or compound." ; + linkml:description "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; linkml:domain linkml:ClassDefinition ; linkml:domain_of linkml:ClassDefinition ; linkml:inlined true ; @@ -3062,6 +3079,9 @@ linkml:extension_tag a linkml:SlotDefinition ; linkml:extension_value a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; skos:prefLabel "value" ; + linkml:annotations [ a linkml:Annotation ; + skos:example true ; + linkml:tag linkml:simple_dict_value ] ; linkml:definition_uri "https://w3id.org/linkml/extension_value"^^xsd:anyURI ; linkml:description "the actual annotation" ; linkml:domain linkml:Extension ; @@ -3151,20 +3171,6 @@ linkml:ucum_code a linkml:SlotDefinition ; linkml:required true ; linkml:slot_uri "http://qudt.org/schema/qudt/ucumCode"^^xsd:anyURI . -linkml:Annotation a linkml:ClassDefinition ; - skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; - linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; - linkml:definition_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; - linkml:description "a tag/value pair with the semantics of OWL Annotation" ; - linkml:imported_from "linkml:annotations" ; - linkml:is_a linkml:Extension ; - linkml:mixins linkml:Annotatable ; - linkml:slot_usage [ ] ; - linkml:slots linkml:annotations, - linkml:extension_tag, - linkml:extension_value, - linkml:extensions . - linkml:alias a linkml:SlotDefinition ; OIO:inSubset linkml:SpecificationSubset ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; @@ -3670,6 +3676,20 @@ linkml:type_expression_none_of a linkml:SlotDefinition ; linkml:slot_uri "https://w3id.org/linkml/none_of"^^xsd:anyURI ; linkml:usage_slot_name "none_of" . +linkml:Annotation a linkml:ClassDefinition ; + skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; + linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; + linkml:definition_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; + linkml:description "a tag/value pair with the semantics of OWL Annotation" ; + linkml:imported_from "linkml:annotations" ; + linkml:is_a linkml:Extension ; + linkml:mixins linkml:Annotatable ; + linkml:slot_usage [ ] ; + linkml:slots linkml:annotations, + linkml:extension_tag, + linkml:extension_value, + linkml:extensions . + linkml:AnonymousTypeExpression a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:class_uri "https://w3id.org/linkml/AnonymousTypeExpression"^^xsd:anyURI ; @@ -5340,15 +5360,15 @@ linkml:UnitOfMeasure a linkml:ClassDefinition ; skos:mappingRelation qudt:Unit ; linkml:any_of [ a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:symbol ], - [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:iec61360code ], [ a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:exact_mappings ], + [ a linkml:AnonymousClassExpression ; + linkml:slot_conditions linkml:iec61360code ], [ a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:ucum_code ] ; linkml:class_uri "http://qudt.org/schema/qudt/Unit"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/UnitOfMeasure"^^xsd:anyURI ; - linkml:description "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; + linkml:description "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; linkml:imported_from "linkml:units" ; linkml:slot_usage [ ] ; linkml:slots linkml:UnitOfMeasure_exact_mappings, diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.model.ttl index 5f36a341d0..c1eea00939 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.model.ttl @@ -9,18 +9,18 @@ linkml:types a linkml:SchemaDefinition ; dcterms:title "Core LinkML metamodel types" ; sh:declare [ sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ; sh:prefix "xsd" ], - [ sh:namespace "http://www.w3.org/ns/shex#"^^xsd:anyURI ; - sh:prefix "shex" ], [ sh:namespace "http://schema.org/"^^xsd:anyURI ; sh:prefix "schema" ], [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; - sh:prefix "linkml" ] ; + sh:prefix "linkml" ], + [ sh:namespace "http://www.w3.org/ns/shex#"^^xsd:anyURI ; + sh:prefix "shex" ] ; linkml:default_prefix "linkml" ; linkml:default_range linkml:string ; linkml:description "Shared type definitions for the core LinkML mode and metamodel" ; - linkml:generation_date "2026-05-05T18:49:42"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:50"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:source_file "types.yaml" ; linkml:source_file_date "2026-05-05T18:15:59"^^xsd:dateTime ; linkml:source_file_size 7296 ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.ttl index f89c2df4e3..924463d185 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/types.ttl @@ -7,20 +7,20 @@ linkml:types a linkml:SchemaDefinition ; dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; dcterms:title "Core LinkML metamodel types" ; - sh:declare [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; - sh:prefix "linkml" ], + sh:declare [ sh:namespace "http://www.w3.org/ns/shex#"^^xsd:anyURI ; + sh:prefix "shex" ], [ sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ; sh:prefix "xsd" ], + [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; + sh:prefix "linkml" ], [ sh:namespace "http://schema.org/"^^xsd:anyURI ; - sh:prefix "schema" ], - [ sh:namespace "http://www.w3.org/ns/shex#"^^xsd:anyURI ; - sh:prefix "shex" ] ; + sh:prefix "schema" ] ; linkml:default_prefix "linkml" ; linkml:default_range linkml:string ; linkml:description "Shared type definitions for the core LinkML mode and metamodel" ; - linkml:generation_date "2026-05-05T18:49:41"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:49"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:source_file "types.yaml" ; linkml:source_file_date "2026-05-05T18:15:59"^^xsd:dateTime ; linkml:source_file_size 7296 ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.model.ttl index a00562bd30..03460c1a46 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.model.ttl @@ -10,10 +10,12 @@ linkml:units a linkml:SchemaDefinition ; dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; - sh:declare [ sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; + sh:declare [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; + sh:prefix "linkml" ], + [ sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; sh:prefix "qudt" ], - [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; - sh:prefix "linkml" ] ; + [ sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ; + sh:prefix "rdfs" ] ; linkml:classes linkml:Annotatable, linkml:Annotation, linkml:AnyValue, @@ -30,13 +32,13 @@ linkml:units a linkml:SchemaDefinition ; "rdfs", "skos", "xsd" ; - linkml:generation_date "2026-05-05T18:49:46"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:55"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/units"^^xsd:anyURI ; linkml:imports "linkml:annotations"^^xsd:anyURI, "linkml:extensions"^^xsd:anyURI, "linkml:mappings"^^xsd:anyURI, "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:slots linkml:UnitOfMeasure_exact_mappings, linkml:abbreviation, linkml:annotations, @@ -59,8 +61,8 @@ linkml:units a linkml:SchemaDefinition ; linkml:ucum_code, linkml:unit ; linkml:source_file "units.yaml" ; - linkml:source_file_date "2026-05-05T18:16:00"^^xsd:dateTime ; - linkml:source_file_size 2801 ; + linkml:source_file_date "2026-08-12T09:36:51"^^xsd:dateTime ; + linkml:source_file_size 2847 ; linkml:types linkml:boolean, linkml:curie, linkml:date, @@ -451,6 +453,9 @@ linkml:extension_tag a linkml:SlotDefinition ; linkml:extension_value a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; skos:prefLabel "value" ; + linkml:annotations [ a linkml:Annotation ; + skos:example true ; + linkml:tag linkml:simple_dict_value ] ; linkml:definition_uri "https://w3id.org/linkml/extension_value"^^xsd:anyURI ; linkml:description "the actual annotation" ; linkml:domain linkml:Extension ; @@ -507,6 +512,16 @@ linkml:Annotatable a linkml:ClassDefinition ; linkml:slot_usage [ ] ; linkml:slots linkml:annotations . +linkml:Extensible a linkml:ClassDefinition ; + skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; + linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:description "mixin for classes that support extension" ; + linkml:imported_from "linkml:extensions" ; + linkml:mixin true ; + linkml:slot_usage [ ] ; + linkml:slots linkml:extensions . + linkml:Annotation a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; @@ -521,16 +536,6 @@ linkml:Annotation a linkml:ClassDefinition ; linkml:extension_value, linkml:extensions . -linkml:Extensible a linkml:ClassDefinition ; - skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; - linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:description "mixin for classes that support extension" ; - linkml:imported_from "linkml:extensions" ; - linkml:mixin true ; - linkml:slot_usage [ ] ; - linkml:slots linkml:extensions . - linkml:extensions a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/extensions"^^xsd:anyURI ; @@ -594,13 +599,13 @@ linkml:UnitOfMeasure a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/units"^^xsd:anyURI ; skos:mappingRelation qudt:Unit ; linkml:any_of [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:symbol ], - [ a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:iec61360code ], [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:exact_mappings ], + linkml:slot_conditions linkml:ucum_code ], + [ a linkml:AnonymousClassExpression ; + linkml:slot_conditions linkml:symbol ], [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:ucum_code ] ; + linkml:slot_conditions linkml:exact_mappings ] ; linkml:class_uri "http://qudt.org/schema/qudt/Unit"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/UnitOfMeasure"^^xsd:anyURI ; linkml:description "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.ttl index cfc88dbaf8..e0de946fa1 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/units.ttl @@ -10,10 +10,12 @@ linkml:units a linkml:SchemaDefinition ; dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; - sh:declare [ sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; + sh:declare [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; + sh:prefix "linkml" ], + [ sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; sh:prefix "qudt" ], - [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; - sh:prefix "linkml" ] ; + [ sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ; + sh:prefix "rdfs" ] ; linkml:classes linkml:Annotatable, linkml:Annotation, linkml:AnyValue, @@ -30,13 +32,13 @@ linkml:units a linkml:SchemaDefinition ; "rdfs", "skos", "xsd" ; - linkml:generation_date "2026-05-05T18:49:43"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:42:51"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/units"^^xsd:anyURI ; linkml:imports "linkml:annotations"^^xsd:anyURI, "linkml:extensions"^^xsd:anyURI, "linkml:mappings"^^xsd:anyURI, "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:slots linkml:UnitOfMeasure_exact_mappings, linkml:abbreviation, linkml:annotations, @@ -59,8 +61,8 @@ linkml:units a linkml:SchemaDefinition ; linkml:ucum_code, linkml:unit ; linkml:source_file "units.yaml" ; - linkml:source_file_date "2026-05-05T18:16:00"^^xsd:dateTime ; - linkml:source_file_size 2801 ; + linkml:source_file_date "2026-08-12T09:36:51"^^xsd:dateTime ; + linkml:source_file_size 2847 ; linkml:types linkml:boolean, linkml:curie, linkml:date, @@ -451,6 +453,9 @@ linkml:extension_tag a linkml:SlotDefinition ; linkml:extension_value a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; skos:prefLabel "value" ; + linkml:annotations [ a linkml:Annotation ; + skos:example true ; + linkml:tag linkml:simple_dict_value ] ; linkml:definition_uri "https://w3id.org/linkml/extension_value"^^xsd:anyURI ; linkml:description "the actual annotation" ; linkml:domain linkml:Extension ; @@ -507,6 +512,16 @@ linkml:Annotatable a linkml:ClassDefinition ; linkml:slot_usage [ ] ; linkml:slots linkml:annotations . +linkml:Extensible a linkml:ClassDefinition ; + skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; + linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; + linkml:description "mixin for classes that support extension" ; + linkml:imported_from "linkml:extensions" ; + linkml:mixin true ; + linkml:slot_usage [ ] ; + linkml:slots linkml:extensions . + linkml:Annotation a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/annotations"^^xsd:anyURI ; linkml:class_uri "https://w3id.org/linkml/Annotation"^^xsd:anyURI ; @@ -521,16 +536,6 @@ linkml:Annotation a linkml:ClassDefinition ; linkml:extension_value, linkml:extensions . -linkml:Extensible a linkml:ClassDefinition ; - skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; - linkml:class_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:definition_uri "https://w3id.org/linkml/Extensible"^^xsd:anyURI ; - linkml:description "mixin for classes that support extension" ; - linkml:imported_from "linkml:extensions" ; - linkml:mixin true ; - linkml:slot_usage [ ] ; - linkml:slots linkml:extensions . - linkml:extensions a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/extensions"^^xsd:anyURI ; @@ -594,9 +599,9 @@ linkml:UnitOfMeasure a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/units"^^xsd:anyURI ; skos:mappingRelation qudt:Unit ; linkml:any_of [ a linkml:AnonymousClassExpression ; - linkml:slot_conditions linkml:symbol ], - [ a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:exact_mappings ], + [ a linkml:AnonymousClassExpression ; + linkml:slot_conditions linkml:symbol ], [ a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:iec61360code ], [ a linkml:AnonymousClassExpression ; diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.model.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.model.ttl index c76acee0ec..49dbf4754c 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.model.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.model.ttl @@ -7,18 +7,18 @@ linkml:reporting a linkml:SchemaDefinition ; dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; dcterms:title "LinkML Report Metamodel" ; - sh:declare [ sh:namespace "https://w3id.org/shacl/"^^xsd:anyURI ; - sh:prefix "sh" ], + sh:declare [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; + sh:prefix "pav" ], [ sh:namespace "https://w3id.org/linkml/report"^^xsd:anyURI ; sh:prefix "reporting" ], - [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; - sh:prefix "skos" ], [ sh:namespace "http://schema.org/"^^xsd:anyURI ; sh:prefix "schema" ], + [ sh:namespace "https://w3id.org/shacl/"^^xsd:anyURI ; + sh:prefix "sh" ], [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; sh:prefix "linkml" ], - [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; - sh:prefix "pav" ] ; + [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; + sh:prefix "skos" ] ; linkml:classes linkml:ValidationReport, linkml:ValidationResult ; linkml:default_curi_maps "semweb_context" ; @@ -32,10 +32,10 @@ linkml:reporting a linkml:SchemaDefinition ; "xsd" ; linkml:enums linkml:problem_type, linkml:severity_options ; - linkml:generation_date "2026-05-05T18:49:52"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:43:04"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/reporting"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:slots linkml:info, linkml:instantiates, linkml:node_source, diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.ttl index 8457c3fc80..226c5a6871 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/rdf/validation.ttl @@ -7,16 +7,16 @@ linkml:reporting a linkml:SchemaDefinition ; dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; dcterms:title "LinkML Report Metamodel" ; - sh:declare [ sh:namespace "https://w3id.org/shacl/"^^xsd:anyURI ; - sh:prefix "sh" ], + sh:declare [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; + sh:prefix "pav" ], [ sh:namespace "http://schema.org/"^^xsd:anyURI ; sh:prefix "schema" ], [ sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; sh:prefix "linkml" ], [ sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; sh:prefix "skos" ], - [ sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; - sh:prefix "pav" ], + [ sh:namespace "https://w3id.org/shacl/"^^xsd:anyURI ; + sh:prefix "sh" ], [ sh:namespace "https://w3id.org/linkml/report"^^xsd:anyURI ; sh:prefix "reporting" ] ; linkml:classes linkml:ValidationReport, @@ -32,10 +32,10 @@ linkml:reporting a linkml:SchemaDefinition ; "xsd" ; linkml:enums linkml:problem_type, linkml:severity_options ; - linkml:generation_date "2026-05-05T18:49:50"^^xsd:dateTime ; + linkml:generation_date "2026-08-12T09:43:01"^^xsd:dateTime ; linkml:id "https://w3id.org/linkml/reporting"^^xsd:anyURI ; linkml:imports "linkml:types"^^xsd:anyURI ; - linkml:metamodel_version "1.7.0" ; + linkml:metamodel_version "1.11.0" ; linkml:slots linkml:info, linkml:instantiates, linkml:node_source, diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/shacl/meta.shacl.ttl b/packages/linkml_runtime/src/linkml_runtime/linkml_model/shacl/meta.shacl.ttl index 418d285830..e2ba96ec4e 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/shacl/meta.shacl.ttl +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/shacl/meta.shacl.ttl @@ -28,181 +28,181 @@ linkml:Annotatable a sh:NodeShape ; linkml:AnonymousExpression a sh:NodeShape ; rdfs:comment "An abstract parent class for any nested expression" ; sh:closed false ; - sh:ignoredProperties ( linkml:exact_cardinality linkml:array linkml:none_of linkml:implicit_prefix linkml:is_a linkml:slot_conditions linkml:minimum_cardinality linkml:any_of linkml:has_member linkml:range_expression linkml:pattern linkml:inlined_as_list linkml:structured_pattern rdf:type linkml:minimum_value linkml:exactly_one_of linkml:inlined linkml:value_presence linkml:equals_expression linkml:all_members linkml:maximum_cardinality linkml:enum_range linkml:maximum_value linkml:equals_string_in linkml:all_of linkml:equals_number linkml:range linkml:multivalued qudt:unit linkml:required linkml:equals_string linkml:bindings linkml:recommended ) ; - sh:property [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 22 ; - sh:path skos:closeMatch ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path sh:order ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:narrowMatch ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path skos:editorialNote ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path bibo:status ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:ignoredProperties ( linkml:inlined linkml:structured_pattern linkml:none_of rdf:type linkml:pattern linkml:maximum_value linkml:exactly_one_of linkml:value_presence linkml:equals_expression linkml:required linkml:all_members linkml:inlined_as_list linkml:equals_string linkml:minimum_cardinality linkml:all_of linkml:bindings linkml:is_a linkml:multivalued linkml:slot_conditions linkml:range linkml:exact_cardinality linkml:range_expression qudt:unit linkml:enum_range linkml:equals_string_in linkml:array linkml:maximum_cardinality linkml:minimum_value linkml:recommended linkml:has_member linkml:implicit_prefix linkml:equals_number linkml:any_of ) ; + sh:property [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:broadMatch ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path schema1:inLanguage ], + sh:order 16 ; + sh:path linkml:deprecated_element_has_exact_replacement ], [ sh:datatype xsd:string ; sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 12 ; sh:path linkml:imported_from ], - [ sh:description "id of the schema that defined the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 11 ; - sh:path skos:inScheme ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path skos:note ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path schema1:keywords ], - [ sh:description "agent that created the element" ; + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path pav:createdBy ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path linkml:todos ], + sh:order 30 ; + sh:path oslc:modifiedBy ], [ sh:class linkml:Extension ; sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path linkml:extensions ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 19 ; - sh:path skosxl:altLabel ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path oslc:modifiedBy ], + sh:order 15 ; + sh:path rdfs:seeAlso ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path skos:definition ], [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; sh:order 33 ; sh:path dcterms:subject ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 29 ; - sh:path pav:lastUpdatedOn ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path dcterms:title ], - [ sh:description "A related resource from which the element is derived." ; + sh:nodeKind sh:IRI ; + sh:order 11 ; + sh:path skos:inScheme ], + [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path dcterms:source ], + sh:order 31 ; + sh:path bibo:status ], [ sh:datatype xsd:string ; sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path linkml:deprecated ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path skos:relatedMatch ], + sh:order 22 ; + sh:path skos:closeMatch ], [ sh:class linkml:Example ; sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path linkml:examples ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 15 ; - sh:path rdfs:seeAlso ], + sh:order 24 ; + sh:path skos:narrowMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 20 ; + sh:path skos:mappingRelation ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 28 ; + sh:path pav:createdOn ], [ sh:datatype xsd:string ; sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; sh:order 18 ; sh:path skos:altLabel ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path skos:exactMatch ], + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 34 ; + sh:path schema1:keywords ], [ sh:class linkml:AltDescription ; sh:description "A sourced alternative description for an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml:alt_descriptions ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path OIO:inSubset ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:order 17 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path sh:order ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 20 ; - sh:path skos:mappingRelation ], + sh:order 25 ; + sh:path skos:broadMatch ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:annotations ], + [ sh:datatype xsd:string ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path skos:note ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path skos:editorialNote ], [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; sh:order 27 ; sh:path dcterms:contributor ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path linkml:todos ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path skos:definition ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:order 14 ; + sh:path schema1:inLanguage ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 29 ; + sh:path pav:lastUpdatedOn ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 10 ; + sh:path OIO:inSubset ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:annotations ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:order 19 ; + sh:path skosxl:altLabel ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:order 13 ; + sh:path dcterms:source ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 23 ; + sh:path skos:relatedMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 21 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 28 ; - sh:path pav:createdOn ] ; + sh:order 4 ; + sh:path dcterms:title ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path pav:createdBy ] ; sh:targetClass linkml:AnonymousExpression . linkml:Any a sh:NodeShape ; @@ -216,212 +216,212 @@ linkml:ClassExpression a sh:NodeShape ; sh:closed false ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if at least one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml:any_of ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if all of the expressions hold" ; + sh:description "holds if only one of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:all_of ], + sh:order 1 ; + sh:path linkml:exactly_one_of ], [ sh:class linkml:AnonymousClassExpression ; sh:description "holds if none of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path linkml:none_of ], [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if only one of the expressions hold" ; + sh:description "holds if all of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:exactly_one_of ], + sh:order 3 ; + sh:path linkml:all_of ], [ sh:class linkml:SlotDefinition ; sh:description "expresses constraints on a group of slots for a class expression" ; sh:nodeKind sh:IRI ; sh:order 4 ; - sh:path linkml:slot_conditions ] ; + sh:path linkml:slot_conditions ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml:any_of ] ; sh:targetClass linkml:ClassExpression . linkml:ClassLevelRule a sh:NodeShape ; rdfs:comment "A rule that is applied to classes" ; sh:closed false ; - sh:ignoredProperties ( pav:createdOn linkml:extensions sh:deactivated OIO:inSubset linkml:todos skosxl:altLabel linkml:deprecated linkml:alt_descriptions dcterms:title rdfs:seeAlso skos:closeMatch skos:definition skos:broadMatch dcterms:source linkml:imported_from schema1:inLanguage skos:relatedMatch schema1:keywords rdf:type linkml:elseconditions linkml:examples skos:narrowMatch linkml:annotations linkml:open_world dcterms:contributor sh:condition oslc:modifiedBy skos:inScheme linkml:bidirectional pav:createdBy linkml:deprecated_element_has_exact_replacement linkml:postconditions skos:mappingRelation linkml:deprecated_element_has_possible_replacement bibo:status skos:editorialNote skos:note skos:altLabel pav:lastUpdatedOn sh:order dcterms:subject skos:exactMatch ) ; + sh:ignoredProperties ( skos:closeMatch dcterms:contributor pav:createdBy dcterms:subject rdf:type schema1:inLanguage linkml:examples OIO:inSubset linkml:bidirectional bibo:status linkml:alt_descriptions skos:editorialNote linkml:todos skos:relatedMatch linkml:deprecated linkml:postconditions dcterms:source skos:narrowMatch linkml:deprecated_element_has_exact_replacement oslc:modifiedBy skos:exactMatch skos:broadMatch sh:condition rdfs:seeAlso sh:order linkml:extensions skos:note linkml:deprecated_element_has_possible_replacement linkml:imported_from sh:deactivated pav:lastUpdatedOn skos:inScheme pav:createdOn skos:definition linkml:annotations skosxl:altLabel schema1:keywords skos:mappingRelation linkml:open_world linkml:elseconditions dcterms:title skos:altLabel ) ; sh:targetClass linkml:ClassLevelRule . linkml:CommonMetadata a sh:NodeShape ; rdfs:comment "Generic metadata shared across definitions" ; sh:closed false ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:property [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 26 ; - sh:path pav:createdOn ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path oslc:modifiedBy ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path skos:altLabel ], + sh:order 3 ; + sh:path linkml:deprecated ], [ sh:datatype xsd:string ; sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 2 ; sh:path dcterms:title ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path linkml:imported_from ], + [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; - sh:order 22 ; - sh:path skos:narrowMatch ], + sh:order 25 ; + sh:path dcterms:contributor ], [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 14 ; sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path skos:editorialNote ], - [ sh:description "status of the element" ; + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 30 ; + sh:path sh:order ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path bibo:status ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:order 20 ; + sh:path skos:closeMatch ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 27 ; - sh:path pav:lastUpdatedOn ], + sh:order 12 ; + sh:path schema1:inLanguage ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:alt_descriptions ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 21 ; + sh:path skos:relatedMatch ], [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; sh:order 19 ; sh:path skos:exactMatch ], - [ sh:description "id of the schema that defined the element" ; + [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path skos:inScheme ], - [ sh:description "agent that contributed to the element" ; + sh:order 29 ; + sh:path bibo:status ], + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path dcterms:contributor ], + sh:order 28 ; + sh:path oslc:modifiedBy ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 11 ; + sh:path dcterms:source ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; sh:order 8 ; sh:path OIO:inSubset ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path skos:relatedMatch ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path linkml:deprecated ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 20 ; - sh:path skos:closeMatch ], [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 15 ; sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path linkml:imported_from ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:order 27 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path rdfs:seeAlso ], + sh:order 9 ; + sh:path skos:inScheme ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 18 ; + sh:path skos:mappingRelation ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 22 ; + sh:path skos:narrowMatch ], [ sh:datatype xsd:string ; sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; sh:order 4 ; sh:path linkml:todos ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path dcterms:subject ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 30 ; - sh:path sh:order ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path schema1:inLanguage ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:alt_descriptions ], + sh:order 5 ; + sh:path skos:editorialNote ], [ sh:class linkml:Example ; sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; sh:path linkml:examples ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 17 ; - sh:path skosxl:altLabel ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 13 ; + sh:path rdfs:seeAlso ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 26 ; + sh:path pav:createdOn ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path pav:createdBy ], [ sh:datatype xsd:string ; sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; sh:order 6 ; sh:path skos:note ], - [ sh:description "A related resource from which the element is derived." ; + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path skos:definition ], + [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; - sh:order 11 ; - sh:path dcterms:source ], + sh:order 31 ; + sh:path dcterms:subject ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 17 ; + sh:path skosxl:altLabel ], [ sh:datatype xsd:string ; sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; sh:order 32 ; sh:path schema1:keywords ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path skos:broadMatch ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path pav:createdBy ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path skos:definition ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:order 16 ; + sh:path skos:altLabel ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 18 ; - sh:path skos:mappingRelation ] ; + sh:order 23 ; + sh:path skos:broadMatch ] ; sh:targetClass linkml:CommonMetadata . linkml:Expression a sh:NodeShape ; rdfs:comment "general mixin for any class that can represent some form of expression" ; sh:closed false ; - sh:ignoredProperties ( linkml:exact_cardinality linkml:array linkml:none_of linkml:implicit_prefix linkml:include linkml:minimum_cardinality linkml:inherits linkml:any_of linkml:minus linkml:has_member linkml:pv_formula linkml:range_expression linkml:pattern linkml:inlined_as_list linkml:structured_pattern rdf:type linkml:minimum_value linkml:exactly_one_of linkml:inlined linkml:value_presence linkml:code_set_tag linkml:equals_expression linkml:all_members linkml:code_set_version linkml:maximum_cardinality linkml:enum_range linkml:maximum_value linkml:equals_string_in linkml:code_set linkml:all_of linkml:equals_number linkml:permissible_values linkml:range linkml:reachable_from linkml:multivalued linkml:matches qudt:unit linkml:required linkml:equals_string linkml:bindings linkml:concepts linkml:recommended ) ; + sh:ignoredProperties ( linkml:inlined linkml:structured_pattern linkml:none_of rdf:type linkml:inherits linkml:pattern linkml:maximum_value linkml:exactly_one_of linkml:matches linkml:value_presence linkml:equals_expression linkml:required linkml:pv_formula linkml:include linkml:all_members linkml:equals_string linkml:inlined_as_list linkml:concepts linkml:minimum_cardinality linkml:all_of linkml:bindings linkml:multivalued linkml:code_set_tag linkml:minus linkml:range linkml:exact_cardinality linkml:range_expression linkml:code_set_version qudt:unit linkml:enum_range linkml:equals_string_in linkml:array linkml:permissible_values linkml:maximum_cardinality linkml:minimum_value linkml:reachable_from linkml:code_set linkml:recommended linkml:has_member linkml:implicit_prefix linkml:equals_number linkml:any_of ) ; sh:targetClass linkml:Expression . linkml:Extensible a sh:NodeShape ; @@ -439,67 +439,74 @@ linkml:ImportExpression a sh:NodeShape ; rdfs:comment "an expression describing an import" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 31 ; - sh:path pav:createdOn ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 12 ; - sh:path linkml:examples ], - [ sh:maxCount 1 ; + sh:property [ sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml:import_from ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 36 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path dcterms:title ], - [ sh:class linkml:Setting ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml:import_map ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:extensions ], - [ sh:description "agent that modified the element" ; + sh:order 17 ; + sh:path schema1:inLanguage ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 13 ; + sh:path OIO:inSubset ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path oslc:modifiedBy ], + sh:order 16 ; + sh:path dcterms:source ], [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path linkml:import_as ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path skos:note ], + sh:order 7 ; + sh:path dcterms:title ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path pav:createdBy ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:narrowMatch ], [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 19 ; sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:description "Controlled terms used to categorize an element." ; + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 36 ; - sh:path dcterms:subject ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path sh:order ], + sh:order 28 ; + sh:path skos:broadMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path skos:closeMatch ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 31 ; + sh:path pav:createdOn ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 14 ; + sh:path skos:inScheme ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path skos:exactMatch ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was last updated" ; sh:maxCount 1 ; @@ -507,292 +514,317 @@ linkml:ImportExpression a sh:NodeShape ; sh:order 32 ; sh:path pav:lastUpdatedOn ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 21 ; + sh:path skos:altLabel ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path schema1:inLanguage ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path dcterms:contributor ], - [ sh:description "agent that created the element" ; + sh:order 35 ; + sh:path sh:order ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path pav:createdBy ], + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path linkml:deprecated ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 22 ; + sh:path skosxl:altLabel ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path skos:definition ], + [ sh:class linkml:Setting ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml:import_map ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml:extensions ], + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 37 ; + sh:path schema1:keywords ], [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; sh:order 26 ; sh:path skos:relatedMatch ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 20 ; + sh:path linkml:deprecated_element_has_possible_replacement ], [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path skos:altLabel ], + sh:order 1 ; + sh:path linkml:import_as ], [ sh:datatype xsd:string ; sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; sh:order 10 ; sh:path skos:editorialNote ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:narrowMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:exactMatch ], - [ sh:description "A related resource from which the element is derived." ; + [ sh:datatype xsd:string ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path skos:note ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path dcterms:source ], + sh:order 33 ; + sh:path oslc:modifiedBy ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml:alt_descriptions ], [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; sh:order 23 ; sh:path skos:mappingRelation ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:broadMatch ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path bibo:status ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 22 ; - sh:path skosxl:altLabel ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:closeMatch ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path schema1:keywords ], [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; sh:order 18 ; sh:path rdfs:seeAlso ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path OIO:inSubset ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:alt_descriptions ], + sh:order 12 ; + sh:path linkml:examples ], [ sh:datatype xsd:string ; sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; sh:order 9 ; sh:path linkml:todos ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:deprecated ], - [ sh:description "id of the schema that defined the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 14 ; - sh:path skos:inScheme ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 20 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path skos:definition ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml:annotations ], [ sh:datatype xsd:string ; sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 15 ; sh:path linkml:imported_from ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:annotations ] ; + [ sh:description "status of the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 34 ; + sh:path bibo:status ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path dcterms:contributor ] ; sh:targetClass linkml:ImportExpression . linkml:SchemaDefinition a sh:NodeShape ; rdfs:comment "A collection of definitions that make up a schema or a data model." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:boolean ; - sh:description "if true then induced/mangled slot names are not created for class_usage and attributes" ; - sh:maxCount 1 ; + sh:property [ sh:datatype xsd:string ; + sh:description "ordered list of prefixcommon biocontexts to be fetched to resolve id prefixes and inline prefix variables" ; sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path linkml:slot_names_unique ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:order 6 ; + sh:path linkml:default_curi_maps ], + [ sh:description "status of the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 53 ; - sh:path skos:relatedMatch ], + sh:order 61 ; + sh:path bibo:status ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 46 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:datatype xsd:string ; + sh:defaultValue "default_ns"^^xsd:string ; + sh:description "The prefix that is used for all elements within a schema" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path linkml:default_prefix ], [ sh:datatype xsd:string ; sh:description "Version of the metamodel used to load the schema" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 14 ; sh:path linkml:metamodel_version ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 49 ; - sh:path skosxl:altLabel ], [ sh:datatype xsd:string ; - sh:description "a unique name for the schema that is both human-readable and consists of only characters from the NCName set" ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path rdfs:label ], + sh:order 42 ; + sh:path linkml:imported_from ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 56 ; + sh:path pav:createdBy ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 55 ; + sh:path skos:broadMatch ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 63 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:description "license for the schema" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path skos:definition ], + sh:order 3 ; + sh:path dcterms:license ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; + sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path linkml:deprecated ], + sh:order 23 ; + sh:path linkml:id_prefixes ], [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:description "the primary language used in the sources" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 48 ; - sh:path skos:altLabel ], + sh:order 44 ; + sh:path schema1:inLanguage ], [ sh:description "An element in another schema which this element instantiates." ; sh:nodeKind sh:IRI ; sh:order 29 ; sh:path linkml:instantiates ], [ sh:datatype xsd:string ; - sh:description "ordered list of prefixcommon biocontexts to be fetched to resolve id prefixes and inline prefix variables" ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path linkml:default_curi_maps ], - [ sh:class linkml:ClassDefinition ; - sh:description "An index to the collection of all class definitions in the schema" ; + sh:order 37 ; + sh:path skos:editorialNote ], + [ sh:class linkml:TypeDefinition ; + sh:description "default slot range to be used if range element is omitted from a slot definition" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path linkml:classes ], - [ sh:description "A related resource from which the element is derived." ; + sh:order 8 ; + sh:path linkml:default_range ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 43 ; - sh:path dcterms:source ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:order 60 ; + sh:path oslc:modifiedBy ], + [ sh:datatype xsd:string ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 38 ; + sh:path skos:note ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 57 ; + sh:path dcterms:contributor ], + [ sh:datatype xsd:integer ; + sh:description "size in bytes of the source of the schema" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 58 ; - sh:path pav:createdOn ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 33 ; - sh:path linkml:alt_descriptions ], + sh:order 17 ; + sh:path linkml:source_file_size ], [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 41 ; sh:path skos:inScheme ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 39 ; - sh:path linkml:examples ], [ sh:datatype xsd:integer ; - sh:description "size in bytes of the source of the schema" ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path linkml:source_file_size ], + sh:order 62 ; + sh:path sh:order ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 54 ; + sh:path skos:narrowMatch ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 31 ; + sh:path linkml:annotations ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 64 ; - sh:path schema1:keywords ], + sh:order 35 ; + sh:path linkml:deprecated ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 30 ; + sh:path linkml:extensions ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "name, uri or description of the source of the schema" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path dcterms:title ], + sh:order 15 ; + sh:path linkml:source_file ], [ sh:class linkml:Setting ; sh:description "A collection of global variable settings" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 20 ; sh:path linkml:settings ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; - sh:order 56 ; - sh:path pav:createdBy ], + sh:order 52 ; + sh:path skos:closeMatch ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:description "a unique name for the schema that is both human-readable and consists of only characters from the NCName set" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 44 ; - sh:path schema1:inLanguage ], - [ sh:description "agent that modified the element" ; + sh:order 22 ; + sh:path rdfs:label ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 60 ; - sh:path oslc:modifiedBy ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 52 ; - sh:path skos:closeMatch ], - [ sh:class linkml:TypeDefinition ; - sh:description "default slot range to be used if range element is omitted from a slot definition" ; + sh:order 47 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 36 ; + sh:path linkml:todos ], + [ sh:description "The official schema URI" ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml:default_range ], + sh:order 0 ; + sh:path linkml:id ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 51 ; + sh:path skos:exactMatch ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 45 ; + sh:path rdfs:seeAlso ], [ sh:datatype xsd:string ; sh:description "An established standard to which the element conforms." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 27 ; sh:path dcterms:conformsTo ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 46 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:description "status of the element" ; + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path skos:definition ], + [ sh:class linkml:SlotDefinition ; + sh:description "An index to the collection of all slot definitions in the schema" ; sh:nodeKind sh:IRI ; - sh:order 61 ; - sh:path bibo:status ], - [ sh:class linkml:EnumBinding ; - sh:description """A collection of enum bindings that specify how a slot can be bound to a permissible value from an enumeration. -LinkML provides enums to allow string values to be restricted to one of a set of permissible values (specified statically or dynamically). -Enum bindings allow enums to be bound to any object, including complex nested objects. For example, given a (generic) class Concept with slots id and label, it may be desirable to restrict the values the id takes on in a given context. For example, a HumanSample class may have a slot for representing sample site, with a range of concept, but the values of that slot may be restricted to concepts from a particular branch of an anatomy ontology.""" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 21 ; - sh:path linkml:bindings ], - [ sh:class linkml:EnumDefinition ; - sh:description "An index to the collection of all enum definitions in the schema" ; - sh:nodeKind sh:IRI ; - sh:order 11 ; - sh:path linkml:enums ], + sh:order 12 ; + sh:path linkml:slot_definitions ], [ sh:class linkml:Prefix ; sh:description "A collection of prefix expansions that specify how CURIEs can be expanded to URIs" ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -804,251 +836,161 @@ Enum bindings allow enums to be bound to any object, including complex nested ob sh:nodeKind sh:Literal ; sh:order 1 ; sh:path pav:version ], + [ sh:class linkml:SubsetDefinition ; + sh:description "An index to the collection of all subset definitions in the schema" ; + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path linkml:subsets ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 49 ; + sh:path skosxl:altLabel ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 36 ; - sh:path linkml:todos ], + sh:order 48 ; + sh:path skos:altLabel ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 53 ; + sh:path skos:relatedMatch ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 39 ; + sh:path linkml:examples ], + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 64 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:boolean ; + sh:description "if true then induced/mangled slot names are not created for class_usage and attributes" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 19 ; + sh:path linkml:slot_names_unique ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 43 ; + sh:path dcterms:source ], + [ sh:class linkml:ClassDefinition ; + sh:description "An index to the collection of all class definitions in the schema" ; + sh:nodeKind sh:IRI ; + sh:order 13 ; + sh:path linkml:classes ], [ sh:datatype xsd:string ; sh:description "a list of Curie prefixes that are used in the representation of instances of the model. All prefixes in this list are added to the prefix sections of the target models." ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path linkml:emit_prefixes ], + [ sh:datatype xsd:dateTime ; + sh:description "date and time that the schema was loaded/generated" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 18 ; + sh:path linkml:generation_date ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 58 ; + sh:path pav:createdOn ], [ sh:class linkml:LocalName ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 26 ; sh:path linkml:local_names ], - [ sh:class linkml:SubsetDefinition ; - sh:description "An index to the collection of all subset definitions in the schema" ; + [ sh:class linkml:EnumDefinition ; + sh:description "An index to the collection of all enum definitions in the schema" ; sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path linkml:subsets ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:order 11 ; + sh:path linkml:enums ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 59 ; + sh:path pav:lastUpdatedOn ], + [ sh:datatype xsd:dateTime ; + sh:description "modification date of the source of the schema" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 16 ; + sh:path linkml:source_file_date ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 33 ; + sh:path linkml:alt_descriptions ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; - sh:order 45 ; - sh:path rdfs:seeAlso ], + sh:order 50 ; + sh:path skos:mappingRelation ], [ sh:class linkml:TypeDefinition ; sh:description "An index to the collection of all type definitions in the schema" ; sh:nodeKind sh:IRI ; sh:order 10 ; sh:path linkml:types ], - [ sh:datatype xsd:dateTime ; - sh:description "date and time that the schema was loaded/generated" ; + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path linkml:generation_date ], + sh:order 34 ; + sh:path dcterms:title ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; sh:order 40 ; sh:path OIO:inSubset ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 57 ; - sh:path dcterms:contributor ], - [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path linkml:definition_uri ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 47 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:datatype xsd:string ; - sh:description "license for the schema" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path dcterms:license ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path skos:editorialNote ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 63 ; - sh:path dcterms:subject ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 38 ; - sh:path skos:note ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 59 ; - sh:path pav:lastUpdatedOn ], - [ sh:class linkml:SlotDefinition ; - sh:description "An index to the collection of all slot definitions in the schema" ; - sh:nodeKind sh:IRI ; - sh:order 12 ; - sh:path linkml:slot_definitions ], - [ sh:datatype xsd:string ; - sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; - sh:nodeKind sh:Literal ; - sh:order 23 ; - sh:path linkml:id_prefixes ], - [ sh:description "A list of schemas that are to be included in this schema" ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml:imports ], - [ sh:datatype xsd:string ; - sh:defaultValue "default_ns"^^xsd:string ; - sh:description "The prefix that is used for all elements within a schema" ; + [ sh:datatype xsd:boolean ; + sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path linkml:default_prefix ], + sh:order 24 ; + sh:path linkml:id_prefixes_are_closed ], [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; sh:nodeKind sh:IRI ; sh:order 28 ; sh:path linkml:implements ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 62 ; - sh:path sh:order ], - [ sh:description "The official schema URI" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:id ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 55 ; - sh:path skos:broadMatch ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 42 ; - sh:path linkml:imported_from ], - [ sh:datatype xsd:boolean ; - sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 24 ; - sh:path linkml:id_prefixes_are_closed ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 50 ; - sh:path skos:mappingRelation ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + [ sh:description "A list of schemas that are to be included in this schema" ; sh:nodeKind sh:IRI ; - sh:order 54 ; - sh:path skos:narrowMatch ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:order 2 ; + sh:path linkml:imports ], + [ sh:class linkml:EnumBinding ; + sh:description """A collection of enum bindings that specify how a slot can be bound to a permissible value from an enumeration. +LinkML provides enums to allow string values to be restricted to one of a set of permissible values (specified statically or dynamically). +Enum bindings allow enums to be bound to any object, including complex nested objects. For example, given a (generic) class Concept with slots id and label, it may be desirable to restrict the values the id takes on in a given context. For example, a HumanSample class may have a slot for representing sample site, with a range of concept, but the values of that slot may be restricted to concepts from a particular branch of an anatomy ontology.""" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 30 ; - sh:path linkml:extensions ], - [ sh:datatype xsd:dateTime ; - sh:description "modification date of the source of the schema" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path linkml:source_file_date ], - [ sh:datatype xsd:string ; - sh:description "name, uri or description of the source of the schema" ; + sh:order 21 ; + sh:path linkml:bindings ], + [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path linkml:source_file ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 51 ; - sh:path skos:exactMatch ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 31 ; - sh:path linkml:annotations ] ; + sh:order 25 ; + sh:path linkml:definition_uri ] ; sh:targetClass linkml:SchemaDefinition . linkml:SlotExpression a sh:NodeShape ; rdfs:comment "an expression that constrains the range of values a slot can take" ; sh:closed false ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:EnumExpression ; - sh:description "An inlined enumeration" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml:enum_range ], - [ sh:datatype xsd:boolean ; - sh:description "true means that the slot should be present in instances of the class definition, but this is not required" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path linkml:recommended ], - [ sh:datatype xsd:string ; - sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path linkml:implicit_prefix ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "the value of the slot is multivalued with at least one member satisfying the condition" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 23 ; - sh:path linkml:has_member ], - [ sh:description "if PRESENT then a value must be present (for lists there must be at least one value). If ABSENT then a value must be absent (for lists, must be empty)" ; - sh:in ( "UNCOMMITTED" "PRESENT" "ABSENT" ) ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path linkml:value_presence ], - [ sh:datatype xsd:boolean ; - sh:description "True means that an inlined slot is represented as a list of range instances. False means that an inlined slot is represented as a dictionary, whose key is the slot key or identifier and whose value is the range instance." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:inlined_as_list ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if only one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 26 ; - sh:path linkml:exactly_one_of ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if all of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 28 ; - sh:path linkml:all_of ], - [ sh:class qudt:Unit ; - sh:description "an encoding of a unit" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 13 ; - sh:path qudt:unit ], - [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; - sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path linkml:equals_string_in ], - [ sh:datatype xsd:boolean ; - sh:description "true means that the slot must be present in instances of the class definition" ; + sh:property [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path linkml:required ], + sh:order 10 ; + sh:path linkml:maximum_value ], [ sh:class linkml:AnonymousSlotExpression ; sh:description "holds if at least one of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 27 ; sh:path linkml:any_of ], - [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal the specified value" ; + [ sh:datatype xsd:integer ; + sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path linkml:equals_string ], + sh:order 18 ; + sh:path linkml:equals_number ], [ sh:class linkml:EnumBinding ; sh:description """A collection of enum bindings that specify how a slot can be bound to a permissible value from an enumeration. LinkML provides enums to allow string values to be restricted to one of a set of permissible values (specified statically or dynamically). @@ -1056,10 +998,17 @@ Enum bindings allow enums to be bound to any object, including complex nested ob sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml:bindings ], - [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; + [ sh:datatype xsd:boolean ; + sh:description "true means that the slot should be present in instances of the class definition, but this is not required" ; sh:maxCount 1 ; - sh:order 10 ; - sh:path linkml:maximum_value ], + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path linkml:recommended ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "holds if only one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 26 ; + sh:path linkml:exactly_one_of ], [ sh:class linkml:Element ; sh:defaultValue "string"^^xsd:string ; sh:description """defines the type of the object of the slot. Given the following slot definition @@ -1076,18 +1025,36 @@ implicitly asserts Y is an instance of C2 sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml:range ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "the value of the slot is multivalued with all members satisfying the condition" ; + [ sh:datatype xsd:string ; + sh:description "the slot must have range string and the value of the slot must equal the specified value" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 24 ; - sh:path linkml:all_members ], + sh:nodeKind sh:Literal ; + sh:order 16 ; + sh:path linkml:equals_string ], + [ sh:datatype xsd:boolean ; + sh:description "true means that the slot must be present in instances of the class definition" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path linkml:required ], [ sh:datatype xsd:boolean ; sh:description "True means that keyed or identified slot appears in an outer structure by value. False means that only the key or identifier for the slot appears within the domain, referencing a structure that appears elsewhere." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 7 ; sh:path linkml:inlined ], + [ sh:class linkml:ArrayExpression ; + sh:description "coerces the value of the slot into an array and defines the dimensions of that array" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 29 ; + sh:path linkml:array ], + [ sh:datatype xsd:string ; + sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path linkml:pattern ], [ sh:class linkml:AnonymousSlotExpression ; sh:description "holds if none of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -1099,60 +1066,93 @@ implicitly asserts Y is an instance of C2 sh:nodeKind sh:Literal ; sh:order 6 ; sh:path linkml:multivalued ], - [ sh:class linkml:ArrayExpression ; - sh:description "coerces the value of the slot into an array and defines the dimensions of that array" ; + [ sh:datatype xsd:integer ; + sh:description "the minimum number of entries for a multivalued slot" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 29 ; - sh:path linkml:array ], + sh:nodeKind sh:Literal ; + sh:order 21 ; + sh:path linkml:minimum_cardinality ], + [ sh:datatype xsd:string ; + sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; + sh:nodeKind sh:Literal ; + sh:order 17 ; + sh:path linkml:equals_string_in ], [ sh:class linkml:PatternExpression ; sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 12 ; sh:path linkml:structured_pattern ], - [ sh:datatype xsd:string ; - sh:description "the value of the slot must equal the value of the evaluated expression" ; + [ sh:class linkml:AnonymousClassExpression ; + sh:description "A range that is described as a boolean expression combining existing ranges" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path linkml:equals_expression ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:range_expression ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "holds if all of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 28 ; + sh:path linkml:all_of ], [ sh:datatype xsd:integer ; - sh:description "the exact number of entries for a multivalued slot" ; + sh:description "the maximum number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:exact_cardinality ], - [ sh:datatype xsd:string ; - sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; + sh:order 22 ; + sh:path linkml:maximum_cardinality ], + [ sh:class linkml:EnumExpression ; + sh:description "An inlined enumeration" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path linkml:pattern ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml:enum_range ], + [ sh:class qudt:Unit ; + sh:description "an encoding of a unit" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 13 ; + sh:path qudt:unit ], + [ sh:description "if PRESENT then a value must be present (for lists there must be at least one value). If ABSENT then a value must be absent (for lists, must be empty)" ; + sh:in ( "UNCOMMITTED" "PRESENT" "ABSENT" ) ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path linkml:value_presence ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "the value of the slot is multivalued with at least one member satisfying the condition" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 23 ; + sh:path linkml:has_member ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "the value of the slot is multivalued with all members satisfying the condition" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 24 ; + sh:path linkml:all_members ], [ sh:datatype xsd:integer ; - sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; + sh:description "the exact number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path linkml:equals_number ], - [ sh:datatype xsd:integer ; - sh:description "the minimum number of entries for a multivalued slot" ; + sh:order 20 ; + sh:path linkml:exact_cardinality ], + [ sh:datatype xsd:boolean ; + sh:description "True means that an inlined slot is represented as a list of range instances. False means that an inlined slot is represented as a dictionary, whose key is the slot key or identifier and whose value is the range instance." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path linkml:minimum_cardinality ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "A range that is described as a boolean expression combining existing ranges" ; + sh:order 8 ; + sh:path linkml:inlined_as_list ], + [ sh:datatype xsd:string ; + sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:range_expression ], - [ sh:datatype xsd:integer ; - sh:description "the maximum number of entries for a multivalued slot" ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path linkml:implicit_prefix ], + [ sh:datatype xsd:string ; + sh:description "the value of the slot must equal the value of the evaluated expression" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path linkml:maximum_cardinality ], + sh:order 19 ; + sh:path linkml:equals_expression ], [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; sh:maxCount 1 ; sh:order 9 ; @@ -1163,70 +1163,70 @@ linkml:TypeExpression a sh:NodeShape ; rdfs:comment "An abstract class grouping named types and anonymous type expressions" ; sh:closed false ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; + sh:property [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:pattern ], - [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal the specified value" ; + sh:order 7 ; + sh:path linkml:minimum_value ], + [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path linkml:equals_string ], + sh:order 8 ; + sh:path linkml:maximum_value ], [ sh:class linkml:AnonymousTypeExpression ; sh:description "holds if only one of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 10 ; sh:path linkml:exactly_one_of ], - [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path linkml:maximum_value ], [ sh:datatype xsd:string ; sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 3 ; sh:path linkml:implicit_prefix ], + [ sh:class linkml:PatternExpression ; + sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:structured_pattern ], [ sh:class qudt:Unit ; sh:description "an encoding of a unit" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path qudt:unit ], + [ sh:datatype xsd:string ; + sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path linkml:pattern ], [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if none of the expressions hold" ; + sh:description "holds if all of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml:none_of ], + sh:order 12 ; + sh:path linkml:all_of ], + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path linkml:any_of ], [ sh:datatype xsd:integer ; sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 6 ; sh:path linkml:equals_number ], - [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path linkml:minimum_value ], - [ sh:class linkml:PatternExpression ; - sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; + [ sh:datatype xsd:string ; + sh:description "the slot must have range string and the value of the slot must equal the specified value" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:structured_pattern ], - [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if at least one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml:any_of ], + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path linkml:equals_string ], [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if all of the expressions hold" ; + sh:description "holds if none of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 12 ; - sh:path linkml:all_of ], + sh:order 9 ; + sh:path linkml:none_of ], [ sh:datatype xsd:string ; sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; sh:nodeKind sh:Literal ; @@ -1238,416 +1238,416 @@ linkml:ClassRule a sh:NodeShape ; rdfs:comment "A rule that applies to instances of a class" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:dateTime ; + sh:property [ sh:datatype xsd:boolean ; + sh:description "in addition to preconditions entailing postconditions, the postconditions entail the preconditions" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path linkml:bidirectional ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:mappingRelation ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "an expression that must hold for an instance of the class, if the preconditions no not hold" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml:elseconditions ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path skos:editorialNote ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml:annotations ], + [ sh:datatype xsd:dateTime ; sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 36 ; sh:path pav:lastUpdatedOn ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 39 ; + sh:path dcterms:subject ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path OIO:inSubset ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 13 ; - sh:path linkml:todos ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:order 40 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path skos:note ], + sh:order 35 ; + sh:path pav:createdOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path skos:relatedMatch ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 34 ; + sh:path dcterms:contributor ], [ sh:datatype xsd:boolean ; sh:description "a deactivated rule is not executed by the rules engine" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 6 ; sh:path sh:deactivated ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path schema1:inLanguage ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 10 ; - sh:path linkml:alt_descriptions ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; - sh:order 40 ; - sh:path schema1:keywords ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path OIO:inSubset ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; + sh:order 13 ; + sh:path linkml:todos ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path oslc:modifiedBy ], + sh:order 28 ; + sh:path skos:exactMatch ], [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 38 ; sh:path bibo:status ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path skos:relatedMatch ], - [ sh:datatype xsd:boolean ; - sh:description "if true, the the postconditions may be omitted in instance data, but it is valid for an inference engine to add these" ; + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path linkml:open_world ], - [ sh:description "id of the schema that defined the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 18 ; - sh:path skos:inScheme ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "an expression that must hold for an instance of the class, if the preconditions no not hold" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml:elseconditions ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:order 5 ; + sh:path sh:order ], + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path linkml:deprecated ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 26 ; - sh:path skosxl:altLabel ], + sh:order 19 ; + sh:path linkml:imported_from ], [ sh:class linkml:Example ; sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 16 ; sh:path linkml:examples ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml:annotations ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 25 ; - sh:path skos:altLabel ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 20 ; - sh:path dcterms:source ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "an expression that must hold in order for the rule to be applicable to an instance" ; + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path sh:condition ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path dcterms:contributor ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:exactMatch ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:order 23 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:datatype xsd:boolean ; + sh:description "if true, the the postconditions may be omitted in instance data, but it is valid for an inference engine to add these" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path dcterms:title ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml:extensions ], - [ sh:description "agent that created the element" ; + sh:order 4 ; + sh:path linkml:open_world ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path pav:createdBy ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path sh:order ], + sh:order 18 ; + sh:path skos:inScheme ], [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; sh:order 31 ; sh:path skos:narrowMatch ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path pav:createdOn ], + sh:order 21 ; + sh:path schema1:inLanguage ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 25 ; + sh:path skos:altLabel ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 10 ; + sh:path linkml:alt_descriptions ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path skos:closeMatch ], [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; sh:order 32 ; sh:path skos:broadMatch ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "an expression that must hold for an instance of the class, if the preconditions hold" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:postconditions ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path skos:definition ], + sh:order 12 ; + sh:path linkml:deprecated ], [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; sh:order 22 ; sh:path rdfs:seeAlso ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path skos:editorialNote ], - [ sh:datatype xsd:boolean ; - sh:description "in addition to preconditions entailing postconditions, the postconditions entail the preconditions" ; + sh:order 15 ; + sh:path skos:note ], + [ sh:description "agent that created the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path linkml:bidirectional ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:closeMatch ], + sh:order 33 ; + sh:path pav:createdBy ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path linkml:imported_from ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 39 ; - sh:path dcterms:subject ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:order 11 ; + sh:path dcterms:title ], + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:mappingRelation ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:order 37 ; + sh:path oslc:modifiedBy ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "an expression that must hold in order for the rule to be applicable to an instance" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path sh:condition ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 26 ; + sh:path skosxl:altLabel ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path linkml:deprecated_element_has_possible_replacement ] ; + sh:order 20 ; + sh:path dcterms:source ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml:extensions ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "an expression that must hold for an instance of the class, if the preconditions hold" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:postconditions ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path skos:definition ] ; sh:targetClass linkml:ClassRule . linkml:DimensionExpression a sh:NodeShape ; rdfs:comment "defines one of the dimensions of an array" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "status of the element" ; - sh:maxCount 1 ; + sh:property [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; - sh:order 35 ; - sh:path bibo:status ], - [ sh:description "A related resource from which the element is derived." ; + sh:order 31 ; + sh:path dcterms:contributor ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path dcterms:source ], + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path skos:definition ], [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 20 ; sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 15 ; + sh:path skos:inScheme ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:relatedMatch ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path pav:createdOn ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path linkml:imported_from ], + sh:order 18 ; + sh:path schema1:inLanguage ], [ sh:datatype xsd:integer ; sh:description "the exact number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 3 ; sh:path linkml:exact_cardinality ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:relatedMatch ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path skos:editorialNote ], + sh:order 9 ; + sh:path linkml:deprecated ], [ sh:datatype xsd:integer ; - sh:description "the maximum number of entries for a multivalued slot" ; + sh:description "the minimum number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path linkml:maximum_cardinality ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 23 ; - sh:path skosxl:altLabel ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; + sh:order 2 ; + sh:path linkml:minimum_cardinality ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path linkml:todos ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml:alt_descriptions ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:order 4 ; + sh:path linkml:extensions ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:broadMatch ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 36 ; - sh:path sh:order ], + sh:order 24 ; + sh:path skos:mappingRelation ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; sh:order 14 ; sh:path OIO:inSubset ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path pav:createdBy ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 33 ; - sh:path pav:lastUpdatedOn ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path skos:definition ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 13 ; - sh:path linkml:examples ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:narrowMatch ], + sh:order 38 ; + sh:path schema1:keywords ], [ sh:datatype xsd:string ; sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; sh:order 22 ; sh:path skos:altLabel ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path skos:note ], - [ sh:datatype xsd:string ; - sh:description "the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name." ; + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path skos:closeMatch ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 23 ; + sh:path skosxl:altLabel ], + [ sh:description "status of the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path skos:prefLabel ], + sh:nodeKind sh:IRI ; + sh:order 35 ; + sh:path bibo:status ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path schema1:inLanguage ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path linkml:todos ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:order 16 ; + sh:path linkml:imported_from ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 28 ; + sh:path skos:narrowMatch ], + [ sh:datatype xsd:integer ; + sh:description "the maximum number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path pav:createdOn ], - [ sh:description "agent that modified the element" ; + sh:order 1 ; + sh:path linkml:maximum_cardinality ], + [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path oslc:modifiedBy ], + sh:order 30 ; + sh:path pav:createdBy ], [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 21 ; sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml:alt_descriptions ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path dcterms:title ], - [ sh:description "id of the schema that defined the element" ; - sh:maxCount 1 ; + sh:order 0 ; + sh:path skos:prefLabel ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 15 ; - sh:path skos:inScheme ], + sh:order 29 ; + sh:path skos:broadMatch ], [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; sh:order 37 ; sh:path dcterms:subject ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 36 ; + sh:path sh:order ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:string ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path skos:note ], [ sh:class linkml:Annotation ; sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; sh:path linkml:annotations ], - [ sh:datatype xsd:integer ; - sh:description "the minimum number of entries for a multivalued slot" ; - sh:maxCount 1 ; + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path linkml:minimum_cardinality ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:extensions ], + sh:order 11 ; + sh:path skos:editorialNote ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path linkml:deprecated ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:mappingRelation ], - [ sh:description "agent that contributed to the element" ; + sh:order 8 ; + sh:path dcterms:title ], + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path dcterms:contributor ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:order 34 ; + sh:path oslc:modifiedBy ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 38 ; - sh:path schema1:keywords ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path skos:closeMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:order 33 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:exactMatch ], + sh:order 17 ; + sh:path dcterms:source ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 13 ; + sh:path linkml:examples ], [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; sh:order 19 ; @@ -1661,18 +1661,18 @@ See `extra_slots` for usage examples. """ ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:AnonymousSlotExpression ; - sh:description "A range that is described as a boolean expression combining existing ranges" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:range_expression ], - [ sh:datatype xsd:boolean ; + sh:property [ sh:datatype xsd:boolean ; sh:description "Whether or not something is allowed. Usage defined by context." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path linkml:allowed ] ; + sh:path linkml:allowed ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "A range that is described as a boolean expression combining existing ranges" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:range_expression ] ; sh:targetClass linkml:ExtraSlotsExpression . linkml:Prefix a sh:NodeShape ; @@ -1698,109 +1698,49 @@ linkml:TypeMapping a sh:NodeShape ; rdfs:comment "Represents how a slot or type can be serialized to a format." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "agent that created the element" ; + sh:property [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path pav:createdBy ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path pav:lastUpdatedOn ], + sh:order 33 ; + sh:path oslc:modifiedBy ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path skos:note ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 20 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "id of the schema that defined the element" ; + sh:description "The name of a format that can be used to serialize LinkML data. The string value should be a code from the LinkML frameworks vocabulary, but this is not strictly enforced" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 14 ; - sh:path skos:inScheme ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 22 ; - sh:path skosxl:altLabel ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path skos:altLabel ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path bibo:status ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; + sh:order 0 ; + sh:path linkml:framework_key ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path dcterms:source ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; + sh:order 18 ; + sh:path rdfs:seeAlso ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 12 ; - sh:path linkml:examples ], + sh:order 3 ; + sh:path linkml:extensions ], [ sh:datatype xsd:integer ; sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 35 ; sh:path sh:order ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 22 ; + sh:path skosxl:altLabel ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; - sh:order 18 ; - sh:path rdfs:seeAlso ], + sh:order 13 ; + sh:path OIO:inSubset ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path schema1:keywords ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path skos:mappingRelation ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path skos:relatedMatch ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:deprecated ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path oslc:modifiedBy ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:narrowMatch ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path OIO:inSubset ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:extensions ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:closeMatch ], + sh:order 15 ; + sh:path linkml:imported_from ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was created" ; sh:maxCount 1 ; @@ -1808,40 +1748,91 @@ linkml:TypeMapping a sh:NodeShape ; sh:order 31 ; sh:path pav:createdOn ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path dcterms:title ], + sh:order 17 ; + sh:path schema1:inLanguage ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path linkml:todos ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path skos:definition ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path skos:closeMatch ], + [ sh:class linkml:TypeDefinition ; + sh:description "type to coerce to" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml:mapped_type ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path dcterms:source ], [ sh:datatype xsd:string ; sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; sh:order 10 ; sh:path skos:editorialNote ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 14 ; + sh:path skos:inScheme ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path linkml:imported_from ], + sh:order 8 ; + sh:path linkml:deprecated ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path skos:definition ], + sh:order 11 ; + sh:path skos:note ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 20 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 12 ; + sh:path linkml:examples ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path dcterms:contributor ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:narrowMatch ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml:alt_descriptions ], [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 19 ; sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:datatype xsd:string ; - sh:description "The name of a format that can be used to serialize LinkML data. The string value should be a code from the LinkML frameworks vocabulary, but this is not strictly enforced" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:framework_key ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml:annotations ], [ sh:datatype xsd:string ; sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. @@ -1851,248 +1842,257 @@ For example, a Measurement class may have 3 fields: unit, value, and string_valu sh:nodeKind sh:Literal ; sh:order 2 ; sh:path linkml:string_serialization ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 37 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:broadMatch ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:alt_descriptions ], + sh:order 26 ; + sh:path skos:relatedMatch ], [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; sh:order 36 ; sh:path dcterms:subject ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + [ sh:description "agent that created the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path schema1:inLanguage ], - [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path dcterms:contributor ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:annotations ], + sh:order 29 ; + sh:path pav:createdBy ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 23 ; + sh:path skos:mappingRelation ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path linkml:todos ], - [ sh:class linkml:TypeDefinition ; - sh:description "type to coerce to" ; + sh:order 21 ; + sh:path skos:altLabel ], + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path dcterms:title ], + [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml:mapped_type ], + sh:order 34 ; + sh:path bibo:status ], [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; sh:order 24 ; - sh:path skos:exactMatch ] ; + sh:path skos:exactMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 28 ; + sh:path skos:broadMatch ] ; sh:targetClass linkml:TypeMapping . linkml:UniqueKey a sh:NodeShape ; rdfs:comment "a collection of slots whose values uniquely identify an instance of a class" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "status of the element" ; + sh:property [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 23 ; + sh:path skos:mappingRelation ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path bibo:status ], + sh:order 19 ; + sh:path linkml:deprecated_element_has_exact_replacement ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path skos:note ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:order 5 ; + sh:path skos:definition ], + [ sh:datatype xsd:boolean ; + sh:description "By default, None values are considered equal for the purposes of comparisons in determining uniqueness. Set this to true to treat missing values as per ANSI-SQL NULLs, i.e NULL=NULL is always False." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path pav:lastUpdatedOn ], + sh:order 2 ; + sh:path linkml:consider_nulls_inequal ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 18 ; + sh:path rdfs:seeAlso ], [ sh:class linkml:Example ; sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 12 ; sh:path linkml:examples ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 18 ; - sh:path rdfs:seeAlso ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path skos:altLabel ], [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; sh:order 36 ; sh:path dcterms:subject ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path schema1:inLanguage ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 31 ; - sh:path pav:createdOn ], + [ sh:class linkml:SlotDefinition ; + sh:description "list of slot names that form a key. The tuple formed from the values of all these slots should be unique." ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml:unique_key_slots ], [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; sh:order 26 ; sh:path skos:relatedMatch ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path oslc:modifiedBy ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path linkml:todos ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:broadMatch ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:alt_descriptions ], - [ sh:class linkml:SlotDefinition ; - sh:description "list of slot names that form a key. The tuple formed from the values of all these slots should be unique." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml:unique_key_slots ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path skos:definition ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:annotations ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:narrowMatch ], - [ sh:datatype xsd:string ; - sh:description "name of the unique key" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:unique_key_name ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:extensions ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 7 ; sh:path dcterms:title ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path schema1:keywords ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path dcterms:contributor ], + sh:order 8 ; + sh:path linkml:deprecated ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; sh:order 13 ; sh:path OIO:inSubset ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path skos:editorialNote ], + sh:order 21 ; + sh:path skos:altLabel ], [ sh:datatype xsd:integer ; sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 35 ; sh:path sh:order ], + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 33 ; + sh:path oslc:modifiedBy ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path skos:closeMatch ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path skos:editorialNote ], [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 20 ; sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:exactMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path skos:mappingRelation ], - [ sh:description "agent that created the element" ; + sh:order 30 ; + sh:path dcterms:contributor ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 22 ; + sh:path skosxl:altLabel ], + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path pav:createdBy ], + sh:nodeKind sh:Literal ; + sh:order 15 ; + sh:path linkml:imported_from ], [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 16 ; sh:path dcterms:source ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:closeMatch ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:order 29 ; + sh:path pav:createdBy ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:narrowMatch ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:deprecated ], + sh:order 31 ; + sh:path pav:createdOn ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path skos:note ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path linkml:imported_from ], - [ sh:datatype xsd:boolean ; - sh:description "By default, None values are considered equal for the purposes of comparisons in determining uniqueness. Set this to true to treat missing values as per ANSI-SQL NULLs, i.e NULL=NULL is always False." ; + sh:order 17 ; + sh:path schema1:inLanguage ], + [ sh:datatype xsd:string ; + sh:description "name of the unique key" ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path linkml:consider_nulls_inequal ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:order 0 ; + sh:path linkml:unique_key_name ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:order 28 ; + sh:path skos:broadMatch ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 22 ; - sh:path skosxl:altLabel ], + sh:order 3 ; + sh:path linkml:extensions ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml:alt_descriptions ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path linkml:todos ], [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 14 ; - sh:path skos:inScheme ] ; + sh:path skos:inScheme ], + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 37 ; + sh:path schema1:keywords ], + [ sh:description "status of the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 34 ; + sh:path bibo:status ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml:annotations ] ; sh:targetClass linkml:UniqueKey . linkml:Setting a sh:NodeShape ; @@ -2119,43 +2119,31 @@ linkml:ArrayExpression a sh:NodeShape ; rdfs:comment "defines the dimensions of an array" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:broadMatch ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path dcterms:title ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 35 ; - sh:path bibo:status ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 13 ; - sh:path linkml:examples ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; + sh:property [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path pav:createdBy ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path skos:definition ], + sh:order 28 ; + sh:path skos:narrowMatch ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 32 ; sh:path pav:createdOn ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 33 ; + sh:path pav:lastUpdatedOn ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 14 ; + sh:path OIO:inSubset ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 37 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; @@ -2166,115 +2154,137 @@ linkml:ArrayExpression a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 27 ; sh:path skos:relatedMatch ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path linkml:todos ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 20 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:order 34 ; + sh:path oslc:modifiedBy ], + [ sh:description "maximum number of dimensions in the array, or False if explicitly no maximum. If this is unset, and an explicit list of dimensions are passed using dimensions, then this is interpreted as a closed list and the maximum_number_dimensions is the length of the dimensions list, unless this value is set to False" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path schema1:inLanguage ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:exactMatch ], + sh:or ( [ sh:datatype xsd:integer ; + sh:nodeKind sh:Literal ] [ sh:datatype xsd:boolean ; + sh:nodeKind sh:Literal ] ) ; + sh:order 2 ; + sh:path linkml:maximum_number_dimensions ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path skos:mappingRelation ], [ sh:class linkml:AltDescription ; sh:description "A sourced alternative description for an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; sh:path linkml:alt_descriptions ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path skos:broadMatch ], + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 38 ; + sh:path schema1:keywords ], [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 17 ; sh:path dcterms:source ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:extensions ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 33 ; - sh:path pav:lastUpdatedOn ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml:annotations ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 14 ; - sh:path OIO:inSubset ], [ sh:datatype xsd:string ; sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 9 ; sh:path linkml:deprecated ], + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path dcterms:title ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 19 ; + sh:path rdfs:seeAlso ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path pav:createdBy ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 20 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 13 ; + sh:path linkml:examples ], [ sh:datatype xsd:integer ; sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 36 ; sh:path sh:order ], + [ sh:description "status of the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 35 ; + sh:path bibo:status ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml:annotations ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path skos:definition ], [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 15 ; sh:path skos:inScheme ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path rdfs:seeAlso ], - [ sh:description "maximum number of dimensions in the array, or False if explicitly no maximum. If this is unset, and an explicit list of dimensions are passed using dimensions, then this is interpreted as a closed list and the maximum_number_dimensions is the length of the dimensions list, unless this value is set to False" ; - sh:maxCount 1 ; - sh:or ( [ sh:datatype xsd:integer ; - sh:nodeKind sh:Literal ] [ sh:datatype xsd:boolean ; - sh:nodeKind sh:Literal ] ) ; - sh:order 2 ; - sh:path linkml:maximum_number_dimensions ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path skos:closeMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:narrowMatch ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path dcterms:subject ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:mappingRelation ], + sh:order 31 ; + sh:path dcterms:contributor ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml:extensions ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 22 ; + sh:path skos:altLabel ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path skos:editorialNote ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path linkml:todos ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 23 ; + sh:path skosxl:altLabel ], [ sh:datatype xsd:string ; sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; sh:order 12 ; sh:path skos:note ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 38 ; - sh:path schema1:keywords ], - [ sh:description "agent that contributed to the element" ; + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path dcterms:contributor ], + sh:order 25 ; + sh:path skos:exactMatch ], [ sh:datatype xsd:integer ; sh:description "exact number of dimensions in the array" ; sh:maxCount 1 ; @@ -2286,321 +2296,311 @@ linkml:ArrayExpression a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 21 ; sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path oslc:modifiedBy ], + [ sh:class linkml:DimensionExpression ; + sh:description "definitions of each axis in the array" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml:dimensions ], [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:description "the primary language used in the sources" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path skos:altLabel ], + sh:order 18 ; + sh:path schema1:inLanguage ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path skos:closeMatch ], [ sh:datatype xsd:integer ; sh:description "minimum number of dimensions in the array" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path linkml:minimum_number_dimensions ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path skos:editorialNote ], - [ sh:class linkml:DimensionExpression ; - sh:description "definitions of each axis in the array" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:dimensions ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 23 ; - sh:path skosxl:altLabel ] ; + sh:path linkml:minimum_number_dimensions ] ; sh:targetClass linkml:ArrayExpression . linkml:Element a sh:NodeShape ; rdfs:comment "A named element in the model" ; sh:closed false ; - sh:ignoredProperties ( linkml:exact_cardinality linkml:path_rule linkml:is_a linkml:inherits linkml:any_of linkml:children_are_mutually_disjoint linkml:has_member linkml:enums linkml:classification_rules linkml:role rdf:type linkml:ifabsent linkml:value_presence rdfs:subPropertyOf linkml:code_set_tag linkml:equals_expression linkml:source_file_date linkml:is_class_field linkml:repr linkml:symmetric linkml:identifier linkml:none_of linkml:default_curi_maps linkml:include linkml:tree_root linkml:minus linkml:shared linkml:apply_to linkml:pv_formula linkml:relational_role linkml:slot_usage linkml:structured_pattern linkml:owner linkml:metamodel_version linkml:minimum_value linkml:inherited linkml:slot_definitions linkml:generation_date linkml:singular_name linkml:readonly linkml:maximum_value linkml:attributes linkml:usage_slot_name linkml:equals_number linkml:permissible_values linkml:domain_of linkml:slots linkml:asymmetric linkml:required linkml:recommended linkml:array linkml:list_elements_unique linkml:mixins linkml:base linkml:represents_relationship linkml:slot_names_unique linkml:designates_type linkml:pattern linkml:inlined_as_list linkml:extra_slots pav:version linkml:disjoint_with linkml:domain linkml:union_of linkml:transitive_form_of linkml:all_members linkml:transitive sh:declare linkml:defining_slots linkml:equals_string_in linkml:default_range linkml:slot_uri sh:group linkml:reflexive_transitive_form_of owl:inverseOf linkml:class_uri linkml:classes qudt:unit linkml:concepts linkml:is_grouping_slot linkml:locally_reflexive linkml:imports linkml:type_uri linkml:abstract linkml:emit_prefixes linkml:implicit_prefix linkml:slot_conditions linkml:irreflexive linkml:minimum_cardinality linkml:is_usage_slot linkml:subclass_of dcterms:license linkml:type_mappings linkml:range_expression linkml:enum_uri linkml:source_file_size linkml:subsets linkml:id linkml:mixin linkml:exactly_one_of linkml:list_elements_ordered linkml:source_file linkml:key skos:prefLabel linkml:inlined linkml:settings linkml:string_serialization linkml:code_set_version linkml:maximum_cardinality linkml:enum_range sh:rule linkml:code_set linkml:all_of linkml:typeof linkml:types linkml:unique_keys linkml:range linkml:reachable_from linkml:multivalued linkml:matches linkml:values_from linkml:reflexive linkml:equals_string linkml:bindings linkml:default_prefix ) ; - sh:property [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path dcterms:source ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:ignoredProperties ( linkml:settings linkml:path_rule linkml:typeof linkml:designates_type linkml:inherits linkml:pattern linkml:maximum_value linkml:matches linkml:types linkml:pv_formula linkml:role linkml:inlined_as_list linkml:type_uri linkml:string_serialization linkml:bindings skos:prefLabel linkml:inherited linkml:identifier linkml:multivalued linkml:enum_uri pav:version linkml:symmetric linkml:list_elements_ordered linkml:default_curi_maps linkml:emit_prefixes linkml:children_are_mutually_disjoint linkml:values_from linkml:is_class_field linkml:reachable_from linkml:recommended linkml:source_file linkml:relational_role linkml:transitive_form_of linkml:none_of linkml:classes owl:inverseOf linkml:type_mappings sh:rule linkml:default_prefix rdfs:subPropertyOf linkml:exactly_one_of linkml:value_presence linkml:extra_slots linkml:slot_definitions linkml:include linkml:tree_root linkml:subclass_of linkml:all_of linkml:is_a linkml:slot_conditions linkml:base linkml:irreflexive linkml:range_expression linkml:transitive linkml:unique_keys linkml:reflexive linkml:array linkml:generation_date linkml:classification_rules linkml:slots linkml:list_elements_unique linkml:has_member linkml:implicit_prefix linkml:equals_number linkml:usage_slot_name linkml:inlined linkml:source_file_size linkml:locally_reflexive rdf:type linkml:represents_relationship linkml:slot_names_unique linkml:defining_slots linkml:shared linkml:equals_expression linkml:required linkml:domain linkml:all_members linkml:concepts linkml:minimum_cardinality linkml:singular_name linkml:default_range linkml:code_set_tag linkml:repr linkml:domain_of linkml:asymmetric linkml:enum_range linkml:permissible_values linkml:slot_uri linkml:key linkml:metamodel_version linkml:code_set linkml:mixin linkml:is_grouping_slot linkml:enums linkml:structured_pattern linkml:imports linkml:reflexive_transitive_form_of linkml:attributes linkml:subsets linkml:owner linkml:equals_string linkml:class_uri linkml:mixins linkml:is_usage_slot linkml:readonly linkml:abstract linkml:ifabsent linkml:disjoint_with linkml:minus linkml:range linkml:slot_usage dcterms:license linkml:exact_cardinality linkml:union_of linkml:code_set_version qudt:unit sh:declare linkml:equals_string_in sh:group linkml:maximum_cardinality linkml:id linkml:minimum_value linkml:source_file_date linkml:apply_to linkml:any_of ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:imported_from ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:order 0 ; + sh:path rdfs:label ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 40 ; - sh:path sh:order ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 26 ; - sh:path skos:altLabel ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml:annotations ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path linkml:todos ], - [ sh:description "An element in another schema which this element instantiates." ; sh:nodeKind sh:IRI ; - sh:order 7 ; - sh:path linkml:instantiates ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:order 25 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path skos:closeMatch ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 27 ; - sh:path skosxl:altLabel ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path skos:editorialNote ], - [ sh:datatype xsd:string ; - sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; - sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path linkml:id_prefixes ], + sh:order 35 ; + sh:path dcterms:contributor ], [ sh:class linkml:Extension ; sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 8 ; sh:path linkml:extensions ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path skos:note ], - [ sh:datatype xsd:string ; - sh:description "An established standard to which the element conforms." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path dcterms:conformsTo ], [ sh:datatype xsd:string ; sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 10 ; sh:path skos:definition ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 13 ; - sh:path linkml:deprecated ], + sh:nodeKind sh:IRI ; + sh:order 38 ; + sh:path oslc:modifiedBy ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 32 ; + sh:path skos:narrowMatch ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 19 ; + sh:path skos:inScheme ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 31 ; + sh:path skos:relatedMatch ], [ sh:datatype xsd:boolean ; sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 2 ; sh:path linkml:id_prefixes_are_closed ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path rdfs:seeAlso ], + sh:order 30 ; + sh:path skos:closeMatch ], [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; sh:order 41 ; sh:path dcterms:subject ], - [ sh:class linkml:LocalName ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:local_names ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml:alt_descriptions ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 32 ; - sh:path skos:narrowMatch ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 35 ; - sh:path dcterms:contributor ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:exactMatch ], - [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; - sh:nodeKind sh:IRI ; - sh:order 6 ; - sh:path linkml:implements ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path dcterms:title ], + sh:order 20 ; + sh:path linkml:imported_from ], [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 34 ; sh:path pav:createdBy ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 17 ; + sh:path linkml:examples ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path linkml:alt_descriptions ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; sh:order 18 ; sh:path OIO:inSubset ], + [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml:definition_uri ], [ sh:datatype xsd:string ; - sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 16 ; + sh:path skos:note ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 27 ; + sh:path skosxl:altLabel ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path rdfs:label ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:mappingRelation ], - [ sh:description "status of the element" ; + sh:order 37 ; + sh:path pav:lastUpdatedOn ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 13 ; + sh:path linkml:deprecated ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 26 ; + sh:path skos:altLabel ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 39 ; - sh:path bibo:status ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:order 23 ; + sh:path rdfs:seeAlso ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path skos:broadMatch ], - [ sh:description "agent that modified the element" ; + sh:order 24 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path linkml:todos ], + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 42 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path dcterms:title ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path linkml:annotations ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 40 ; + sh:path sh:order ], + [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; sh:nodeKind sh:IRI ; - sh:order 38 ; - sh:path oslc:modifiedBy ], - [ sh:description "id of the schema that defined the element" ; + sh:order 6 ; + sh:path linkml:implements ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path skos:exactMatch ], + [ sh:description "An element in another schema which this element instantiates." ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path linkml:instantiates ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path skos:inScheme ], + sh:order 21 ; + sh:path dcterms:source ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 15 ; + sh:path skos:editorialNote ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 36 ; sh:path pav:createdOn ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + [ sh:datatype xsd:string ; + sh:description "An established standard to which the element conforms." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path pav:lastUpdatedOn ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:order 5 ; + sh:path dcterms:conformsTo ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path skos:relatedMatch ], + sh:order 33 ; + sh:path skos:broadMatch ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; sh:nodeKind sh:Literal ; - sh:order 42 ; - sh:path schema1:keywords ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; + sh:order 1 ; + sh:path linkml:id_prefixes ], + [ sh:class linkml:LocalName ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 17 ; - sh:path linkml:examples ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path linkml:deprecated_element_has_exact_replacement ], + sh:order 4 ; + sh:path linkml:local_names ], [ sh:datatype xsd:string ; sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 22 ; sh:path schema1:inLanguage ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; + sh:order 28 ; + sh:path skos:mappingRelation ], + [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml:definition_uri ] ; + sh:order 39 ; + sh:path bibo:status ] ; sh:targetClass linkml:Element . linkml:EnumExpression a sh:NodeShape ; rdfs:comment "An expression that constrains the range of a slot" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:AnonymousEnumExpression ; - sh:description "An enum expression that yields a list of permissible values that are to be subtracted from the enum" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:minus ], - [ sh:description "A list of identifiers that are used to construct a set of permissible values" ; - sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml:concepts ], - [ sh:class linkml:MatchQuery ; - sh:description "Specifies a match query that is used to calculate the list of permissible values" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml:matches ], - [ sh:description "Defines the specific formula to be used to generate the permissible values." ; + sh:property [ sh:description "Defines the specific formula to be used to generate the permissible values." ; sh:in ( "CODE" "CURIE" "URI" "FHIR_CODING" "LABEL" ) ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml:pv_formula ], - [ sh:class linkml:ReachabilityQuery ; - sh:description "Specifies a query for obtaining a list of permissible values based on graph reachability" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml:reachable_from ], [ sh:description "the identifier of an enumeration code set." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml:code_set ], - [ sh:class linkml:EnumDefinition ; - sh:description "An enum definition that is used as the basis to create a new enum" ; - sh:nodeKind sh:IRI ; - sh:order 7 ; - sh:path linkml:inherits ], - [ sh:class linkml:PermissibleValue ; - sh:description "A list of possible values for a slot range" ; + [ sh:description "A list of identifiers that are used to construct a set of permissible values" ; sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml:permissible_values ], + sh:order 10 ; + sh:path linkml:concepts ], [ sh:datatype xsd:string ; sh:description "the version identifier of the enumeration code set" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 2 ; sh:path linkml:code_set_version ], + [ sh:class linkml:AnonymousEnumExpression ; + sh:description "An enum expression that yields a list of permissible values that are to be included, after subtracting the minus set" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml:include ], [ sh:datatype xsd:string ; sh:description "the version tag of the enumeration code set" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path linkml:code_set_tag ], + [ sh:class linkml:ReachabilityQuery ; + sh:description "Specifies a query for obtaining a list of permissible values based on graph reachability" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml:reachable_from ], [ sh:class linkml:AnonymousEnumExpression ; - sh:description "An enum expression that yields a list of permissible values that are to be included, after subtracting the minus set" ; + sh:description "An enum expression that yields a list of permissible values that are to be subtracted from the enum" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml:include ] ; + sh:order 6 ; + sh:path linkml:minus ], + [ sh:class linkml:EnumDefinition ; + sh:description "An enum definition that is used as the basis to create a new enum" ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path linkml:inherits ], + [ sh:class linkml:MatchQuery ; + sh:description "Specifies a match query that is used to calculate the list of permissible values" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path linkml:matches ], + [ sh:class linkml:PermissibleValue ; + sh:description "A list of possible values for a slot range" ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml:permissible_values ] ; sh:targetClass linkml:EnumExpression . linkml:MatchQuery a sh:NodeShape ; @@ -2624,198 +2624,195 @@ linkml:ReachabilityQuery a sh:NodeShape ; rdfs:comment "A query that is used on an enum expression to dynamically obtain a set of permissible values via walking from a set of source nodes to a set of descendants or ancestors over a set of relationship types." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "An ontology or vocabulary or terminology that is used in a query to obtain a set of permissible values" ; + sh:property [ sh:datatype xsd:boolean ; + sh:description "True if the direction of the reachability query is reversed and ancestors are retrieved" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path linkml:traverse_up ], + [ sh:description "A list of relationship types (properties) that are used in a reachability query" ; sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:source_ontology ], - [ sh:description "A list of nodes that are used in the reachability query" ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml:source_nodes ], + sh:order 2 ; + sh:path linkml:relationship_types ], [ sh:datatype xsd:boolean ; sh:description "True if the query is reflexive" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 4 ; sh:path linkml:include_self ], + [ sh:description "An ontology or vocabulary or terminology that is used in a query to obtain a set of permissible values" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml:source_ontology ], + [ sh:description "A list of nodes that are used in the reachability query" ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml:source_nodes ], [ sh:datatype xsd:boolean ; sh:description "True if the reachability query should only include directly related nodes, if False then include also transitively connected" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 3 ; - sh:path linkml:is_direct ], - [ sh:datatype xsd:boolean ; - sh:description "True if the direction of the reachability query is reversed and ancestors are retrieved" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path linkml:traverse_up ], - [ sh:description "A list of relationship types (properties) that are used in a reachability query" ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml:relationship_types ] ; + sh:path linkml:is_direct ] ; sh:targetClass linkml:ReachabilityQuery . linkml:EnumBinding a sh:NodeShape ; rdfs:comment "A binding of a slot or a class to a permissible value from an enumeration." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path linkml:imported_from ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:mappingRelation ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 13 ; - sh:path linkml:examples ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; + sh:property [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 35 ; - sh:path bibo:status ], + sh:order 25 ; + sh:path skos:exactMatch ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path linkml:todos ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; + sh:order 38 ; + sh:path schema1:keywords ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path oslc:modifiedBy ], - [ sh:description "Controlled terms used to categorize an element." ; + sh:order 19 ; + sh:path rdfs:seeAlso ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path dcterms:subject ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:order 28 ; + sh:path skos:narrowMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; - sh:order 14 ; - sh:path OIO:inSubset ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:order 27 ; + sh:path skos:relatedMatch ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 23 ; + sh:path skosxl:altLabel ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml:annotations ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 31 ; + sh:path dcterms:contributor ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path skos:closeMatch ], + [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path linkml:deprecated_element_has_possible_replacement ], + sh:order 30 ; + sh:path pav:createdBy ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; - sh:order 38 ; - sh:path schema1:keywords ], + sh:order 10 ; + sh:path linkml:todos ], [ sh:datatype xsd:string ; sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; sh:order 22 ; sh:path skos:altLabel ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:relatedMatch ], [ sh:datatype xsd:string ; sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 9 ; sh:path linkml:deprecated ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml:alt_descriptions ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:exactMatch ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:extensions ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:description "A path to a slot that is being bound to a permissible value from an enumeration." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path schema1:inLanguage ], + sh:order 2 ; + sh:path linkml:binds_value_of ], [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path pav:createdOn ], - [ sh:description "id of the schema that defined the element" ; + sh:order 33 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 15 ; - sh:path skos:inScheme ], + sh:order 17 ; + sh:path dcterms:source ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path skos:definition ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:order 12 ; + sh:path skos:note ], + [ sh:description "Defines the specific formula to be used to generate the permissible values." ; + sh:in ( "CODE" "CURIE" "URI" "FHIR_CODING" "LABEL" ) ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 36 ; - sh:path sh:order ], + sh:order 3 ; + sh:path linkml:pv_formula ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml:alt_descriptions ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 14 ; + sh:path OIO:inSubset ], [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 20 ; sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path rdfs:seeAlso ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:order 29 ; + sh:path skos:broadMatch ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path skos:closeMatch ], + sh:order 21 ; + sh:path linkml:deprecated_element_has_possible_replacement ], [ sh:description "The level of obligation or recommendation strength for a metadata element" ; sh:in ( "REQUIRED" "RECOMMENDED" "OPTIONAL" "EXAMPLE" "DISCOURAGED" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path linkml:obligation_level ], - [ sh:datatype xsd:string ; - sh:description "A path to a slot that is being bound to a permissible value from an enumeration." ; + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml:extensions ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path linkml:binds_value_of ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:narrowMatch ], + sh:order 15 ; + sh:path skos:inScheme ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path skos:mappingRelation ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path dcterms:title ], - [ sh:description "A related resource from which the element is derived." ; + sh:order 6 ; + sh:path skos:definition ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path dcterms:source ], - [ sh:description "agent that contributed to the element" ; + sh:order 34 ; + sh:path oslc:modifiedBy ], + [ sh:description "status of the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path dcterms:contributor ], - [ sh:description "Defines the specific formula to be used to generate the permissible values." ; - sh:in ( "CODE" "CURIE" "URI" "FHIR_CODING" "LABEL" ) ; + sh:order 35 ; + sh:path bibo:status ], + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml:pv_formula ], + sh:nodeKind sh:Literal ; + sh:order 16 ; + sh:path linkml:imported_from ], [ sh:class linkml:EnumDefinition ; sh:defaultValue "string"^^xsd:string ; sh:description """defines the type of the object of the slot. Given the following slot definition @@ -2832,153 +2829,103 @@ implicitly asserts Y is an instance of C2 sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml:range ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 37 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path skos:note ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 23 ; - sh:path skosxl:altLabel ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; sh:order 11 ; sh:path skos:editorialNote ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 33 ; - sh:path pav:lastUpdatedOn ], - [ sh:description "agent that created the element" ; + sh:order 8 ; + sh:path dcterms:title ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path pav:createdBy ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:Literal ; + sh:order 18 ; + sh:path schema1:inLanguage ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path pav:createdOn ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml:annotations ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:broadMatch ] ; + sh:order 13 ; + sh:path linkml:examples ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 36 ; + sh:path sh:order ] ; sh:targetClass linkml:EnumBinding . linkml:EnumDefinition a sh:NodeShape ; rdfs:comment "an element whose instances must be drawn from a specified set of permissible values" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "the version identifier of the enumeration code set" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path linkml:code_set_version ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 56 ; - sh:path pav:lastUpdatedOn ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 33 ; - sh:path linkml:todos ], - [ sh:class linkml:Definition ; - sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 12 ; - sh:path linkml:is_a ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; + sh:property [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; - sh:order 43 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:datatype xsd:string ; - sh:description "An established standard to which the element conforms." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 24 ; - sh:path dcterms:conformsTo ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:order 37 ; + sh:path OIO:inSubset ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 51 ; - sh:path skos:narrowMatch ], + sh:order 42 ; + sh:path rdfs:seeAlso ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 28 ; + sh:path linkml:annotations ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 31 ; - sh:path dcterms:title ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 52 ; - sh:path skos:broadMatch ], - [ sh:class linkml:EnumDefinition ; - sh:description "An enum definition that is used as the basis to create a new enum" ; - sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml:inherits ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 30 ; - sh:path linkml:alt_descriptions ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 40 ; - sh:path dcterms:source ], - [ sh:description "status of the element" ; + sh:order 39 ; + sh:path linkml:imported_from ], + [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 58 ; - sh:path bibo:status ], - [ sh:description "agent that created the element" ; + sh:order 22 ; + sh:path linkml:definition_uri ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 53 ; - sh:path pav:createdBy ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 47 ; - sh:path skos:mappingRelation ], - [ sh:class linkml:Definition ; - sh:description "A collection of secondary parent classes or slots from which inheritable metaslots are propagated from." ; - sh:nodeKind sh:IRI ; - sh:order 15 ; - sh:path linkml:mixins ], - [ sh:class linkml:LocalName ; + sh:nodeKind sh:Literal ; + sh:order 13 ; + sh:path linkml:abstract ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 23 ; - sh:path linkml:local_names ], - [ sh:description "Defines the specific formula to be used to generate the permissible values." ; - sh:in ( "CODE" "CURIE" "URI" "FHIR_CODING" "LABEL" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml:pv_formula ], + sh:order 36 ; + sh:path linkml:examples ], [ sh:datatype xsd:string ; sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 19 ; sh:path rdfs:label ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 27 ; - sh:path linkml:extensions ], - [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path linkml:implements ], + sh:order 43 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:defaultValue "linkml:EnumDefinition"^^xsd:string ; + sh:description "URI of the enum that provides a semantic interpretation of the element in a linked data context. The URI may come from any namespace and may be shared between schemas" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml:enum_uri ], [ sh:datatype xsd:string ; sh:description "the version tag of the enumeration code set" ; sh:maxCount 1 ; @@ -2989,152 +2936,112 @@ linkml:EnumDefinition a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 50 ; sh:path skos:relatedMatch ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 28 ; - sh:path linkml:annotations ], - [ sh:description "the identifier of an enumeration code set." ; + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml:code_set ], - [ sh:class linkml:ReachabilityQuery ; - sh:description "Specifies a query for obtaining a list of permissible values based on graph reachability" ; + sh:nodeKind sh:Literal ; + sh:order 56 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "agent that created the element" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml:reachable_from ], - [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path linkml:values_from ], + sh:order 53 ; + sh:path pav:createdBy ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path skos:note ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:order 34 ; + sh:path skos:editorialNote ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path linkml:deprecated ], + sh:order 55 ; + sh:path pav:createdOn ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 46 ; + sh:path skosxl:altLabel ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 38 ; + sh:path skos:inScheme ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 30 ; + sh:path linkml:alt_descriptions ], [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 44 ; sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "An element in another schema which this element instantiates." ; + [ sh:description "A list of identifiers that are used to construct a set of permissible values" ; sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path linkml:instantiates ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 36 ; - sh:path linkml:examples ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:order 11 ; + sh:path linkml:concepts ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 55 ; - sh:path pav:createdOn ], - [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 22 ; - sh:path linkml:definition_uri ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:order 14 ; + sh:path linkml:mixin ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 39 ; - sh:path linkml:imported_from ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 48 ; - sh:path skos:exactMatch ], - [ sh:class linkml:PermissibleValue ; - sh:description "A list of possible values for a slot range" ; + sh:order 59 ; + sh:path sh:order ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path linkml:permissible_values ], - [ sh:description "id of the schema that defined the element" ; + sh:order 47 ; + sh:path skos:mappingRelation ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 38 ; - sh:path skos:inScheme ], - [ sh:class linkml:Definition ; - sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; - sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path linkml:apply_to ], + sh:order 57 ; + sh:path oslc:modifiedBy ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 45 ; + sh:path skos:altLabel ], [ sh:datatype xsd:string ; sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 29 ; sh:path skos:definition ], - [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path linkml:mixin ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 42 ; - sh:path rdfs:seeAlso ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 54 ; - sh:path dcterms:contributor ], - [ sh:description "A list of identifiers that are used to construct a set of permissible values" ; - sh:nodeKind sh:IRI ; - sh:order 11 ; - sh:path linkml:concepts ], - [ sh:datatype xsd:boolean ; - sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path linkml:id_prefixes_are_closed ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path OIO:inSubset ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; + sh:order 48 ; + sh:path skos:exactMatch ], + [ sh:class linkml:PermissibleValue ; + sh:description "A list of possible values for a slot range" ; sh:nodeKind sh:IRI ; - sh:order 57 ; - sh:path oslc:modifiedBy ], - [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 13 ; - sh:path linkml:abstract ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 46 ; - sh:path skosxl:altLabel ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:order 5 ; + sh:path linkml:permissible_values ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 49 ; - sh:path skos:closeMatch ], - [ sh:class linkml:AnonymousEnumExpression ; - sh:description "An enum expression that yields a list of permissible values that are to be subtracted from the enum" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml:minus ], + sh:order 51 ; + sh:path skos:narrowMatch ], [ sh:datatype xsd:string ; sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; sh:order 61 ; sh:path schema1:keywords ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 41 ; + sh:path schema1:inLanguage ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 60 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. @@ -3144,54 +3051,147 @@ For example, a Measurement class may have 3 fields: unit, value, and string_valu sh:nodeKind sh:Literal ; sh:order 18 ; sh:path linkml:string_serialization ], + [ sh:datatype xsd:boolean ; + sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 21 ; + sh:path linkml:id_prefixes_are_closed ], [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 45 ; - sh:path skos:altLabel ], + sh:order 35 ; + sh:path skos:note ], + [ sh:class linkml:Definition ; + sh:description "A collection of secondary parent classes or slots from which inheritable metaslots are propagated from." ; + sh:nodeKind sh:IRI ; + sh:order 15 ; + sh:path linkml:mixins ], + [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path linkml:values_from ], [ sh:class linkml:AnonymousEnumExpression ; sh:description "An enum expression that yields a list of permissible values that are to be included, after subtracting the minus set" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; sh:path linkml:include ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 33 ; + sh:path linkml:todos ], + [ sh:description "the identifier of an enumeration code set." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml:code_set ], + [ sh:class linkml:LocalName ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 23 ; + sh:path linkml:local_names ], + [ sh:datatype xsd:string ; + sh:description "the version identifier of the enumeration code set" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path linkml:code_set_version ], [ sh:datatype xsd:string ; sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; sh:nodeKind sh:Literal ; sh:order 20 ; sh:path linkml:id_prefixes ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path skos:editorialNote ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 27 ; + sh:path linkml:extensions ], + [ sh:class linkml:ReachabilityQuery ; + sh:description "Specifies a query for obtaining a list of permissible values based on graph reachability" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 59 ; - sh:path sh:order ], - [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path linkml:reachable_from ], + [ sh:class linkml:EnumDefinition ; + sh:description "An enum definition that is used as the basis to create a new enum" ; sh:nodeKind sh:IRI ; - sh:order 60 ; - sh:path dcterms:subject ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:order 8 ; + sh:path linkml:inherits ], + [ sh:class linkml:AnonymousEnumExpression ; + sh:description "An enum expression that yields a list of permissible values that are to be subtracted from the enum" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml:minus ], + [ sh:description "status of the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 41 ; - sh:path schema1:inLanguage ], + sh:nodeKind sh:IRI ; + sh:order 58 ; + sh:path bibo:status ], [ sh:class linkml:MatchQuery ; sh:description "Specifies a match query that is used to calculate the list of permissible values" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 10 ; sh:path linkml:matches ], - [ sh:defaultValue "linkml:EnumDefinition"^^xsd:string ; - sh:description "URI of the enum that provides a semantic interpretation of the element in a linked data context. The URI may come from any namespace and may be shared between schemas" ; + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 54 ; + sh:path dcterms:contributor ], + [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path linkml:implements ], + [ sh:class linkml:Definition ; + sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path linkml:apply_to ], + [ sh:class linkml:Definition ; + sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:enum_uri ] ; + sh:order 12 ; + sh:path linkml:is_a ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 52 ; + sh:path skos:broadMatch ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 40 ; + sh:path dcterms:source ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 49 ; + sh:path skos:closeMatch ], + [ sh:datatype xsd:string ; + sh:description "An established standard to which the element conforms." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 24 ; + sh:path dcterms:conformsTo ], + [ sh:description "An element in another schema which this element instantiates." ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path linkml:instantiates ], + [ sh:description "Defines the specific formula to be used to generate the permissible values." ; + sh:in ( "CODE" "CURIE" "URI" "FHIR_CODING" "LABEL" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml:pv_formula ], + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 31 ; + sh:path dcterms:title ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path linkml:deprecated ] ; sh:targetClass linkml:EnumDefinition . linkml:PermissibleValue a sh:NodeShape ; @@ -3199,76 +3199,155 @@ linkml:PermissibleValue a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path dcterms:title ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:order 41 ; + sh:path schema1:keywords ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path OIO:inSubset ], + sh:order 24 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:class linkml:PermissibleValue ; + sh:description "A collection of secondary parent classes or slots from which inheritable metaslots are propagated from." ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path linkml:mixins ], [ sh:class linkml:Annotation ; sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path linkml:annotations ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 10 ; - sh:path linkml:alt_descriptions ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path linkml:imported_from ], + sh:order 1 ; + sh:path skos:definition ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 32 ; + sh:path skos:broadMatch ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path skos:editorialNote ], + sh:order 15 ; + sh:path skos:note ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 33 ; + sh:path pav:createdBy ], [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; sh:order 29 ; sh:path skos:closeMatch ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml:extensions ], + [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path linkml:implements ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 22 ; + sh:path rdfs:seeAlso ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:mappingRelation ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 40 ; + sh:path dcterms:subject ], [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 38 ; sh:path bibo:status ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path skos:relatedMatch ], [ sh:datatype xsd:string ; - sh:description "The actual permissible value itself" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:text ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:mappingRelation ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:exactMatch ], + sh:order 11 ; + sh:path dcterms:title ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 35 ; + sh:path pav:createdOn ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path skos:note ], + sh:order 25 ; + sh:path skos:altLabel ], + [ sh:class linkml:PermissibleValue ; + sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 6 ; + sh:path linkml:is_a ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 10 ; + sh:path linkml:alt_descriptions ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 16 ; + sh:path linkml:examples ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 34 ; + sh:path dcterms:contributor ], [ sh:datatype xsd:string ; sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; sh:order 13 ; sh:path linkml:todos ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 18 ; + sh:path skos:inScheme ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 28 ; + sh:path skos:exactMatch ], + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 37 ; + sh:path oslc:modifiedBy ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path linkml:deprecated ], + sh:order 21 ; + sh:path schema1:inLanguage ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 31 ; + sh:path skos:narrowMatch ], + [ sh:datatype xsd:string ; + sh:description "The actual permissible value itself" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path linkml:text ], + [ sh:description "An element in another schema which this element instantiates." ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml:instantiates ], [ sh:datatype xsd:integer ; sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; @@ -3280,551 +3359,508 @@ linkml:PermissibleValue a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 20 ; sh:path dcterms:source ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path skos:editorialNote ], + [ sh:class qudt:Unit ; + sh:description "an encoding of a unit" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path qudt:unit ], [ sh:class skosxl:Label ; sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 26 ; sh:path skosxl:altLabel ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml:extensions ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 40 ; - sh:path dcterms:subject ], - [ sh:description "agent that modified the element" ; + [ sh:description "the value meaning of a permissible value" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path oslc:modifiedBy ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; + sh:order 2 ; + sh:path linkml:meaning ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path pav:createdBy ], + sh:order 17 ; + sh:path OIO:inSubset ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path schema1:inLanguage ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 32 ; - sh:path skos:broadMatch ], + sh:order 12 ; + sh:path linkml:deprecated ], [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 25 ; - sh:path skos:altLabel ], - [ sh:description "the value meaning of a permissible value" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml:meaning ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path skos:narrowMatch ], - [ sh:description "id of the schema that defined the element" ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 18 ; - sh:path skos:inScheme ], + sh:nodeKind sh:Literal ; + sh:order 19 ; + sh:path linkml:imported_from ], [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 23 ; sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:class linkml:PermissibleValue ; - sh:description "A collection of secondary parent classes or slots from which inheritable metaslots are propagated from." ; - sh:nodeKind sh:IRI ; - sh:order 7 ; - sh:path linkml:mixins ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 16 ; - sh:path linkml:examples ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path skos:relatedMatch ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 36 ; - sh:path pav:lastUpdatedOn ], - [ sh:class qudt:Unit ; - sh:description "an encoding of a unit" ; + sh:path pav:lastUpdatedOn ] ; + sh:targetClass linkml:PermissibleValue . + +linkml:TypeDefinition a sh:NodeShape ; + rdfs:comment "an element that whose instances are atomic scalar values that can be mapped to primitive types" ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "the slot must have range string and the value of the slot must equal the specified value" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path qudt:unit ], + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path linkml:equals_string ], + [ sh:class linkml:TypeDefinition ; + sh:description "A parent type from which type properties are inherited" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml:typeof ], [ sh:datatype xsd:string ; sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; + sh:order 28 ; sh:path skos:definition ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path pav:createdOn ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 41 ; - sh:path schema1:keywords ], - [ sh:description "agent that contributed to the element" ; + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path dcterms:contributor ], - [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; + sh:order 36 ; + sh:path OIO:inSubset ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 44 ; + sh:path skos:altLabel ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path linkml:implements ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:order 49 ; + sh:path skos:relatedMatch ], + [ sh:description "The uri that defines the possible values for the type definition" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 22 ; - sh:path rdfs:seeAlso ], - [ sh:class linkml:PermissibleValue ; - sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; + sh:order 2 ; + sh:path linkml:type_uri ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 6 ; - sh:path linkml:is_a ], - [ sh:description "An element in another schema which this element instantiates." ; + sh:order 56 ; + sh:path oslc:modifiedBy ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml:instantiates ] ; - sh:targetClass linkml:PermissibleValue . - -linkml:TypeDefinition a sh:NodeShape ; - rdfs:comment "an element that whose instances are atomic scalar values that can be mapped to primitive types" ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:TypeDefinition ; + sh:order 42 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 16 ; + sh:path linkml:any_of ], + [ sh:class linkml:TypeDefinition ; sh:description "indicates that the domain element consists exactly of the members of the element in the range." ; sh:nodeKind sh:IRI ; sh:order 4 ; sh:path linkml:union_of ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 29 ; + sh:path linkml:alt_descriptions ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 38 ; - sh:path linkml:imported_from ], + sh:order 40 ; + sh:path schema1:inLanguage ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path skos:note ], - [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if none of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 14 ; - sh:path linkml:none_of ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 27 ; - sh:path linkml:annotations ], - [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; + sh:order 30 ; + sh:path dcterms:title ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path linkml:implements ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:order 39 ; + sh:path dcterms:source ], + [ sh:description "status of the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 28 ; - sh:path skos:definition ], - [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; - sh:order 59 ; - sh:path dcterms:subject ], - [ sh:class linkml:PatternExpression ; - sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; + sh:order 57 ; + sh:path bibo:status ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 35 ; + sh:path linkml:examples ], + [ sh:datatype xsd:integer ; + sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path linkml:equals_number ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 53 ; + sh:path dcterms:contributor ], + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if all of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:structured_pattern ], - [ sh:datatype xsd:string ; - sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; + sh:order 17 ; + sh:path linkml:all_of ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 47 ; + sh:path skos:exactMatch ], + [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; sh:maxCount 1 ; + sh:order 12 ; + sh:path linkml:minimum_value ], + [ sh:datatype xsd:string ; + sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path rdfs:label ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:order 19 ; + sh:path linkml:id_prefixes ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 43 ; - sh:path linkml:deprecated_element_has_possible_replacement ], + sh:order 37 ; + sh:path skos:inScheme ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 40 ; - sh:path schema1:inLanguage ], + sh:order 33 ; + sh:path skos:editorialNote ], [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 44 ; - sh:path skos:altLabel ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 42 ; - sh:path linkml:deprecated_element_has_exact_replacement ], + sh:order 60 ; + sh:path schema1:keywords ], + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if none of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 14 ; + sh:path linkml:none_of ], [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; sh:order 46 ; sh:path skos:mappingRelation ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 50 ; + sh:path skos:narrowMatch ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 54 ; + sh:path pav:createdOn ], [ sh:datatype xsd:string ; - sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; + sh:description "An established standard to which the element conforms." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:implicit_prefix ], + sh:order 23 ; + sh:path dcterms:conformsTo ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 43 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 51 ; + sh:path skos:broadMatch ], + [ sh:datatype xsd:string ; + sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 18 ; + sh:path rdfs:label ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 59 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path linkml:pattern ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 38 ; + sh:path linkml:imported_from ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 50 ; - sh:path skos:narrowMatch ], + sh:order 41 ; + sh:path rdfs:seeAlso ], [ sh:datatype xsd:string ; sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; sh:order 32 ; sh:path linkml:todos ], - [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; + [ sh:datatype xsd:boolean ; + sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path linkml:definition_uri ], + sh:nodeKind sh:Literal ; + sh:order 20 ; + sh:path linkml:id_prefixes_are_closed ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 31 ; + sh:path linkml:deprecated ], [ sh:description "An element in another schema which this element instantiates." ; sh:nodeKind sh:IRI ; sh:order 25 ; sh:path linkml:instantiates ], - [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; + [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; sh:maxCount 1 ; - sh:order 12 ; - sh:path linkml:minimum_value ], + sh:nodeKind sh:IRI ; + sh:order 21 ; + sh:path linkml:definition_uri ], [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal the specified value" ; + sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path linkml:equals_string ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 39 ; - sh:path dcterms:source ], + sh:order 8 ; + sh:path linkml:implicit_prefix ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 26 ; + sh:path linkml:extensions ], [ sh:datatype xsd:string ; sh:description "the name of the python object that implements this type definition" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 3 ; sh:path linkml:repr ], - [ sh:class linkml:LocalName ; + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if only one of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 22 ; - sh:path linkml:local_names ], - [ sh:description "The uri that defines the possible values for the type definition" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml:type_uri ], - [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path linkml:maximum_value ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 58 ; - sh:path sh:order ], - [ sh:class linkml:TypeDefinition ; - sh:description "A parent type from which type properties are inherited" ; + sh:order 15 ; + sh:path linkml:exactly_one_of ], + [ sh:class linkml:PatternExpression ; + sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:typeof ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml:structured_pattern ], [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; sh:order 48 ; sh:path skos:closeMatch ], - [ sh:datatype xsd:integer ; - sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path linkml:equals_number ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 30 ; - sh:path dcterms:title ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 60 ; - sh:path schema1:keywords ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 53 ; - sh:path dcterms:contributor ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 29 ; - sh:path linkml:alt_descriptions ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:order 27 ; + sh:path linkml:annotations ], + [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; sh:nodeKind sh:IRI ; - sh:order 36 ; - sh:path OIO:inSubset ], - [ sh:class qudt:Unit ; - sh:description "an encoding of a unit" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path qudt:unit ], + sh:order 24 ; + sh:path linkml:implements ], [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; + sh:description "python base type in the LinkML runtime that implements this type definition" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path linkml:equals_string_in ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 49 ; - sh:path skos:relatedMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 51 ; - sh:path skos:broadMatch ], + sh:order 1 ; + sh:path linkml:base ], [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 54 ; - sh:path pav:createdOn ], + sh:order 55 ; + sh:path pav:lastUpdatedOn ], [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 52 ; sh:path pav:createdBy ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 55 ; - sh:path pav:lastUpdatedOn ], - [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if at least one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 16 ; - sh:path linkml:any_of ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 35 ; - sh:path linkml:examples ], + sh:order 58 ; + sh:path sh:order ], [ sh:datatype xsd:string ; - sh:description "python base type in the LinkML runtime that implements this type definition" ; - sh:maxCount 1 ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path linkml:base ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 47 ; - sh:path skos:exactMatch ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 57 ; - sh:path bibo:status ], - [ sh:description "id of the schema that defined the element" ; + sh:order 34 ; + sh:path skos:note ], + [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path skos:inScheme ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 33 ; - sh:path skos:editorialNote ], + sh:order 13 ; + sh:path linkml:maximum_value ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; + sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; sh:nodeKind sh:Literal ; - sh:order 31 ; - sh:path linkml:deprecated ], - [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if all of the expressions hold" ; + sh:order 10 ; + sh:path linkml:equals_string_in ], + [ sh:class linkml:LocalName ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 17 ; - sh:path linkml:all_of ], + sh:order 22 ; + sh:path linkml:local_names ], [ sh:class skosxl:Label ; sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 45 ; sh:path skosxl:altLabel ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 56 ; - sh:path oslc:modifiedBy ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 26 ; - sh:path linkml:extensions ], - [ sh:datatype xsd:string ; - sh:description "An established standard to which the element conforms." ; + [ sh:class qudt:Unit ; + sh:description "an encoding of a unit" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 23 ; - sh:path dcterms:conformsTo ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 41 ; - sh:path rdfs:seeAlso ], - [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if only one of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 15 ; - sh:path linkml:exactly_one_of ], - [ sh:datatype xsd:string ; - sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; - sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path linkml:id_prefixes ], - [ sh:datatype xsd:boolean ; - sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:id_prefixes_are_closed ] ; + sh:order 7 ; + sh:path qudt:unit ] ; sh:targetClass linkml:TypeDefinition . linkml:AnonymousEnumExpression a sh:NodeShape ; rdfs:comment "An enum_expression that is not named" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:PermissibleValue ; - sh:description "A list of possible values for a slot range" ; + sh:property [ sh:class linkml:EnumDefinition ; + sh:description "An enum definition that is used as the basis to create a new enum" ; sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml:permissible_values ], + sh:order 7 ; + sh:path linkml:inherits ], + [ sh:class linkml:AnonymousEnumExpression ; + sh:description "An enum expression that yields a list of permissible values that are to be subtracted from the enum" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml:minus ], [ sh:description "the identifier of an enumeration code set." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml:code_set ], - [ sh:description "A list of identifiers that are used to construct a set of permissible values" ; - sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml:concepts ], [ sh:class linkml:MatchQuery ; sh:description "Specifies a match query that is used to calculate the list of permissible values" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path linkml:matches ], + [ sh:datatype xsd:string ; + sh:description "the version identifier of the enumeration code set" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path linkml:code_set_version ], + [ sh:description "A list of identifiers that are used to construct a set of permissible values" ; + sh:nodeKind sh:IRI ; + sh:order 10 ; + sh:path linkml:concepts ], + [ sh:class linkml:PermissibleValue ; + sh:description "A list of possible values for a slot range" ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml:permissible_values ], [ sh:description "Defines the specific formula to be used to generate the permissible values." ; sh:in ( "CODE" "CURIE" "URI" "FHIR_CODING" "LABEL" ) ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml:pv_formula ], + [ sh:class linkml:ReachabilityQuery ; + sh:description "Specifies a query for obtaining a list of permissible values based on graph reachability" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml:reachable_from ], [ sh:datatype xsd:string ; sh:description "the version tag of the enumeration code set" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path linkml:code_set_tag ], - [ sh:datatype xsd:string ; - sh:description "the version identifier of the enumeration code set" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path linkml:code_set_version ], [ sh:class linkml:AnonymousEnumExpression ; sh:description "An enum expression that yields a list of permissible values that are to be included, after subtracting the minus set" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; - sh:path linkml:include ], - [ sh:class linkml:AnonymousEnumExpression ; - sh:description "An enum expression that yields a list of permissible values that are to be subtracted from the enum" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:minus ], - [ sh:class linkml:ReachabilityQuery ; - sh:description "Specifies a query for obtaining a list of permissible values based on graph reachability" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml:reachable_from ], - [ sh:class linkml:EnumDefinition ; - sh:description "An enum definition that is used as the basis to create a new enum" ; - sh:nodeKind sh:IRI ; - sh:order 7 ; - sh:path linkml:inherits ] ; + sh:path linkml:include ] ; sh:targetClass linkml:AnonymousEnumExpression . linkml:PathExpression a sh:NodeShape ; rdfs:comment "An expression that describes an abstract path from an object to another through a sequence of slot lookups" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:property [ sh:description "status of the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 39 ; + sh:path bibo:status ], + [ sh:datatype xsd:boolean ; + sh:description "true if the slot is to be inversed" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 42 ; - sh:path schema1:keywords ], - [ sh:class linkml:PathExpression ; - sh:description "holds if at least one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml:any_of ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; + sh:order 5 ; + sh:path linkml:reversed ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml:alt_descriptions ], - [ sh:class linkml:PathExpression ; - sh:description "holds if none of the expressions hold" ; + sh:order 17 ; + sh:path linkml:examples ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path skos:closeMatch ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 18 ; + sh:path OIO:inSubset ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "A range that is described as a boolean expression combining existing ranges" ; + sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:none_of ], + sh:order 7 ; + sh:path linkml:range_expression ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 28 ; + sh:path skos:mappingRelation ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 36 ; sh:path pav:createdOn ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 27 ; + sh:path skosxl:altLabel ], + [ sh:class linkml:PathExpression ; + sh:description "holds if only one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml:exactly_one_of ], + [ sh:class linkml:PathExpression ; + sh:description "holds if none of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:none_of ], + [ sh:class linkml:PathExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml:any_of ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:mappingRelation ], + sh:order 24 ; + sh:path linkml:deprecated_element_has_exact_replacement ], [ sh:class linkml:Extension ; sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -3835,276 +3871,195 @@ linkml:PathExpression a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 16 ; sh:path skos:note ], - [ sh:datatype xsd:boolean ; - sh:description "true if the slot is to be inversed" ; - sh:maxCount 1 ; + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path linkml:reversed ], - [ sh:description "A related resource from which the element is derived." ; + sh:order 42 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path dcterms:source ], - [ sh:description "id of the schema that defined the element" ; + sh:nodeKind sh:Literal ; + sh:order 37 ; + sh:path pav:lastUpdatedOn ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path skos:inScheme ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 27 ; - sh:path skosxl:altLabel ], - [ sh:class linkml:PathExpression ; - sh:description "holds if all of the expressions hold" ; + sh:nodeKind sh:Literal ; + sh:order 22 ; + sh:path schema1:inLanguage ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:all_of ], + sh:order 11 ; + sh:path linkml:alt_descriptions ], [ sh:datatype xsd:string ; sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 13 ; sh:path linkml:deprecated ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path linkml:todos ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path skos:definition ], [ sh:datatype xsd:integer ; sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 40 ; sh:path sh:order ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path schema1:inLanguage ], + sh:nodeKind sh:IRI ; + sh:order 19 ; + sh:path skos:inScheme ], [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; sh:order 41 ; sh:path dcterms:subject ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 35 ; - sh:path dcterms:contributor ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 18 ; - sh:path OIO:inSubset ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path skos:definition ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 17 ; - sh:path linkml:examples ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path pav:createdBy ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:order 9 ; + sh:path linkml:annotations ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path skos:closeMatch ], + sh:order 23 ; + sh:path rdfs:seeAlso ], [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 25 ; sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path dcterms:title ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + [ sh:class linkml:PathExpression ; + sh:description "holds if all of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml:all_of ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path skos:relatedMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:order 32 ; + sh:path skos:narrowMatch ], + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path skos:broadMatch ], + sh:order 38 ; + sh:path oslc:modifiedBy ], [ sh:datatype xsd:string ; sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; sh:order 26 ; sh:path skos:altLabel ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 39 ; - sh:path bibo:status ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "A range that is described as a boolean expression combining existing ranges" ; + [ sh:class linkml:PathExpression ; + sh:description "in a sequential list, this indicates the next member" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml:range_expression ], + sh:order 0 ; + sh:path linkml:followed_by ], [ sh:class linkml:SlotDefinition ; sh:description "the slot to traverse" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 6 ; sh:path linkml:traverse ], - [ sh:class linkml:PathExpression ; - sh:description "holds if only one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:exactly_one_of ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:imported_from ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:exactMatch ], - [ sh:class linkml:PathExpression ; - sh:description "in a sequential list, this indicates the next member" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml:followed_by ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path pav:lastUpdatedOn ], + sh:order 31 ; + sh:path skos:relatedMatch ], [ sh:datatype xsd:string ; sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; sh:order 15 ; sh:path skos:editorialNote ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml:annotations ], - [ sh:description "agent that modified the element" ; + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 38 ; - sh:path oslc:modifiedBy ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 32 ; - sh:path skos:narrowMatch ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path rdfs:seeAlso ] ; - sh:targetClass linkml:PathExpression . - -linkml:PatternExpression a sh:NodeShape ; - rdfs:comment "a regular expression pattern used to evaluate conformance of a string" ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 36 ; - sh:path dcterms:subject ], + sh:order 21 ; + sh:path dcterms:source ], [ sh:datatype xsd:string ; sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; - sh:order 9 ; + sh:order 14 ; sh:path linkml:todos ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path skos:mappingRelation ], - [ sh:description "agent that modified the element" ; + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path dcterms:title ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 35 ; + sh:path dcterms:contributor ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; sh:order 33 ; - sh:path oslc:modifiedBy ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; + sh:path skos:broadMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 20 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:class skosxl:Label ; + sh:path linkml:imported_from ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 34 ; + sh:path pav:createdBy ] ; + sh:targetClass linkml:PathExpression . + +linkml:PatternExpression a sh:NodeShape ; + rdfs:comment "a regular expression pattern used to evaluate conformance of a string" ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class skosxl:Label ; sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 22 ; sh:path skosxl:altLabel ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path linkml:todos ], [ sh:class linkml:Example ; sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 12 ; sh:path linkml:examples ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:alt_descriptions ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path skos:altLabel ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:description "A related resource from which the element is derived." ; + sh:order 29 ; + sh:path pav:createdBy ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path dcterms:source ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path OIO:inSubset ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:narrowMatch ], - [ sh:datatype xsd:boolean ; - sh:description "if not true then the pattern must match the whole string, as if enclosed in ^...$" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path linkml:partial_match ], + sh:order 33 ; + sh:path oslc:modifiedBy ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:deprecated ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:order 7 ; + sh:path dcterms:title ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path sh:order ], + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path dcterms:source ], [ sh:datatype xsd:string ; - sh:description "the string value of the slot must conform to this regular expression expressed in the string. May be interpolated." ; - sh:maxCount 1 ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:syntax ], + sh:order 11 ; + sh:path skos:note ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was created" ; sh:maxCount 1 ; @@ -4112,802 +4067,847 @@ linkml:PatternExpression a sh:NodeShape ; sh:order 31 ; sh:path pav:createdOn ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path skos:editorialNote ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path pav:createdBy ], - [ sh:description "id of the schema that defined the element" ; + sh:order 37 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 14 ; - sh:path skos:inScheme ], + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path pav:lastUpdatedOn ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path schema1:inLanguage ], + sh:order 8 ; + sh:path linkml:deprecated ], [ sh:datatype xsd:boolean ; sh:description "if true then the pattern is first string interpolated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path linkml:interpolated ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:narrowMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path skos:exactMatch ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 19 ; + sh:path linkml:deprecated_element_has_exact_replacement ], [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; sh:order 18 ; sh:path rdfs:seeAlso ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path dcterms:title ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path bibo:status ], [ sh:class linkml:Extension ; sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml:extensions ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path dcterms:contributor ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path skos:relatedMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:closeMatch ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + [ sh:datatype xsd:boolean ; + sh:description "if not true then the pattern must match the whole string, as if enclosed in ^...$" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path linkml:imported_from ], + sh:order 2 ; + sh:path linkml:partial_match ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml:alt_descriptions ], + [ sh:description "status of the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 34 ; + sh:path bibo:status ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path schema1:keywords ], + sh:order 10 ; + sh:path skos:editorialNote ], [ sh:class linkml:Annotation ; sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; sh:path linkml:annotations ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:exactMatch ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:order 13 ; + sh:path OIO:inSubset ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path pav:lastUpdatedOn ], + sh:order 35 ; + sh:path sh:order ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 23 ; + sh:path skos:mappingRelation ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 14 ; + sh:path skos:inScheme ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path skos:closeMatch ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "the string value of the slot must conform to this regular expression expressed in the string. May be interpolated." ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path skos:note ], + sh:order 0 ; + sh:path linkml:syntax ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 36 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path skos:definition ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path dcterms:contributor ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 20 ; + sh:path linkml:deprecated_element_has_possible_replacement ], [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; sh:order 28 ; - sh:path skos:broadMatch ] ; - sh:targetClass linkml:PatternExpression . - -qudt:Unit a sh:NodeShape ; - rdfs:comment "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Used to link a unit to equivalent concepts in ontologies such as UO, SNOMED, OEM, OBOE, NCIT" ; + sh:path skos:broadMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path skos:exactMatch ], + sh:order 26 ; + sh:path skos:relatedMatch ], [ sh:datatype xsd:string ; - sh:description "Expression for deriving this unit from other units" ; - sh:maxCount 1 ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path linkml:derivation ], + sh:order 21 ; + sh:path skos:altLabel ], [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path qudt:iec61360Code ], + sh:order 15 ; + sh:path linkml:imported_from ], [ sh:datatype xsd:string ; - sh:description "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path qudt:abbreviation ], - [ sh:datatype xsd:string ; + sh:order 17 ; + sh:path schema1:inLanguage ] ; + sh:targetClass linkml:PatternExpression . + +qudt:Unit a sh:NodeShape ; + rdfs:comment "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:description "name of the unit encoded as a symbol" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path qudt:symbol ], [ sh:datatype xsd:string ; - sh:description "associates a QUDT unit with its UCUM code (case-sensitive)." ; + sh:description "An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path qudt:ucumCode ], + sh:order 1 ; + sh:path qudt:abbreviation ], + [ sh:datatype xsd:string ; + sh:description "Expression for deriving this unit from other units" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path linkml:derivation ], [ sh:description "Concept in a vocabulary or ontology that denotes the kind of quantity being measured, e.g. length" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 6 ; sh:path qudt:hasQuantityKind ], + [ sh:description "Used to link a unit to equivalent concepts in ontologies such as UO, SNOMED, OEM, OBOE, NCIT" ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path qudt:iec61360Code ], [ sh:datatype xsd:string ; sh:description "the spelled out name of the unit, for example, meter" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 2 ; - sh:path rdfs:label ] ; + sh:path rdfs:label ], + [ sh:datatype xsd:string ; + sh:description "associates a QUDT unit with its UCUM code (case-sensitive)." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path qudt:ucumCode ] ; sh:targetClass qudt:Unit . linkml:ClassDefinition a sh:NodeShape ; rdfs:comment "an element whose instances are complex objects that may have slot-value assignments" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:SlotDefinition ; - sh:description "The combination of is a plus defining slots form a genus-differentia definition, or the set of necessary and sufficient conditions that can be transformed into an OWL equivalence axiom" ; + sh:property [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 37 ; + sh:path linkml:extensions ], + [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; sh:nodeKind sh:IRI ; - sh:order 6 ; - sh:path linkml:defining_slots ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:order 27 ; + sh:path linkml:values_from ], + [ sh:description "An element in another schema which this element instantiates." ; + sh:nodeKind sh:IRI ; + sh:order 36 ; + sh:path linkml:instantiates ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 39 ; - sh:path skos:definition ], - [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 32 ; - sh:path linkml:definition_uri ], - [ sh:class linkml:ClassDefinition ; - sh:description "indicates that the domain element consists exactly of the members of the element in the range." ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path linkml:union_of ], - [ sh:description "A related resource from which the element is derived." ; + sh:order 66 ; + sh:path pav:lastUpdatedOn ], + [ sh:datatype xsd:boolean ; + sh:description "true if this class represents a relationship rather than an entity" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 50 ; - sh:path dcterms:source ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path linkml:represents_relationship ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 42 ; - sh:path linkml:deprecated ], - [ sh:class linkml:UniqueKey ; - sh:description "A collection of named unique keys for this class. Unique keys may be singular or compound." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml:unique_keys ], + sh:order 65 ; + sh:path pav:createdOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 59 ; + sh:path skos:closeMatch ], [ sh:class linkml:ClassDefinition ; sh:description "A primary parent class from which inheritable metaslots are propagated" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 22 ; sh:path linkml:is_a ], - [ sh:description "DEPRECATED -- rdfs:subClassOf to be emitted in OWL generation" ; + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 56 ; + sh:path skosxl:altLabel ], + [ sh:datatype xsd:string ; + sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. +We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. +Implementations of frameworks may choose to use this property to either (a) PARSE: implement automated normalizations by parsing denormalized strings into complex objects (b) GENERATE: implement automated to_string labeling of complex objects +For example, a Measurement class may have 3 fields: unit, value, and string_value. The string_value slot may have a string_serialization of {value}{unit} such that if unit=cm and value=2, the value of string_value shouldd be 2cm""" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml:subclass_of ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 70 ; - sh:path dcterms:subject ], + sh:nodeKind sh:Literal ; + sh:order 28 ; + sh:path linkml:string_serialization ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 43 ; - sh:path linkml:todos ], - [ sh:description "status of the element" ; + sh:order 49 ; + sh:path linkml:imported_from ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 55 ; + sh:path skos:altLabel ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 68 ; - sh:path bibo:status ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "The collection of classification rules that apply to all members of this class. Classification rules allow for automatically assigning the instantiated type of an instance." ; + sh:order 48 ; + sh:path skos:inScheme ], + [ sh:class linkml:ClassDefinition ; + sh:description "Two classes are disjoint if they have no instances in common, two slots are disjoint if they can never hold between the same two instances" ; + sh:nodeKind sh:IRI ; + sh:order 13 ; + sh:path linkml:disjoint_with ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 10 ; - sh:path linkml:classification_rules ], - [ sh:datatype xsd:boolean ; - sh:description "If true then all direct is_a children are mutually disjoint and share no instances in common" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path linkml:children_are_mutually_disjoint ], - [ sh:class linkml:ExtraSlotsExpression ; - sh:description """How a class instance handles extra data not specified in the class definition. -Note that this does *not* define the constraints that are placed on additional slots defined by inheriting classes. - -Possible values: -- `allowed: true` - allow all additional data -- `allowed: false` (or `allowed:` or `allowed: null` while `range_expression` is `null`) - - forbid all additional data (default) -- `range_expression: ...` - allow additional data if it matches the slot expression (see examples) -""" ; + sh:order 46 ; + sh:path linkml:examples ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 61 ; + sh:path skos:narrowMatch ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 67 ; + sh:path oslc:modifiedBy ], + [ sh:class linkml:ClassRule ; + sh:description "the collection of rules that apply to all members of this class" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 15 ; - sh:path linkml:extra_slots ], + sh:order 9 ; + sh:path sh:rule ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 39 ; + sh:path skos:definition ], + [ sh:class linkml:ClassDefinition ; + sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path linkml:apply_to ], [ sh:class linkml:AltDescription ; sh:description "A sourced alternative description for an element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 40 ; sh:path linkml:alt_descriptions ], + [ sh:datatype xsd:string ; + sh:description "the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 16 ; + sh:path skos:prefLabel ], [ sh:datatype xsd:integer ; sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 69 ; sh:path sh:order ], - [ sh:datatype xsd:string ; - sh:description "An established standard to which the element conforms." ; + [ sh:description "status of the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path dcterms:conformsTo ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 52 ; - sh:path rdfs:seeAlso ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:order 68 ; + sh:path bibo:status ], + [ sh:class linkml:UniqueKey ; + sh:description "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml:unique_keys ], + [ sh:defaultValue "linkml:ClassDefinition"^^xsd:string ; + sh:description "URI of the class that provides a semantic interpretation of the element in a linked data context. The URI may come from any namespace and may be shared between schemas" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 49 ; - sh:path linkml:imported_from ], + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml:class_uri ], + [ sh:class linkml:SlotDefinition ; + sh:description "expresses constraints on a group of slots for a class expression" ; + sh:nodeKind sh:IRI ; + sh:order 21 ; + sh:path linkml:slot_conditions ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if only one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 18 ; + sh:path linkml:exactly_one_of ], + [ sh:class linkml:SlotDefinition ; + sh:description "collection of slot names that are applicable to a class" ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml:slots ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 17 ; + sh:path linkml:any_of ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 60 ; + sh:path skos:relatedMatch ], [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; + sh:description "if true then induced/mangled slot names are not created for class_usage and attributes" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 24 ; - sh:path linkml:mixin ], - [ sh:class linkml:ClassDefinition ; - sh:description "A collection of secondary parent mixin classes from which inheritable metaslots are propagated" ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path linkml:mixins ], - [ sh:description "agent that created the element" ; + sh:order 11 ; + sh:path linkml:slot_names_unique ], + [ sh:datatype xsd:string ; + sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 29 ; + sh:path rdfs:label ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 63 ; - sh:path pav:createdBy ], + sh:order 62 ; + sh:path skos:broadMatch ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 44 ; + sh:path skos:editorialNote ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if all of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 20 ; + sh:path linkml:all_of ], + [ sh:class linkml:SlotDefinition ; + sh:description "Inline definition of slots" ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml:attributes ], + [ sh:class linkml:LocalName ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 33 ; + sh:path linkml:local_names ], + [ sh:class linkml:ClassDefinition ; + sh:description "A collection of secondary parent mixin classes from which inheritable metaslots are propagated" ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path linkml:mixins ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 53 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:datatype xsd:boolean ; + sh:description "If true then all direct is_a children are mutually disjoint and share no instances in common" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path linkml:children_are_mutually_disjoint ], [ sh:datatype xsd:boolean ; sh:description "Indicates that this is the Container class which forms the root of the serialized document structure in tree serializations" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 7 ; sh:path linkml:tree_root ], - [ sh:datatype xsd:boolean ; - sh:description "true if this class represents a relationship rather than an entity" ; + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path linkml:represents_relationship ], - [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; - sh:maxCount 1 ; + sh:order 42 ; + sh:path linkml:deprecated ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; - sh:order 23 ; - sh:path linkml:abstract ], + sh:order 43 ; + sh:path linkml:todos ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; sh:order 47 ; sh:path OIO:inSubset ], - [ sh:description "agent that modified the element" ; + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 57 ; + sh:path skos:mappingRelation ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 67 ; - sh:path oslc:modifiedBy ], + sh:order 54 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 24 ; + sh:path linkml:mixin ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 44 ; - sh:path skos:editorialNote ], + sh:order 71 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:string ; + sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; + sh:nodeKind sh:Literal ; + sh:order 30 ; + sh:path linkml:id_prefixes ], [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if only one of the expressions hold" ; + sh:description "holds if none of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 18 ; - sh:path linkml:exactly_one_of ], - [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path linkml:values_from ], - [ sh:class linkml:SlotDefinition ; - sh:description "Inline definition of slots" ; + sh:order 19 ; + sh:path linkml:none_of ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml:attributes ], + sh:order 50 ; + sh:path dcterms:source ], [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; sh:order 64 ; sh:path dcterms:contributor ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + [ sh:class linkml:ClassDefinition ; + sh:description "indicates that the domain element consists exactly of the members of the element in the range." ; sh:nodeKind sh:IRI ; - sh:order 57 ; - sh:path skos:mappingRelation ], - [ sh:description "An element in another schema which this element instantiates." ; + sh:order 5 ; + sh:path linkml:union_of ], + [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 36 ; - sh:path linkml:instantiates ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:order 32 ; + sh:path linkml:definition_uri ], + [ sh:class linkml:ExtraSlotsExpression ; + sh:description """How a class instance handles extra data not specified in the class definition. +Note that this does *not* define the constraints that are placed on additional slots defined by inheriting classes. + +Possible values: +- `allowed: true` - allow all additional data +- `allowed: false` (or `allowed:` or `allowed: null` while `range_expression` is `null`) - + forbid all additional data (default) +- `range_expression: ...` - allow additional data if it matches the slot expression (see examples) +""" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 15 ; + sh:path linkml:extra_slots ], + [ sh:datatype xsd:boolean ; + sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 66 ; - sh:path pav:lastUpdatedOn ], - [ sh:class linkml:SlotDefinition ; - sh:description "the refinement of a slot in the context of the containing class definition." ; + sh:order 31 ; + sh:path linkml:id_prefixes_are_closed ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml:slot_usage ], + sh:order 52 ; + sh:path rdfs:seeAlso ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 23 ; + sh:path linkml:abstract ], [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; sh:nodeKind sh:IRI ; sh:order 35 ; sh:path linkml:implements ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 38 ; + sh:path linkml:annotations ], + [ sh:class linkml:SlotDefinition ; + sh:description "the refinement of a slot in the context of the containing class definition." ; sh:nodeKind sh:IRI ; - sh:order 58 ; - sh:path skos:exactMatch ], - [ sh:datatype xsd:string ; - sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; - sh:nodeKind sh:Literal ; - sh:order 30 ; - sh:path linkml:id_prefixes ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:order 1 ; + sh:path linkml:slot_usage ], + [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 53 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 62 ; - sh:path skos:broadMatch ], - [ sh:class linkml:LocalName ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 33 ; - sh:path linkml:local_names ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 65 ; - sh:path pav:createdOn ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 46 ; - sh:path linkml:examples ], - [ sh:datatype xsd:boolean ; - sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; + sh:order 63 ; + sh:path pav:createdBy ], + [ sh:description "DEPRECATED -- rdfs:subClassOf to be emitted in OWL generation" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 31 ; - sh:path linkml:id_prefixes_are_closed ], + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml:subclass_of ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 71 ; - sh:path schema1:keywords ], - [ sh:description "id of the schema that defined the element" ; + sh:order 45 ; + sh:path skos:note ], + [ sh:datatype xsd:string ; + sh:description "An established standard to which the element conforms." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 34 ; + sh:path dcterms:conformsTo ], + [ sh:class linkml:SlotDefinition ; + sh:description "The combination of is a plus defining slots form a genus-differentia definition, or the set of necessary and sufficient conditions that can be transformed into an OWL equivalence axiom" ; sh:nodeKind sh:IRI ; - sh:order 48 ; - sh:path skos:inScheme ], + sh:order 6 ; + sh:path linkml:defining_slots ], [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if all of the expressions hold" ; + sh:description "The collection of classification rules that apply to all members of this class. Classification rules allow for automatically assigning the instantiated type of an instance." ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 20 ; - sh:path linkml:all_of ], + sh:order 10 ; + sh:path linkml:classification_rules ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 41 ; - sh:path dcterms:title ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:order 51 ; + sh:path schema1:inLanguage ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 60 ; - sh:path skos:relatedMatch ], + sh:order 58 ; + sh:path skos:exactMatch ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 70 ; + sh:path dcterms:subject ], [ sh:datatype xsd:string ; - sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. -We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. -Implementations of frameworks may choose to use this property to either (a) PARSE: implement automated normalizations by parsing denormalized strings into complex objects (b) GENERATE: implement automated to_string labeling of complex objects -For example, a Measurement class may have 3 fields: unit, value, and string_value. The string_value slot may have a string_serialization of {value}{unit} such that if unit=cm and value=2, the value of string_value shouldd be 2cm""" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 28 ; - sh:path linkml:string_serialization ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 54 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if none of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 19 ; - sh:path linkml:none_of ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:order 41 ; + sh:path dcterms:title ] ; + sh:targetClass linkml:ClassDefinition . + +linkml:Definition a sh:NodeShape ; + rdfs:comment "abstract base class for core metaclasses" ; + sh:closed false ; + sh:ignoredProperties ( linkml:path_rule linkml:designates_type linkml:inherits linkml:pattern linkml:maximum_value linkml:matches linkml:pv_formula linkml:role linkml:inlined_as_list linkml:bindings skos:prefLabel linkml:inherited linkml:identifier linkml:multivalued linkml:enum_uri linkml:symmetric linkml:list_elements_ordered linkml:children_are_mutually_disjoint linkml:is_class_field linkml:reachable_from linkml:recommended linkml:relational_role linkml:transitive_form_of linkml:none_of owl:inverseOf linkml:type_mappings sh:rule rdfs:subPropertyOf linkml:exactly_one_of linkml:value_presence linkml:extra_slots linkml:include linkml:tree_root linkml:subclass_of linkml:all_of linkml:slot_conditions linkml:irreflexive linkml:range_expression linkml:transitive linkml:unique_keys linkml:reflexive linkml:array linkml:classification_rules linkml:slots linkml:list_elements_unique linkml:has_member linkml:usage_slot_name linkml:equals_number linkml:implicit_prefix linkml:inlined linkml:locally_reflexive rdf:type linkml:represents_relationship linkml:slot_names_unique linkml:defining_slots linkml:shared linkml:equals_expression linkml:required linkml:domain linkml:all_members linkml:concepts linkml:minimum_cardinality linkml:singular_name linkml:code_set_tag linkml:domain_of linkml:asymmetric linkml:enum_range linkml:permissible_values linkml:slot_uri linkml:key linkml:code_set linkml:is_grouping_slot linkml:structured_pattern linkml:attributes linkml:reflexive_transitive_form_of linkml:owner linkml:equals_string linkml:class_uri linkml:is_usage_slot linkml:readonly linkml:ifabsent linkml:disjoint_with linkml:minus linkml:range linkml:slot_usage linkml:exact_cardinality linkml:code_set_version linkml:union_of qudt:unit sh:group linkml:equals_string_in linkml:maximum_cardinality linkml:minimum_value linkml:any_of ) ; + sh:property [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 61 ; + sh:order 39 ; sh:path skos:narrowMatch ], - [ sh:class linkml:SlotDefinition ; - sh:description "collection of slot names that are applicable to a class" ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:slots ], - [ sh:class linkml:ClassDefinition ; - sh:description "Two classes are disjoint if they have no instances in common, two slots are disjoint if they can never hold between the same two instances" ; - sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path linkml:disjoint_with ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 55 ; - sh:path skos:altLabel ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 37 ; - sh:path linkml:extensions ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 56 ; - sh:path skosxl:altLabel ], [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. +We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. +Implementations of frameworks may choose to use this property to either (a) PARSE: implement automated normalizations by parsing denormalized strings into complex objects (b) GENERATE: implement automated to_string labeling of complex objects +For example, a Measurement class may have 3 fields: unit, value, and string_value. The string_value slot may have a string_serialization of {value}{unit} such that if unit=cm and value=2, the value of string_value shouldd be 2cm""" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 51 ; - sh:path schema1:inLanguage ], - [ sh:datatype xsd:boolean ; - sh:description "if true then induced/mangled slot names are not created for class_usage and attributes" ; + sh:order 6 ; + sh:path linkml:string_serialization ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 36 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path linkml:slot_names_unique ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if at least one of the expressions hold" ; + sh:order 47 ; + sh:path sh:order ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 17 ; - sh:path linkml:any_of ], + sh:order 18 ; + sh:path linkml:alt_descriptions ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 32 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 42 ; + sh:path dcterms:contributor ], [ sh:datatype xsd:string ; - sh:description "the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name." ; + sh:description "An established standard to which the element conforms." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path skos:prefLabel ], - [ sh:class linkml:ClassDefinition ; - sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path linkml:apply_to ], + sh:order 12 ; + sh:path dcterms:conformsTo ], [ sh:datatype xsd:string ; sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 29 ; + sh:order 7 ; sh:path rdfs:label ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 38 ; - sh:path linkml:annotations ], - [ sh:class linkml:SlotDefinition ; - sh:description "expresses constraints on a group of slots for a class expression" ; + [ sh:class linkml:Definition ; + sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path linkml:slot_conditions ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:order 0 ; + sh:path linkml:is_a ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 59 ; - sh:path skos:closeMatch ], + sh:order 31 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:description "status of the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 46 ; + sh:path bibo:status ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 45 ; - sh:path skos:note ], - [ sh:defaultValue "linkml:ClassDefinition"^^xsd:string ; - sh:description "URI of the class that provides a semantic interpretation of the element in a linked data context. The URI may come from any namespace and may be shared between schemas" ; + sh:order 20 ; + sh:path linkml:deprecated ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 37 ; + sh:path skos:closeMatch ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml:class_uri ], - [ sh:class linkml:ClassRule ; - sh:description "the collection of rules that apply to all members of this class" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path sh:rule ] ; - sh:targetClass linkml:ClassDefinition . - -linkml:Definition a sh:NodeShape ; - rdfs:comment "abstract base class for core metaclasses" ; - sh:closed false ; - sh:ignoredProperties ( linkml:exact_cardinality linkml:path_rule linkml:inherits linkml:any_of linkml:children_are_mutually_disjoint linkml:has_member linkml:classification_rules linkml:role rdf:type linkml:ifabsent linkml:value_presence rdfs:subPropertyOf linkml:code_set_tag linkml:equals_expression linkml:is_class_field linkml:symmetric linkml:identifier linkml:none_of linkml:include linkml:tree_root linkml:minus linkml:shared linkml:pv_formula linkml:relational_role linkml:slot_usage linkml:structured_pattern linkml:owner linkml:minimum_value linkml:inherited linkml:singular_name linkml:readonly linkml:maximum_value linkml:attributes linkml:usage_slot_name linkml:equals_number linkml:permissible_values linkml:domain_of linkml:slots linkml:asymmetric linkml:required linkml:recommended linkml:array linkml:list_elements_unique linkml:represents_relationship linkml:slot_names_unique linkml:designates_type linkml:pattern linkml:inlined_as_list linkml:extra_slots linkml:disjoint_with linkml:domain linkml:union_of linkml:transitive_form_of linkml:all_members linkml:transitive linkml:defining_slots linkml:equals_string_in linkml:slot_uri sh:group linkml:reflexive_transitive_form_of owl:inverseOf linkml:class_uri qudt:unit linkml:concepts linkml:is_grouping_slot linkml:locally_reflexive linkml:slot_conditions linkml:implicit_prefix linkml:irreflexive linkml:minimum_cardinality linkml:is_usage_slot linkml:subclass_of linkml:type_mappings linkml:range_expression linkml:enum_uri linkml:exactly_one_of linkml:list_elements_ordered linkml:key skos:prefLabel linkml:inlined linkml:code_set_version linkml:maximum_cardinality linkml:enum_range sh:rule linkml:code_set linkml:all_of linkml:unique_keys linkml:range linkml:reachable_from linkml:multivalued linkml:matches linkml:reflexive linkml:equals_string linkml:bindings ) ; - sh:property [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 24 ; - sh:path linkml:examples ], - [ sh:description "agent that modified the element" ; + sh:order 26 ; + sh:path skos:inScheme ], + [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; + sh:nodeKind sh:IRI ; + sh:order 13 ; + sh:path linkml:implements ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 21 ; + sh:path linkml:todos ], + [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 45 ; - sh:path oslc:modifiedBy ], + sh:order 10 ; + sh:path linkml:definition_uri ], [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 28 ; sh:path dcterms:source ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 16 ; + sh:path linkml:annotations ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 36 ; - sh:path skos:exactMatch ], + sh:order 40 ; + sh:path skos:broadMatch ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 41 ; + sh:path pav:createdBy ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path rdfs:seeAlso ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 43 ; + sh:path pav:createdOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 38 ; + sh:path skos:relatedMatch ], [ sh:datatype xsd:string ; sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; sh:order 33 ; sh:path skos:altLabel ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path OIO:inSubset ], + [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path linkml:values_from ], [ sh:class linkml:Definition ; sh:description "A collection of secondary parent classes or slots from which inheritable metaslots are propagated from." ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path linkml:mixins ], + [ sh:class linkml:Definition ; + sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml:apply_to ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path dcterms:title ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 15 ; - sh:path linkml:extensions ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; + sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; sh:nodeKind sh:Literal ; - sh:order 47 ; - sh:path sh:order ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path rdfs:seeAlso ], + sh:order 8 ; + sh:path linkml:id_prefixes ], [ sh:datatype xsd:string ; sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 17 ; sh:path skos:definition ], - [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path linkml:values_from ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 39 ; - sh:path skos:narrowMatch ], + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 27 ; + sh:path linkml:imported_from ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path linkml:mixin ], [ sh:datatype xsd:string ; sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; sh:order 49 ; sh:path schema1:keywords ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 42 ; - sh:path dcterms:contributor ], - [ sh:description "An element in another schema which this element instantiates." ; - sh:nodeKind sh:IRI ; - sh:order 14 ; - sh:path linkml:instantiates ], [ sh:datatype xsd:string ; - sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; - sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:id_prefixes ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 18 ; - sh:path linkml:alt_descriptions ], - [ sh:description "status of the element" ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 46 ; - sh:path bibo:status ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 16 ; - sh:path linkml:annotations ], + sh:nodeKind sh:Literal ; + sh:order 29 ; + sh:path schema1:inLanguage ], [ sh:datatype xsd:string ; - sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. -We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. -Implementations of frameworks may choose to use this property to either (a) PARSE: implement automated normalizations by parsing denormalized strings into complex objects (b) GENERATE: implement automated to_string labeling of complex objects -For example, a Measurement class may have 3 fields: unit, value, and string_value. The string_value slot may have a string_serialization of {value}{unit} such that if unit=cm and value=2, the value of string_value shouldd be 2cm""" ; - sh:maxCount 1 ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path linkml:string_serialization ], - [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml:definition_uri ], + sh:order 23 ; + sh:path skos:note ], [ sh:datatype xsd:string ; - sh:description "An established standard to which the element conforms." ; - sh:maxCount 1 ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path dcterms:conformsTo ], + sh:order 22 ; + sh:path skos:editorialNote ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 15 ; + sh:path linkml:extensions ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 44 ; sh:path pav:lastUpdatedOn ], - [ sh:class linkml:Definition ; - sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:is_a ], - [ sh:description "agent that created the element" ; + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 34 ; + sh:path skosxl:altLabel ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 41 ; - sh:path pav:createdBy ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path linkml:todos ], + sh:order 1 ; + sh:path linkml:abstract ], [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; sh:order 35 ; sh:path skos:mappingRelation ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 27 ; - sh:path linkml:imported_from ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 29 ; - sh:path schema1:inLanguage ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path OIO:inSubset ], - [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; - sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path linkml:implements ], - [ sh:datatype xsd:string ; - sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path rdfs:label ], - [ sh:class linkml:Definition ; - sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml:apply_to ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:deprecated ], - [ sh:description "id of the schema that defined the element" ; + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path skos:inScheme ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:order 45 ; + sh:path oslc:modifiedBy ], + [ sh:class linkml:LocalName ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 34 ; - sh:path skosxl:altLabel ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 43 ; - sh:path pav:createdOn ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:order 11 ; + sh:path linkml:local_names ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 24 ; + sh:path linkml:examples ], + [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; - sh:order 38 ; - sh:path skos:relatedMatch ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 23 ; - sh:path skos:note ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path skos:editorialNote ], + sh:order 48 ; + sh:path dcterms:subject ], [ sh:datatype xsd:boolean ; sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 9 ; sh:path linkml:id_prefixes_are_closed ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path skos:closeMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 40 ; - sh:path skos:broadMatch ], - [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path linkml:mixin ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 48 ; - sh:path dcterms:subject ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 32 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; + sh:order 19 ; + sh:path dcterms:title ], + [ sh:description "An element in another schema which this element instantiates." ; sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path linkml:abstract ], - [ sh:class linkml:LocalName ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml:local_names ] ; + sh:order 14 ; + sh:path linkml:instantiates ] ; sh:targetClass linkml:Definition . linkml:LocalName a sh:NodeShape ; @@ -4915,246 +4915,150 @@ linkml:LocalName a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "a name assigned to an element in a given ontology" ; + sh:description "the ncname of the source of the name" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path skos:altLabel ], + sh:order 0 ; + sh:path linkml:local_name_source ], [ sh:datatype xsd:string ; - sh:description "the ncname of the source of the name" ; + sh:description "a name assigned to an element in a given ontology" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:local_name_source ] ; + sh:order 1 ; + sh:path skos:altLabel ] ; sh:targetClass linkml:LocalName . linkml:AnonymousTypeExpression a sh:NodeShape ; rdfs:comment "A type expression that is not a top-level named type definition. Used for nesting." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if none of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml:none_of ], - [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if only one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 10 ; - sh:path linkml:exactly_one_of ], - [ sh:class linkml:AnonymousTypeExpression ; - sh:description "holds if at least one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml:any_of ], - [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path linkml:maximum_value ], - [ sh:class qudt:Unit ; + sh:property [ sh:class qudt:Unit ; sh:description "an encoding of a unit" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path qudt:unit ], - [ sh:class linkml:PatternExpression ; - sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:structured_pattern ], [ sh:datatype xsd:string ; sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path linkml:pattern ], + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if none of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path linkml:none_of ], + [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path linkml:minimum_value ], [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; + sh:description "the slot must have range string and the value of the slot must equal the specified value" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path linkml:equals_string_in ], + sh:order 4 ; + sh:path linkml:equals_string ], [ sh:class linkml:AnonymousTypeExpression ; sh:description "holds if all of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 12 ; sh:path linkml:all_of ], [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal the specified value" ; + sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path linkml:equals_string ], - [ sh:datatype xsd:integer ; - sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; + sh:order 3 ; + sh:path linkml:implicit_prefix ], + [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path linkml:maximum_value ], + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if only one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 10 ; + sh:path linkml:exactly_one_of ], + [ sh:datatype xsd:integer ; + sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 6 ; sh:path linkml:equals_number ], - [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; + [ sh:class linkml:AnonymousTypeExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path linkml:any_of ], + [ sh:class linkml:PatternExpression ; + sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; sh:maxCount 1 ; - sh:order 7 ; - sh:path linkml:minimum_value ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:structured_pattern ], [ sh:datatype xsd:string ; - sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; - sh:maxCount 1 ; + sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path linkml:implicit_prefix ] ; + sh:order 5 ; + sh:path linkml:equals_string_in ] ; sh:targetClass linkml:AnonymousTypeExpression . linkml:AnonymousSlotExpression a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path linkml:implicit_prefix ], - [ sh:datatype xsd:string ; - sh:description "the value of the slot must equal the value of the evaluated expression" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path linkml:equals_expression ], + sh:property [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 31 ; + sh:path linkml:annotations ], [ sh:datatype xsd:integer ; - sh:description "the minimum number of entries for a multivalued slot" ; + sh:description "the exact number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path linkml:minimum_cardinality ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 46 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 30 ; - sh:path linkml:extensions ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 52 ; - sh:path skos:closeMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 55 ; - sh:path skos:broadMatch ], + sh:order 20 ; + sh:path linkml:exact_cardinality ], [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 43 ; sh:path dcterms:source ], - [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path linkml:minimum_value ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if only one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 26 ; - sh:path linkml:exactly_one_of ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 62 ; - sh:path sh:order ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 63 ; - sh:path dcterms:subject ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path dcterms:title ], - [ sh:datatype xsd:boolean ; - sh:description "True means that keyed or identified slot appears in an outer structure by value. False means that only the key or identifier for the slot appears within the domain, referencing a structure that appears elsewhere." ; - sh:maxCount 1 ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path linkml:inlined ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; + sh:order 64 ; + sh:path schema1:keywords ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 60 ; - sh:path oslc:modifiedBy ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 36 ; - sh:path linkml:todos ], - [ sh:datatype xsd:boolean ; - sh:description "true means that the slot should be present in instances of the class definition, but this is not required" ; + sh:order 55 ; + sh:path skos:broadMatch ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "the value of the slot is multivalued with at least one member satisfying the condition" ; sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 23 ; + sh:path linkml:has_member ], + [ sh:datatype xsd:string ; + sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path linkml:recommended ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "A range that is described as a boolean expression combining existing ranges" ; + sh:order 17 ; + sh:path linkml:equals_string_in ], + [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml:range_expression ], + sh:order 9 ; + sh:path linkml:minimum_value ], [ sh:description "if PRESENT then a value must be present (for lists there must be at least one value). If ABSENT then a value must be absent (for lists, must be empty)" ; sh:in ( "UNCOMMITTED" "PRESENT" "ABSENT" ) ; sh:maxCount 1 ; sh:order 15 ; sh:path linkml:value_presence ], - [ sh:class linkml:ArrayExpression ; - sh:description "coerces the value of the slot into an array and defines the dimensions of that array" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 29 ; - sh:path linkml:array ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path skos:definition ], - [ sh:description "agent that created the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 56 ; - sh:path pav:createdBy ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 53 ; - sh:path skos:relatedMatch ], - [ sh:class linkml:Element ; - sh:defaultValue "string"^^xsd:string ; - sh:description """defines the type of the object of the slot. Given the following slot definition - S1: - domain: C1 - range: C2 -the declaration - X: - S1: Y - -implicitly asserts Y is an instance of C2 -""" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:range ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 40 ; - sh:path OIO:inSubset ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "the value of the slot is multivalued with all members satisfying the condition" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 24 ; - sh:path linkml:all_members ], + sh:order 34 ; + sh:path dcterms:title ], [ sh:class linkml:EnumBinding ; sh:description """A collection of enum bindings that specify how a slot can be bound to a permissible value from an enumeration. LinkML provides enums to allow string values to be restricted to one of a set of permissible values (specified statically or dynamically). @@ -5163,28 +5067,10 @@ Enum bindings allow enums to be bound to any object, including complex nested ob sh:order 3 ; sh:path linkml:bindings ], [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; - sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path linkml:equals_string_in ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 59 ; - sh:path pav:lastUpdatedOn ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "the value of the slot is multivalued with at least one member satisfying the condition" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 23 ; - sh:path linkml:has_member ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 44 ; - sh:path schema1:inLanguage ], + sh:order 37 ; + sh:path skos:editorialNote ], [ sh:class qudt:Unit ; sh:description "an encoding of a unit" ; sh:maxCount 1 ; @@ -5192,475 +5078,764 @@ Enum bindings allow enums to be bound to any object, including complex nested ob sh:order 13 ; sh:path qudt:unit ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path skos:editorialNote ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 45 ; - sh:path rdfs:seeAlso ], - [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; + sh:description "the value of the slot must equal the value of the evaluated expression" ; sh:maxCount 1 ; - sh:order 10 ; - sh:path linkml:maximum_value ], + sh:nodeKind sh:Literal ; + sh:order 19 ; + sh:path linkml:equals_expression ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; - sh:maxCount 1 ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 42 ; - sh:path linkml:imported_from ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 61 ; - sh:path bibo:status ], - [ sh:description "id of the schema that defined the element" ; + sh:order 48 ; + sh:path skos:altLabel ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 41 ; - sh:path skos:inScheme ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 33 ; - sh:path linkml:alt_descriptions ], + sh:nodeKind sh:Literal ; + sh:order 35 ; + sh:path linkml:deprecated ], [ sh:datatype xsd:string ; sh:description "the slot must have range string and the value of the slot must equal the specified value" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 16 ; sh:path linkml:equals_string ], - [ sh:datatype xsd:string ; - sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path linkml:pattern ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if none of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 25 ; - sh:path linkml:none_of ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 50 ; - sh:path skos:mappingRelation ], - [ sh:datatype xsd:boolean ; - sh:description "true means that slot can have more than one value and should be represented using a list or collection structure." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path linkml:multivalued ], - [ sh:description "agent that contributed to the element" ; sh:nodeKind sh:IRI ; - sh:order 57 ; - sh:path dcterms:contributor ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if all of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 28 ; - sh:path linkml:all_of ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 64 ; - sh:path schema1:keywords ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:order 47 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; - sh:order 54 ; - sh:path skos:narrowMatch ], + sh:order 40 ; + sh:path OIO:inSubset ], [ sh:class linkml:PatternExpression ; sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 12 ; sh:path linkml:structured_pattern ], - [ sh:datatype xsd:integer ; - sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 27 ; + sh:path linkml:any_of ], + [ sh:datatype xsd:boolean ; + sh:description "true means that slot can have more than one value and should be represented using a list or collection structure." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path linkml:equals_number ], + sh:order 6 ; + sh:path linkml:multivalued ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 56 ; + sh:path pav:createdBy ], [ sh:datatype xsd:boolean ; - sh:description "True means that an inlined slot is represented as a list of range instances. False means that an inlined slot is represented as a dictionary, whose key is the slot key or identifier and whose value is the range instance." ; + sh:description "true means that the slot must be present in instances of the class definition" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path linkml:inlined_as_list ], + sh:order 4 ; + sh:path linkml:required ], + [ sh:datatype xsd:boolean ; + sh:description "true means that the slot should be present in instances of the class definition, but this is not required" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path linkml:recommended ], [ sh:datatype xsd:integer ; - sh:description "the exact number of entries for a multivalued slot" ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:exact_cardinality ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 39 ; - sh:path linkml:examples ], + sh:order 62 ; + sh:path sh:order ], [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if at least one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 27 ; - sh:path linkml:any_of ], - [ sh:class linkml:EnumExpression ; - sh:description "An inlined enumeration" ; - sh:maxCount 1 ; + sh:description "holds if none of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml:enum_range ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 47 ; - sh:path linkml:deprecated_element_has_possible_replacement ], + sh:order 25 ; + sh:path linkml:none_of ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 38 ; - sh:path skos:note ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 31 ; - sh:path linkml:annotations ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 51 ; - sh:path skos:exactMatch ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 49 ; - sh:path skosxl:altLabel ], + sh:order 11 ; + sh:path linkml:pattern ], [ sh:datatype xsd:dateTime ; sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 58 ; sh:path pav:createdOn ], - [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path linkml:deprecated ], [ sh:datatype xsd:integer ; - sh:description "the maximum number of entries for a multivalued slot" ; + sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path linkml:maximum_cardinality ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 48 ; - sh:path skos:altLabel ], - [ sh:datatype xsd:boolean ; - sh:description "true means that the slot must be present in instances of the class definition" ; + sh:order 18 ; + sh:path linkml:equals_number ], + [ sh:class linkml:ArrayExpression ; + sh:description "coerces the value of the slot into an array and defines the dimensions of that array" ; sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 29 ; + sh:path linkml:array ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path linkml:required ] ; - sh:targetClass linkml:AnonymousSlotExpression . - -linkml:AnonymousClassExpression a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path OIO:inSubset ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 39 ; - sh:path dcterms:subject ], + sh:order 36 ; + sh:path linkml:todos ], [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; - sh:order 26 ; + sh:order 50 ; sh:path skos:mappingRelation ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + [ sh:datatype xsd:integer ; + sh:description "the maximum number of entries for a multivalued slot" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; + sh:nodeKind sh:Literal ; sh:order 22 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:path linkml:maximum_cardinality ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "holds if only one of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml:extensions ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:order 26 ; + sh:path linkml:exactly_one_of ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 52 ; + sh:path skos:closeMatch ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 23 ; - sh:path linkml:deprecated_element_has_possible_replacement ], + sh:order 41 ; + sh:path skos:inScheme ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 45 ; + sh:path rdfs:seeAlso ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 39 ; + sh:path linkml:examples ], [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if at least one of the expressions hold" ; + sh:description "A range that is described as a boolean expression combining existing ranges" ; + sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; - sh:path linkml:any_of ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:path linkml:range_expression ], + [ sh:class linkml:Element ; + sh:defaultValue "string"^^xsd:string ; + sh:description """defines the type of the object of the slot. Given the following slot definition + S1: + domain: C1 + range: C2 +the declaration + X: + S1: Y + +implicitly asserts Y is an instance of C2 +""" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:exactMatch ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 24 ; - sh:path skos:altLabel ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if none of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:none_of ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:order 0 ; + sh:path linkml:range ], + [ sh:datatype xsd:boolean ; + sh:description "True means that an inlined slot is represented as a list of range instances. False means that an inlined slot is represented as a dictionary, whose key is the slot key or identifier and whose value is the range instance." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path schema1:inLanguage ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:closeMatch ], + sh:order 8 ; + sh:path linkml:inlined_as_list ], [ sh:class linkml:AltDescription ; sh:description "A sourced alternative description for an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; + sh:order 33 ; sh:path linkml:alt_descriptions ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path dcterms:source ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path linkml:deprecated ], - [ sh:description "id of the schema that defined the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path skos:inScheme ], + sh:order 32 ; + sh:path skos:definition ], [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; - sh:order 29 ; + sh:order 53 ; sh:path skos:relatedMatch ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if only one of the expressions hold" ; + [ sh:class linkml:EnumExpression ; + sh:description "An inlined enumeration" ; + sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; - sh:path linkml:exactly_one_of ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:path linkml:enum_range ], + [ sh:description "status of the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 35 ; - sh:path pav:lastUpdatedOn ], + sh:nodeKind sh:IRI ; + sh:order 61 ; + sh:path bibo:status ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 54 ; + sh:path skos:narrowMatch ], [ sh:class skosxl:Label ; sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 25 ; + sh:order 49 ; sh:path skosxl:altLabel ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 57 ; + sh:path dcterms:contributor ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "the value of the slot is multivalued with all members satisfying the condition" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 24 ; + sh:path linkml:all_members ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 63 ; + sh:path dcterms:subject ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "holds if all of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 28 ; + sh:path linkml:all_of ], [ sh:datatype xsd:string ; sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 14 ; + sh:order 38 ; sh:path skos:note ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 13 ; - sh:path skos:editorialNote ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "holds if all of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:all_of ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path rdfs:seeAlso ], + sh:order 60 ; + sh:path oslc:modifiedBy ], + [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path linkml:maximum_value ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path dcterms:title ], + sh:order 42 ; + sh:path linkml:imported_from ], [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; + sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 40 ; - sh:path schema1:keywords ], - [ sh:class linkml:Definition ; - sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; + sh:order 14 ; + sh:path linkml:implicit_prefix ], + [ sh:datatype xsd:boolean ; + sh:description "True means that keyed or identified slot appears in an outer structure by value. False means that only the key or identifier for the slot appears within the domain, referencing a structure that appears elsewhere." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml:is_a ], - [ sh:description "agent that modified the element" ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path linkml:inlined ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 59 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 36 ; - sh:path oslc:modifiedBy ], + sh:order 51 ; + sh:path skos:exactMatch ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 30 ; + sh:path linkml:extensions ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; + sh:description "the primary language used in the sources" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path linkml:todos ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:order 44 ; + sh:path schema1:inLanguage ], + [ sh:datatype xsd:integer ; + sh:description "the minimum number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path linkml:imported_from ], - [ sh:class linkml:SlotDefinition ; - sh:description "expresses constraints on a group of slots for a class expression" ; + sh:order 21 ; + sh:path linkml:minimum_cardinality ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path linkml:slot_conditions ], - [ sh:datatype xsd:string ; + sh:order 46 ; + sh:path linkml:deprecated_element_has_exact_replacement ] ; + sh:targetClass linkml:AnonymousSlotExpression . + +linkml:AnonymousClassExpression a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 8 ; sh:path skos:definition ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml:annotations ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if none of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 15 ; - sh:path linkml:examples ], - [ sh:description "status of the element" ; + sh:order 3 ; + sh:path linkml:none_of ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path bibo:status ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:order 36 ; + sh:path oslc:modifiedBy ], + [ sh:class linkml:Definition ; + sh:description "A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml:is_a ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path pav:createdOn ], + sh:order 11 ; + sh:path linkml:deprecated ], [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; sh:order 31 ; sh:path skos:broadMatch ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path dcterms:contributor ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path skos:narrowMatch ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; + [ sh:datatype xsd:string ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 40 ; + sh:path schema1:keywords ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if only one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml:exactly_one_of ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 38 ; - sh:path sh:order ], + sh:order 34 ; + sh:path pav:createdOn ], [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 32 ; - sh:path pav:createdBy ] ; - sh:targetClass linkml:AnonymousClassExpression . - -linkml:SlotDefinition a sh:NodeShape ; - rdfs:comment "an element that describes how instances are related to other instances" ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:EnumBinding ; - sh:description """A collection of enum bindings that specify how a slot can be bound to a permissible value from an enumeration. -LinkML provides enums to allow string values to be restricted to one of a set of permissible values (specified statically or dynamically). -Enum bindings allow enums to be bound to any object, including complex nested objects. For example, given a (generic) class Concept with slots id and label, it may be desirable to restrict the values the id takes on in a given context. For example, a HumanSample class may have a slot for representing sample site, with a range of concept, but the values of that slot may be restricted to concepts from a particular branch of an anatomy ontology.""" ; + sh:path pav:createdBy ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 22 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 40 ; - sh:path linkml:bindings ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:order 9 ; + sh:path linkml:alt_descriptions ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 114 ; - sh:path sh:order ], - [ sh:datatype xsd:boolean ; - sh:description "If s is locally_reflexive, then i.s=i for all instances i where s is a class slot for the type of i" ; + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path skos:inScheme ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path linkml:locally_reflexive ], - [ sh:datatype xsd:boolean ; - sh:description "If s is transitive, and i.s=z, and s.s=j, then i.s=j" ; + sh:nodeKind sh:IRI ; + sh:order 19 ; + sh:path dcterms:source ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 21 ; - sh:path linkml:transitive ], + sh:order 20 ; + sh:path schema1:inLanguage ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 28 ; + sh:path skos:closeMatch ], [ sh:datatype xsd:string ; - sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 74 ; - sh:path rdfs:label ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 91 ; - sh:path linkml:examples ], - [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; - sh:maxCount 1 ; - sh:order 47 ; - sh:path linkml:maximum_value ], - [ sh:datatype xsd:boolean ; - sh:description "If true then all direct is_a children are mutually disjoint and share no instances in common" ; + sh:order 10 ; + sh:path dcterms:title ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path skos:relatedMatch ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 34 ; - sh:path linkml:children_are_mutually_disjoint ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; - sh:order 104 ; - sh:path skos:closeMatch ], + sh:order 23 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path linkml:todos ], [ sh:class linkml:Annotation ; sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 83 ; + sh:order 7 ; sh:path linkml:annotations ], - [ sh:datatype xsd:integer ; - sh:description "the minimum number of entries for a multivalued slot" ; - sh:maxCount 1 ; + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 58 ; - sh:path linkml:minimum_cardinality ], + sh:order 24 ; + sh:path skos:altLabel ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if at least one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml:any_of ], [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 106 ; + sh:order 30 ; sh:path skos:narrowMatch ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; - sh:order 92 ; + sh:order 16 ; sh:path OIO:inSubset ], - [ sh:class linkml:PathExpression ; - sh:description "a rule for inferring a slot assignment based on evaluating a path through a sequence of slot assignments" ; + [ sh:description "status of the element" ; sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 37 ; + sh:path bibo:status ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "holds if all of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 32 ; - sh:path linkml:path_rule ], + sh:order 4 ; + sh:path linkml:all_of ], + [ sh:datatype xsd:string ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path skos:note ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 38 ; + sh:path sh:order ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 21 ; + sh:path rdfs:seeAlso ], + [ sh:class linkml:SlotDefinition ; + sh:description "expresses constraints on a group of slots for a class expression" ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path linkml:slot_conditions ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 33 ; + sh:path dcterms:contributor ], + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 18 ; + sh:path linkml:imported_from ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path skos:mappingRelation ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 13 ; + sh:path skos:editorialNote ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 35 ; + sh:path pav:lastUpdatedOn ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml:extensions ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 15 ; + sh:path linkml:examples ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 25 ; + sh:path skosxl:altLabel ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 39 ; + sh:path dcterms:subject ] ; + sh:targetClass linkml:AnonymousClassExpression . + +linkml:SlotDefinition a sh:NodeShape ; + rdfs:comment "an element that describes how instances are related to other instances" ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 90 ; + sh:path skos:note ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 83 ; + sh:path linkml:annotations ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "the value of the slot is multivalued with all members satisfying the condition" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 61 ; + sh:path linkml:all_members ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 87 ; + sh:path linkml:deprecated ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 114 ; + sh:path sh:order ], + [ sh:description "agent that created the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 108 ; + sh:path pav:createdBy ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 109 ; + sh:path dcterms:contributor ], + [ sh:class linkml:ClassDefinition ; + sh:description """defines the type of the subject of the slot. Given the following slot definition + S1: + domain: C1 + range: C2 +the declaration + X: + S1: Y + +implicitly asserts that X is an instance of C1 +""" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml:domain ], [ sh:datatype xsd:boolean ; - sh:description "If s is reflexive, then i.s=i for all instances i" ; + sh:description "True means that an inlined slot is represented as a list of range instances. False means that an inlined slot is represented as a dictionary, whose key is the slot key or identifier and whose value is the range instance." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 17 ; - sh:path linkml:reflexive ], + sh:order 45 ; + sh:path linkml:inlined_as_list ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "holds if only one of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 63 ; + sh:path linkml:exactly_one_of ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 68 ; + sh:path linkml:abstract ], + [ sh:datatype xsd:integer ; + sh:description "the maximum number of entries for a multivalued slot" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 59 ; + sh:path linkml:maximum_cardinality ], + [ sh:class linkml:SlotDefinition ; + sh:description "A primary parent slot from which inheritable metaslots are propagated" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 67 ; + sh:path linkml:is_a ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 102 ; + sh:path skos:mappingRelation ], + [ sh:defaultValue "linkml:slot_uri"^^xsd:string ; + sh:description "URI of the class that provides a semantic interpretation of the slot in a linked data context. The URI may come from any namespace and may be shared between schemas." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml:slot_uri ], + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 86 ; + sh:path dcterms:title ], + [ sh:class linkml:SlotDefinition ; + sh:description "indicates that any instance of d s r implies that there is also an instance of r s' d" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 22 ; + sh:path owl:inverseOf ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "the value of the slot is multivalued with at least one member satisfying the condition" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 60 ; + sh:path linkml:has_member ], + [ sh:class linkml:Element ; + sh:defaultValue "string"^^xsd:string ; + sh:description """defines the type of the object of the slot. Given the following slot definition + S1: + domain: C1 + range: C2 +the declaration + X: + S1: Y + +implicitly asserts Y is an instance of C2 +""" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 37 ; + sh:path linkml:range ], + [ sh:datatype xsd:string ; + sh:description "the value of the slot must equal the value of the evaluated expression" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 56 ; + sh:path linkml:equals_expression ], + [ sh:datatype xsd:boolean ; + sh:description "If s is locally_reflexive, then i.s=i for all instances i where s is a class slot for the type of i" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 18 ; + sh:path linkml:locally_reflexive ], + [ sh:class linkml:SlotDefinition ; + sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; + sh:nodeKind sh:IRI ; + sh:order 71 ; + sh:path linkml:apply_to ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 104 ; + sh:path skos:closeMatch ], + [ sh:description "A list of related entities or URLs that may be of relevance" ; + sh:nodeKind sh:IRI ; + sh:order 97 ; + sh:path rdfs:seeAlso ], + [ sh:datatype xsd:string ; + sh:description "An established standard to which the element conforms." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 79 ; + sh:path dcterms:conformsTo ], + [ sh:class linkml:SlotDefinition ; + sh:description "Two classes are disjoint if they have no instances in common, two slots are disjoint if they can never hold between the same two instances" ; + sh:nodeKind sh:IRI ; + sh:order 33 ; + sh:path linkml:disjoint_with ], + [ sh:datatype xsd:string ; + sh:description "a name that is used in the singular form" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path linkml:singular_name ], + [ sh:class linkml:SlotDefinition ; + sh:description "allows for grouping of related slots into a grouping slot that serves the role of a group" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 30 ; + sh:path sh:group ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 96 ; + sh:path schema1:inLanguage ], + [ sh:datatype xsd:boolean ; + sh:description "True means that the key slot(s) is used to determine the instantiation (types) relation between objects and a ClassDefinition" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 11 ; + sh:path linkml:designates_type ], + [ sh:datatype xsd:boolean ; + sh:description "If True, then the order of elements of a multivalued slot is guaranteed to be preserved. If False, the order may still be preserved but this is not guaranteed" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path linkml:list_elements_ordered ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 84 ; + sh:path skos:definition ], + [ sh:datatype xsd:boolean ; + sh:description "true means that the slot must be present in instances of the class definition" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 41 ; + sh:path linkml:required ], + [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; + sh:nodeKind sh:IRI ; + sh:order 80 ; + sh:path linkml:implements ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 105 ; + sh:path skos:relatedMatch ], + [ sh:class linkml:SlotDefinition ; + sh:description "indicates that the domain element consists exactly of the members of the element in the range." ; + sh:nodeKind sh:IRI ; + sh:order 35 ; + sh:path linkml:union_of ], + [ sh:datatype xsd:string ; + sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 74 ; + sh:path rdfs:label ], + [ sh:class linkml:AnonymousSlotExpression ; + sh:description "holds if all of the expressions hold" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 65 ; + sh:path linkml:all_of ], + [ sh:datatype xsd:string ; + sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; + sh:nodeKind sh:Literal ; + sh:order 75 ; + sh:path linkml:id_prefixes ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 95 ; + sh:path dcterms:source ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 91 ; + sh:path linkml:examples ], + [ sh:description "Controlled terms used to categorize an element." ; + sh:nodeKind sh:IRI ; + sh:order 115 ; + sh:path dcterms:subject ], + [ sh:datatype xsd:string ; + sh:description "the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path skos:prefLabel ], + [ sh:description "the role a slot on a relationship class plays, for example, the subject, object or predicate roles" ; + sh:in ( rdf:subject rdf:object rdf:predicate "NODE" "OTHER_ROLE" ) ; + sh:maxCount 1 ; + sh:order 29 ; + sh:path linkml:relational_role ], [ sh:datatype xsd:string ; sh:description """function that provides a default value for the slot. * [Tt]rue -- boolean True @@ -5680,676 +5855,534 @@ Enum bindings allow enums to be bound to any object, including complex nested ob sh:order 5 ; sh:path linkml:ifabsent ], [ sh:datatype xsd:string ; - sh:description "An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix" ; + sh:description "If present, slot is read only. Text explains why" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 75 ; - sh:path linkml:id_prefixes ], + sh:order 4 ; + sh:path linkml:readonly ], [ sh:datatype xsd:boolean ; - sh:description "If True, then there must be no duplicates in the elements of a multivalued slot" ; + sh:description "true means that the *value* of a slot is inherited by subclasses" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path linkml:list_elements_unique ], + sh:order 3 ; + sh:path linkml:inherited ], [ sh:datatype xsd:boolean ; - sh:description "True means that keyed or identified slot appears in an outer structure by value. False means that only the key or identifier for the slot appears within the domain, referencing a structure that appears elsewhere." ; + sh:description "If s is reflexive, then i.s=i for all instances i" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 44 ; - sh:path linkml:inlined ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 109 ; - sh:path dcterms:contributor ], - [ sh:class linkml:PatternExpression ; - sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; + sh:order 17 ; + sh:path linkml:reflexive ], + [ sh:datatype xsd:boolean ; + sh:description "True means that the slot is the \"singular unique key\" (also known more simply as the \"key slot\") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container." ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 49 ; - sh:path linkml:structured_pattern ], - [ sh:datatype xsd:string ; - sh:description "a name that is used in the singular form" ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path linkml:key ], + [ sh:datatype xsd:boolean ; + sh:description "If s is symmetric, and i.s=v, then v.s=i" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:singular_name ], + sh:order 16 ; + sh:path linkml:symmetric ], [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal the specified value" ; - sh:maxCount 1 ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; sh:nodeKind sh:Literal ; - sh:order 53 ; - sh:path linkml:equals_string ], + sh:order 100 ; + sh:path skos:altLabel ], + [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; + sh:nodeKind sh:IRI ; + sh:order 72 ; + sh:path linkml:values_from ], + [ sh:class linkml:SlotDefinition ; + sh:description "A collection of secondary parent mixin slots from which inheritable metaslots are propagated" ; + sh:nodeKind sh:IRI ; + sh:order 70 ; + sh:path linkml:mixins ], [ sh:class linkml:TypeMapping ; sh:description "A collection of type mappings that specify how a slot's range should be mapped or serialized in different frameworks" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 36 ; sh:path linkml:type_mappings ], - [ sh:datatype xsd:string ; - sh:description "The name of the slot referenced in the slot_usage" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 28 ; - sh:path linkml:usage_slot_name ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 101 ; - sh:path skosxl:altLabel ], - [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:order 82 ; + sh:path linkml:extensions ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 92 ; + sh:path OIO:inSubset ], + [ sh:description "agent that modified the element" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 94 ; - sh:path linkml:imported_from ], - [ sh:class linkml:LocalName ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 78 ; - sh:path linkml:local_names ], + sh:nodeKind sh:IRI ; + sh:order 112 ; + sh:path oslc:modifiedBy ], [ sh:datatype xsd:boolean ; sh:description "If True, then the relationship between the slot domain and range is many to one or many to many" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 8 ; sh:path linkml:shared ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 103 ; - sh:path skos:exactMatch ], - [ sh:class linkml:AnonymousClassExpression ; - sh:description "A range that is described as a boolean expression combining existing ranges" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 38 ; - sh:path linkml:range_expression ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 98 ; - sh:path linkml:deprecated_element_has_exact_replacement ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 99 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:datatype xsd:string ; - sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; - sh:nodeKind sh:Literal ; - sh:order 54 ; - sh:path linkml:equals_string_in ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 105 ; - sh:path skos:relatedMatch ], - [ sh:class linkml:SlotDefinition ; - sh:description "A collection of secondary parent mixin slots from which inheritable metaslots are propagated" ; - sh:nodeKind sh:IRI ; - sh:order 70 ; - sh:path linkml:mixins ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 85 ; - sh:path linkml:alt_descriptions ], - [ sh:class linkml:ClassDefinition ; - sh:description "the class(es) that reference the slot in a \"slots\" or \"slot_usage\" context" ; + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 14 ; - sh:path linkml:domain_of ], - [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; - sh:nodeKind sh:Literal ; - sh:order 88 ; - sh:path linkml:todos ], - [ sh:datatype xsd:boolean ; - sh:description "true means that the slot must be present in instances of the class definition" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 41 ; - sh:path linkml:required ], + sh:order 106 ; + sh:path skos:narrowMatch ], [ sh:datatype xsd:string ; - sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. -We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. -Implementations of frameworks may choose to use this property to either (a) PARSE: implement automated normalizations by parsing denormalized strings into complex objects (b) GENERATE: implement automated to_string labeling of complex objects -For example, a Measurement class may have 3 fields: unit, value, and string_value. The string_value slot may have a string_serialization of {value}{unit} such that if unit=cm and value=2, the value of string_value shouldd be 2cm""" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 73 ; - sh:path linkml:string_serialization ], - [ sh:datatype xsd:boolean ; - sh:description "If True, then the order of elements of a multivalued slot is guaranteed to be preserved. If False, the order may still be preserved but this is not guaranteed" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path linkml:list_elements_ordered ], - [ sh:datatype xsd:boolean ; - sh:description "True means that the key slot(s) is used to determine the instantiation (types) relation between objects and a ClassDefinition" ; + sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path linkml:designates_type ], - [ sh:class linkml:Element ; - sh:defaultValue "string"^^xsd:string ; - sh:description """defines the type of the object of the slot. Given the following slot definition - S1: - domain: C1 - range: C2 -the declaration - X: - S1: Y - -implicitly asserts Y is an instance of C2 -""" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 37 ; - sh:path linkml:range ], + sh:order 51 ; + sh:path linkml:implicit_prefix ], [ sh:class linkml:SlotDefinition ; sh:description "Ontology property which this slot is a subproperty of. Note: setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 15 ; sh:path rdfs:subPropertyOf ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if none of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 62 ; - sh:path linkml:none_of ], - [ sh:datatype xsd:boolean ; - sh:description "true means that slot can have more than one value and should be represented using a list or collection structure." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 43 ; - sh:path linkml:multivalued ], - [ sh:datatype xsd:boolean ; - sh:description "true means that the slot should be present in instances of the class definition, but this is not required" ; + [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 42 ; - sh:path linkml:recommended ], + sh:nodeKind sh:IRI ; + sh:order 77 ; + sh:path linkml:definition_uri ], [ sh:datatype xsd:string ; - sh:description "If present, slot is read only. Text explains why" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path linkml:readonly ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; - sh:maxCount 1 ; + sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; - sh:order 110 ; - sh:path pav:createdOn ], - [ sh:datatype xsd:string ; - sh:description "the value of the slot must equal the value of the evaluated expression" ; + sh:order 116 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:boolean ; + sh:description "If s is antisymmetric, and i.s=v where i is different from v, v.s cannot have value i" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 56 ; - sh:path linkml:equals_expression ], - [ sh:class linkml:SlotDefinition ; - sh:description "Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class." ; - sh:nodeKind sh:IRI ; - sh:order 71 ; - sh:path linkml:apply_to ], - [ sh:class linkml:SlotDefinition ; - sh:description "A primary parent slot from which inheritable metaslots are propagated" ; + sh:order 20 ; + sh:path linkml:asymmetric ], + [ sh:class linkml:Definition ; + sh:description "the \"owner\" of the slot. It is the class if it appears in the slots list, otherwise the declaring slot" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 67 ; - sh:path linkml:is_a ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 82 ; - sh:path linkml:extensions ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 100 ; - sh:path skos:altLabel ], - [ sh:class linkml:SlotDefinition ; - sh:description "If s transitive_form_of d, then (1) s holds whenever d holds (2) s is transitive (3) d holds whenever s holds and there are no intermediates, and s is not reflexive" ; + sh:order 13 ; + sh:path linkml:owner ], + [ sh:class qudt:Unit ; + sh:description "an encoding of a unit" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path linkml:transitive_form_of ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 50 ; + sh:path qudt:unit ], [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:description """Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. +We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. +Implementations of frameworks may choose to use this property to either (a) PARSE: implement automated normalizations by parsing denormalized strings into complex objects (b) GENERATE: implement automated to_string labeling of complex objects +For example, a Measurement class may have 3 fields: unit, value, and string_value. The string_value slot may have a string_serialization of {value}{unit} such that if unit=cm and value=2, the value of string_value shouldd be 2cm""" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 84 ; - sh:path skos:definition ], - [ sh:class linkml:SlotDefinition ; - sh:description "Two classes are disjoint if they have no instances in common, two slots are disjoint if they can never hold between the same two instances" ; - sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path linkml:disjoint_with ], - [ sh:description "The identifier of a \"value set\" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; - sh:nodeKind sh:IRI ; - sh:order 72 ; - sh:path linkml:values_from ], + sh:order 73 ; + sh:path linkml:string_serialization ], [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if all of the expressions hold" ; + sh:description "holds if none of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 65 ; - sh:path linkml:all_of ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; + sh:order 62 ; + sh:path linkml:none_of ], + [ sh:description "For ordinal ranges, the value must be equal to or lower than this" ; + sh:maxCount 1 ; + sh:order 47 ; + sh:path linkml:maximum_value ], + [ sh:datatype xsd:boolean ; + sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 96 ; - sh:path schema1:inLanguage ], + sh:order 69 ; + sh:path linkml:mixin ], [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if only one of the expressions hold" ; + sh:description "holds if at least one of the expressions hold" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 63 ; - sh:path linkml:exactly_one_of ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "the value of the slot is multivalued with all members satisfying the condition" ; + sh:order 64 ; + sh:path linkml:any_of ], + [ sh:class linkml:EnumExpression ; + sh:description "An inlined enumeration" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 61 ; - sh:path linkml:all_members ], - [ sh:defaultValue "linkml:slot_uri"^^xsd:string ; - sh:description "URI of the class that provides a semantic interpretation of the slot in a linked data context. The URI may come from any namespace and may be shared between schemas." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml:slot_uri ], - [ sh:datatype xsd:integer ; - sh:description "the maximum number of entries for a multivalued slot" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 59 ; - sh:path linkml:maximum_cardinality ], + sh:order 39 ; + sh:path linkml:enum_range ], [ sh:datatype xsd:boolean ; sh:description "True means that this slot was defined in a slot_usage situation" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 27 ; sh:path linkml:is_usage_slot ], - [ sh:description "status of the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 113 ; - sh:path bibo:status ], - [ sh:description "Controlled terms used to categorize an element." ; - sh:nodeKind sh:IRI ; - sh:order 115 ; - sh:path dcterms:subject ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 102 ; - sh:path skos:mappingRelation ], - [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 69 ; - sh:path linkml:mixin ], [ sh:description "if PRESENT then a value must be present (for lists there must be at least one value). If ABSENT then a value must be absent (for lists, must be empty)" ; sh:in ( "UNCOMMITTED" "PRESENT" "ABSENT" ) ; sh:maxCount 1 ; sh:order 52 ; sh:path linkml:value_presence ], - [ sh:description "id of the schema that defined the element" ; + [ sh:datatype xsd:boolean ; + sh:description "True means that keyed or identified slot appears in an outer structure by value. False means that only the key or identifier for the slot appears within the domain, referencing a structure that appears elsewhere." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 93 ; - sh:path skos:inScheme ], - [ sh:datatype xsd:string ; - sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; + sh:nodeKind sh:Literal ; + sh:order 44 ; + sh:path linkml:inlined ], + [ sh:datatype xsd:integer ; + sh:description "the exact number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 48 ; - sh:path linkml:pattern ], + sh:order 57 ; + sh:path linkml:exact_cardinality ], + [ sh:datatype xsd:boolean ; + sh:description "true means that the slot should be present in instances of the class definition, but this is not required" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 42 ; + sh:path linkml:recommended ], [ sh:datatype xsd:string ; sh:description "a textual descriptor that indicates the role played by the slot range" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 26 ; sh:path linkml:role ], - [ sh:class linkml:SlotDefinition ; - sh:description "indicates that any instance of d s r implies that there is also an instance of r s' d" ; + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 22 ; - sh:path owl:inverseOf ], - [ sh:description "An element in another schema which this element instantiates." ; - sh:nodeKind sh:IRI ; - sh:order 81 ; - sh:path linkml:instantiates ], - [ sh:datatype xsd:string ; - sh:description "the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name." ; + sh:order 98 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:datatype xsd:boolean ; + sh:description "True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path skos:prefLabel ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "the value of the slot is multivalued with at least one member satisfying the condition" ; - sh:maxCount 1 ; + sh:order 10 ; + sh:path linkml:identifier ], + [ sh:class linkml:LocalName ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 60 ; - sh:path linkml:has_member ], + sh:order 78 ; + sh:path linkml:local_names ], [ sh:datatype xsd:boolean ; - sh:description "true means that the *value* of a slot is inherited by subclasses" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path linkml:inherited ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:description "true means that slot can have more than one value and should be represented using a list or collection structure." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 111 ; - sh:path pav:lastUpdatedOn ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 116 ; - sh:path schema1:keywords ], - [ sh:datatype xsd:string ; - sh:description "An established standard to which the element conforms." ; + sh:order 43 ; + sh:path linkml:multivalued ], + [ sh:datatype xsd:boolean ; + sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 79 ; - sh:path dcterms:conformsTo ], + sh:order 76 ; + sh:path linkml:id_prefixes_are_closed ], [ sh:datatype xsd:boolean ; - sh:description "If s is symmetric, and i.s=v, then v.s=i" ; + sh:description "true if this slot is a grouping slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path linkml:symmetric ], - [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 77 ; - sh:path linkml:definition_uri ], + sh:order 31 ; + sh:path linkml:is_grouping_slot ], [ sh:description "For ordinal ranges, the value must be equal to or higher than this" ; sh:maxCount 1 ; sh:order 46 ; sh:path linkml:minimum_value ], - [ sh:description "the role a slot on a relationship class plays, for example, the subject, object or predicate roles" ; - sh:in ( rdf:subject rdf:object rdf:predicate "NODE" "OTHER_ROLE" ) ; - sh:maxCount 1 ; - sh:order 29 ; - sh:path linkml:relational_role ], - [ sh:class linkml:Definition ; - sh:description "the \"owner\" of the slot. It is the class if it appears in the slots list, otherwise the declaring slot" ; + [ sh:datatype xsd:integer ; + sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 55 ; + sh:path linkml:equals_number ], + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; + sh:nodeKind sh:Literal ; + sh:order 88 ; + sh:path linkml:todos ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; sh:nodeKind sh:IRI ; - sh:order 13 ; - sh:path linkml:owner ], + sh:order 103 ; + sh:path skos:exactMatch ], + [ sh:datatype xsd:string ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:nodeKind sh:Literal ; + sh:order 89 ; + sh:path skos:editorialNote ], + [ sh:datatype xsd:string ; + sh:description "The name of the slot referenced in the slot_usage" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 28 ; + sh:path linkml:usage_slot_name ], + [ sh:class linkml:PatternExpression ; + sh:description "the string value of the slot must conform to the regular expression in the pattern expression" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 49 ; + sh:path linkml:structured_pattern ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 85 ; + sh:path linkml:alt_descriptions ], + [ sh:class linkml:PathExpression ; + sh:description "a rule for inferring a slot assignment based on evaluating a path through a sequence of slot assignments" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 32 ; + sh:path linkml:path_rule ], [ sh:class linkml:ArrayExpression ; sh:description "coerces the value of the slot into an array and defines the dimensions of that array" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 66 ; sh:path linkml:array ], - [ sh:class qudt:Unit ; - sh:description "an encoding of a unit" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 50 ; - sh:path qudt:unit ], - [ sh:datatype xsd:boolean ; - sh:description "If s is antisymmetric, and i.s=v where i is different from v, v.s cannot have value i" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:asymmetric ], - [ sh:datatype xsd:boolean ; - sh:description "true if this slot is a grouping slot" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 31 ; - sh:path linkml:is_grouping_slot ], - [ sh:class linkml:SlotDefinition ; - sh:description "transitive_form_of including the reflexive case" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path linkml:reflexive_transitive_form_of ], - [ sh:class linkml:SlotDefinition ; - sh:description "indicates that the domain element consists exactly of the members of the element in the range." ; - sh:nodeKind sh:IRI ; - sh:order 35 ; - sh:path linkml:union_of ], - [ sh:datatype xsd:boolean ; - sh:description "True means that the key slot(s) uniquely identify the elements within a single container" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path linkml:key ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 86 ; - sh:path dcterms:title ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; - sh:nodeKind sh:Literal ; - sh:order 90 ; - sh:path skos:note ], - [ sh:description "A list of related entities or URLs that may be of relevance" ; - sh:nodeKind sh:IRI ; - sh:order 97 ; - sh:path rdfs:seeAlso ], - [ sh:datatype xsd:boolean ; - sh:description "If s is irreflexive, then there exists no i such i.s=i" ; + sh:order 110 ; + sh:path pav:createdOn ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path linkml:irreflexive ], + sh:order 111 ; + sh:path pav:lastUpdatedOn ], [ sh:datatype xsd:boolean ; - sh:description "indicates that for any instance, i, the domain of this slot will include an assertion of i s range" ; + sh:description "If true then all direct is_a children are mutually disjoint and share no instances in common" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 23 ; - sh:path linkml:is_class_field ], - [ sh:class linkml:AnonymousSlotExpression ; - sh:description "holds if at least one of the expressions hold" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 64 ; - sh:path linkml:any_of ], - [ sh:description "agent that created the element" ; + sh:order 34 ; + sh:path linkml:children_are_mutually_disjoint ], + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 108 ; - sh:path pav:createdBy ], - [ sh:class linkml:ClassDefinition ; - sh:description """defines the type of the subject of the slot. Given the following slot definition - S1: - domain: C1 - range: C2 -the declaration - X: - S1: Y - -implicitly asserts that X is an instance of C1 -""" ; + sh:order 93 ; + sh:path skos:inScheme ], + [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml:domain ], + sh:order 113 ; + sh:path bibo:status ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; + sh:description "the slot must have range string and the value of the slot must equal one of the specified values" ; sh:nodeKind sh:Literal ; - sh:order 87 ; - sh:path linkml:deprecated ], - [ sh:datatype xsd:boolean ; - sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; + sh:order 54 ; + sh:path linkml:equals_string_in ], + [ sh:datatype xsd:string ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 76 ; - sh:path linkml:id_prefixes_are_closed ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; + sh:order 94 ; + sh:path linkml:imported_from ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; sh:nodeKind sh:IRI ; - sh:order 95 ; - sh:path dcterms:source ], - [ sh:class linkml:EnumExpression ; - sh:description "An inlined enumeration" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 39 ; - sh:path linkml:enum_range ], + sh:order 107 ; + sh:path skos:broadMatch ], + [ sh:class linkml:ClassDefinition ; + sh:description "the class(es) that reference the slot in a \"slots\" or \"slot_usage\" context" ; + sh:nodeKind sh:IRI ; + sh:order 14 ; + sh:path linkml:domain_of ], [ sh:class linkml:SlotDefinition ; - sh:description "allows for grouping of related slots into a grouping slot that serves the role of a group" ; + sh:description "transitive_form_of including the reflexive case" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 30 ; - sh:path sh:group ], + sh:order 25 ; + sh:path linkml:reflexive_transitive_form_of ], + [ sh:class linkml:AnonymousClassExpression ; + sh:description "A range that is described as a boolean expression combining existing ranges" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 38 ; + sh:path linkml:range_expression ], [ sh:datatype xsd:integer ; - sh:description "the slot must have range of a number and the value of the slot must equal the specified value" ; + sh:description "the minimum number of entries for a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 55 ; - sh:path linkml:equals_number ], - [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; - sh:nodeKind sh:IRI ; - sh:order 80 ; - sh:path linkml:implements ], + sh:order 58 ; + sh:path linkml:minimum_cardinality ], [ sh:datatype xsd:boolean ; - sh:description "True means that an inlined slot is represented as a list of range instances. False means that an inlined slot is represented as a dictionary, whose key is the slot key or identifier and whose value is the range instance." ; + sh:description "If s is transitive, and i.s=z, and s.s=j, then i.s=j" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 45 ; - sh:path linkml:inlined_as_list ], + sh:order 21 ; + sh:path linkml:transitive ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 99 ; + sh:path linkml:deprecated_element_has_possible_replacement ], [ sh:datatype xsd:boolean ; - sh:description "Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes." ; + sh:description "If True, then there must be no duplicates in the elements of a multivalued slot" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 68 ; - sh:path linkml:abstract ], + sh:order 6 ; + sh:path linkml:list_elements_unique ], + [ sh:class linkml:EnumBinding ; + sh:description """A collection of enum bindings that specify how a slot can be bound to a permissible value from an enumeration. +LinkML provides enums to allow string values to be restricted to one of a set of permissible values (specified statically or dynamically). +Enum bindings allow enums to be bound to any object, including complex nested objects. For example, given a (generic) class Concept with slots id and label, it may be desirable to restrict the values the id takes on in a given context. For example, a HumanSample class may have a slot for representing sample site, with a range of concept, but the values of that slot may be restricted to concepts from a particular branch of an anatomy ontology.""" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 40 ; + sh:path linkml:bindings ], + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 101 ; + sh:path skosxl:altLabel ], + [ sh:description "An element in another schema which this element instantiates." ; + sh:nodeKind sh:IRI ; + sh:order 81 ; + sh:path linkml:instantiates ], + [ sh:class linkml:SlotDefinition ; + sh:description "If s transitive_form_of d, then (1) s holds whenever d holds (2) s is transitive (3) d holds whenever s holds and there are no intermediates, and s is not reflexive" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path linkml:transitive_form_of ], [ sh:datatype xsd:string ; - sh:description "Causes the slot value to be interpreted as a uriorcurie after prefixing with this string" ; + sh:description "the string value of the slot must conform to this regular expression expressed in the string" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 51 ; - sh:path linkml:implicit_prefix ], + sh:order 48 ; + sh:path linkml:pattern ], [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; + sh:description "the slot must have range string and the value of the slot must equal the specified value" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 89 ; - sh:path skos:editorialNote ], + sh:order 53 ; + sh:path linkml:equals_string ], [ sh:datatype xsd:boolean ; - sh:description "True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container" ; + sh:description "indicates that for any instance, i, the domain of this slot will include an assertion of i s range" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path linkml:identifier ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 112 ; - sh:path oslc:modifiedBy ], - [ sh:datatype xsd:integer ; - sh:description "the exact number of entries for a multivalued slot" ; + sh:order 23 ; + sh:path linkml:is_class_field ], + [ sh:datatype xsd:boolean ; + sh:description "If s is irreflexive, then there exists no i such i.s=i" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 57 ; - sh:path linkml:exact_cardinality ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 107 ; - sh:path skos:broadMatch ] ; + sh:order 19 ; + sh:path linkml:irreflexive ] ; sh:targetClass linkml:SlotDefinition . skosxl:Label a sh:NodeShape ; rdfs:comment "object that contains meta data about a synonym or alias including where it came from (source) and its scope (narrow, broad, etc.)" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "id of the schema that defined the element" ; + sh:property [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml:alt_descriptions ], + [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path skos:closeMatch ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 22 ; + sh:path skos:altLabel ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 31 ; + sh:path dcterms:contributor ], + [ sh:datatype xsd:string ; + sh:description "The literal lexical form of a structured alias; i.e the actual alias value." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path skosxl:literalForm ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 32 ; + sh:path pav:createdOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; sh:nodeKind sh:IRI ; - sh:order 15 ; - sh:path skos:inScheme ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml:annotations ], + sh:order 24 ; + sh:path skos:mappingRelation ], [ sh:class linkml:SubsetDefinition ; sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; sh:nodeKind sh:IRI ; sh:order 14 ; sh:path OIO:inSubset ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 13 ; - sh:path linkml:examples ], - [ sh:description "The relationship between an element and its alias." ; - sh:in ( skos:exactMatch skos:relatedMatch skos:broaderMatch skos:narrowerMatch ) ; + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path rdf:predicate ], + sh:nodeKind sh:Literal ; + sh:order 18 ; + sh:path schema1:inLanguage ], + [ sh:description "agent that modified the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 34 ; + sh:path oslc:modifiedBy ], + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 21 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; + sh:nodeKind sh:IRI ; + sh:order 27 ; + sh:path skos:relatedMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path skos:broadMatch ], [ sh:description "The category or categories of an alias. This can be drawn from any relevant vocabulary" ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path dcterms:subject ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml:alt_descriptions ], + sh:order 5 ; + sh:path linkml:annotations ], [ sh:class linkml:Extension ; sh:description "a tag/text tuple attached to an arbitrary element" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; sh:path linkml:extensions ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 13 ; + sh:path linkml:examples ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path dcterms:source ], + sh:order 28 ; + sh:path skos:narrowMatch ], [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 20 ; sh:path linkml:deprecated_element_has_exact_replacement ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path linkml:deprecated ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path skos:definition ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path skos:exactMatch ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path oslc:modifiedBy ], + sh:order 16 ; + sh:path linkml:imported_from ], [ sh:datatype xsd:string ; sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; sh:order 11 ; sh:path skos:editorialNote ], - [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path skos:closeMatch ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; - sh:maxCount 1 ; + [ sh:datatype xsd:string ; + sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; - sh:order 32 ; - sh:path pav:createdOn ], + sh:order 10 ; + sh:path linkml:todos ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "Keywords or tags used to describe the element" ; + sh:nodeKind sh:Literal ; + sh:order 37 ; + sh:path schema1:keywords ], + [ sh:datatype xsd:string ; + sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:nodeKind sh:Literal ; + sh:order 12 ; + sh:path skos:note ], + [ sh:datatype xsd:string ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path linkml:imported_from ], + sh:order 8 ; + sh:path dcterms:title ], [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; @@ -6360,95 +6393,62 @@ skosxl:Label a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 23 ; sh:path skosxl:altLabel ], - [ sh:description "agent that contributed to the element" ; - sh:nodeKind sh:IRI ; - sh:order 31 ; - sh:path dcterms:contributor ], [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; sh:order 19 ; sh:path rdfs:seeAlso ], - [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path schema1:inLanguage ], - [ sh:description "The context in which an alias should be applied" ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml:alias_contexts ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + [ sh:description "id of the schema that defined the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path skos:relatedMatch ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:order 15 ; + sh:path skos:inScheme ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 33 ; - sh:path pav:lastUpdatedOn ], + sh:order 9 ; + sh:path linkml:deprecated ], [ sh:datatype xsd:string ; - sh:description "Outstanding issues that needs resolution" ; + sh:description "a textual description of the element's purpose and use" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path linkml:todos ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:broadMatch ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path skos:mappingRelation ], + sh:order 6 ; + sh:path skos:definition ], [ sh:description "status of the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 35 ; sh:path bibo:status ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; - sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path skos:altLabel ], - [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path dcterms:title ], - [ sh:datatype xsd:string ; - sh:description "The literal lexical form of a structured alias; i.e the actual alias value." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path skosxl:literalForm ], [ sh:datatype xsd:integer ; sh:description "the relative order in which the element occurs, lower values are given precedence" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 36 ; sh:path sh:order ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:narrowMatch ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe the element" ; - sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path schema1:keywords ], - [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path skos:note ] ; + sh:order 33 ; + sh:path pav:lastUpdatedOn ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 25 ; + sh:path skos:exactMatch ], + [ sh:description "The context in which an alias should be applied" ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml:alias_contexts ], + [ sh:description "The relationship between an element and its alias." ; + sh:in ( skos:exactMatch skos:relatedMatch skos:broaderMatch skos:narrowerMatch ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path rdf:predicate ], + [ sh:description "A related resource from which the element is derived." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path dcterms:source ] ; sh:targetClass skosxl:Label . linkml:AltDescription a sh:NodeShape ; @@ -6456,26 +6456,32 @@ linkml:AltDescription a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "text of an attributed description" ; + sh:description "the source of an attributed description" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path linkml:alt_description_text ], + sh:order 0 ; + sh:path linkml:alt_description_source ], [ sh:datatype xsd:string ; - sh:description "the source of an attributed description" ; + sh:description "text of an attributed description" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path linkml:alt_description_source ] ; + sh:order 1 ; + sh:path linkml:alt_description_text ] ; sh:targetClass linkml:AltDescription . linkml:Example a sh:NodeShape ; rdfs:comment "usage example and description" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "direct object representation of the example" ; + sh:property [ sh:datatype xsd:string ; + sh:description "example value" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path skos:example ], + [ sh:description "direct object representation of the example" ; sh:maxCount 1 ; sh:order 2 ; sh:path linkml:value_object ], @@ -6484,224 +6490,179 @@ linkml:Example a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path linkml:value_description ], - [ sh:datatype xsd:string ; - sh:description "example value" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path skos:example ] ; + sh:path linkml:value_description ] ; sh:targetClass linkml:Example . linkml:Annotation a sh:NodeShape ; rdfs:comment "a tag/value pair with the semantics of OWL Annotation" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "a tag associated with an extension" ; + sh:property [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml:extensions ], + [ sh:description "a tag associated with an extension" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path linkml:extension_tag ], - [ sh:description "the actual annotation" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path linkml:extension_value ], [ sh:class linkml:Annotation ; sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path linkml:annotations ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml:extensions ] ; + [ sh:description "the actual annotation" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path linkml:extension_value ] ; sh:targetClass linkml:Annotation . linkml:SubsetDefinition a sh:NodeShape ; rdfs:comment "an element that can be used to group other metamodel elements" ; sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "the primary language used in the sources" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 22 ; - sh:path schema1:inLanguage ], - [ sh:description "agent that modified the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 38 ; - sh:path oslc:modifiedBy ], - [ sh:datatype xsd:string ; - sh:description "a textual description of the element's purpose and use" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path skos:definition ], - [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; - sh:nodeKind sh:IRI ; - sh:order 32 ; - sh:path skos:narrowMatch ], - [ sh:description "A related resource from which the element is derived." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 21 ; - sh:path dcterms:source ], - [ sh:description "An element in another schema which this element instantiates." ; - sh:nodeKind sh:IRI ; - sh:order 7 ; - sh:path linkml:instantiates ], - [ sh:datatype xsd:string ; - sh:description "editorial notes about an element intended primarily for internal consumption" ; - sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path skos:editorialNote ], - [ sh:class linkml:SubsetDefinition ; - sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; - sh:nodeKind sh:IRI ; - sh:order 18 ; - sh:path OIO:inSubset ], - [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; - sh:nodeKind sh:IRI ; - sh:order 33 ; - sh:path skos:broadMatch ], - [ sh:description "id of the schema that defined the element" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 19 ; - sh:path skos:inScheme ], - [ sh:description "agent that created the element" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "agent that modified the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 34 ; - sh:path pav:createdBy ], - [ sh:description "agent that contributed to the element" ; + sh:order 38 ; + sh:path oslc:modifiedBy ], + [ sh:description "Controlled terms used to categorize an element." ; sh:nodeKind sh:IRI ; - sh:order 35 ; - sh:path dcterms:contributor ], - [ sh:class skosxl:Label ; - sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 27 ; - sh:path skosxl:altLabel ], + sh:order 41 ; + sh:path dcterms:subject ], + [ sh:datatype xsd:string ; + sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + sh:nodeKind sh:Literal ; + sh:order 26 ; + sh:path skos:altLabel ], [ sh:datatype xsd:string ; sh:description "Keywords or tags used to describe the element" ; sh:nodeKind sh:Literal ; sh:order 42 ; sh:path schema1:keywords ], - [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 25 ; - sh:path linkml:deprecated_element_has_possible_replacement ], - [ sh:description "status of the element" ; + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was last updated" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 39 ; - sh:path bibo:status ], + sh:nodeKind sh:Literal ; + sh:order 37 ; + sh:path pav:lastUpdatedOn ], [ sh:description "A list of terms from different schemas or terminology systems that have related meaning." ; sh:nodeKind sh:IRI ; sh:order 31 ; sh:path skos:relatedMatch ], + [ sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ; + sh:nodeKind sh:IRI ; + sh:order 33 ; + sh:path skos:broadMatch ], [ sh:datatype xsd:string ; - sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; + sh:description "the imports entry that this element was derived from. Empty means primary source" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path rdfs:label ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was created" ; + sh:order 20 ; + sh:path linkml:imported_from ], + [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:nodeKind sh:IRI ; + sh:order 29 ; + sh:path skos:exactMatch ], + [ sh:class linkml:SubsetDefinition ; + sh:description "used to indicate membership of a term in a defined subset of terms used for a particular domain or application." ; + sh:nodeKind sh:IRI ; + sh:order 18 ; + sh:path OIO:inSubset ], + [ sh:class linkml:Example ; + sh:description "example usages of an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 17 ; + sh:path linkml:examples ], + [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 36 ; - sh:path pav:createdOn ], + sh:nodeKind sh:IRI ; + sh:order 24 ; + sh:path linkml:deprecated_element_has_exact_replacement ], + [ sh:class linkml:LocalName ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml:local_names ], [ sh:datatype xsd:string ; - sh:description "Description of why and when this element will no longer be used" ; - sh:maxCount 1 ; + sh:description "notes and comments about an element intended primarily for external consumption" ; sh:nodeKind sh:Literal ; - sh:order 13 ; - sh:path linkml:deprecated ], + sh:order 16 ; + sh:path skos:note ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml:extensions ], + [ sh:description "An element in another schema which this element instantiates." ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path linkml:instantiates ], [ sh:datatype xsd:string ; - sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; + sh:description "the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 12 ; - sh:path dcterms:title ], - [ sh:datatype xsd:dateTime ; - sh:description "time at which the element was last updated" ; + sh:order 0 ; + sh:path rdfs:label ], + [ sh:description "A related resource from which the element is derived." ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 37 ; - sh:path pav:lastUpdatedOn ], - [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; sh:nodeKind sh:IRI ; - sh:order 6 ; - sh:path linkml:implements ], + sh:order 21 ; + sh:path dcterms:source ], [ sh:description "The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path linkml:definition_uri ], - [ sh:class linkml:AltDescription ; - sh:description "A sourced alternative description for an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml:alt_descriptions ], - [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; - sh:nodeKind sh:IRI ; - sh:order 28 ; - sh:path skos:mappingRelation ], - [ sh:class linkml:Annotation ; - sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml:annotations ], - [ sh:description "Controlled terms used to categorize an element." ; + [ sh:description "When an element is deprecated, it can be potentially replaced by this uri or curie" ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 41 ; - sh:path dcterms:subject ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml:extensions ], - [ sh:class linkml:Example ; - sh:description "example usages of an element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 17 ; - sh:path linkml:examples ], + sh:order 25 ; + sh:path linkml:deprecated_element_has_possible_replacement ], + [ sh:datatype xsd:string ; + sh:description "the primary language used in the sources" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 22 ; + sh:path schema1:inLanguage ], [ sh:description "A list of related entities or URLs that may be of relevance" ; sh:nodeKind sh:IRI ; sh:order 23 ; sh:path rdfs:seeAlso ], - [ sh:class linkml:LocalName ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml:local_names ], - [ sh:datatype xsd:integer ; - sh:description "the relative order in which the element occurs, lower values are given precedence" ; + [ sh:datatype xsd:boolean ; + sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 40 ; - sh:path sh:order ], + sh:order 2 ; + sh:path linkml:id_prefixes_are_closed ], [ sh:datatype xsd:string ; - sh:description "the imports entry that this element was derived from. Empty means primary source" ; + sh:description "A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 20 ; - sh:path linkml:imported_from ], + sh:order 12 ; + sh:path dcterms:title ], [ sh:description "A list of terms from different schemas or terminology systems that have close meaning." ; sh:nodeKind sh:IRI ; sh:order 30 ; sh:path skos:closeMatch ], - [ sh:datatype xsd:string ; - sh:description "Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment." ; + [ sh:description "status of the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 39 ; + sh:path bibo:status ], + [ sh:datatype xsd:integer ; + sh:description "the relative order in which the element occurs, lower values are given precedence" ; + sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 26 ; - sh:path skos:altLabel ], + sh:order 40 ; + sh:path sh:order ], + [ sh:description "id of the schema that defined the element" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 19 ; + sh:path skos:inScheme ], [ sh:datatype xsd:string ; sh:description "Outstanding issues that needs resolution" ; sh:nodeKind sh:Literal ; @@ -6712,26 +6673,65 @@ linkml:SubsetDefinition a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path linkml:id_prefixes ], - [ sh:datatype xsd:boolean ; - sh:description "If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation." ; + [ sh:class skosxl:Label ; + sh:description "A list of structured_alias objects, used to provide aliases in conjunction with additional metadata." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 27 ; + sh:path skosxl:altLabel ], + [ sh:class linkml:Annotation ; + sh:description "a collection of tag/text tuples with the semantics of OWL Annotation" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path linkml:annotations ], + [ sh:datatype xsd:string ; + sh:description "a textual description of the element's purpose and use" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path linkml:id_prefixes_are_closed ], - [ sh:description "When an element is deprecated, it can be automatically replaced by this uri or curie" ; + sh:order 10 ; + sh:path skos:definition ], + [ sh:description "agent that created the element" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 24 ; - sh:path linkml:deprecated_element_has_exact_replacement ], + sh:order 34 ; + sh:path pav:createdBy ], [ sh:datatype xsd:string ; - sh:description "notes and comments about an element intended primarily for external consumption" ; + sh:description "editorial notes about an element intended primarily for internal consumption" ; sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path skos:note ], - [ sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ; + sh:order 15 ; + sh:path skos:editorialNote ], + [ sh:datatype xsd:dateTime ; + sh:description "time at which the element was created" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 36 ; + sh:path pav:createdOn ], + [ sh:datatype xsd:string ; + sh:description "Description of why and when this element will no longer be used" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 13 ; + sh:path linkml:deprecated ], + [ sh:class linkml:AltDescription ; + sh:description "A sourced alternative description for an element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path linkml:alt_descriptions ], + [ sh:description "An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element." ; sh:nodeKind sh:IRI ; - sh:order 29 ; - sh:path skos:exactMatch ], + sh:order 6 ; + sh:path linkml:implements ], + [ sh:description "A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective." ; + sh:nodeKind sh:IRI ; + sh:order 28 ; + sh:path skos:mappingRelation ], + [ sh:description "agent that contributed to the element" ; + sh:nodeKind sh:IRI ; + sh:order 35 ; + sh:path dcterms:contributor ], + [ sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ; + sh:nodeKind sh:IRI ; + sh:order 32 ; + sh:path skos:narrowMatch ], [ sh:datatype xsd:string ; sh:description "An established standard to which the element conforms." ; sh:maxCount 1 ; @@ -6743,21 +6743,21 @@ linkml:SubsetDefinition a sh:NodeShape ; linkml:Extension a sh:NodeShape ; rdfs:comment "a tag/value pair used to add non-model information to an entry" ; sh:closed true ; - sh:ignoredProperties ( rdf:type linkml:annotations ) ; + sh:ignoredProperties ( linkml:annotations rdf:type ) ; sh:property [ sh:description "a tag associated with an extension" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml:extension_tag ], - [ sh:class linkml:Extension ; - sh:description "a tag/text tuple attached to an arbitrary element" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml:extensions ], [ sh:description "the actual annotation" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 1 ; - sh:path linkml:extension_value ] ; + sh:path linkml:extension_value ], + [ sh:class linkml:Extension ; + sh:description "a tag/text tuple attached to an arbitrary element" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml:extensions ] ; sh:targetClass linkml:Extension . diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/shex/meta.shex b/packages/linkml_runtime/src/linkml_runtime/linkml_model/shex/meta.shex index 00dc71c76a..156cc7cf49 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/shex/meta.shex +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/shex/meta.shex @@ -12,7 +12,7 @@ PREFIX oslc: PREFIX schema1: PREFIX bibo: PREFIX qudt: -PREFIX dcterms: +PREFIX dc1: PREFIX oboInOwl: @@ -132,7 +132,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -141,7 +141,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -155,13 +155,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -257,7 +257,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -266,7 +266,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -280,13 +280,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -366,7 +366,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -375,7 +375,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -389,12 +389,12 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -404,7 +404,7 @@ PREFIX oboInOwl: { ( $ ( skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -413,7 +413,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -427,13 +427,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -473,7 +473,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -482,7 +482,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -496,13 +496,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -524,14 +524,14 @@ PREFIX oboInOwl: @ ? ; @ ? ; @ * ; - dcterms:conformsTo @ ? ; + dc1:conformsTo @ ? ; @ * ; @ * ; @ * ; @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -540,7 +540,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -554,13 +554,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] @@ -586,7 +586,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -595,7 +595,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -609,13 +609,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -727,7 +727,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -736,7 +736,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -750,13 +750,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -800,7 +800,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -809,7 +809,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -823,13 +823,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -850,7 +850,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -859,7 +859,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -873,13 +873,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -902,7 +902,7 @@ PREFIX oboInOwl: @ * ; @ * ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -911,7 +911,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -925,13 +925,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] @@ -964,7 +964,7 @@ PREFIX oboInOwl: @ ; pav:version @ ? ; @ * ; - dcterms:license @ ? ; + dc1:license @ ? ; sh:declare @ * ; @ * ; @ * ; @@ -1127,13 +1127,13 @@ PREFIX oboInOwl: rdf:type [ ] ? ; skosxl:literalForm @ ; rdf:predicate [ skos:exactMatch skos:relatedMatch skos:broaderMatch skos:narrowerMatch ] ? ; - dcterms:subject @ * ; + dc1:subject @ * ; @ * ; @ * ; @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -1142,7 +1142,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -1156,7 +1156,7 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; @@ -1239,7 +1239,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -1248,7 +1248,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -1262,13 +1262,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] @@ -1289,7 +1289,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -1298,7 +1298,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -1312,13 +1312,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlddl/meta.sql b/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlddl/meta.sql index 0185c5bb39..fc91c25720 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlddl/meta.sql +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlddl/meta.sql @@ -408,8 +408,8 @@ -- * Slot: list_elements_unique Description: If True, then there must be no duplicates in the elements of a multivalued slot -- * Slot: list_elements_ordered Description: If True, then the order of elements of a multivalued slot is guaranteed to be preserved. If False, the order may still be preserved but this is not guaranteed -- * Slot: shared Description: If True, then the relationship between the slot domain and range is many to one or many to many --- * Slot: key Description: True means that the key slot(s) uniquely identify the elements within a single container --- * Slot: identifier Description: True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container +-- * Slot: key Description: True means that the slot is the "singular unique key" (also known more simply as the "key slot") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container. +-- * Slot: identifier Description: True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document. -- * Slot: designates_type Description: True means that the key slot(s) is used to determine the instantiation (types) relation between objects and a ClassDefinition -- * Slot: alias Description: the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name. -- * Slot: owner Description: the "owner" of the slot. It is the class if it appears in the slots list, otherwise the declaring slot @@ -843,10 +843,10 @@ -- * Slot: annotatable_id Description: Autocreated FK slot -- * Slot: annotation_tag Description: Autocreated FK slot -- * Slot: value_id Description: the actual annotation --- # Class: UnitOfMeasure Description: A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). +-- # Class: UnitOfMeasure Description: A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). -- * Slot: id -- * Slot: symbol Description: name of the unit encoded as a symbol --- * Slot: abbreviation Description: An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt) +-- * Slot: abbreviation Description: An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt) -- * Slot: descriptive_name Description: the spelled out name of the unit, for example, meter -- * Slot: ucum_code Description: associates a QUDT unit with its UCUM code (case-sensitive). -- * Slot: derivation Description: Expression for deriving this unit from other units @@ -3019,12 +3019,12 @@ CREATE TABLE setting ( FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); +CREATE INDEX setting_schema_definition_name_setting_key_idx ON setting (schema_definition_name, setting_key); +CREATE INDEX ix_setting_schema_definition_name ON setting (schema_definition_name); CREATE INDEX ix_setting_setting_key ON setting (setting_key); CREATE INDEX ix_setting_setting_value ON setting (setting_value); CREATE INDEX setting_import_expression_id_setting_key_idx ON setting (import_expression_id, setting_key); CREATE INDEX ix_setting_import_expression_id ON setting (import_expression_id); -CREATE INDEX setting_schema_definition_name_setting_key_idx ON setting (schema_definition_name, setting_key); -CREATE INDEX ix_setting_schema_definition_name ON setting (schema_definition_name); CREATE TABLE prefix ( prefix_prefix TEXT NOT NULL, @@ -3036,8 +3036,8 @@ CREATE TABLE prefix ( ); CREATE INDEX ix_prefix_prefix_prefix ON prefix (prefix_prefix); CREATE INDEX ix_prefix_prefix_reference ON prefix (prefix_reference); -CREATE INDEX ix_prefix_schema_definition_name ON prefix (schema_definition_name); CREATE INDEX prefix_schema_definition_name_prefix_prefix_idx ON prefix (schema_definition_name, prefix_prefix); +CREATE INDEX ix_prefix_schema_definition_name ON prefix (schema_definition_name); CREATE TABLE unique_key ( unique_key_name TEXT NOT NULL, @@ -3062,25 +3062,25 @@ CREATE TABLE unique_key ( UNIQUE (class_definition_name, unique_key_name), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX unique_key_class_definition_name_unique_key_name_idx ON unique_key (class_definition_name, unique_key_name); -CREATE INDEX ix_unique_key_deprecated_element_has_exact_replacement ON unique_key (deprecated_element_has_exact_replacement); -CREATE INDEX ix_unique_key_class_definition_name ON unique_key (class_definition_name); -CREATE INDEX ix_unique_key_source ON unique_key (source); +CREATE INDEX ix_unique_key_status ON unique_key (status); CREATE INDEX ix_unique_key_title ON unique_key (title); CREATE INDEX ix_unique_key_from_schema ON unique_key (from_schema); +CREATE INDEX ix_unique_key_source ON unique_key (source); CREATE INDEX ix_unique_key_created_by ON unique_key (created_by); CREATE INDEX ix_unique_key_last_updated_on ON unique_key (last_updated_on); -CREATE INDEX ix_unique_key_status ON unique_key (status); CREATE INDEX ix_unique_key_consider_nulls_inequal ON unique_key (consider_nulls_inequal); +CREATE INDEX ix_unique_key_deprecated_element_has_exact_replacement ON unique_key (deprecated_element_has_exact_replacement); CREATE INDEX ix_unique_key_in_language ON unique_key (in_language); -CREATE INDEX ix_unique_key_imported_from ON unique_key (imported_from); CREATE INDEX ix_unique_key_deprecated_element_has_possible_replacement ON unique_key (deprecated_element_has_possible_replacement); +CREATE INDEX ix_unique_key_rank ON unique_key (rank); CREATE INDEX ix_unique_key_deprecated ON unique_key (deprecated); +CREATE INDEX ix_unique_key_imported_from ON unique_key (imported_from); CREATE INDEX ix_unique_key_created_on ON unique_key (created_on); CREATE INDEX ix_unique_key_modified_by ON unique_key (modified_by); -CREATE INDEX ix_unique_key_rank ON unique_key (rank); CREATE INDEX ix_unique_key_description ON unique_key (description); CREATE INDEX ix_unique_key_unique_key_name ON unique_key (unique_key_name); +CREATE INDEX unique_key_class_definition_name_unique_key_name_idx ON unique_key (class_definition_name, unique_key_name); +CREATE INDEX ix_unique_key_class_definition_name ON unique_key (class_definition_name); CREATE TABLE type_mapping ( framework TEXT NOT NULL, @@ -3104,23 +3104,23 @@ CREATE TABLE type_mapping ( PRIMARY KEY (framework, type, string_serialization, description, title, deprecated, from_schema, imported_from, source, in_language, deprecated_element_has_exact_replacement, deprecated_element_has_possible_replacement, created_by, created_on, last_updated_on, modified_by, status, rank), FOREIGN KEY(type) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_mapping_description ON type_mapping (description); -CREATE INDEX ix_type_mapping_title ON type_mapping (title); -CREATE INDEX ix_type_mapping_string_serialization ON type_mapping (string_serialization); -CREATE INDEX ix_type_mapping_created_by ON type_mapping (created_by); -CREATE INDEX ix_type_mapping_created_on ON type_mapping (created_on); +CREATE INDEX ix_type_mapping_from_schema ON type_mapping (from_schema); +CREATE INDEX ix_type_mapping_imported_from ON type_mapping (imported_from); CREATE INDEX ix_type_mapping_framework ON type_mapping (framework); -CREATE INDEX ix_type_mapping_last_updated_on ON type_mapping (last_updated_on); -CREATE INDEX ix_type_mapping_modified_by ON type_mapping (modified_by); CREATE INDEX ix_type_mapping_source ON type_mapping (source); -CREATE INDEX ix_type_mapping_status ON type_mapping (status); -CREATE INDEX ix_type_mapping_rank ON type_mapping (rank); CREATE INDEX ix_type_mapping_type ON type_mapping (type); CREATE INDEX ix_type_mapping_in_language ON type_mapping (in_language); CREATE INDEX ix_type_mapping_deprecated_element_has_exact_replacement ON type_mapping (deprecated_element_has_exact_replacement); CREATE INDEX ix_type_mapping_deprecated_element_has_possible_replacement ON type_mapping (deprecated_element_has_possible_replacement); -CREATE INDEX ix_type_mapping_from_schema ON type_mapping (from_schema); -CREATE INDEX ix_type_mapping_imported_from ON type_mapping (imported_from); +CREATE INDEX ix_type_mapping_created_by ON type_mapping (created_by); +CREATE INDEX ix_type_mapping_created_on ON type_mapping (created_on); +CREATE INDEX ix_type_mapping_last_updated_on ON type_mapping (last_updated_on); +CREATE INDEX ix_type_mapping_description ON type_mapping (description); +CREATE INDEX ix_type_mapping_modified_by ON type_mapping (modified_by); +CREATE INDEX ix_type_mapping_status ON type_mapping (status); +CREATE INDEX ix_type_mapping_title ON type_mapping (title); +CREATE INDEX ix_type_mapping_string_serialization ON type_mapping (string_serialization); +CREATE INDEX ix_type_mapping_rank ON type_mapping (rank); CREATE INDEX ix_type_mapping_deprecated ON type_mapping (deprecated); CREATE TABLE common_metadata_todos ( @@ -3138,8 +3138,8 @@ CREATE TABLE common_metadata_notes ( PRIMARY KEY (common_metadata_id, notes), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_notes_notes ON common_metadata_notes (notes); CREATE INDEX ix_common_metadata_notes_common_metadata_id ON common_metadata_notes (common_metadata_id); +CREATE INDEX ix_common_metadata_notes_notes ON common_metadata_notes (notes); CREATE TABLE common_metadata_comments ( common_metadata_id INTEGER, @@ -3147,8 +3147,8 @@ CREATE TABLE common_metadata_comments ( PRIMARY KEY (common_metadata_id, comments), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_comments_comments ON common_metadata_comments (comments); CREATE INDEX ix_common_metadata_comments_common_metadata_id ON common_metadata_comments (common_metadata_id); +CREATE INDEX ix_common_metadata_comments_comments ON common_metadata_comments (comments); CREATE TABLE common_metadata_see_also ( common_metadata_id INTEGER, @@ -3156,8 +3156,8 @@ CREATE TABLE common_metadata_see_also ( PRIMARY KEY (common_metadata_id, see_also), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_see_also_common_metadata_id ON common_metadata_see_also (common_metadata_id); CREATE INDEX ix_common_metadata_see_also_see_also ON common_metadata_see_also (see_also); +CREATE INDEX ix_common_metadata_see_also_common_metadata_id ON common_metadata_see_also (common_metadata_id); CREATE TABLE common_metadata_aliases ( common_metadata_id INTEGER, @@ -3165,8 +3165,8 @@ CREATE TABLE common_metadata_aliases ( PRIMARY KEY (common_metadata_id, aliases), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_aliases_aliases ON common_metadata_aliases (aliases); CREATE INDEX ix_common_metadata_aliases_common_metadata_id ON common_metadata_aliases (common_metadata_id); +CREATE INDEX ix_common_metadata_aliases_aliases ON common_metadata_aliases (aliases); CREATE TABLE common_metadata_mappings ( common_metadata_id INTEGER, @@ -3192,8 +3192,8 @@ CREATE TABLE common_metadata_close_mappings ( PRIMARY KEY (common_metadata_id, close_mappings), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_close_mappings_close_mappings ON common_metadata_close_mappings (close_mappings); CREATE INDEX ix_common_metadata_close_mappings_common_metadata_id ON common_metadata_close_mappings (common_metadata_id); +CREATE INDEX ix_common_metadata_close_mappings_close_mappings ON common_metadata_close_mappings (close_mappings); CREATE TABLE common_metadata_related_mappings ( common_metadata_id INTEGER, @@ -3219,8 +3219,8 @@ CREATE TABLE common_metadata_broad_mappings ( PRIMARY KEY (common_metadata_id, broad_mappings), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_broad_mappings_broad_mappings ON common_metadata_broad_mappings (broad_mappings); CREATE INDEX ix_common_metadata_broad_mappings_common_metadata_id ON common_metadata_broad_mappings (common_metadata_id); +CREATE INDEX ix_common_metadata_broad_mappings_broad_mappings ON common_metadata_broad_mappings (broad_mappings); CREATE TABLE common_metadata_contributors ( common_metadata_id INTEGER, @@ -3237,8 +3237,8 @@ CREATE TABLE common_metadata_category ( PRIMARY KEY (common_metadata_id, category), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_category_common_metadata_id ON common_metadata_category (common_metadata_id); CREATE INDEX ix_common_metadata_category_category ON common_metadata_category (category); +CREATE INDEX ix_common_metadata_category_common_metadata_id ON common_metadata_category (common_metadata_id); CREATE TABLE common_metadata_keyword ( common_metadata_id INTEGER, @@ -3246,8 +3246,8 @@ CREATE TABLE common_metadata_keyword ( PRIMARY KEY (common_metadata_id, keyword), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_keyword_keyword ON common_metadata_keyword (keyword); CREATE INDEX ix_common_metadata_keyword_common_metadata_id ON common_metadata_keyword (common_metadata_id); +CREATE INDEX ix_common_metadata_keyword_keyword ON common_metadata_keyword (keyword); CREATE TABLE element_id_prefixes ( element_name TEXT, @@ -3264,8 +3264,8 @@ CREATE TABLE element_implements ( PRIMARY KEY (element_name, implements), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_implements_element_name ON element_implements (element_name); CREATE INDEX ix_element_implements_implements ON element_implements (implements); +CREATE INDEX ix_element_implements_element_name ON element_implements (element_name); CREATE TABLE element_instantiates ( element_name TEXT, @@ -3273,8 +3273,8 @@ CREATE TABLE element_instantiates ( PRIMARY KEY (element_name, instantiates), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_instantiates_element_name ON element_instantiates (element_name); CREATE INDEX ix_element_instantiates_instantiates ON element_instantiates (instantiates); +CREATE INDEX ix_element_instantiates_element_name ON element_instantiates (element_name); CREATE TABLE element_todos ( element_name TEXT, @@ -3291,8 +3291,8 @@ CREATE TABLE element_notes ( PRIMARY KEY (element_name, notes), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_notes_notes ON element_notes (notes); CREATE INDEX ix_element_notes_element_name ON element_notes (element_name); +CREATE INDEX ix_element_notes_notes ON element_notes (notes); CREATE TABLE element_comments ( element_name TEXT, @@ -3300,8 +3300,8 @@ CREATE TABLE element_comments ( PRIMARY KEY (element_name, comments), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_comments_comments ON element_comments (comments); CREATE INDEX ix_element_comments_element_name ON element_comments (element_name); +CREATE INDEX ix_element_comments_comments ON element_comments (comments); CREATE TABLE element_see_also ( element_name TEXT, @@ -3327,8 +3327,8 @@ CREATE TABLE element_mappings ( PRIMARY KEY (element_name, mappings), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_mappings_element_name ON element_mappings (element_name); CREATE INDEX ix_element_mappings_mappings ON element_mappings (mappings); +CREATE INDEX ix_element_mappings_element_name ON element_mappings (element_name); CREATE TABLE element_exact_mappings ( element_name TEXT, @@ -3354,8 +3354,8 @@ CREATE TABLE element_related_mappings ( PRIMARY KEY (element_name, related_mappings), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_related_mappings_related_mappings ON element_related_mappings (related_mappings); CREATE INDEX ix_element_related_mappings_element_name ON element_related_mappings (element_name); +CREATE INDEX ix_element_related_mappings_related_mappings ON element_related_mappings (related_mappings); CREATE TABLE element_narrow_mappings ( element_name TEXT, @@ -3381,8 +3381,8 @@ CREATE TABLE element_contributors ( PRIMARY KEY (element_name, contributors), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_contributors_element_name ON element_contributors (element_name); CREATE INDEX ix_element_contributors_contributors ON element_contributors (contributors); +CREATE INDEX ix_element_contributors_element_name ON element_contributors (element_name); CREATE TABLE element_category ( element_name TEXT, @@ -3408,8 +3408,8 @@ CREATE TABLE schema_definition_imports ( PRIMARY KEY (schema_definition_name, imports), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_imports_schema_definition_name ON schema_definition_imports (schema_definition_name); CREATE INDEX ix_schema_definition_imports_imports ON schema_definition_imports (imports); +CREATE INDEX ix_schema_definition_imports_schema_definition_name ON schema_definition_imports (schema_definition_name); CREATE TABLE schema_definition_emit_prefixes ( schema_definition_name TEXT, @@ -3507,8 +3507,8 @@ CREATE TABLE schema_definition_mappings ( PRIMARY KEY (schema_definition_name, mappings), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_mappings_mappings ON schema_definition_mappings (mappings); CREATE INDEX ix_schema_definition_mappings_schema_definition_name ON schema_definition_mappings (schema_definition_name); +CREATE INDEX ix_schema_definition_mappings_mappings ON schema_definition_mappings (mappings); CREATE TABLE schema_definition_exact_mappings ( schema_definition_name TEXT, @@ -3598,8 +3598,8 @@ CREATE TABLE type_definition_equals_string_in ( PRIMARY KEY (type_definition_name, equals_string_in), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_equals_string_in_type_definition_name ON type_definition_equals_string_in (type_definition_name); CREATE INDEX ix_type_definition_equals_string_in_equals_string_in ON type_definition_equals_string_in (equals_string_in); +CREATE INDEX ix_type_definition_equals_string_in_type_definition_name ON type_definition_equals_string_in (type_definition_name); CREATE TABLE type_definition_id_prefixes ( type_definition_name TEXT, @@ -3661,8 +3661,8 @@ CREATE TABLE type_definition_see_also ( PRIMARY KEY (type_definition_name, see_also), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_see_also_type_definition_name ON type_definition_see_also (type_definition_name); CREATE INDEX ix_type_definition_see_also_see_also ON type_definition_see_also (see_also); +CREATE INDEX ix_type_definition_see_also_type_definition_name ON type_definition_see_also (type_definition_name); CREATE TABLE type_definition_aliases ( type_definition_name TEXT, @@ -3697,8 +3697,8 @@ CREATE TABLE type_definition_close_mappings ( PRIMARY KEY (type_definition_name, close_mappings), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_close_mappings_close_mappings ON type_definition_close_mappings (close_mappings); CREATE INDEX ix_type_definition_close_mappings_type_definition_name ON type_definition_close_mappings (type_definition_name); +CREATE INDEX ix_type_definition_close_mappings_close_mappings ON type_definition_close_mappings (close_mappings); CREATE TABLE type_definition_related_mappings ( type_definition_name TEXT, @@ -3706,8 +3706,8 @@ CREATE TABLE type_definition_related_mappings ( PRIMARY KEY (type_definition_name, related_mappings), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_related_mappings_type_definition_name ON type_definition_related_mappings (type_definition_name); CREATE INDEX ix_type_definition_related_mappings_related_mappings ON type_definition_related_mappings (related_mappings); +CREATE INDEX ix_type_definition_related_mappings_type_definition_name ON type_definition_related_mappings (type_definition_name); CREATE TABLE type_definition_narrow_mappings ( type_definition_name TEXT, @@ -3724,8 +3724,8 @@ CREATE TABLE type_definition_broad_mappings ( PRIMARY KEY (type_definition_name, broad_mappings), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_broad_mappings_broad_mappings ON type_definition_broad_mappings (broad_mappings); CREATE INDEX ix_type_definition_broad_mappings_type_definition_name ON type_definition_broad_mappings (type_definition_name); +CREATE INDEX ix_type_definition_broad_mappings_broad_mappings ON type_definition_broad_mappings (broad_mappings); CREATE TABLE type_definition_contributors ( type_definition_name TEXT, @@ -3733,8 +3733,8 @@ CREATE TABLE type_definition_contributors ( PRIMARY KEY (type_definition_name, contributors), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_contributors_type_definition_name ON type_definition_contributors (type_definition_name); CREATE INDEX ix_type_definition_contributors_contributors ON type_definition_contributors (contributors); +CREATE INDEX ix_type_definition_contributors_type_definition_name ON type_definition_contributors (type_definition_name); CREATE TABLE type_definition_category ( type_definition_name TEXT, @@ -3780,8 +3780,8 @@ CREATE TABLE definition_values_from ( PRIMARY KEY (definition_name, values_from), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_values_from_definition_name ON definition_values_from (definition_name); CREATE INDEX ix_definition_values_from_values_from ON definition_values_from (values_from); +CREATE INDEX ix_definition_values_from_definition_name ON definition_values_from (definition_name); CREATE TABLE definition_id_prefixes ( definition_name TEXT, @@ -3807,8 +3807,8 @@ CREATE TABLE definition_instantiates ( PRIMARY KEY (definition_name, instantiates), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_instantiates_instantiates ON definition_instantiates (instantiates); CREATE INDEX ix_definition_instantiates_definition_name ON definition_instantiates (definition_name); +CREATE INDEX ix_definition_instantiates_instantiates ON definition_instantiates (instantiates); CREATE TABLE definition_todos ( definition_name TEXT, @@ -3834,8 +3834,8 @@ CREATE TABLE definition_comments ( PRIMARY KEY (definition_name, comments), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_comments_definition_name ON definition_comments (definition_name); CREATE INDEX ix_definition_comments_comments ON definition_comments (comments); +CREATE INDEX ix_definition_comments_definition_name ON definition_comments (definition_name); CREATE TABLE definition_see_also ( definition_name TEXT, @@ -3852,8 +3852,8 @@ CREATE TABLE definition_aliases ( PRIMARY KEY (definition_name, aliases), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_aliases_aliases ON definition_aliases (aliases); CREATE INDEX ix_definition_aliases_definition_name ON definition_aliases (definition_name); +CREATE INDEX ix_definition_aliases_aliases ON definition_aliases (aliases); CREATE TABLE definition_mappings ( definition_name TEXT, @@ -3870,8 +3870,8 @@ CREATE TABLE definition_exact_mappings ( PRIMARY KEY (definition_name, exact_mappings), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_exact_mappings_exact_mappings ON definition_exact_mappings (exact_mappings); CREATE INDEX ix_definition_exact_mappings_definition_name ON definition_exact_mappings (definition_name); +CREATE INDEX ix_definition_exact_mappings_exact_mappings ON definition_exact_mappings (exact_mappings); CREATE TABLE definition_close_mappings ( definition_name TEXT, @@ -3888,8 +3888,8 @@ CREATE TABLE definition_related_mappings ( PRIMARY KEY (definition_name, related_mappings), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_related_mappings_definition_name ON definition_related_mappings (definition_name); CREATE INDEX ix_definition_related_mappings_related_mappings ON definition_related_mappings (related_mappings); +CREATE INDEX ix_definition_related_mappings_definition_name ON definition_related_mappings (definition_name); CREATE TABLE definition_narrow_mappings ( definition_name TEXT, @@ -3897,8 +3897,8 @@ CREATE TABLE definition_narrow_mappings ( PRIMARY KEY (definition_name, narrow_mappings), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_narrow_mappings_definition_name ON definition_narrow_mappings (definition_name); CREATE INDEX ix_definition_narrow_mappings_narrow_mappings ON definition_narrow_mappings (narrow_mappings); +CREATE INDEX ix_definition_narrow_mappings_definition_name ON definition_narrow_mappings (definition_name); CREATE TABLE definition_broad_mappings ( definition_name TEXT, @@ -3915,8 +3915,8 @@ CREATE TABLE definition_contributors ( PRIMARY KEY (definition_name, contributors), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_contributors_contributors ON definition_contributors (contributors); CREATE INDEX ix_definition_contributors_definition_name ON definition_contributors (definition_name); +CREATE INDEX ix_definition_contributors_contributors ON definition_contributors (contributors); CREATE TABLE definition_category ( definition_name TEXT, @@ -3924,8 +3924,8 @@ CREATE TABLE definition_category ( PRIMARY KEY (definition_name, category), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_category_category ON definition_category (category); CREATE INDEX ix_definition_category_definition_name ON definition_category (definition_name); +CREATE INDEX ix_definition_category_category ON definition_category (category); CREATE TABLE definition_keyword ( definition_name TEXT, @@ -4005,8 +4005,8 @@ CREATE TABLE anonymous_expression_mappings ( PRIMARY KEY (anonymous_expression_id, mappings), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_mappings_mappings ON anonymous_expression_mappings (mappings); CREATE INDEX ix_anonymous_expression_mappings_anonymous_expression_id ON anonymous_expression_mappings (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_mappings_mappings ON anonymous_expression_mappings (mappings); CREATE TABLE anonymous_expression_exact_mappings ( anonymous_expression_id INTEGER, @@ -4032,8 +4032,8 @@ CREATE TABLE anonymous_expression_related_mappings ( PRIMARY KEY (anonymous_expression_id, related_mappings), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_related_mappings_related_mappings ON anonymous_expression_related_mappings (related_mappings); CREATE INDEX ix_anonymous_expression_related_mappings_anonymous_expression_id ON anonymous_expression_related_mappings (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_related_mappings_related_mappings ON anonymous_expression_related_mappings (related_mappings); CREATE TABLE anonymous_expression_narrow_mappings ( anonymous_expression_id INTEGER, @@ -4087,8 +4087,8 @@ CREATE TABLE path_expression_none_of ( FOREIGN KEY(path_expression_id) REFERENCES path_expression (id), FOREIGN KEY(none_of_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_none_of_none_of_id ON path_expression_none_of (none_of_id); CREATE INDEX ix_path_expression_none_of_path_expression_id ON path_expression_none_of (path_expression_id); +CREATE INDEX ix_path_expression_none_of_none_of_id ON path_expression_none_of (none_of_id); CREATE TABLE path_expression_any_of ( path_expression_id INTEGER, @@ -4107,8 +4107,8 @@ CREATE TABLE path_expression_all_of ( FOREIGN KEY(path_expression_id) REFERENCES path_expression (id), FOREIGN KEY(all_of_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_all_of_all_of_id ON path_expression_all_of (all_of_id); CREATE INDEX ix_path_expression_all_of_path_expression_id ON path_expression_all_of (path_expression_id); +CREATE INDEX ix_path_expression_all_of_all_of_id ON path_expression_all_of (all_of_id); CREATE TABLE path_expression_exactly_one_of ( path_expression_id INTEGER, @@ -4135,8 +4135,8 @@ CREATE TABLE path_expression_notes ( PRIMARY KEY (path_expression_id, notes), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_notes_path_expression_id ON path_expression_notes (path_expression_id); CREATE INDEX ix_path_expression_notes_notes ON path_expression_notes (notes); +CREATE INDEX ix_path_expression_notes_path_expression_id ON path_expression_notes (path_expression_id); CREATE TABLE path_expression_comments ( path_expression_id INTEGER, @@ -4153,8 +4153,8 @@ CREATE TABLE path_expression_see_also ( PRIMARY KEY (path_expression_id, see_also), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_see_also_path_expression_id ON path_expression_see_also (path_expression_id); CREATE INDEX ix_path_expression_see_also_see_also ON path_expression_see_also (see_also); +CREATE INDEX ix_path_expression_see_also_path_expression_id ON path_expression_see_also (path_expression_id); CREATE TABLE path_expression_aliases ( path_expression_id INTEGER, @@ -4180,8 +4180,8 @@ CREATE TABLE path_expression_exact_mappings ( PRIMARY KEY (path_expression_id, exact_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_exact_mappings_path_expression_id ON path_expression_exact_mappings (path_expression_id); CREATE INDEX ix_path_expression_exact_mappings_exact_mappings ON path_expression_exact_mappings (exact_mappings); +CREATE INDEX ix_path_expression_exact_mappings_path_expression_id ON path_expression_exact_mappings (path_expression_id); CREATE TABLE path_expression_close_mappings ( path_expression_id INTEGER, @@ -4189,8 +4189,8 @@ CREATE TABLE path_expression_close_mappings ( PRIMARY KEY (path_expression_id, close_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_close_mappings_close_mappings ON path_expression_close_mappings (close_mappings); CREATE INDEX ix_path_expression_close_mappings_path_expression_id ON path_expression_close_mappings (path_expression_id); +CREATE INDEX ix_path_expression_close_mappings_close_mappings ON path_expression_close_mappings (close_mappings); CREATE TABLE path_expression_related_mappings ( path_expression_id INTEGER, @@ -4207,8 +4207,8 @@ CREATE TABLE path_expression_narrow_mappings ( PRIMARY KEY (path_expression_id, narrow_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_narrow_mappings_path_expression_id ON path_expression_narrow_mappings (path_expression_id); CREATE INDEX ix_path_expression_narrow_mappings_narrow_mappings ON path_expression_narrow_mappings (narrow_mappings); +CREATE INDEX ix_path_expression_narrow_mappings_path_expression_id ON path_expression_narrow_mappings (path_expression_id); CREATE TABLE path_expression_broad_mappings ( path_expression_id INTEGER, @@ -4216,8 +4216,8 @@ CREATE TABLE path_expression_broad_mappings ( PRIMARY KEY (path_expression_id, broad_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_broad_mappings_broad_mappings ON path_expression_broad_mappings (broad_mappings); CREATE INDEX ix_path_expression_broad_mappings_path_expression_id ON path_expression_broad_mappings (path_expression_id); +CREATE INDEX ix_path_expression_broad_mappings_broad_mappings ON path_expression_broad_mappings (broad_mappings); CREATE TABLE path_expression_contributors ( path_expression_id INTEGER, @@ -4234,8 +4234,8 @@ CREATE TABLE path_expression_category ( PRIMARY KEY (path_expression_id, category), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_category_category ON path_expression_category (category); CREATE INDEX ix_path_expression_category_path_expression_id ON path_expression_category (path_expression_id); +CREATE INDEX ix_path_expression_category_category ON path_expression_category (category); CREATE TABLE path_expression_keyword ( path_expression_id INTEGER, @@ -4252,8 +4252,8 @@ CREATE TABLE anonymous_slot_expression_equals_string_in ( PRIMARY KEY (anonymous_slot_expression_id, equals_string_in), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_equals_string_in_equals_string_in ON anonymous_slot_expression_equals_string_in (equals_string_in); CREATE INDEX ix_anonymous_slot_expression_equals_string_in_anonymous_slot_expression_id ON anonymous_slot_expression_equals_string_in (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_equals_string_in_equals_string_in ON anonymous_slot_expression_equals_string_in (equals_string_in); CREATE TABLE anonymous_slot_expression_none_of ( anonymous_slot_expression_id INTEGER, @@ -4262,8 +4262,8 @@ CREATE TABLE anonymous_slot_expression_none_of ( FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_none_of_anonymous_slot_expression_id ON anonymous_slot_expression_none_of (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_none_of_none_of_id ON anonymous_slot_expression_none_of (none_of_id); +CREATE INDEX ix_anonymous_slot_expression_none_of_anonymous_slot_expression_id ON anonymous_slot_expression_none_of (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_exactly_one_of ( anonymous_slot_expression_id INTEGER, @@ -4272,8 +4272,8 @@ CREATE TABLE anonymous_slot_expression_exactly_one_of ( FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_exactly_one_of_exactly_one_of_id ON anonymous_slot_expression_exactly_one_of (exactly_one_of_id); CREATE INDEX ix_anonymous_slot_expression_exactly_one_of_anonymous_slot_expression_id ON anonymous_slot_expression_exactly_one_of (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_exactly_one_of_exactly_one_of_id ON anonymous_slot_expression_exactly_one_of (exactly_one_of_id); CREATE TABLE anonymous_slot_expression_any_of ( anonymous_slot_expression_id INTEGER, @@ -4310,8 +4310,8 @@ CREATE TABLE anonymous_slot_expression_notes ( PRIMARY KEY (anonymous_slot_expression_id, notes), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_notes_notes ON anonymous_slot_expression_notes (notes); CREATE INDEX ix_anonymous_slot_expression_notes_anonymous_slot_expression_id ON anonymous_slot_expression_notes (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_notes_notes ON anonymous_slot_expression_notes (notes); CREATE TABLE anonymous_slot_expression_comments ( anonymous_slot_expression_id INTEGER, @@ -4328,8 +4328,8 @@ CREATE TABLE anonymous_slot_expression_see_also ( PRIMARY KEY (anonymous_slot_expression_id, see_also), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_see_also_anonymous_slot_expression_id ON anonymous_slot_expression_see_also (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_see_also_see_also ON anonymous_slot_expression_see_also (see_also); +CREATE INDEX ix_anonymous_slot_expression_see_also_anonymous_slot_expression_id ON anonymous_slot_expression_see_also (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_aliases ( anonymous_slot_expression_id INTEGER, @@ -4400,8 +4400,8 @@ CREATE TABLE anonymous_slot_expression_contributors ( PRIMARY KEY (anonymous_slot_expression_id, contributors), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_contributors_contributors ON anonymous_slot_expression_contributors (contributors); CREATE INDEX ix_anonymous_slot_expression_contributors_anonymous_slot_expression_id ON anonymous_slot_expression_contributors (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_contributors_contributors ON anonymous_slot_expression_contributors (contributors); CREATE TABLE anonymous_slot_expression_category ( anonymous_slot_expression_id INTEGER, @@ -4428,8 +4428,8 @@ CREATE TABLE slot_definition_domain_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(domain_of_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_slot_definition_domain_of_slot_definition_name ON slot_definition_domain_of (slot_definition_name); CREATE INDEX ix_slot_definition_domain_of_domain_of_name ON slot_definition_domain_of (domain_of_name); +CREATE INDEX ix_slot_definition_domain_of_slot_definition_name ON slot_definition_domain_of (slot_definition_name); CREATE TABLE slot_definition_disjoint_with ( slot_definition_name TEXT, @@ -4438,8 +4438,8 @@ CREATE TABLE slot_definition_disjoint_with ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(disjoint_with_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_disjoint_with_slot_definition_name ON slot_definition_disjoint_with (slot_definition_name); CREATE INDEX ix_slot_definition_disjoint_with_disjoint_with_name ON slot_definition_disjoint_with (disjoint_with_name); +CREATE INDEX ix_slot_definition_disjoint_with_slot_definition_name ON slot_definition_disjoint_with (slot_definition_name); CREATE TABLE slot_definition_union_of ( slot_definition_name TEXT, @@ -4448,8 +4448,8 @@ CREATE TABLE slot_definition_union_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(union_of_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_union_of_union_of_name ON slot_definition_union_of (union_of_name); CREATE INDEX ix_slot_definition_union_of_slot_definition_name ON slot_definition_union_of (slot_definition_name); +CREATE INDEX ix_slot_definition_union_of_union_of_name ON slot_definition_union_of (union_of_name); CREATE TABLE slot_definition_equals_string_in ( slot_definition_name TEXT, @@ -4457,8 +4457,8 @@ CREATE TABLE slot_definition_equals_string_in ( PRIMARY KEY (slot_definition_name, equals_string_in), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_equals_string_in_equals_string_in ON slot_definition_equals_string_in (equals_string_in); CREATE INDEX ix_slot_definition_equals_string_in_slot_definition_name ON slot_definition_equals_string_in (slot_definition_name); +CREATE INDEX ix_slot_definition_equals_string_in_equals_string_in ON slot_definition_equals_string_in (equals_string_in); CREATE TABLE slot_definition_none_of ( slot_definition_name TEXT, @@ -4467,8 +4467,8 @@ CREATE TABLE slot_definition_none_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(none_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_definition_none_of_none_of_id ON slot_definition_none_of (none_of_id); CREATE INDEX ix_slot_definition_none_of_slot_definition_name ON slot_definition_none_of (slot_definition_name); +CREATE INDEX ix_slot_definition_none_of_none_of_id ON slot_definition_none_of (none_of_id); CREATE TABLE slot_definition_exactly_one_of ( slot_definition_name TEXT, @@ -4477,8 +4477,8 @@ CREATE TABLE slot_definition_exactly_one_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_definition_exactly_one_of_slot_definition_name ON slot_definition_exactly_one_of (slot_definition_name); CREATE INDEX ix_slot_definition_exactly_one_of_exactly_one_of_id ON slot_definition_exactly_one_of (exactly_one_of_id); +CREATE INDEX ix_slot_definition_exactly_one_of_slot_definition_name ON slot_definition_exactly_one_of (slot_definition_name); CREATE TABLE slot_definition_any_of ( slot_definition_name TEXT, @@ -4487,8 +4487,8 @@ CREATE TABLE slot_definition_any_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(any_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_definition_any_of_slot_definition_name ON slot_definition_any_of (slot_definition_name); CREATE INDEX ix_slot_definition_any_of_any_of_id ON slot_definition_any_of (any_of_id); +CREATE INDEX ix_slot_definition_any_of_slot_definition_name ON slot_definition_any_of (slot_definition_name); CREATE TABLE slot_definition_all_of ( slot_definition_name TEXT, @@ -4497,8 +4497,8 @@ CREATE TABLE slot_definition_all_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(all_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_definition_all_of_all_of_id ON slot_definition_all_of (all_of_id); CREATE INDEX ix_slot_definition_all_of_slot_definition_name ON slot_definition_all_of (slot_definition_name); +CREATE INDEX ix_slot_definition_all_of_all_of_id ON slot_definition_all_of (all_of_id); CREATE TABLE slot_definition_mixins ( slot_definition_name TEXT, @@ -4507,8 +4507,8 @@ CREATE TABLE slot_definition_mixins ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(mixins_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_mixins_mixins_name ON slot_definition_mixins (mixins_name); CREATE INDEX ix_slot_definition_mixins_slot_definition_name ON slot_definition_mixins (slot_definition_name); +CREATE INDEX ix_slot_definition_mixins_mixins_name ON slot_definition_mixins (mixins_name); CREATE TABLE slot_definition_apply_to ( slot_definition_name TEXT, @@ -4526,8 +4526,8 @@ CREATE TABLE slot_definition_values_from ( PRIMARY KEY (slot_definition_name, values_from), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_values_from_values_from ON slot_definition_values_from (values_from); CREATE INDEX ix_slot_definition_values_from_slot_definition_name ON slot_definition_values_from (slot_definition_name); +CREATE INDEX ix_slot_definition_values_from_values_from ON slot_definition_values_from (values_from); CREATE TABLE slot_definition_id_prefixes ( slot_definition_name TEXT, @@ -4535,8 +4535,8 @@ CREATE TABLE slot_definition_id_prefixes ( PRIMARY KEY (slot_definition_name, id_prefixes), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_id_prefixes_slot_definition_name ON slot_definition_id_prefixes (slot_definition_name); CREATE INDEX ix_slot_definition_id_prefixes_id_prefixes ON slot_definition_id_prefixes (id_prefixes); +CREATE INDEX ix_slot_definition_id_prefixes_slot_definition_name ON slot_definition_id_prefixes (slot_definition_name); CREATE TABLE slot_definition_implements ( slot_definition_name TEXT, @@ -4544,8 +4544,8 @@ CREATE TABLE slot_definition_implements ( PRIMARY KEY (slot_definition_name, implements), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_implements_slot_definition_name ON slot_definition_implements (slot_definition_name); CREATE INDEX ix_slot_definition_implements_implements ON slot_definition_implements (implements); +CREATE INDEX ix_slot_definition_implements_slot_definition_name ON slot_definition_implements (slot_definition_name); CREATE TABLE slot_definition_instantiates ( slot_definition_name TEXT, @@ -4553,8 +4553,8 @@ CREATE TABLE slot_definition_instantiates ( PRIMARY KEY (slot_definition_name, instantiates), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_instantiates_slot_definition_name ON slot_definition_instantiates (slot_definition_name); CREATE INDEX ix_slot_definition_instantiates_instantiates ON slot_definition_instantiates (instantiates); +CREATE INDEX ix_slot_definition_instantiates_slot_definition_name ON slot_definition_instantiates (slot_definition_name); CREATE TABLE slot_definition_todos ( slot_definition_name TEXT, @@ -4562,8 +4562,8 @@ CREATE TABLE slot_definition_todos ( PRIMARY KEY (slot_definition_name, todos), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_todos_todos ON slot_definition_todos (todos); CREATE INDEX ix_slot_definition_todos_slot_definition_name ON slot_definition_todos (slot_definition_name); +CREATE INDEX ix_slot_definition_todos_todos ON slot_definition_todos (todos); CREATE TABLE slot_definition_notes ( slot_definition_name TEXT, @@ -4571,8 +4571,8 @@ CREATE TABLE slot_definition_notes ( PRIMARY KEY (slot_definition_name, notes), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_notes_slot_definition_name ON slot_definition_notes (slot_definition_name); CREATE INDEX ix_slot_definition_notes_notes ON slot_definition_notes (notes); +CREATE INDEX ix_slot_definition_notes_slot_definition_name ON slot_definition_notes (slot_definition_name); CREATE TABLE slot_definition_comments ( slot_definition_name TEXT, @@ -4580,8 +4580,8 @@ CREATE TABLE slot_definition_comments ( PRIMARY KEY (slot_definition_name, comments), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_comments_comments ON slot_definition_comments (comments); CREATE INDEX ix_slot_definition_comments_slot_definition_name ON slot_definition_comments (slot_definition_name); +CREATE INDEX ix_slot_definition_comments_comments ON slot_definition_comments (comments); CREATE TABLE slot_definition_see_also ( slot_definition_name TEXT, @@ -4589,8 +4589,8 @@ CREATE TABLE slot_definition_see_also ( PRIMARY KEY (slot_definition_name, see_also), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_see_also_see_also ON slot_definition_see_also (see_also); CREATE INDEX ix_slot_definition_see_also_slot_definition_name ON slot_definition_see_also (slot_definition_name); +CREATE INDEX ix_slot_definition_see_also_see_also ON slot_definition_see_also (see_also); CREATE TABLE slot_definition_aliases ( slot_definition_name TEXT, @@ -4607,8 +4607,8 @@ CREATE TABLE slot_definition_mappings ( PRIMARY KEY (slot_definition_name, mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_mappings_slot_definition_name ON slot_definition_mappings (slot_definition_name); CREATE INDEX ix_slot_definition_mappings_mappings ON slot_definition_mappings (mappings); +CREATE INDEX ix_slot_definition_mappings_slot_definition_name ON slot_definition_mappings (slot_definition_name); CREATE TABLE slot_definition_exact_mappings ( slot_definition_name TEXT, @@ -4616,8 +4616,8 @@ CREATE TABLE slot_definition_exact_mappings ( PRIMARY KEY (slot_definition_name, exact_mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_exact_mappings_exact_mappings ON slot_definition_exact_mappings (exact_mappings); CREATE INDEX ix_slot_definition_exact_mappings_slot_definition_name ON slot_definition_exact_mappings (slot_definition_name); +CREATE INDEX ix_slot_definition_exact_mappings_exact_mappings ON slot_definition_exact_mappings (exact_mappings); CREATE TABLE slot_definition_close_mappings ( slot_definition_name TEXT, @@ -4643,8 +4643,8 @@ CREATE TABLE slot_definition_narrow_mappings ( PRIMARY KEY (slot_definition_name, narrow_mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_narrow_mappings_narrow_mappings ON slot_definition_narrow_mappings (narrow_mappings); CREATE INDEX ix_slot_definition_narrow_mappings_slot_definition_name ON slot_definition_narrow_mappings (slot_definition_name); +CREATE INDEX ix_slot_definition_narrow_mappings_narrow_mappings ON slot_definition_narrow_mappings (narrow_mappings); CREATE TABLE slot_definition_broad_mappings ( slot_definition_name TEXT, @@ -4670,8 +4670,8 @@ CREATE TABLE slot_definition_category ( PRIMARY KEY (slot_definition_name, category), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_category_category ON slot_definition_category (category); CREATE INDEX ix_slot_definition_category_slot_definition_name ON slot_definition_category (slot_definition_name); +CREATE INDEX ix_slot_definition_category_category ON slot_definition_category (category); CREATE TABLE slot_definition_keyword ( slot_definition_name TEXT, @@ -4689,8 +4689,8 @@ CREATE TABLE class_expression_any_of ( FOREIGN KEY(class_expression_id) REFERENCES class_expression (id), FOREIGN KEY(any_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_expression_any_of_class_expression_id ON class_expression_any_of (class_expression_id); CREATE INDEX ix_class_expression_any_of_any_of_id ON class_expression_any_of (any_of_id); +CREATE INDEX ix_class_expression_any_of_class_expression_id ON class_expression_any_of (class_expression_id); CREATE TABLE class_expression_exactly_one_of ( class_expression_id INTEGER, @@ -4699,8 +4699,8 @@ CREATE TABLE class_expression_exactly_one_of ( FOREIGN KEY(class_expression_id) REFERENCES class_expression (id), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_expression_exactly_one_of_class_expression_id ON class_expression_exactly_one_of (class_expression_id); CREATE INDEX ix_class_expression_exactly_one_of_exactly_one_of_id ON class_expression_exactly_one_of (exactly_one_of_id); +CREATE INDEX ix_class_expression_exactly_one_of_class_expression_id ON class_expression_exactly_one_of (class_expression_id); CREATE TABLE class_expression_none_of ( class_expression_id INTEGER, @@ -4709,8 +4709,8 @@ CREATE TABLE class_expression_none_of ( FOREIGN KEY(class_expression_id) REFERENCES class_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_expression_none_of_none_of_id ON class_expression_none_of (none_of_id); CREATE INDEX ix_class_expression_none_of_class_expression_id ON class_expression_none_of (class_expression_id); +CREATE INDEX ix_class_expression_none_of_none_of_id ON class_expression_none_of (none_of_id); CREATE TABLE class_expression_all_of ( class_expression_id INTEGER, @@ -4719,8 +4719,8 @@ CREATE TABLE class_expression_all_of ( FOREIGN KEY(class_expression_id) REFERENCES class_expression (id), FOREIGN KEY(all_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_expression_all_of_all_of_id ON class_expression_all_of (all_of_id); CREATE INDEX ix_class_expression_all_of_class_expression_id ON class_expression_all_of (class_expression_id); +CREATE INDEX ix_class_expression_all_of_all_of_id ON class_expression_all_of (all_of_id); CREATE TABLE anonymous_class_expression_any_of ( anonymous_class_expression_id INTEGER, @@ -4749,8 +4749,8 @@ CREATE TABLE anonymous_class_expression_none_of ( FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_none_of_anonymous_class_expression_id ON anonymous_class_expression_none_of (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_none_of_none_of_id ON anonymous_class_expression_none_of (none_of_id); +CREATE INDEX ix_anonymous_class_expression_none_of_anonymous_class_expression_id ON anonymous_class_expression_none_of (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_all_of ( anonymous_class_expression_id INTEGER, @@ -4759,8 +4759,8 @@ CREATE TABLE anonymous_class_expression_all_of ( FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id), FOREIGN KEY(all_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_all_of_all_of_id ON anonymous_class_expression_all_of (all_of_id); CREATE INDEX ix_anonymous_class_expression_all_of_anonymous_class_expression_id ON anonymous_class_expression_all_of (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_all_of_all_of_id ON anonymous_class_expression_all_of (all_of_id); CREATE TABLE anonymous_class_expression_todos ( anonymous_class_expression_id INTEGER, @@ -4786,8 +4786,8 @@ CREATE TABLE anonymous_class_expression_comments ( PRIMARY KEY (anonymous_class_expression_id, comments), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_comments_comments ON anonymous_class_expression_comments (comments); CREATE INDEX ix_anonymous_class_expression_comments_anonymous_class_expression_id ON anonymous_class_expression_comments (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_comments_comments ON anonymous_class_expression_comments (comments); CREATE TABLE anonymous_class_expression_see_also ( anonymous_class_expression_id INTEGER, @@ -4795,8 +4795,8 @@ CREATE TABLE anonymous_class_expression_see_also ( PRIMARY KEY (anonymous_class_expression_id, see_also), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_see_also_see_also ON anonymous_class_expression_see_also (see_also); CREATE INDEX ix_anonymous_class_expression_see_also_anonymous_class_expression_id ON anonymous_class_expression_see_also (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_see_also_see_also ON anonymous_class_expression_see_also (see_also); CREATE TABLE anonymous_class_expression_aliases ( anonymous_class_expression_id INTEGER, @@ -4804,8 +4804,8 @@ CREATE TABLE anonymous_class_expression_aliases ( PRIMARY KEY (anonymous_class_expression_id, aliases), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_aliases_anonymous_class_expression_id ON anonymous_class_expression_aliases (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_aliases_aliases ON anonymous_class_expression_aliases (aliases); +CREATE INDEX ix_anonymous_class_expression_aliases_anonymous_class_expression_id ON anonymous_class_expression_aliases (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_mappings ( anonymous_class_expression_id INTEGER, @@ -4813,8 +4813,8 @@ CREATE TABLE anonymous_class_expression_mappings ( PRIMARY KEY (anonymous_class_expression_id, mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_mappings_anonymous_class_expression_id ON anonymous_class_expression_mappings (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_mappings_mappings ON anonymous_class_expression_mappings (mappings); +CREATE INDEX ix_anonymous_class_expression_mappings_anonymous_class_expression_id ON anonymous_class_expression_mappings (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_exact_mappings ( anonymous_class_expression_id INTEGER, @@ -4822,8 +4822,8 @@ CREATE TABLE anonymous_class_expression_exact_mappings ( PRIMARY KEY (anonymous_class_expression_id, exact_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_exact_mappings_anonymous_class_expression_id ON anonymous_class_expression_exact_mappings (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_exact_mappings_exact_mappings ON anonymous_class_expression_exact_mappings (exact_mappings); +CREATE INDEX ix_anonymous_class_expression_exact_mappings_anonymous_class_expression_id ON anonymous_class_expression_exact_mappings (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_close_mappings ( anonymous_class_expression_id INTEGER, @@ -4831,8 +4831,8 @@ CREATE TABLE anonymous_class_expression_close_mappings ( PRIMARY KEY (anonymous_class_expression_id, close_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_close_mappings_close_mappings ON anonymous_class_expression_close_mappings (close_mappings); CREATE INDEX ix_anonymous_class_expression_close_mappings_anonymous_class_expression_id ON anonymous_class_expression_close_mappings (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_close_mappings_close_mappings ON anonymous_class_expression_close_mappings (close_mappings); CREATE TABLE anonymous_class_expression_related_mappings ( anonymous_class_expression_id INTEGER, @@ -4849,8 +4849,8 @@ CREATE TABLE anonymous_class_expression_narrow_mappings ( PRIMARY KEY (anonymous_class_expression_id, narrow_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_narrow_mappings_anonymous_class_expression_id ON anonymous_class_expression_narrow_mappings (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_narrow_mappings_narrow_mappings ON anonymous_class_expression_narrow_mappings (narrow_mappings); +CREATE INDEX ix_anonymous_class_expression_narrow_mappings_anonymous_class_expression_id ON anonymous_class_expression_narrow_mappings (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_broad_mappings ( anonymous_class_expression_id INTEGER, @@ -4858,8 +4858,8 @@ CREATE TABLE anonymous_class_expression_broad_mappings ( PRIMARY KEY (anonymous_class_expression_id, broad_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_broad_mappings_broad_mappings ON anonymous_class_expression_broad_mappings (broad_mappings); CREATE INDEX ix_anonymous_class_expression_broad_mappings_anonymous_class_expression_id ON anonymous_class_expression_broad_mappings (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_broad_mappings_broad_mappings ON anonymous_class_expression_broad_mappings (broad_mappings); CREATE TABLE anonymous_class_expression_contributors ( anonymous_class_expression_id INTEGER, @@ -4876,8 +4876,8 @@ CREATE TABLE anonymous_class_expression_category ( PRIMARY KEY (anonymous_class_expression_id, category), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_category_anonymous_class_expression_id ON anonymous_class_expression_category (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_category_category ON anonymous_class_expression_category (category); +CREATE INDEX ix_anonymous_class_expression_category_anonymous_class_expression_id ON anonymous_class_expression_category (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_keyword ( anonymous_class_expression_id INTEGER, @@ -4895,8 +4895,8 @@ CREATE TABLE class_definition_slots ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(slots_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_class_definition_slots_class_definition_name ON class_definition_slots (class_definition_name); CREATE INDEX ix_class_definition_slots_slots_name ON class_definition_slots (slots_name); +CREATE INDEX ix_class_definition_slots_class_definition_name ON class_definition_slots (class_definition_name); CREATE TABLE class_definition_union_of ( class_definition_name TEXT, @@ -4905,8 +4905,8 @@ CREATE TABLE class_definition_union_of ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(union_of_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_union_of_union_of_name ON class_definition_union_of (union_of_name); CREATE INDEX ix_class_definition_union_of_class_definition_name ON class_definition_union_of (class_definition_name); +CREATE INDEX ix_class_definition_union_of_union_of_name ON class_definition_union_of (union_of_name); CREATE TABLE class_definition_defining_slots ( class_definition_name TEXT, @@ -4915,8 +4915,8 @@ CREATE TABLE class_definition_defining_slots ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(defining_slots_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_class_definition_defining_slots_defining_slots_name ON class_definition_defining_slots (defining_slots_name); CREATE INDEX ix_class_definition_defining_slots_class_definition_name ON class_definition_defining_slots (class_definition_name); +CREATE INDEX ix_class_definition_defining_slots_defining_slots_name ON class_definition_defining_slots (defining_slots_name); CREATE TABLE class_definition_disjoint_with ( class_definition_name TEXT, @@ -4925,8 +4925,8 @@ CREATE TABLE class_definition_disjoint_with ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(disjoint_with_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_disjoint_with_class_definition_name ON class_definition_disjoint_with (class_definition_name); CREATE INDEX ix_class_definition_disjoint_with_disjoint_with_name ON class_definition_disjoint_with (disjoint_with_name); +CREATE INDEX ix_class_definition_disjoint_with_class_definition_name ON class_definition_disjoint_with (class_definition_name); CREATE TABLE class_definition_any_of ( class_definition_name TEXT, @@ -4945,8 +4945,8 @@ CREATE TABLE class_definition_exactly_one_of ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_definition_exactly_one_of_class_definition_name ON class_definition_exactly_one_of (class_definition_name); CREATE INDEX ix_class_definition_exactly_one_of_exactly_one_of_id ON class_definition_exactly_one_of (exactly_one_of_id); +CREATE INDEX ix_class_definition_exactly_one_of_class_definition_name ON class_definition_exactly_one_of (class_definition_name); CREATE TABLE class_definition_none_of ( class_definition_name TEXT, @@ -4965,8 +4965,8 @@ CREATE TABLE class_definition_all_of ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(all_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_definition_all_of_class_definition_name ON class_definition_all_of (class_definition_name); CREATE INDEX ix_class_definition_all_of_all_of_id ON class_definition_all_of (all_of_id); +CREATE INDEX ix_class_definition_all_of_class_definition_name ON class_definition_all_of (class_definition_name); CREATE TABLE class_definition_mixins ( class_definition_name TEXT, @@ -4975,8 +4975,8 @@ CREATE TABLE class_definition_mixins ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(mixins_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_mixins_mixins_name ON class_definition_mixins (mixins_name); CREATE INDEX ix_class_definition_mixins_class_definition_name ON class_definition_mixins (class_definition_name); +CREATE INDEX ix_class_definition_mixins_mixins_name ON class_definition_mixins (mixins_name); CREATE TABLE class_definition_apply_to ( class_definition_name TEXT, @@ -4985,8 +4985,8 @@ CREATE TABLE class_definition_apply_to ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(apply_to_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_apply_to_apply_to_name ON class_definition_apply_to (apply_to_name); CREATE INDEX ix_class_definition_apply_to_class_definition_name ON class_definition_apply_to (class_definition_name); +CREATE INDEX ix_class_definition_apply_to_apply_to_name ON class_definition_apply_to (apply_to_name); CREATE TABLE class_definition_values_from ( class_definition_name TEXT, @@ -4994,8 +4994,8 @@ CREATE TABLE class_definition_values_from ( PRIMARY KEY (class_definition_name, values_from), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_values_from_values_from ON class_definition_values_from (values_from); CREATE INDEX ix_class_definition_values_from_class_definition_name ON class_definition_values_from (class_definition_name); +CREATE INDEX ix_class_definition_values_from_values_from ON class_definition_values_from (values_from); CREATE TABLE class_definition_id_prefixes ( class_definition_name TEXT, @@ -5003,8 +5003,8 @@ CREATE TABLE class_definition_id_prefixes ( PRIMARY KEY (class_definition_name, id_prefixes), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_id_prefixes_class_definition_name ON class_definition_id_prefixes (class_definition_name); CREATE INDEX ix_class_definition_id_prefixes_id_prefixes ON class_definition_id_prefixes (id_prefixes); +CREATE INDEX ix_class_definition_id_prefixes_class_definition_name ON class_definition_id_prefixes (class_definition_name); CREATE TABLE class_definition_implements ( class_definition_name TEXT, @@ -5012,8 +5012,8 @@ CREATE TABLE class_definition_implements ( PRIMARY KEY (class_definition_name, implements), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_implements_class_definition_name ON class_definition_implements (class_definition_name); CREATE INDEX ix_class_definition_implements_implements ON class_definition_implements (implements); +CREATE INDEX ix_class_definition_implements_class_definition_name ON class_definition_implements (class_definition_name); CREATE TABLE class_definition_instantiates ( class_definition_name TEXT, @@ -5021,8 +5021,8 @@ CREATE TABLE class_definition_instantiates ( PRIMARY KEY (class_definition_name, instantiates), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_instantiates_instantiates ON class_definition_instantiates (instantiates); CREATE INDEX ix_class_definition_instantiates_class_definition_name ON class_definition_instantiates (class_definition_name); +CREATE INDEX ix_class_definition_instantiates_instantiates ON class_definition_instantiates (instantiates); CREATE TABLE class_definition_todos ( class_definition_name TEXT, @@ -5030,8 +5030,8 @@ CREATE TABLE class_definition_todos ( PRIMARY KEY (class_definition_name, todos), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_todos_class_definition_name ON class_definition_todos (class_definition_name); CREATE INDEX ix_class_definition_todos_todos ON class_definition_todos (todos); +CREATE INDEX ix_class_definition_todos_class_definition_name ON class_definition_todos (class_definition_name); CREATE TABLE class_definition_notes ( class_definition_name TEXT, @@ -5048,8 +5048,8 @@ CREATE TABLE class_definition_comments ( PRIMARY KEY (class_definition_name, comments), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_comments_comments ON class_definition_comments (comments); CREATE INDEX ix_class_definition_comments_class_definition_name ON class_definition_comments (class_definition_name); +CREATE INDEX ix_class_definition_comments_comments ON class_definition_comments (comments); CREATE TABLE class_definition_see_also ( class_definition_name TEXT, @@ -5057,8 +5057,8 @@ CREATE TABLE class_definition_see_also ( PRIMARY KEY (class_definition_name, see_also), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_see_also_class_definition_name ON class_definition_see_also (class_definition_name); CREATE INDEX ix_class_definition_see_also_see_also ON class_definition_see_also (see_also); +CREATE INDEX ix_class_definition_see_also_class_definition_name ON class_definition_see_also (class_definition_name); CREATE TABLE class_definition_aliases ( class_definition_name TEXT, @@ -5066,8 +5066,8 @@ CREATE TABLE class_definition_aliases ( PRIMARY KEY (class_definition_name, aliases), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_aliases_aliases ON class_definition_aliases (aliases); CREATE INDEX ix_class_definition_aliases_class_definition_name ON class_definition_aliases (class_definition_name); +CREATE INDEX ix_class_definition_aliases_aliases ON class_definition_aliases (aliases); CREATE TABLE class_definition_mappings ( class_definition_name TEXT, @@ -5075,8 +5075,8 @@ CREATE TABLE class_definition_mappings ( PRIMARY KEY (class_definition_name, mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_mappings_class_definition_name ON class_definition_mappings (class_definition_name); CREATE INDEX ix_class_definition_mappings_mappings ON class_definition_mappings (mappings); +CREATE INDEX ix_class_definition_mappings_class_definition_name ON class_definition_mappings (class_definition_name); CREATE TABLE class_definition_exact_mappings ( class_definition_name TEXT, @@ -5084,8 +5084,8 @@ CREATE TABLE class_definition_exact_mappings ( PRIMARY KEY (class_definition_name, exact_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_exact_mappings_class_definition_name ON class_definition_exact_mappings (class_definition_name); CREATE INDEX ix_class_definition_exact_mappings_exact_mappings ON class_definition_exact_mappings (exact_mappings); +CREATE INDEX ix_class_definition_exact_mappings_class_definition_name ON class_definition_exact_mappings (class_definition_name); CREATE TABLE class_definition_close_mappings ( class_definition_name TEXT, @@ -5093,8 +5093,8 @@ CREATE TABLE class_definition_close_mappings ( PRIMARY KEY (class_definition_name, close_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_close_mappings_class_definition_name ON class_definition_close_mappings (class_definition_name); CREATE INDEX ix_class_definition_close_mappings_close_mappings ON class_definition_close_mappings (close_mappings); +CREATE INDEX ix_class_definition_close_mappings_class_definition_name ON class_definition_close_mappings (class_definition_name); CREATE TABLE class_definition_related_mappings ( class_definition_name TEXT, @@ -5102,8 +5102,8 @@ CREATE TABLE class_definition_related_mappings ( PRIMARY KEY (class_definition_name, related_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_related_mappings_class_definition_name ON class_definition_related_mappings (class_definition_name); CREATE INDEX ix_class_definition_related_mappings_related_mappings ON class_definition_related_mappings (related_mappings); +CREATE INDEX ix_class_definition_related_mappings_class_definition_name ON class_definition_related_mappings (class_definition_name); CREATE TABLE class_definition_narrow_mappings ( class_definition_name TEXT, @@ -5111,8 +5111,8 @@ CREATE TABLE class_definition_narrow_mappings ( PRIMARY KEY (class_definition_name, narrow_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_narrow_mappings_narrow_mappings ON class_definition_narrow_mappings (narrow_mappings); CREATE INDEX ix_class_definition_narrow_mappings_class_definition_name ON class_definition_narrow_mappings (class_definition_name); +CREATE INDEX ix_class_definition_narrow_mappings_narrow_mappings ON class_definition_narrow_mappings (narrow_mappings); CREATE TABLE class_definition_broad_mappings ( class_definition_name TEXT, @@ -5120,8 +5120,8 @@ CREATE TABLE class_definition_broad_mappings ( PRIMARY KEY (class_definition_name, broad_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_broad_mappings_broad_mappings ON class_definition_broad_mappings (broad_mappings); CREATE INDEX ix_class_definition_broad_mappings_class_definition_name ON class_definition_broad_mappings (class_definition_name); +CREATE INDEX ix_class_definition_broad_mappings_broad_mappings ON class_definition_broad_mappings (broad_mappings); CREATE TABLE class_definition_contributors ( class_definition_name TEXT, @@ -5129,8 +5129,8 @@ CREATE TABLE class_definition_contributors ( PRIMARY KEY (class_definition_name, contributors), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_contributors_contributors ON class_definition_contributors (contributors); CREATE INDEX ix_class_definition_contributors_class_definition_name ON class_definition_contributors (class_definition_name); +CREATE INDEX ix_class_definition_contributors_contributors ON class_definition_contributors (contributors); CREATE TABLE class_definition_category ( class_definition_name TEXT, @@ -5147,8 +5147,8 @@ CREATE TABLE class_definition_keyword ( PRIMARY KEY (class_definition_name, keyword), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_keyword_class_definition_name ON class_definition_keyword (class_definition_name); CREATE INDEX ix_class_definition_keyword_keyword ON class_definition_keyword (keyword); +CREATE INDEX ix_class_definition_keyword_class_definition_name ON class_definition_keyword (class_definition_name); CREATE TABLE dimension_expression_todos ( dimension_expression_id INTEGER, @@ -5228,8 +5228,8 @@ CREATE TABLE dimension_expression_related_mappings ( PRIMARY KEY (dimension_expression_id, related_mappings), FOREIGN KEY(dimension_expression_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_dimension_expression_related_mappings_related_mappings ON dimension_expression_related_mappings (related_mappings); CREATE INDEX ix_dimension_expression_related_mappings_dimension_expression_id ON dimension_expression_related_mappings (dimension_expression_id); +CREATE INDEX ix_dimension_expression_related_mappings_related_mappings ON dimension_expression_related_mappings (related_mappings); CREATE TABLE dimension_expression_narrow_mappings ( dimension_expression_id INTEGER, @@ -5408,8 +5408,8 @@ CREATE TABLE import_expression_todos ( PRIMARY KEY (import_expression_id, todos), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_todos_todos ON import_expression_todos (todos); CREATE INDEX ix_import_expression_todos_import_expression_id ON import_expression_todos (import_expression_id); +CREATE INDEX ix_import_expression_todos_todos ON import_expression_todos (todos); CREATE TABLE import_expression_notes ( import_expression_id INTEGER, @@ -5426,8 +5426,8 @@ CREATE TABLE import_expression_comments ( PRIMARY KEY (import_expression_id, comments), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_comments_import_expression_id ON import_expression_comments (import_expression_id); CREATE INDEX ix_import_expression_comments_comments ON import_expression_comments (comments); +CREATE INDEX ix_import_expression_comments_import_expression_id ON import_expression_comments (import_expression_id); CREATE TABLE import_expression_see_also ( import_expression_id INTEGER, @@ -5507,8 +5507,8 @@ CREATE TABLE import_expression_contributors ( PRIMARY KEY (import_expression_id, contributors), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_contributors_contributors ON import_expression_contributors (contributors); CREATE INDEX ix_import_expression_contributors_import_expression_id ON import_expression_contributors (import_expression_id); +CREATE INDEX ix_import_expression_contributors_contributors ON import_expression_contributors (contributors); CREATE TABLE import_expression_category ( import_expression_id INTEGER, @@ -5534,8 +5534,8 @@ CREATE TABLE "UnitOfMeasure_exact_mappings" ( PRIMARY KEY ("UnitOfMeasure_id", exact_mappings), FOREIGN KEY("UnitOfMeasure_id") REFERENCES "UnitOfMeasure" (id) ); -CREATE INDEX "ix_UnitOfMeasure_exact_mappings_exact_mappings" ON "UnitOfMeasure_exact_mappings" (exact_mappings); CREATE INDEX "ix_UnitOfMeasure_exact_mappings_UnitOfMeasure_id" ON "UnitOfMeasure_exact_mappings" ("UnitOfMeasure_id"); +CREATE INDEX "ix_UnitOfMeasure_exact_mappings_exact_mappings" ON "UnitOfMeasure_exact_mappings" (exact_mappings); CREATE TABLE slot_expression ( id INTEGER NOT NULL, @@ -5606,24 +5606,24 @@ CREATE TABLE local_name ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_local_name_slot_definition_name ON local_name (slot_definition_name); CREATE INDEX ix_local_name_type_definition_name ON local_name (type_definition_name); -CREATE INDEX ix_local_name_definition_name ON local_name (definition_name); -CREATE INDEX local_name_type_definition_name_local_name_source_idx ON local_name (type_definition_name, local_name_source); -CREATE INDEX local_name_subset_definition_name_local_name_source_idx ON local_name (subset_definition_name, local_name_source); +CREATE INDEX local_name_definition_name_local_name_source_idx ON local_name (definition_name, local_name_source); CREATE INDEX ix_local_name_element_name ON local_name (element_name); CREATE INDEX ix_local_name_local_name_value ON local_name (local_name_value); -CREATE INDEX local_name_definition_name_local_name_source_idx ON local_name (definition_name, local_name_source); -CREATE INDEX local_name_enum_definition_name_local_name_source_idx ON local_name (enum_definition_name, local_name_source); -CREATE INDEX ix_local_name_class_definition_name ON local_name (class_definition_name); +CREATE INDEX ix_local_name_slot_definition_name ON local_name (slot_definition_name); CREATE INDEX local_name_element_name_local_name_source_idx ON local_name (element_name, local_name_source); -CREATE INDEX local_name_class_definition_name_local_name_source_idx ON local_name (class_definition_name, local_name_source); +CREATE INDEX ix_local_name_class_definition_name ON local_name (class_definition_name); +CREATE INDEX local_name_enum_definition_name_local_name_source_idx ON local_name (enum_definition_name, local_name_source); CREATE INDEX ix_local_name_schema_definition_name ON local_name (schema_definition_name); -CREATE INDEX local_name_slot_definition_name_local_name_source_idx ON local_name (slot_definition_name, local_name_source); -CREATE INDEX ix_local_name_subset_definition_name ON local_name (subset_definition_name); CREATE INDEX ix_local_name_enum_definition_name ON local_name (enum_definition_name); CREATE INDEX local_name_schema_definition_name_local_name_source_idx ON local_name (schema_definition_name, local_name_source); +CREATE INDEX local_name_type_definition_name_local_name_source_idx ON local_name (type_definition_name, local_name_source); +CREATE INDEX ix_local_name_subset_definition_name ON local_name (subset_definition_name); +CREATE INDEX local_name_subset_definition_name_local_name_source_idx ON local_name (subset_definition_name, local_name_source); +CREATE INDEX local_name_slot_definition_name_local_name_source_idx ON local_name (slot_definition_name, local_name_source); CREATE INDEX ix_local_name_local_name_source ON local_name (local_name_source); +CREATE INDEX local_name_class_definition_name_local_name_source_idx ON local_name (class_definition_name, local_name_source); +CREATE INDEX ix_local_name_definition_name ON local_name (definition_name); CREATE TABLE permissible_value ( text TEXT NOT NULL, @@ -5674,8 +5674,8 @@ CREATE TABLE element_in_subset ( FOREIGN KEY(element_name) REFERENCES element (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_element_in_subset_element_name ON element_in_subset (element_name); CREATE INDEX ix_element_in_subset_in_subset_name ON element_in_subset (in_subset_name); +CREATE INDEX ix_element_in_subset_element_name ON element_in_subset (element_name); CREATE TABLE schema_definition_in_subset ( schema_definition_name TEXT, @@ -5693,8 +5693,8 @@ CREATE TABLE type_expression_equals_string_in ( PRIMARY KEY (type_expression_id, equals_string_in), FOREIGN KEY(type_expression_id) REFERENCES type_expression (id) ); -CREATE INDEX ix_type_expression_equals_string_in_equals_string_in ON type_expression_equals_string_in (equals_string_in); CREATE INDEX ix_type_expression_equals_string_in_type_expression_id ON type_expression_equals_string_in (type_expression_id); +CREATE INDEX ix_type_expression_equals_string_in_equals_string_in ON type_expression_equals_string_in (equals_string_in); CREATE TABLE type_expression_none_of ( type_expression_id INTEGER, @@ -5723,8 +5723,8 @@ CREATE TABLE type_expression_any_of ( FOREIGN KEY(type_expression_id) REFERENCES type_expression (id), FOREIGN KEY(any_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_type_expression_any_of_any_of_id ON type_expression_any_of (any_of_id); CREATE INDEX ix_type_expression_any_of_type_expression_id ON type_expression_any_of (type_expression_id); +CREATE INDEX ix_type_expression_any_of_any_of_id ON type_expression_any_of (any_of_id); CREATE TABLE type_expression_all_of ( type_expression_id INTEGER, @@ -5752,8 +5752,8 @@ CREATE TABLE anonymous_type_expression_none_of ( FOREIGN KEY(anonymous_type_expression_id) REFERENCES anonymous_type_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_anonymous_type_expression_none_of_anonymous_type_expression_id ON anonymous_type_expression_none_of (anonymous_type_expression_id); CREATE INDEX ix_anonymous_type_expression_none_of_none_of_id ON anonymous_type_expression_none_of (none_of_id); +CREATE INDEX ix_anonymous_type_expression_none_of_anonymous_type_expression_id ON anonymous_type_expression_none_of (anonymous_type_expression_id); CREATE TABLE anonymous_type_expression_exactly_one_of ( anonymous_type_expression_id INTEGER, @@ -5762,8 +5762,8 @@ CREATE TABLE anonymous_type_expression_exactly_one_of ( FOREIGN KEY(anonymous_type_expression_id) REFERENCES anonymous_type_expression (id), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_anonymous_type_expression_exactly_one_of_exactly_one_of_id ON anonymous_type_expression_exactly_one_of (exactly_one_of_id); CREATE INDEX ix_anonymous_type_expression_exactly_one_of_anonymous_type_expression_id ON anonymous_type_expression_exactly_one_of (anonymous_type_expression_id); +CREATE INDEX ix_anonymous_type_expression_exactly_one_of_exactly_one_of_id ON anonymous_type_expression_exactly_one_of (exactly_one_of_id); CREATE TABLE anonymous_type_expression_any_of ( anonymous_type_expression_id INTEGER, @@ -5772,8 +5772,8 @@ CREATE TABLE anonymous_type_expression_any_of ( FOREIGN KEY(anonymous_type_expression_id) REFERENCES anonymous_type_expression (id), FOREIGN KEY(any_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_anonymous_type_expression_any_of_anonymous_type_expression_id ON anonymous_type_expression_any_of (anonymous_type_expression_id); CREATE INDEX ix_anonymous_type_expression_any_of_any_of_id ON anonymous_type_expression_any_of (any_of_id); +CREATE INDEX ix_anonymous_type_expression_any_of_anonymous_type_expression_id ON anonymous_type_expression_any_of (anonymous_type_expression_id); CREATE TABLE anonymous_type_expression_all_of ( anonymous_type_expression_id INTEGER, @@ -5832,8 +5832,8 @@ CREATE TABLE type_definition_in_subset ( FOREIGN KEY(type_definition_name) REFERENCES type_definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_type_definition_in_subset_type_definition_name ON type_definition_in_subset (type_definition_name); CREATE INDEX ix_type_definition_in_subset_in_subset_name ON type_definition_in_subset (in_subset_name); +CREATE INDEX ix_type_definition_in_subset_type_definition_name ON type_definition_in_subset (type_definition_name); CREATE TABLE subset_definition_id_prefixes ( subset_definition_name TEXT, @@ -6015,8 +6015,8 @@ CREATE TABLE enum_expression_include ( FOREIGN KEY(enum_expression_id) REFERENCES enum_expression (id), FOREIGN KEY(include_id) REFERENCES anonymous_enum_expression (id) ); -CREATE INDEX ix_enum_expression_include_enum_expression_id ON enum_expression_include (enum_expression_id); CREATE INDEX ix_enum_expression_include_include_id ON enum_expression_include (include_id); +CREATE INDEX ix_enum_expression_include_enum_expression_id ON enum_expression_include (enum_expression_id); CREATE TABLE enum_expression_minus ( enum_expression_id INTEGER, @@ -6025,8 +6025,8 @@ CREATE TABLE enum_expression_minus ( FOREIGN KEY(enum_expression_id) REFERENCES enum_expression (id), FOREIGN KEY(minus_id) REFERENCES anonymous_enum_expression (id) ); -CREATE INDEX ix_enum_expression_minus_enum_expression_id ON enum_expression_minus (enum_expression_id); CREATE INDEX ix_enum_expression_minus_minus_id ON enum_expression_minus (minus_id); +CREATE INDEX ix_enum_expression_minus_enum_expression_id ON enum_expression_minus (enum_expression_id); CREATE TABLE enum_expression_inherits ( enum_expression_id INTEGER, @@ -6035,8 +6035,8 @@ CREATE TABLE enum_expression_inherits ( FOREIGN KEY(enum_expression_id) REFERENCES enum_expression (id), FOREIGN KEY(inherits_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_expression_inherits_enum_expression_id ON enum_expression_inherits (enum_expression_id); CREATE INDEX ix_enum_expression_inherits_inherits_name ON enum_expression_inherits (inherits_name); +CREATE INDEX ix_enum_expression_inherits_enum_expression_id ON enum_expression_inherits (enum_expression_id); CREATE TABLE enum_expression_concepts ( enum_expression_id INTEGER, @@ -6044,8 +6044,8 @@ CREATE TABLE enum_expression_concepts ( PRIMARY KEY (enum_expression_id, concepts), FOREIGN KEY(enum_expression_id) REFERENCES enum_expression (id) ); -CREATE INDEX ix_enum_expression_concepts_enum_expression_id ON enum_expression_concepts (enum_expression_id); CREATE INDEX ix_enum_expression_concepts_concepts ON enum_expression_concepts (concepts); +CREATE INDEX ix_enum_expression_concepts_enum_expression_id ON enum_expression_concepts (enum_expression_id); CREATE TABLE anonymous_enum_expression_include ( anonymous_enum_expression_id INTEGER, @@ -6064,8 +6064,8 @@ CREATE TABLE anonymous_enum_expression_minus ( FOREIGN KEY(anonymous_enum_expression_id) REFERENCES anonymous_enum_expression (id), FOREIGN KEY(minus_id) REFERENCES anonymous_enum_expression (id) ); -CREATE INDEX ix_anonymous_enum_expression_minus_anonymous_enum_expression_id ON anonymous_enum_expression_minus (anonymous_enum_expression_id); CREATE INDEX ix_anonymous_enum_expression_minus_minus_id ON anonymous_enum_expression_minus (minus_id); +CREATE INDEX ix_anonymous_enum_expression_minus_anonymous_enum_expression_id ON anonymous_enum_expression_minus (anonymous_enum_expression_id); CREATE TABLE anonymous_enum_expression_inherits ( anonymous_enum_expression_id INTEGER, @@ -6074,8 +6074,8 @@ CREATE TABLE anonymous_enum_expression_inherits ( FOREIGN KEY(anonymous_enum_expression_id) REFERENCES anonymous_enum_expression (id), FOREIGN KEY(inherits_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_anonymous_enum_expression_inherits_inherits_name ON anonymous_enum_expression_inherits (inherits_name); CREATE INDEX ix_anonymous_enum_expression_inherits_anonymous_enum_expression_id ON anonymous_enum_expression_inherits (anonymous_enum_expression_id); +CREATE INDEX ix_anonymous_enum_expression_inherits_inherits_name ON anonymous_enum_expression_inherits (inherits_name); CREATE TABLE anonymous_enum_expression_concepts ( anonymous_enum_expression_id INTEGER, @@ -6093,8 +6093,8 @@ CREATE TABLE enum_definition_include ( FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name), FOREIGN KEY(include_id) REFERENCES anonymous_enum_expression (id) ); -CREATE INDEX ix_enum_definition_include_include_id ON enum_definition_include (include_id); CREATE INDEX ix_enum_definition_include_enum_definition_name ON enum_definition_include (enum_definition_name); +CREATE INDEX ix_enum_definition_include_include_id ON enum_definition_include (include_id); CREATE TABLE enum_definition_minus ( enum_definition_name TEXT, @@ -6103,8 +6103,8 @@ CREATE TABLE enum_definition_minus ( FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name), FOREIGN KEY(minus_id) REFERENCES anonymous_enum_expression (id) ); -CREATE INDEX ix_enum_definition_minus_enum_definition_name ON enum_definition_minus (enum_definition_name); CREATE INDEX ix_enum_definition_minus_minus_id ON enum_definition_minus (minus_id); +CREATE INDEX ix_enum_definition_minus_enum_definition_name ON enum_definition_minus (enum_definition_name); CREATE TABLE enum_definition_inherits ( enum_definition_name TEXT, @@ -6113,8 +6113,8 @@ CREATE TABLE enum_definition_inherits ( FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name), FOREIGN KEY(inherits_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_inherits_enum_definition_name ON enum_definition_inherits (enum_definition_name); CREATE INDEX ix_enum_definition_inherits_inherits_name ON enum_definition_inherits (inherits_name); +CREATE INDEX ix_enum_definition_inherits_enum_definition_name ON enum_definition_inherits (enum_definition_name); CREATE TABLE enum_definition_concepts ( enum_definition_name TEXT, @@ -6122,8 +6122,8 @@ CREATE TABLE enum_definition_concepts ( PRIMARY KEY (enum_definition_name, concepts), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_concepts_enum_definition_name ON enum_definition_concepts (enum_definition_name); CREATE INDEX ix_enum_definition_concepts_concepts ON enum_definition_concepts (concepts); +CREATE INDEX ix_enum_definition_concepts_enum_definition_name ON enum_definition_concepts (enum_definition_name); CREATE TABLE enum_definition_mixins ( enum_definition_name TEXT, @@ -6142,8 +6142,8 @@ CREATE TABLE enum_definition_apply_to ( FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name), FOREIGN KEY(apply_to_name) REFERENCES definition (name) ); -CREATE INDEX ix_enum_definition_apply_to_apply_to_name ON enum_definition_apply_to (apply_to_name); CREATE INDEX ix_enum_definition_apply_to_enum_definition_name ON enum_definition_apply_to (enum_definition_name); +CREATE INDEX ix_enum_definition_apply_to_apply_to_name ON enum_definition_apply_to (apply_to_name); CREATE TABLE enum_definition_values_from ( enum_definition_name TEXT, @@ -6151,8 +6151,8 @@ CREATE TABLE enum_definition_values_from ( PRIMARY KEY (enum_definition_name, values_from), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_values_from_enum_definition_name ON enum_definition_values_from (enum_definition_name); CREATE INDEX ix_enum_definition_values_from_values_from ON enum_definition_values_from (values_from); +CREATE INDEX ix_enum_definition_values_from_enum_definition_name ON enum_definition_values_from (enum_definition_name); CREATE TABLE enum_definition_id_prefixes ( enum_definition_name TEXT, @@ -6187,8 +6187,8 @@ CREATE TABLE enum_definition_todos ( PRIMARY KEY (enum_definition_name, todos), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_todos_enum_definition_name ON enum_definition_todos (enum_definition_name); CREATE INDEX ix_enum_definition_todos_todos ON enum_definition_todos (todos); +CREATE INDEX ix_enum_definition_todos_enum_definition_name ON enum_definition_todos (enum_definition_name); CREATE TABLE enum_definition_notes ( enum_definition_name TEXT, @@ -6196,8 +6196,8 @@ CREATE TABLE enum_definition_notes ( PRIMARY KEY (enum_definition_name, notes), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_notes_notes ON enum_definition_notes (notes); CREATE INDEX ix_enum_definition_notes_enum_definition_name ON enum_definition_notes (enum_definition_name); +CREATE INDEX ix_enum_definition_notes_notes ON enum_definition_notes (notes); CREATE TABLE enum_definition_comments ( enum_definition_name TEXT, @@ -6205,8 +6205,8 @@ CREATE TABLE enum_definition_comments ( PRIMARY KEY (enum_definition_name, comments), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_comments_enum_definition_name ON enum_definition_comments (enum_definition_name); CREATE INDEX ix_enum_definition_comments_comments ON enum_definition_comments (comments); +CREATE INDEX ix_enum_definition_comments_enum_definition_name ON enum_definition_comments (enum_definition_name); CREATE TABLE enum_definition_in_subset ( enum_definition_name TEXT, @@ -6233,8 +6233,8 @@ CREATE TABLE enum_definition_aliases ( PRIMARY KEY (enum_definition_name, aliases), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_aliases_aliases ON enum_definition_aliases (aliases); CREATE INDEX ix_enum_definition_aliases_enum_definition_name ON enum_definition_aliases (enum_definition_name); +CREATE INDEX ix_enum_definition_aliases_aliases ON enum_definition_aliases (aliases); CREATE TABLE enum_definition_mappings ( enum_definition_name TEXT, @@ -6242,8 +6242,8 @@ CREATE TABLE enum_definition_mappings ( PRIMARY KEY (enum_definition_name, mappings), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_mappings_mappings ON enum_definition_mappings (mappings); CREATE INDEX ix_enum_definition_mappings_enum_definition_name ON enum_definition_mappings (enum_definition_name); +CREATE INDEX ix_enum_definition_mappings_mappings ON enum_definition_mappings (mappings); CREATE TABLE enum_definition_exact_mappings ( enum_definition_name TEXT, @@ -6260,8 +6260,8 @@ CREATE TABLE enum_definition_close_mappings ( PRIMARY KEY (enum_definition_name, close_mappings), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_close_mappings_enum_definition_name ON enum_definition_close_mappings (enum_definition_name); CREATE INDEX ix_enum_definition_close_mappings_close_mappings ON enum_definition_close_mappings (close_mappings); +CREATE INDEX ix_enum_definition_close_mappings_enum_definition_name ON enum_definition_close_mappings (enum_definition_name); CREATE TABLE enum_definition_related_mappings ( enum_definition_name TEXT, @@ -6287,8 +6287,8 @@ CREATE TABLE enum_definition_broad_mappings ( PRIMARY KEY (enum_definition_name, broad_mappings), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_broad_mappings_enum_definition_name ON enum_definition_broad_mappings (enum_definition_name); CREATE INDEX ix_enum_definition_broad_mappings_broad_mappings ON enum_definition_broad_mappings (broad_mappings); +CREATE INDEX ix_enum_definition_broad_mappings_enum_definition_name ON enum_definition_broad_mappings (enum_definition_name); CREATE TABLE enum_definition_contributors ( enum_definition_name TEXT, @@ -6305,8 +6305,8 @@ CREATE TABLE enum_definition_category ( PRIMARY KEY (enum_definition_name, category), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_category_enum_definition_name ON enum_definition_category (enum_definition_name); CREATE INDEX ix_enum_definition_category_category ON enum_definition_category (category); +CREATE INDEX ix_enum_definition_category_enum_definition_name ON enum_definition_category (enum_definition_name); CREATE TABLE enum_definition_keyword ( enum_definition_name TEXT, @@ -6314,8 +6314,8 @@ CREATE TABLE enum_definition_keyword ( PRIMARY KEY (enum_definition_name, keyword), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_keyword_enum_definition_name ON enum_definition_keyword (enum_definition_name); CREATE INDEX ix_enum_definition_keyword_keyword ON enum_definition_keyword (keyword); +CREATE INDEX ix_enum_definition_keyword_enum_definition_name ON enum_definition_keyword (enum_definition_name); CREATE TABLE anonymous_expression_in_subset ( anonymous_expression_id INTEGER, @@ -6324,8 +6324,8 @@ CREATE TABLE anonymous_expression_in_subset ( FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_anonymous_expression_in_subset_anonymous_expression_id ON anonymous_expression_in_subset (anonymous_expression_id); CREATE INDEX ix_anonymous_expression_in_subset_in_subset_name ON anonymous_expression_in_subset (in_subset_name); +CREATE INDEX ix_anonymous_expression_in_subset_anonymous_expression_id ON anonymous_expression_in_subset (anonymous_expression_id); CREATE TABLE path_expression_in_subset ( path_expression_id INTEGER, @@ -6354,8 +6354,8 @@ CREATE TABLE slot_definition_type_mappings ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(type_mappings_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_slot_definition_type_mappings_type_mappings_framework ON slot_definition_type_mappings (type_mappings_framework); CREATE INDEX ix_slot_definition_type_mappings_slot_definition_name ON slot_definition_type_mappings (slot_definition_name); +CREATE INDEX ix_slot_definition_type_mappings_type_mappings_framework ON slot_definition_type_mappings (type_mappings_framework); CREATE TABLE slot_definition_in_subset ( slot_definition_name TEXT, @@ -6364,8 +6364,8 @@ CREATE TABLE slot_definition_in_subset ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_slot_definition_in_subset_in_subset_name ON slot_definition_in_subset (in_subset_name); CREATE INDEX ix_slot_definition_in_subset_slot_definition_name ON slot_definition_in_subset (slot_definition_name); +CREATE INDEX ix_slot_definition_in_subset_in_subset_name ON slot_definition_in_subset (in_subset_name); CREATE TABLE anonymous_class_expression_in_subset ( anonymous_class_expression_id INTEGER, @@ -6384,8 +6384,8 @@ CREATE TABLE class_definition_in_subset ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_class_definition_in_subset_in_subset_name ON class_definition_in_subset (in_subset_name); CREATE INDEX ix_class_definition_in_subset_class_definition_name ON class_definition_in_subset (class_definition_name); +CREATE INDEX ix_class_definition_in_subset_in_subset_name ON class_definition_in_subset (in_subset_name); CREATE TABLE class_rule_todos ( class_rule_id INTEGER, @@ -6393,8 +6393,8 @@ CREATE TABLE class_rule_todos ( PRIMARY KEY (class_rule_id, todos), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_todos_class_rule_id ON class_rule_todos (class_rule_id); CREATE INDEX ix_class_rule_todos_todos ON class_rule_todos (todos); +CREATE INDEX ix_class_rule_todos_class_rule_id ON class_rule_todos (class_rule_id); CREATE TABLE class_rule_notes ( class_rule_id INTEGER, @@ -6411,8 +6411,8 @@ CREATE TABLE class_rule_comments ( PRIMARY KEY (class_rule_id, comments), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_comments_comments ON class_rule_comments (comments); CREATE INDEX ix_class_rule_comments_class_rule_id ON class_rule_comments (class_rule_id); +CREATE INDEX ix_class_rule_comments_comments ON class_rule_comments (comments); CREATE TABLE class_rule_in_subset ( class_rule_id INTEGER, @@ -6421,8 +6421,8 @@ CREATE TABLE class_rule_in_subset ( FOREIGN KEY(class_rule_id) REFERENCES class_rule (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_class_rule_in_subset_class_rule_id ON class_rule_in_subset (class_rule_id); CREATE INDEX ix_class_rule_in_subset_in_subset_name ON class_rule_in_subset (in_subset_name); +CREATE INDEX ix_class_rule_in_subset_class_rule_id ON class_rule_in_subset (class_rule_id); CREATE TABLE class_rule_see_also ( class_rule_id INTEGER, @@ -6430,8 +6430,8 @@ CREATE TABLE class_rule_see_also ( PRIMARY KEY (class_rule_id, see_also), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_see_also_see_also ON class_rule_see_also (see_also); CREATE INDEX ix_class_rule_see_also_class_rule_id ON class_rule_see_also (class_rule_id); +CREATE INDEX ix_class_rule_see_also_see_also ON class_rule_see_also (see_also); CREATE TABLE class_rule_aliases ( class_rule_id INTEGER, @@ -6439,8 +6439,8 @@ CREATE TABLE class_rule_aliases ( PRIMARY KEY (class_rule_id, aliases), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_aliases_aliases ON class_rule_aliases (aliases); CREATE INDEX ix_class_rule_aliases_class_rule_id ON class_rule_aliases (class_rule_id); +CREATE INDEX ix_class_rule_aliases_aliases ON class_rule_aliases (aliases); CREATE TABLE class_rule_mappings ( class_rule_id INTEGER, @@ -6448,8 +6448,8 @@ CREATE TABLE class_rule_mappings ( PRIMARY KEY (class_rule_id, mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_mappings_mappings ON class_rule_mappings (mappings); CREATE INDEX ix_class_rule_mappings_class_rule_id ON class_rule_mappings (class_rule_id); +CREATE INDEX ix_class_rule_mappings_mappings ON class_rule_mappings (mappings); CREATE TABLE class_rule_exact_mappings ( class_rule_id INTEGER, @@ -6457,8 +6457,8 @@ CREATE TABLE class_rule_exact_mappings ( PRIMARY KEY (class_rule_id, exact_mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_exact_mappings_class_rule_id ON class_rule_exact_mappings (class_rule_id); CREATE INDEX ix_class_rule_exact_mappings_exact_mappings ON class_rule_exact_mappings (exact_mappings); +CREATE INDEX ix_class_rule_exact_mappings_class_rule_id ON class_rule_exact_mappings (class_rule_id); CREATE TABLE class_rule_close_mappings ( class_rule_id INTEGER, @@ -6466,8 +6466,8 @@ CREATE TABLE class_rule_close_mappings ( PRIMARY KEY (class_rule_id, close_mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_close_mappings_class_rule_id ON class_rule_close_mappings (class_rule_id); CREATE INDEX ix_class_rule_close_mappings_close_mappings ON class_rule_close_mappings (close_mappings); +CREATE INDEX ix_class_rule_close_mappings_class_rule_id ON class_rule_close_mappings (class_rule_id); CREATE TABLE class_rule_related_mappings ( class_rule_id INTEGER, @@ -6475,8 +6475,8 @@ CREATE TABLE class_rule_related_mappings ( PRIMARY KEY (class_rule_id, related_mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_related_mappings_class_rule_id ON class_rule_related_mappings (class_rule_id); CREATE INDEX ix_class_rule_related_mappings_related_mappings ON class_rule_related_mappings (related_mappings); +CREATE INDEX ix_class_rule_related_mappings_class_rule_id ON class_rule_related_mappings (class_rule_id); CREATE TABLE class_rule_narrow_mappings ( class_rule_id INTEGER, @@ -6484,8 +6484,8 @@ CREATE TABLE class_rule_narrow_mappings ( PRIMARY KEY (class_rule_id, narrow_mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_narrow_mappings_narrow_mappings ON class_rule_narrow_mappings (narrow_mappings); CREATE INDEX ix_class_rule_narrow_mappings_class_rule_id ON class_rule_narrow_mappings (class_rule_id); +CREATE INDEX ix_class_rule_narrow_mappings_narrow_mappings ON class_rule_narrow_mappings (narrow_mappings); CREATE TABLE class_rule_broad_mappings ( class_rule_id INTEGER, @@ -6493,8 +6493,8 @@ CREATE TABLE class_rule_broad_mappings ( PRIMARY KEY (class_rule_id, broad_mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_broad_mappings_broad_mappings ON class_rule_broad_mappings (broad_mappings); CREATE INDEX ix_class_rule_broad_mappings_class_rule_id ON class_rule_broad_mappings (class_rule_id); +CREATE INDEX ix_class_rule_broad_mappings_broad_mappings ON class_rule_broad_mappings (broad_mappings); CREATE TABLE class_rule_contributors ( class_rule_id INTEGER, @@ -6502,8 +6502,8 @@ CREATE TABLE class_rule_contributors ( PRIMARY KEY (class_rule_id, contributors), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_contributors_contributors ON class_rule_contributors (contributors); CREATE INDEX ix_class_rule_contributors_class_rule_id ON class_rule_contributors (class_rule_id); +CREATE INDEX ix_class_rule_contributors_contributors ON class_rule_contributors (contributors); CREATE TABLE class_rule_category ( class_rule_id INTEGER, @@ -6511,8 +6511,8 @@ CREATE TABLE class_rule_category ( PRIMARY KEY (class_rule_id, category), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_category_class_rule_id ON class_rule_category (class_rule_id); CREATE INDEX ix_class_rule_category_category ON class_rule_category (category); +CREATE INDEX ix_class_rule_category_class_rule_id ON class_rule_category (class_rule_id); CREATE TABLE class_rule_keyword ( class_rule_id INTEGER, @@ -6520,8 +6520,8 @@ CREATE TABLE class_rule_keyword ( PRIMARY KEY (class_rule_id, keyword), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_keyword_class_rule_id ON class_rule_keyword (class_rule_id); CREATE INDEX ix_class_rule_keyword_keyword ON class_rule_keyword (keyword); +CREATE INDEX ix_class_rule_keyword_class_rule_id ON class_rule_keyword (class_rule_id); CREATE TABLE array_expression_dimensions ( array_expression_id INTEGER, @@ -6530,8 +6530,8 @@ CREATE TABLE array_expression_dimensions ( FOREIGN KEY(array_expression_id) REFERENCES array_expression (id), FOREIGN KEY(dimensions_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_array_expression_dimensions_array_expression_id ON array_expression_dimensions (array_expression_id); CREATE INDEX ix_array_expression_dimensions_dimensions_id ON array_expression_dimensions (dimensions_id); +CREATE INDEX ix_array_expression_dimensions_array_expression_id ON array_expression_dimensions (array_expression_id); CREATE TABLE array_expression_todos ( array_expression_id INTEGER, @@ -6548,8 +6548,8 @@ CREATE TABLE array_expression_notes ( PRIMARY KEY (array_expression_id, notes), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_notes_array_expression_id ON array_expression_notes (array_expression_id); CREATE INDEX ix_array_expression_notes_notes ON array_expression_notes (notes); +CREATE INDEX ix_array_expression_notes_array_expression_id ON array_expression_notes (array_expression_id); CREATE TABLE array_expression_comments ( array_expression_id INTEGER, @@ -6557,8 +6557,8 @@ CREATE TABLE array_expression_comments ( PRIMARY KEY (array_expression_id, comments), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_comments_array_expression_id ON array_expression_comments (array_expression_id); CREATE INDEX ix_array_expression_comments_comments ON array_expression_comments (comments); +CREATE INDEX ix_array_expression_comments_array_expression_id ON array_expression_comments (array_expression_id); CREATE TABLE array_expression_in_subset ( array_expression_id INTEGER, @@ -6567,8 +6567,8 @@ CREATE TABLE array_expression_in_subset ( FOREIGN KEY(array_expression_id) REFERENCES array_expression (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_array_expression_in_subset_in_subset_name ON array_expression_in_subset (in_subset_name); CREATE INDEX ix_array_expression_in_subset_array_expression_id ON array_expression_in_subset (array_expression_id); +CREATE INDEX ix_array_expression_in_subset_in_subset_name ON array_expression_in_subset (in_subset_name); CREATE TABLE array_expression_see_also ( array_expression_id INTEGER, @@ -6576,8 +6576,8 @@ CREATE TABLE array_expression_see_also ( PRIMARY KEY (array_expression_id, see_also), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_see_also_see_also ON array_expression_see_also (see_also); CREATE INDEX ix_array_expression_see_also_array_expression_id ON array_expression_see_also (array_expression_id); +CREATE INDEX ix_array_expression_see_also_see_also ON array_expression_see_also (see_also); CREATE TABLE array_expression_aliases ( array_expression_id INTEGER, @@ -6594,8 +6594,8 @@ CREATE TABLE array_expression_mappings ( PRIMARY KEY (array_expression_id, mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_mappings_mappings ON array_expression_mappings (mappings); CREATE INDEX ix_array_expression_mappings_array_expression_id ON array_expression_mappings (array_expression_id); +CREATE INDEX ix_array_expression_mappings_mappings ON array_expression_mappings (mappings); CREATE TABLE array_expression_exact_mappings ( array_expression_id INTEGER, @@ -6603,8 +6603,8 @@ CREATE TABLE array_expression_exact_mappings ( PRIMARY KEY (array_expression_id, exact_mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_exact_mappings_array_expression_id ON array_expression_exact_mappings (array_expression_id); CREATE INDEX ix_array_expression_exact_mappings_exact_mappings ON array_expression_exact_mappings (exact_mappings); +CREATE INDEX ix_array_expression_exact_mappings_array_expression_id ON array_expression_exact_mappings (array_expression_id); CREATE TABLE array_expression_close_mappings ( array_expression_id INTEGER, @@ -6612,8 +6612,8 @@ CREATE TABLE array_expression_close_mappings ( PRIMARY KEY (array_expression_id, close_mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_close_mappings_array_expression_id ON array_expression_close_mappings (array_expression_id); CREATE INDEX ix_array_expression_close_mappings_close_mappings ON array_expression_close_mappings (close_mappings); +CREATE INDEX ix_array_expression_close_mappings_array_expression_id ON array_expression_close_mappings (array_expression_id); CREATE TABLE array_expression_related_mappings ( array_expression_id INTEGER, @@ -6621,8 +6621,8 @@ CREATE TABLE array_expression_related_mappings ( PRIMARY KEY (array_expression_id, related_mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_related_mappings_related_mappings ON array_expression_related_mappings (related_mappings); CREATE INDEX ix_array_expression_related_mappings_array_expression_id ON array_expression_related_mappings (array_expression_id); +CREATE INDEX ix_array_expression_related_mappings_related_mappings ON array_expression_related_mappings (related_mappings); CREATE TABLE array_expression_narrow_mappings ( array_expression_id INTEGER, @@ -6630,8 +6630,8 @@ CREATE TABLE array_expression_narrow_mappings ( PRIMARY KEY (array_expression_id, narrow_mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_narrow_mappings_narrow_mappings ON array_expression_narrow_mappings (narrow_mappings); CREATE INDEX ix_array_expression_narrow_mappings_array_expression_id ON array_expression_narrow_mappings (array_expression_id); +CREATE INDEX ix_array_expression_narrow_mappings_narrow_mappings ON array_expression_narrow_mappings (narrow_mappings); CREATE TABLE array_expression_broad_mappings ( array_expression_id INTEGER, @@ -6639,8 +6639,8 @@ CREATE TABLE array_expression_broad_mappings ( PRIMARY KEY (array_expression_id, broad_mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_broad_mappings_broad_mappings ON array_expression_broad_mappings (broad_mappings); CREATE INDEX ix_array_expression_broad_mappings_array_expression_id ON array_expression_broad_mappings (array_expression_id); +CREATE INDEX ix_array_expression_broad_mappings_broad_mappings ON array_expression_broad_mappings (broad_mappings); CREATE TABLE array_expression_contributors ( array_expression_id INTEGER, @@ -6648,8 +6648,8 @@ CREATE TABLE array_expression_contributors ( PRIMARY KEY (array_expression_id, contributors), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_contributors_array_expression_id ON array_expression_contributors (array_expression_id); CREATE INDEX ix_array_expression_contributors_contributors ON array_expression_contributors (contributors); +CREATE INDEX ix_array_expression_contributors_array_expression_id ON array_expression_contributors (array_expression_id); CREATE TABLE array_expression_category ( array_expression_id INTEGER, @@ -6657,8 +6657,8 @@ CREATE TABLE array_expression_category ( PRIMARY KEY (array_expression_id, category), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_category_category ON array_expression_category (category); CREATE INDEX ix_array_expression_category_array_expression_id ON array_expression_category (array_expression_id); +CREATE INDEX ix_array_expression_category_category ON array_expression_category (category); CREATE TABLE array_expression_keyword ( array_expression_id INTEGER, @@ -6666,8 +6666,8 @@ CREATE TABLE array_expression_keyword ( PRIMARY KEY (array_expression_id, keyword), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_keyword_array_expression_id ON array_expression_keyword (array_expression_id); CREATE INDEX ix_array_expression_keyword_keyword ON array_expression_keyword (keyword); +CREATE INDEX ix_array_expression_keyword_array_expression_id ON array_expression_keyword (array_expression_id); CREATE TABLE dimension_expression_in_subset ( dimension_expression_id INTEGER, @@ -6696,8 +6696,8 @@ CREATE TABLE import_expression_in_subset ( FOREIGN KEY(import_expression_id) REFERENCES import_expression (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_import_expression_in_subset_in_subset_name ON import_expression_in_subset (in_subset_name); CREATE INDEX ix_import_expression_in_subset_import_expression_id ON import_expression_in_subset (import_expression_id); +CREATE INDEX ix_import_expression_in_subset_in_subset_name ON import_expression_in_subset (in_subset_name); CREATE TABLE unique_key_unique_key_slots ( unique_key_unique_key_name TEXT, @@ -6706,8 +6706,8 @@ CREATE TABLE unique_key_unique_key_slots ( FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name), FOREIGN KEY(unique_key_slots_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_unique_key_unique_key_slots_unique_key_slots_name ON unique_key_unique_key_slots (unique_key_slots_name); CREATE INDEX ix_unique_key_unique_key_slots_unique_key_unique_key_name ON unique_key_unique_key_slots (unique_key_unique_key_name); +CREATE INDEX ix_unique_key_unique_key_slots_unique_key_slots_name ON unique_key_unique_key_slots (unique_key_slots_name); CREATE TABLE unique_key_todos ( unique_key_unique_key_name TEXT, @@ -6752,8 +6752,8 @@ CREATE TABLE unique_key_see_also ( PRIMARY KEY (unique_key_unique_key_name, see_also), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_see_also_see_also ON unique_key_see_also (see_also); CREATE INDEX ix_unique_key_see_also_unique_key_unique_key_name ON unique_key_see_also (unique_key_unique_key_name); +CREATE INDEX ix_unique_key_see_also_see_also ON unique_key_see_also (see_also); CREATE TABLE unique_key_aliases ( unique_key_unique_key_name TEXT, @@ -6779,8 +6779,8 @@ CREATE TABLE unique_key_exact_mappings ( PRIMARY KEY (unique_key_unique_key_name, exact_mappings), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_exact_mappings_exact_mappings ON unique_key_exact_mappings (exact_mappings); CREATE INDEX ix_unique_key_exact_mappings_unique_key_unique_key_name ON unique_key_exact_mappings (unique_key_unique_key_name); +CREATE INDEX ix_unique_key_exact_mappings_exact_mappings ON unique_key_exact_mappings (exact_mappings); CREATE TABLE unique_key_close_mappings ( unique_key_unique_key_name TEXT, @@ -6806,8 +6806,8 @@ CREATE TABLE unique_key_narrow_mappings ( PRIMARY KEY (unique_key_unique_key_name, narrow_mappings), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_narrow_mappings_narrow_mappings ON unique_key_narrow_mappings (narrow_mappings); CREATE INDEX ix_unique_key_narrow_mappings_unique_key_unique_key_name ON unique_key_narrow_mappings (unique_key_unique_key_name); +CREATE INDEX ix_unique_key_narrow_mappings_narrow_mappings ON unique_key_narrow_mappings (narrow_mappings); CREATE TABLE unique_key_broad_mappings ( unique_key_unique_key_name TEXT, @@ -6833,8 +6833,8 @@ CREATE TABLE unique_key_category ( PRIMARY KEY (unique_key_unique_key_name, category), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_category_category ON unique_key_category (category); CREATE INDEX ix_unique_key_category_unique_key_unique_key_name ON unique_key_category (unique_key_unique_key_name); +CREATE INDEX ix_unique_key_category_category ON unique_key_category (category); CREATE TABLE unique_key_keyword ( unique_key_unique_key_name TEXT, @@ -6869,8 +6869,8 @@ CREATE TABLE type_mapping_comments ( PRIMARY KEY (type_mapping_framework, comments), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_comments_type_mapping_framework ON type_mapping_comments (type_mapping_framework); CREATE INDEX ix_type_mapping_comments_comments ON type_mapping_comments (comments); +CREATE INDEX ix_type_mapping_comments_type_mapping_framework ON type_mapping_comments (type_mapping_framework); CREATE TABLE type_mapping_in_subset ( type_mapping_framework TEXT, @@ -6888,8 +6888,8 @@ CREATE TABLE type_mapping_see_also ( PRIMARY KEY (type_mapping_framework, see_also), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_see_also_type_mapping_framework ON type_mapping_see_also (type_mapping_framework); CREATE INDEX ix_type_mapping_see_also_see_also ON type_mapping_see_also (see_also); +CREATE INDEX ix_type_mapping_see_also_type_mapping_framework ON type_mapping_see_also (type_mapping_framework); CREATE TABLE type_mapping_aliases ( type_mapping_framework TEXT, @@ -6924,8 +6924,8 @@ CREATE TABLE type_mapping_close_mappings ( PRIMARY KEY (type_mapping_framework, close_mappings), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_close_mappings_type_mapping_framework ON type_mapping_close_mappings (type_mapping_framework); CREATE INDEX ix_type_mapping_close_mappings_close_mappings ON type_mapping_close_mappings (close_mappings); +CREATE INDEX ix_type_mapping_close_mappings_type_mapping_framework ON type_mapping_close_mappings (type_mapping_framework); CREATE TABLE type_mapping_related_mappings ( type_mapping_framework TEXT, @@ -6933,8 +6933,8 @@ CREATE TABLE type_mapping_related_mappings ( PRIMARY KEY (type_mapping_framework, related_mappings), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_related_mappings_related_mappings ON type_mapping_related_mappings (related_mappings); CREATE INDEX ix_type_mapping_related_mappings_type_mapping_framework ON type_mapping_related_mappings (type_mapping_framework); +CREATE INDEX ix_type_mapping_related_mappings_related_mappings ON type_mapping_related_mappings (related_mappings); CREATE TABLE type_mapping_narrow_mappings ( type_mapping_framework TEXT, @@ -6942,8 +6942,8 @@ CREATE TABLE type_mapping_narrow_mappings ( PRIMARY KEY (type_mapping_framework, narrow_mappings), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_narrow_mappings_type_mapping_framework ON type_mapping_narrow_mappings (type_mapping_framework); CREATE INDEX ix_type_mapping_narrow_mappings_narrow_mappings ON type_mapping_narrow_mappings (narrow_mappings); +CREATE INDEX ix_type_mapping_narrow_mappings_type_mapping_framework ON type_mapping_narrow_mappings (type_mapping_framework); CREATE TABLE type_mapping_broad_mappings ( type_mapping_framework TEXT, @@ -6960,8 +6960,8 @@ CREATE TABLE type_mapping_contributors ( PRIMARY KEY (type_mapping_framework, contributors), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_contributors_contributors ON type_mapping_contributors (contributors); CREATE INDEX ix_type_mapping_contributors_type_mapping_framework ON type_mapping_contributors (type_mapping_framework); +CREATE INDEX ix_type_mapping_contributors_contributors ON type_mapping_contributors (contributors); CREATE TABLE type_mapping_category ( type_mapping_framework TEXT, @@ -6969,8 +6969,8 @@ CREATE TABLE type_mapping_category ( PRIMARY KEY (type_mapping_framework, category), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_category_type_mapping_framework ON type_mapping_category (type_mapping_framework); CREATE INDEX ix_type_mapping_category_category ON type_mapping_category (category); +CREATE INDEX ix_type_mapping_category_type_mapping_framework ON type_mapping_category (type_mapping_framework); CREATE TABLE type_mapping_keyword ( type_mapping_framework TEXT, @@ -7031,8 +7031,8 @@ CREATE TABLE slot_expression_none_of ( FOREIGN KEY(slot_expression_id) REFERENCES slot_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_expression_none_of_slot_expression_id ON slot_expression_none_of (slot_expression_id); CREATE INDEX ix_slot_expression_none_of_none_of_id ON slot_expression_none_of (none_of_id); +CREATE INDEX ix_slot_expression_none_of_slot_expression_id ON slot_expression_none_of (slot_expression_id); CREATE TABLE slot_expression_exactly_one_of ( slot_expression_id INTEGER, @@ -7041,8 +7041,8 @@ CREATE TABLE slot_expression_exactly_one_of ( FOREIGN KEY(slot_expression_id) REFERENCES slot_expression (id), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_expression_exactly_one_of_slot_expression_id ON slot_expression_exactly_one_of (slot_expression_id); CREATE INDEX ix_slot_expression_exactly_one_of_exactly_one_of_id ON slot_expression_exactly_one_of (exactly_one_of_id); +CREATE INDEX ix_slot_expression_exactly_one_of_slot_expression_id ON slot_expression_exactly_one_of (slot_expression_id); CREATE TABLE slot_expression_any_of ( slot_expression_id INTEGER, @@ -7312,8 +7312,8 @@ CREATE TABLE enum_binding_notes ( PRIMARY KEY (enum_binding_id, notes), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_notes_notes ON enum_binding_notes (notes); CREATE INDEX ix_enum_binding_notes_enum_binding_id ON enum_binding_notes (enum_binding_id); +CREATE INDEX ix_enum_binding_notes_notes ON enum_binding_notes (notes); CREATE TABLE enum_binding_comments ( enum_binding_id INTEGER, @@ -7321,8 +7321,8 @@ CREATE TABLE enum_binding_comments ( PRIMARY KEY (enum_binding_id, comments), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_comments_comments ON enum_binding_comments (comments); CREATE INDEX ix_enum_binding_comments_enum_binding_id ON enum_binding_comments (enum_binding_id); +CREATE INDEX ix_enum_binding_comments_comments ON enum_binding_comments (comments); CREATE TABLE enum_binding_in_subset ( enum_binding_id INTEGER, @@ -7331,8 +7331,8 @@ CREATE TABLE enum_binding_in_subset ( FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_enum_binding_in_subset_in_subset_name ON enum_binding_in_subset (in_subset_name); CREATE INDEX ix_enum_binding_in_subset_enum_binding_id ON enum_binding_in_subset (enum_binding_id); +CREATE INDEX ix_enum_binding_in_subset_in_subset_name ON enum_binding_in_subset (in_subset_name); CREATE TABLE enum_binding_see_also ( enum_binding_id INTEGER, @@ -7340,8 +7340,8 @@ CREATE TABLE enum_binding_see_also ( PRIMARY KEY (enum_binding_id, see_also), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_see_also_see_also ON enum_binding_see_also (see_also); CREATE INDEX ix_enum_binding_see_also_enum_binding_id ON enum_binding_see_also (enum_binding_id); +CREATE INDEX ix_enum_binding_see_also_see_also ON enum_binding_see_also (see_also); CREATE TABLE enum_binding_aliases ( enum_binding_id INTEGER, @@ -7349,8 +7349,8 @@ CREATE TABLE enum_binding_aliases ( PRIMARY KEY (enum_binding_id, aliases), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_aliases_aliases ON enum_binding_aliases (aliases); CREATE INDEX ix_enum_binding_aliases_enum_binding_id ON enum_binding_aliases (enum_binding_id); +CREATE INDEX ix_enum_binding_aliases_aliases ON enum_binding_aliases (aliases); CREATE TABLE enum_binding_mappings ( enum_binding_id INTEGER, @@ -7358,8 +7358,8 @@ CREATE TABLE enum_binding_mappings ( PRIMARY KEY (enum_binding_id, mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_mappings_enum_binding_id ON enum_binding_mappings (enum_binding_id); CREATE INDEX ix_enum_binding_mappings_mappings ON enum_binding_mappings (mappings); +CREATE INDEX ix_enum_binding_mappings_enum_binding_id ON enum_binding_mappings (enum_binding_id); CREATE TABLE enum_binding_exact_mappings ( enum_binding_id INTEGER, @@ -7367,8 +7367,8 @@ CREATE TABLE enum_binding_exact_mappings ( PRIMARY KEY (enum_binding_id, exact_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_exact_mappings_enum_binding_id ON enum_binding_exact_mappings (enum_binding_id); CREATE INDEX ix_enum_binding_exact_mappings_exact_mappings ON enum_binding_exact_mappings (exact_mappings); +CREATE INDEX ix_enum_binding_exact_mappings_enum_binding_id ON enum_binding_exact_mappings (enum_binding_id); CREATE TABLE enum_binding_close_mappings ( enum_binding_id INTEGER, @@ -7376,8 +7376,8 @@ CREATE TABLE enum_binding_close_mappings ( PRIMARY KEY (enum_binding_id, close_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_close_mappings_enum_binding_id ON enum_binding_close_mappings (enum_binding_id); CREATE INDEX ix_enum_binding_close_mappings_close_mappings ON enum_binding_close_mappings (close_mappings); +CREATE INDEX ix_enum_binding_close_mappings_enum_binding_id ON enum_binding_close_mappings (enum_binding_id); CREATE TABLE enum_binding_related_mappings ( enum_binding_id INTEGER, @@ -7385,8 +7385,8 @@ CREATE TABLE enum_binding_related_mappings ( PRIMARY KEY (enum_binding_id, related_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_related_mappings_related_mappings ON enum_binding_related_mappings (related_mappings); CREATE INDEX ix_enum_binding_related_mappings_enum_binding_id ON enum_binding_related_mappings (enum_binding_id); +CREATE INDEX ix_enum_binding_related_mappings_related_mappings ON enum_binding_related_mappings (related_mappings); CREATE TABLE enum_binding_narrow_mappings ( enum_binding_id INTEGER, @@ -7394,8 +7394,8 @@ CREATE TABLE enum_binding_narrow_mappings ( PRIMARY KEY (enum_binding_id, narrow_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_narrow_mappings_narrow_mappings ON enum_binding_narrow_mappings (narrow_mappings); CREATE INDEX ix_enum_binding_narrow_mappings_enum_binding_id ON enum_binding_narrow_mappings (enum_binding_id); +CREATE INDEX ix_enum_binding_narrow_mappings_narrow_mappings ON enum_binding_narrow_mappings (narrow_mappings); CREATE TABLE enum_binding_broad_mappings ( enum_binding_id INTEGER, @@ -7403,8 +7403,8 @@ CREATE TABLE enum_binding_broad_mappings ( PRIMARY KEY (enum_binding_id, broad_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_broad_mappings_broad_mappings ON enum_binding_broad_mappings (broad_mappings); CREATE INDEX ix_enum_binding_broad_mappings_enum_binding_id ON enum_binding_broad_mappings (enum_binding_id); +CREATE INDEX ix_enum_binding_broad_mappings_broad_mappings ON enum_binding_broad_mappings (broad_mappings); CREATE TABLE enum_binding_contributors ( enum_binding_id INTEGER, @@ -7563,54 +7563,54 @@ CREATE TABLE alt_description ( FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_alt_description_anonymous_expression_id ON alt_description (anonymous_expression_id); -CREATE INDEX ix_alt_description_element_name ON alt_description (element_name); -CREATE INDEX ix_alt_description_array_expression_id ON alt_description (array_expression_id); -CREATE INDEX alt_description_array_expression_id_source_idx ON alt_description (array_expression_id, source); -CREATE INDEX alt_description_enum_definition_name_source_idx ON alt_description (enum_definition_name, source); -CREATE INDEX ix_alt_description_source ON alt_description (source); -CREATE INDEX ix_alt_description_type_mapping_framework ON alt_description (type_mapping_framework); -CREATE INDEX alt_description_common_metadata_id_source_idx ON alt_description (common_metadata_id, source); -CREATE INDEX alt_description_anonymous_class_expression_id_source_idx ON alt_description (anonymous_class_expression_id, source); -CREATE INDEX ix_alt_description_structured_alias_id ON alt_description (structured_alias_id); -CREATE INDEX ix_alt_description_class_rule_id ON alt_description (class_rule_id); -CREATE INDEX ix_alt_description_common_metadata_id ON alt_description (common_metadata_id); -CREATE INDEX ix_alt_description_unique_key_unique_key_name ON alt_description (unique_key_unique_key_name); -CREATE INDEX alt_description_path_expression_id_source_idx ON alt_description (path_expression_id, source); -CREATE INDEX alt_description_permissible_value_text_source_idx ON alt_description (permissible_value_text, source); CREATE INDEX ix_alt_description_enum_binding_id ON alt_description (enum_binding_id); CREATE INDEX alt_description_dimension_expression_id_source_idx ON alt_description (dimension_expression_id, source); CREATE INDEX ix_alt_description_class_definition_name ON alt_description (class_definition_name); CREATE INDEX alt_description_enum_binding_id_source_idx ON alt_description (enum_binding_id, source); CREATE INDEX ix_alt_description_permissible_value_text ON alt_description (permissible_value_text); -CREATE INDEX alt_description_anonymous_expression_id_source_idx ON alt_description (anonymous_expression_id, source); CREATE INDEX alt_description_element_name_source_idx ON alt_description (element_name, source); CREATE INDEX alt_description_class_definition_name_source_idx ON alt_description (class_definition_name, source); CREATE INDEX ix_alt_description_anonymous_class_expression_id ON alt_description (anonymous_class_expression_id); CREATE INDEX alt_description_schema_definition_name_source_idx ON alt_description (schema_definition_name, source); -CREATE INDEX alt_description_anonymous_slot_expression_id_source_idx ON alt_description (anonymous_slot_expression_id, source); CREATE INDEX ix_alt_description_definition_name ON alt_description (definition_name); +CREATE INDEX alt_description_anonymous_slot_expression_id_source_idx ON alt_description (anonymous_slot_expression_id, source); CREATE INDEX ix_alt_description_import_expression_id ON alt_description (import_expression_id); CREATE INDEX alt_description_unique_key_unique_key_name_source_idx ON alt_description (unique_key_unique_key_name, source); CREATE INDEX ix_alt_description_slot_definition_name ON alt_description (slot_definition_name); CREATE INDEX alt_description_type_definition_name_source_idx ON alt_description (type_definition_name, source); +CREATE INDEX alt_description_pattern_expression_id_source_idx ON alt_description (pattern_expression_id, source); CREATE INDEX alt_description_subset_definition_name_source_idx ON alt_description (subset_definition_name, source); CREATE INDEX alt_description_structured_alias_id_source_idx ON alt_description (structured_alias_id, source); -CREATE INDEX alt_description_pattern_expression_id_source_idx ON alt_description (pattern_expression_id, source); -CREATE INDEX alt_description_import_expression_id_source_idx ON alt_description (import_expression_id, source); CREATE INDEX ix_alt_description_subset_definition_name ON alt_description (subset_definition_name); -CREATE INDEX ix_alt_description_description ON alt_description (description); CREATE INDEX ix_alt_description_anonymous_slot_expression_id ON alt_description (anonymous_slot_expression_id); +CREATE INDEX ix_alt_description_description ON alt_description (description); CREATE INDEX ix_alt_description_pattern_expression_id ON alt_description (pattern_expression_id); CREATE INDEX alt_description_class_rule_id_source_idx ON alt_description (class_rule_id, source); CREATE INDEX ix_alt_description_type_definition_name ON alt_description (type_definition_name); CREATE INDEX alt_description_definition_name_source_idx ON alt_description (definition_name, source); +CREATE INDEX alt_description_path_expression_id_source_idx ON alt_description (path_expression_id, source); CREATE INDEX ix_alt_description_path_expression_id ON alt_description (path_expression_id); CREATE INDEX alt_description_slot_definition_name_source_idx ON alt_description (slot_definition_name, source); CREATE INDEX alt_description_type_mapping_framework_source_idx ON alt_description (type_mapping_framework, source); CREATE INDEX ix_alt_description_dimension_expression_id ON alt_description (dimension_expression_id); CREATE INDEX ix_alt_description_enum_definition_name ON alt_description (enum_definition_name); +CREATE INDEX alt_description_anonymous_expression_id_source_idx ON alt_description (anonymous_expression_id, source); +CREATE INDEX alt_description_import_expression_id_source_idx ON alt_description (import_expression_id, source); CREATE INDEX ix_alt_description_schema_definition_name ON alt_description (schema_definition_name); +CREATE INDEX ix_alt_description_anonymous_expression_id ON alt_description (anonymous_expression_id); +CREATE INDEX ix_alt_description_element_name ON alt_description (element_name); +CREATE INDEX alt_description_array_expression_id_source_idx ON alt_description (array_expression_id, source); +CREATE INDEX ix_alt_description_array_expression_id ON alt_description (array_expression_id); +CREATE INDEX ix_alt_description_unique_key_unique_key_name ON alt_description (unique_key_unique_key_name); +CREATE INDEX alt_description_enum_definition_name_source_idx ON alt_description (enum_definition_name, source); +CREATE INDEX ix_alt_description_source ON alt_description (source); +CREATE INDEX ix_alt_description_type_mapping_framework ON alt_description (type_mapping_framework); +CREATE INDEX alt_description_common_metadata_id_source_idx ON alt_description (common_metadata_id, source); +CREATE INDEX alt_description_anonymous_class_expression_id_source_idx ON alt_description (anonymous_class_expression_id, source); +CREATE INDEX ix_alt_description_structured_alias_id ON alt_description (structured_alias_id); +CREATE INDEX ix_alt_description_class_rule_id ON alt_description (class_rule_id); +CREATE INDEX alt_description_permissible_value_text_source_idx ON alt_description (permissible_value_text, source); +CREATE INDEX ix_alt_description_common_metadata_id ON alt_description (common_metadata_id); CREATE TABLE annotation ( tag TEXT NOT NULL, @@ -7690,56 +7690,56 @@ CREATE TABLE annotation ( FOREIGN KEY(annotation_tag) REFERENCES annotation (tag), FOREIGN KEY(value_id) REFERENCES "AnyValue" (id) ); -CREATE INDEX ix_annotation_schema_definition_name ON annotation (schema_definition_name); -CREATE INDEX annotation_schema_definition_name_tag_idx ON annotation (schema_definition_name, tag); -CREATE INDEX annotation_import_expression_id_tag_idx ON annotation (import_expression_id, tag); -CREATE INDEX ix_annotation_dimension_expression_id ON annotation (dimension_expression_id); -CREATE INDEX annotation_type_definition_name_tag_idx ON annotation (type_definition_name, tag); -CREATE INDEX ix_annotation_anonymous_expression_id ON annotation (anonymous_expression_id); -CREATE INDEX ix_annotation_value_id ON annotation (value_id); -CREATE INDEX annotation_subset_definition_name_tag_idx ON annotation (subset_definition_name, tag); -CREATE INDEX annotation_anonymous_expression_id_tag_idx ON annotation (anonymous_expression_id, tag); -CREATE INDEX annotation_annotatable_id_tag_idx ON annotation (annotatable_id, tag); -CREATE INDEX annotation_array_expression_id_tag_idx ON annotation (array_expression_id, tag); -CREATE INDEX ix_annotation_array_expression_id ON annotation (array_expression_id); -CREATE INDEX annotation_definition_name_tag_idx ON annotation (definition_name, tag); -CREATE INDEX ix_annotation_annotation_tag ON annotation (annotation_tag); -CREATE INDEX ix_annotation_annotatable_id ON annotation (annotatable_id); -CREATE INDEX annotation_enum_definition_name_tag_idx ON annotation (enum_definition_name, tag); -CREATE INDEX annotation_anonymous_class_expression_id_tag_idx ON annotation (anonymous_class_expression_id, tag); -CREATE INDEX ix_annotation_class_rule_id ON annotation (class_rule_id); -CREATE INDEX annotation_permissible_value_text_tag_idx ON annotation (permissible_value_text, tag); CREATE INDEX ix_annotation_element_name ON annotation (element_name); CREATE INDEX ix_annotation_type_mapping_framework ON annotation (type_mapping_framework); -CREATE INDEX annotation_slot_definition_name_tag_idx ON annotation (slot_definition_name, tag); CREATE INDEX ix_annotation_enum_binding_id ON annotation (enum_binding_id); CREATE INDEX ix_annotation_class_definition_name ON annotation (class_definition_name); -CREATE INDEX annotation_path_expression_id_tag_idx ON annotation (path_expression_id, tag); -CREATE INDEX annotation_annotation_tag_tag_idx ON annotation (annotation_tag, tag); CREATE INDEX ix_annotation_unique_key_unique_key_name ON annotation (unique_key_unique_key_name); +CREATE INDEX annotation_enum_definition_name_tag_idx ON annotation (enum_definition_name, tag); +CREATE INDEX annotation_path_expression_id_tag_idx ON annotation (path_expression_id, tag); CREATE INDEX annotation_dimension_expression_id_tag_idx ON annotation (dimension_expression_id, tag); +CREATE INDEX annotation_annotation_tag_tag_idx ON annotation (annotation_tag, tag); CREATE INDEX ix_annotation_enum_definition_name ON annotation (enum_definition_name); +CREATE INDEX annotation_anonymous_class_expression_id_tag_idx ON annotation (anonymous_class_expression_id, tag); +CREATE INDEX annotation_permissible_value_text_tag_idx ON annotation (permissible_value_text, tag); CREATE INDEX ix_annotation_anonymous_class_expression_id ON annotation (anonymous_class_expression_id); +CREATE INDEX ix_annotation_permissible_value_text ON annotation (permissible_value_text); CREATE INDEX annotation_enum_binding_id_tag_idx ON annotation (enum_binding_id, tag); CREATE INDEX annotation_class_definition_name_tag_idx ON annotation (class_definition_name, tag); -CREATE INDEX annotation_unique_key_unique_key_name_tag_idx ON annotation (unique_key_unique_key_name, tag); CREATE INDEX ix_annotation_definition_name ON annotation (definition_name); -CREATE INDEX ix_annotation_permissible_value_text ON annotation (permissible_value_text); +CREATE INDEX annotation_unique_key_unique_key_name_tag_idx ON annotation (unique_key_unique_key_name, tag); CREATE INDEX ix_annotation_tag ON annotation (tag); CREATE INDEX ix_annotation_slot_definition_name ON annotation (slot_definition_name); CREATE INDEX annotation_element_name_tag_idx ON annotation (element_name, tag); CREATE INDEX annotation_anonymous_slot_expression_id_tag_idx ON annotation (anonymous_slot_expression_id, tag); -CREATE INDEX ix_annotation_structured_alias_id ON annotation (structured_alias_id); CREATE INDEX annotation_pattern_expression_id_tag_idx ON annotation (pattern_expression_id, tag); -CREATE INDEX ix_annotation_subset_definition_name ON annotation (subset_definition_name); +CREATE INDEX ix_annotation_structured_alias_id ON annotation (structured_alias_id); CREATE INDEX ix_annotation_import_expression_id ON annotation (import_expression_id); +CREATE INDEX ix_annotation_subset_definition_name ON annotation (subset_definition_name); CREATE INDEX ix_annotation_type_definition_name ON annotation (type_definition_name); CREATE INDEX ix_annotation_anonymous_slot_expression_id ON annotation (anonymous_slot_expression_id); CREATE INDEX annotation_structured_alias_id_tag_idx ON annotation (structured_alias_id, tag); CREATE INDEX annotation_class_rule_id_tag_idx ON annotation (class_rule_id, tag); -CREATE INDEX annotation_type_mapping_framework_tag_idx ON annotation (type_mapping_framework, tag); CREATE INDEX ix_annotation_pattern_expression_id ON annotation (pattern_expression_id); +CREATE INDEX annotation_type_mapping_framework_tag_idx ON annotation (type_mapping_framework, tag); CREATE INDEX ix_annotation_path_expression_id ON annotation (path_expression_id); +CREATE INDEX annotation_slot_definition_name_tag_idx ON annotation (slot_definition_name, tag); +CREATE INDEX annotation_import_expression_id_tag_idx ON annotation (import_expression_id, tag); +CREATE INDEX ix_annotation_dimension_expression_id ON annotation (dimension_expression_id); +CREATE INDEX ix_annotation_schema_definition_name ON annotation (schema_definition_name); +CREATE INDEX annotation_schema_definition_name_tag_idx ON annotation (schema_definition_name, tag); +CREATE INDEX ix_annotation_value_id ON annotation (value_id); +CREATE INDEX annotation_type_definition_name_tag_idx ON annotation (type_definition_name, tag); +CREATE INDEX ix_annotation_anonymous_expression_id ON annotation (anonymous_expression_id); +CREATE INDEX ix_annotation_array_expression_id ON annotation (array_expression_id); +CREATE INDEX annotation_subset_definition_name_tag_idx ON annotation (subset_definition_name, tag); +CREATE INDEX annotation_anonymous_expression_id_tag_idx ON annotation (anonymous_expression_id, tag); +CREATE INDEX annotation_array_expression_id_tag_idx ON annotation (array_expression_id, tag); +CREATE INDEX ix_annotation_annotation_tag ON annotation (annotation_tag); +CREATE INDEX annotation_annotatable_id_tag_idx ON annotation (annotatable_id, tag); +CREATE INDEX annotation_definition_name_tag_idx ON annotation (definition_name, tag); +CREATE INDEX ix_annotation_annotatable_id ON annotation (annotatable_id); +CREATE INDEX ix_annotation_class_rule_id ON annotation (class_rule_id); CREATE TABLE structured_alias_category ( structured_alias_id INTEGER, @@ -7756,8 +7756,8 @@ CREATE TABLE structured_alias_contexts ( PRIMARY KEY (structured_alias_id, contexts), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_contexts_contexts ON structured_alias_contexts (contexts); CREATE INDEX ix_structured_alias_contexts_structured_alias_id ON structured_alias_contexts (structured_alias_id); +CREATE INDEX ix_structured_alias_contexts_contexts ON structured_alias_contexts (contexts); CREATE TABLE structured_alias_todos ( structured_alias_id INTEGER, @@ -7783,8 +7783,8 @@ CREATE TABLE structured_alias_comments ( PRIMARY KEY (structured_alias_id, comments), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_comments_structured_alias_id ON structured_alias_comments (structured_alias_id); CREATE INDEX ix_structured_alias_comments_comments ON structured_alias_comments (comments); +CREATE INDEX ix_structured_alias_comments_structured_alias_id ON structured_alias_comments (structured_alias_id); CREATE TABLE structured_alias_in_subset ( structured_alias_id INTEGER, @@ -7838,8 +7838,8 @@ CREATE TABLE structured_alias_close_mappings ( PRIMARY KEY (structured_alias_id, close_mappings), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_close_mappings_structured_alias_id ON structured_alias_close_mappings (structured_alias_id); CREATE INDEX ix_structured_alias_close_mappings_close_mappings ON structured_alias_close_mappings (close_mappings); +CREATE INDEX ix_structured_alias_close_mappings_structured_alias_id ON structured_alias_close_mappings (structured_alias_id); CREATE TABLE structured_alias_related_mappings ( structured_alias_id INTEGER, @@ -7865,8 +7865,8 @@ CREATE TABLE structured_alias_broad_mappings ( PRIMARY KEY (structured_alias_id, broad_mappings), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_broad_mappings_broad_mappings ON structured_alias_broad_mappings (broad_mappings); CREATE INDEX ix_structured_alias_broad_mappings_structured_alias_id ON structured_alias_broad_mappings (structured_alias_id); +CREATE INDEX ix_structured_alias_broad_mappings_broad_mappings ON structured_alias_broad_mappings (broad_mappings); CREATE TABLE structured_alias_contributors ( structured_alias_id INTEGER, @@ -7967,38 +7967,19 @@ CREATE TABLE extension ( FOREIGN KEY(annotation_tag) REFERENCES annotation (tag), FOREIGN KEY(value_id) REFERENCES "AnyValue" (id) ); -CREATE INDEX extension_slot_definition_name_tag_idx ON extension (slot_definition_name, tag); -CREATE INDEX ix_extension_pattern_expression_id ON extension (pattern_expression_id); -CREATE INDEX ix_extension_structured_alias_id ON extension (structured_alias_id); -CREATE INDEX extension_definition_name_tag_idx ON extension (definition_name, tag); -CREATE INDEX ix_extension_subset_definition_name ON extension (subset_definition_name); -CREATE INDEX ix_extension_anonymous_slot_expression_id ON extension (anonymous_slot_expression_id); -CREATE INDEX extension_extension_tag_tag_idx ON extension (extension_tag, tag); -CREATE INDEX extension_array_expression_id_tag_idx ON extension (array_expression_id, tag); -CREATE INDEX ix_extension_type_definition_name ON extension (type_definition_name); -CREATE INDEX extension_element_name_tag_idx ON extension (element_name, tag); -CREATE INDEX extension_anonymous_expression_id_tag_idx ON extension (anonymous_expression_id, tag); -CREATE INDEX ix_extension_dimension_expression_id ON extension (dimension_expression_id); -CREATE INDEX ix_extension_path_expression_id ON extension (path_expression_id); -CREATE INDEX ix_extension_value_id ON extension (value_id); -CREATE INDEX extension_permissible_value_text_tag_idx ON extension (permissible_value_text, tag); -CREATE INDEX extension_anonymous_class_expression_id_tag_idx ON extension (anonymous_class_expression_id, tag); -CREATE INDEX extension_import_expression_id_tag_idx ON extension (import_expression_id, tag); -CREATE INDEX ix_extension_schema_definition_name ON extension (schema_definition_name); CREATE INDEX ix_extension_annotation_tag ON extension (annotation_tag); -CREATE INDEX extension_enum_definition_name_tag_idx ON extension (enum_definition_name, tag); CREATE INDEX ix_extension_anonymous_expression_id ON extension (anonymous_expression_id); CREATE INDEX ix_extension_array_expression_id ON extension (array_expression_id); CREATE INDEX ix_extension_extensible_id ON extension (extensible_id); CREATE INDEX extension_extensible_id_tag_idx ON extension (extensible_id, tag); CREATE INDEX extension_dimension_expression_id_tag_idx ON extension (dimension_expression_id, tag); +CREATE INDEX ix_extension_element_name ON extension (element_name); CREATE INDEX ix_extension_extension_tag ON extension (extension_tag); CREATE INDEX extension_path_expression_id_tag_idx ON extension (path_expression_id, tag); -CREATE INDEX ix_extension_element_name ON extension (element_name); CREATE INDEX ix_extension_class_rule_id ON extension (class_rule_id); +CREATE INDEX extension_schema_definition_name_tag_idx ON extension (schema_definition_name, tag); CREATE INDEX extension_unique_key_unique_key_name_tag_idx ON extension (unique_key_unique_key_name, tag); CREATE INDEX ix_extension_type_mapping_framework ON extension (type_mapping_framework); -CREATE INDEX extension_schema_definition_name_tag_idx ON extension (schema_definition_name, tag); CREATE INDEX extension_class_definition_name_tag_idx ON extension (class_definition_name, tag); CREATE INDEX extension_enum_binding_id_tag_idx ON extension (enum_binding_id, tag); CREATE INDEX ix_extension_class_definition_name ON extension (class_definition_name); @@ -8007,15 +7988,34 @@ CREATE INDEX ix_extension_enum_binding_id ON extension (enum_binding_id); CREATE INDEX ix_extension_unique_key_unique_key_name ON extension (unique_key_unique_key_name); CREATE INDEX extension_pattern_expression_id_tag_idx ON extension (pattern_expression_id, tag); CREATE INDEX extension_anonymous_slot_expression_id_tag_idx ON extension (anonymous_slot_expression_id, tag); -CREATE INDEX ix_extension_enum_definition_name ON extension (enum_definition_name); -CREATE INDEX ix_extension_anonymous_class_expression_id ON extension (anonymous_class_expression_id); +CREATE INDEX extension_anonymous_class_expression_id_tag_idx ON extension (anonymous_class_expression_id, tag); CREATE INDEX ix_extension_permissible_value_text ON extension (permissible_value_text); CREATE INDEX extension_type_definition_name_tag_idx ON extension (type_definition_name, tag); -CREATE INDEX extension_class_rule_id_tag_idx ON extension (class_rule_id, tag); +CREATE INDEX ix_extension_enum_definition_name ON extension (enum_definition_name); +CREATE INDEX ix_extension_anonymous_class_expression_id ON extension (anonymous_class_expression_id); CREATE INDEX extension_type_mapping_framework_tag_idx ON extension (type_mapping_framework, tag); -CREATE INDEX ix_extension_tag ON extension (tag); CREATE INDEX extension_subset_definition_name_tag_idx ON extension (subset_definition_name, tag); +CREATE INDEX extension_class_rule_id_tag_idx ON extension (class_rule_id, tag); +CREATE INDEX ix_extension_tag ON extension (tag); CREATE INDEX extension_structured_alias_id_tag_idx ON extension (structured_alias_id, tag); CREATE INDEX ix_extension_import_expression_id ON extension (import_expression_id); CREATE INDEX ix_extension_slot_definition_name ON extension (slot_definition_name); +CREATE INDEX extension_enum_definition_name_tag_idx ON extension (enum_definition_name, tag); CREATE INDEX ix_extension_definition_name ON extension (definition_name); +CREATE INDEX extension_import_expression_id_tag_idx ON extension (import_expression_id, tag); +CREATE INDEX extension_slot_definition_name_tag_idx ON extension (slot_definition_name, tag); +CREATE INDEX extension_definition_name_tag_idx ON extension (definition_name, tag); +CREATE INDEX ix_extension_structured_alias_id ON extension (structured_alias_id); +CREATE INDEX ix_extension_anonymous_slot_expression_id ON extension (anonymous_slot_expression_id); +CREATE INDEX ix_extension_pattern_expression_id ON extension (pattern_expression_id); +CREATE INDEX ix_extension_subset_definition_name ON extension (subset_definition_name); +CREATE INDEX extension_extension_tag_tag_idx ON extension (extension_tag, tag); +CREATE INDEX extension_element_name_tag_idx ON extension (element_name, tag); +CREATE INDEX extension_array_expression_id_tag_idx ON extension (array_expression_id, tag); +CREATE INDEX ix_extension_type_definition_name ON extension (type_definition_name); +CREATE INDEX extension_anonymous_expression_id_tag_idx ON extension (anonymous_expression_id, tag); +CREATE INDEX extension_permissible_value_text_tag_idx ON extension (permissible_value_text, tag); +CREATE INDEX ix_extension_path_expression_id ON extension (path_expression_id); +CREATE INDEX ix_extension_dimension_expression_id ON extension (dimension_expression_id); +CREATE INDEX ix_extension_value_id ON extension (value_id); +CREATE INDEX ix_extension_schema_definition_name ON extension (schema_definition_name); diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlschema/meta.sql b/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlschema/meta.sql index a4c4350b34..369ebaa392 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlschema/meta.sql +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/sqlschema/meta.sql @@ -408,8 +408,8 @@ -- * Slot: list_elements_unique Description: If True, then there must be no duplicates in the elements of a multivalued slot -- * Slot: list_elements_ordered Description: If True, then the order of elements of a multivalued slot is guaranteed to be preserved. If False, the order may still be preserved but this is not guaranteed -- * Slot: shared Description: If True, then the relationship between the slot domain and range is many to one or many to many --- * Slot: key Description: True means that the key slot(s) uniquely identify the elements within a single container --- * Slot: identifier Description: True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container +-- * Slot: key Description: True means that the slot is the "singular unique key" (also known more simply as the "key slot") of its class. Such a slot uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the key slot within the container. +-- * Slot: identifier Description: True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its descendants) with the same value for the identifier slot anywhere in the document. -- * Slot: designates_type Description: True means that the key slot(s) is used to determine the instantiation (types) relation between objects and a ClassDefinition -- * Slot: alias Description: the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name. -- * Slot: owner Description: the "owner" of the slot. It is the class if it appears in the slots list, otherwise the declaring slot @@ -843,10 +843,10 @@ -- * Slot: annotatable_id Description: Autocreated FK slot -- * Slot: annotation_tag Description: Autocreated FK slot -- * Slot: value_id Description: the actual annotation --- # Class: UnitOfMeasure Description: A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). +-- # Class: UnitOfMeasure Description: A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). -- * Slot: id -- * Slot: symbol Description: name of the unit encoded as a symbol --- * Slot: abbreviation Description: An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt) +-- * Slot: abbreviation Description: An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt) -- * Slot: descriptive_name Description: the spelled out name of the unit, for example, meter -- * Slot: ucum_code Description: associates a QUDT unit with its UCUM code (case-sensitive). -- * Slot: derivation Description: Expression for deriving this unit from other units @@ -3019,12 +3019,12 @@ CREATE TABLE setting ( FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); +CREATE INDEX ix_setting_schema_definition_name ON setting (schema_definition_name); CREATE INDEX setting_schema_definition_name_setting_key_idx ON setting (schema_definition_name, setting_key); -CREATE INDEX ix_setting_setting_value ON setting (setting_value); CREATE INDEX ix_setting_setting_key ON setting (setting_key); +CREATE INDEX ix_setting_setting_value ON setting (setting_value); CREATE INDEX setting_import_expression_id_setting_key_idx ON setting (import_expression_id, setting_key); CREATE INDEX ix_setting_import_expression_id ON setting (import_expression_id); -CREATE INDEX ix_setting_schema_definition_name ON setting (schema_definition_name); CREATE TABLE prefix ( prefix_prefix TEXT NOT NULL, @@ -3034,10 +3034,10 @@ CREATE TABLE prefix ( UNIQUE (schema_definition_name, prefix_prefix), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_prefix_prefix_prefix ON prefix (prefix_prefix); CREATE INDEX ix_prefix_prefix_reference ON prefix (prefix_reference); -CREATE INDEX ix_prefix_schema_definition_name ON prefix (schema_definition_name); CREATE INDEX prefix_schema_definition_name_prefix_prefix_idx ON prefix (schema_definition_name, prefix_prefix); +CREATE INDEX ix_prefix_schema_definition_name ON prefix (schema_definition_name); +CREATE INDEX ix_prefix_prefix_prefix ON prefix (prefix_prefix); CREATE TABLE unique_key ( unique_key_name TEXT NOT NULL, @@ -3062,25 +3062,25 @@ CREATE TABLE unique_key ( UNIQUE (class_definition_name, unique_key_name), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); +CREATE INDEX ix_unique_key_in_language ON unique_key (in_language); +CREATE INDEX ix_unique_key_deprecated_element_has_possible_replacement ON unique_key (deprecated_element_has_possible_replacement); +CREATE INDEX ix_unique_key_deprecated ON unique_key (deprecated); +CREATE INDEX ix_unique_key_imported_from ON unique_key (imported_from); +CREATE INDEX ix_unique_key_created_on ON unique_key (created_on); +CREATE INDEX ix_unique_key_modified_by ON unique_key (modified_by); +CREATE INDEX ix_unique_key_rank ON unique_key (rank); +CREATE INDEX ix_unique_key_description ON unique_key (description); CREATE INDEX ix_unique_key_unique_key_name ON unique_key (unique_key_name); CREATE INDEX unique_key_class_definition_name_unique_key_name_idx ON unique_key (class_definition_name, unique_key_name); -CREATE INDEX ix_unique_key_class_definition_name ON unique_key (class_definition_name); -CREATE INDEX ix_unique_key_status ON unique_key (status); CREATE INDEX ix_unique_key_deprecated_element_has_exact_replacement ON unique_key (deprecated_element_has_exact_replacement); -CREATE INDEX ix_unique_key_created_by ON unique_key (created_by); -CREATE INDEX ix_unique_key_last_updated_on ON unique_key (last_updated_on); +CREATE INDEX ix_unique_key_class_definition_name ON unique_key (class_definition_name); +CREATE INDEX ix_unique_key_title ON unique_key (title); CREATE INDEX ix_unique_key_from_schema ON unique_key (from_schema); CREATE INDEX ix_unique_key_source ON unique_key (source); -CREATE INDEX ix_unique_key_title ON unique_key (title); -CREATE INDEX ix_unique_key_deprecated ON unique_key (deprecated); +CREATE INDEX ix_unique_key_created_by ON unique_key (created_by); +CREATE INDEX ix_unique_key_last_updated_on ON unique_key (last_updated_on); +CREATE INDEX ix_unique_key_status ON unique_key (status); CREATE INDEX ix_unique_key_consider_nulls_inequal ON unique_key (consider_nulls_inequal); -CREATE INDEX ix_unique_key_in_language ON unique_key (in_language); -CREATE INDEX ix_unique_key_modified_by ON unique_key (modified_by); -CREATE INDEX ix_unique_key_rank ON unique_key (rank); -CREATE INDEX ix_unique_key_deprecated_element_has_possible_replacement ON unique_key (deprecated_element_has_possible_replacement); -CREATE INDEX ix_unique_key_created_on ON unique_key (created_on); -CREATE INDEX ix_unique_key_imported_from ON unique_key (imported_from); -CREATE INDEX ix_unique_key_description ON unique_key (description); CREATE TABLE type_mapping ( framework TEXT NOT NULL, @@ -3104,22 +3104,22 @@ CREATE TABLE type_mapping ( PRIMARY KEY (framework, type, string_serialization, description, title, deprecated, from_schema, imported_from, source, in_language, deprecated_element_has_exact_replacement, deprecated_element_has_possible_replacement, created_by, created_on, last_updated_on, modified_by, status, rank), FOREIGN KEY(type) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_mapping_description ON type_mapping (description); CREATE INDEX ix_type_mapping_title ON type_mapping (title); +CREATE INDEX ix_type_mapping_description ON type_mapping (description); CREATE INDEX ix_type_mapping_string_serialization ON type_mapping (string_serialization); -CREATE INDEX ix_type_mapping_source ON type_mapping (source); -CREATE INDEX ix_type_mapping_in_language ON type_mapping (in_language); -CREATE INDEX ix_type_mapping_deprecated_element_has_exact_replacement ON type_mapping (deprecated_element_has_exact_replacement); -CREATE INDEX ix_type_mapping_deprecated_element_has_possible_replacement ON type_mapping (deprecated_element_has_possible_replacement); -CREATE INDEX ix_type_mapping_framework ON type_mapping (framework); CREATE INDEX ix_type_mapping_created_by ON type_mapping (created_by); CREATE INDEX ix_type_mapping_created_on ON type_mapping (created_on); CREATE INDEX ix_type_mapping_last_updated_on ON type_mapping (last_updated_on); CREATE INDEX ix_type_mapping_modified_by ON type_mapping (modified_by); CREATE INDEX ix_type_mapping_from_schema ON type_mapping (from_schema); -CREATE INDEX ix_type_mapping_imported_from ON type_mapping (imported_from); CREATE INDEX ix_type_mapping_status ON type_mapping (status); +CREATE INDEX ix_type_mapping_framework ON type_mapping (framework); +CREATE INDEX ix_type_mapping_imported_from ON type_mapping (imported_from); +CREATE INDEX ix_type_mapping_source ON type_mapping (source); CREATE INDEX ix_type_mapping_rank ON type_mapping (rank); +CREATE INDEX ix_type_mapping_in_language ON type_mapping (in_language); +CREATE INDEX ix_type_mapping_deprecated_element_has_exact_replacement ON type_mapping (deprecated_element_has_exact_replacement); +CREATE INDEX ix_type_mapping_deprecated_element_has_possible_replacement ON type_mapping (deprecated_element_has_possible_replacement); CREATE INDEX ix_type_mapping_type ON type_mapping (type); CREATE INDEX ix_type_mapping_deprecated ON type_mapping (deprecated); @@ -3129,8 +3129,8 @@ CREATE TABLE common_metadata_todos ( PRIMARY KEY (common_metadata_id, todos), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_todos_common_metadata_id ON common_metadata_todos (common_metadata_id); CREATE INDEX ix_common_metadata_todos_todos ON common_metadata_todos (todos); +CREATE INDEX ix_common_metadata_todos_common_metadata_id ON common_metadata_todos (common_metadata_id); CREATE TABLE common_metadata_notes ( common_metadata_id INTEGER, @@ -3147,8 +3147,8 @@ CREATE TABLE common_metadata_comments ( PRIMARY KEY (common_metadata_id, comments), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_comments_comments ON common_metadata_comments (comments); CREATE INDEX ix_common_metadata_comments_common_metadata_id ON common_metadata_comments (common_metadata_id); +CREATE INDEX ix_common_metadata_comments_comments ON common_metadata_comments (comments); CREATE TABLE common_metadata_see_also ( common_metadata_id INTEGER, @@ -3156,8 +3156,8 @@ CREATE TABLE common_metadata_see_also ( PRIMARY KEY (common_metadata_id, see_also), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_see_also_common_metadata_id ON common_metadata_see_also (common_metadata_id); CREATE INDEX ix_common_metadata_see_also_see_also ON common_metadata_see_also (see_also); +CREATE INDEX ix_common_metadata_see_also_common_metadata_id ON common_metadata_see_also (common_metadata_id); CREATE TABLE common_metadata_aliases ( common_metadata_id INTEGER, @@ -3174,8 +3174,8 @@ CREATE TABLE common_metadata_mappings ( PRIMARY KEY (common_metadata_id, mappings), FOREIGN KEY(common_metadata_id) REFERENCES common_metadata (id) ); -CREATE INDEX ix_common_metadata_mappings_mappings ON common_metadata_mappings (mappings); CREATE INDEX ix_common_metadata_mappings_common_metadata_id ON common_metadata_mappings (common_metadata_id); +CREATE INDEX ix_common_metadata_mappings_mappings ON common_metadata_mappings (mappings); CREATE TABLE common_metadata_exact_mappings ( common_metadata_id INTEGER, @@ -3255,8 +3255,8 @@ CREATE TABLE element_id_prefixes ( PRIMARY KEY (element_name, id_prefixes), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_id_prefixes_id_prefixes ON element_id_prefixes (id_prefixes); CREATE INDEX ix_element_id_prefixes_element_name ON element_id_prefixes (element_name); +CREATE INDEX ix_element_id_prefixes_id_prefixes ON element_id_prefixes (id_prefixes); CREATE TABLE element_implements ( element_name TEXT, @@ -3264,8 +3264,8 @@ CREATE TABLE element_implements ( PRIMARY KEY (element_name, implements), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_implements_implements ON element_implements (implements); CREATE INDEX ix_element_implements_element_name ON element_implements (element_name); +CREATE INDEX ix_element_implements_implements ON element_implements (implements); CREATE TABLE element_instantiates ( element_name TEXT, @@ -3273,8 +3273,8 @@ CREATE TABLE element_instantiates ( PRIMARY KEY (element_name, instantiates), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_instantiates_instantiates ON element_instantiates (instantiates); CREATE INDEX ix_element_instantiates_element_name ON element_instantiates (element_name); +CREATE INDEX ix_element_instantiates_instantiates ON element_instantiates (instantiates); CREATE TABLE element_todos ( element_name TEXT, @@ -3282,8 +3282,8 @@ CREATE TABLE element_todos ( PRIMARY KEY (element_name, todos), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_todos_todos ON element_todos (todos); CREATE INDEX ix_element_todos_element_name ON element_todos (element_name); +CREATE INDEX ix_element_todos_todos ON element_todos (todos); CREATE TABLE element_notes ( element_name TEXT, @@ -3291,8 +3291,8 @@ CREATE TABLE element_notes ( PRIMARY KEY (element_name, notes), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_notes_element_name ON element_notes (element_name); CREATE INDEX ix_element_notes_notes ON element_notes (notes); +CREATE INDEX ix_element_notes_element_name ON element_notes (element_name); CREATE TABLE element_comments ( element_name TEXT, @@ -3318,8 +3318,8 @@ CREATE TABLE element_aliases ( PRIMARY KEY (element_name, aliases), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_aliases_aliases ON element_aliases (aliases); CREATE INDEX ix_element_aliases_element_name ON element_aliases (element_name); +CREATE INDEX ix_element_aliases_aliases ON element_aliases (aliases); CREATE TABLE element_mappings ( element_name TEXT, @@ -3327,8 +3327,8 @@ CREATE TABLE element_mappings ( PRIMARY KEY (element_name, mappings), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_mappings_mappings ON element_mappings (mappings); CREATE INDEX ix_element_mappings_element_name ON element_mappings (element_name); +CREATE INDEX ix_element_mappings_mappings ON element_mappings (mappings); CREATE TABLE element_exact_mappings ( element_name TEXT, @@ -3345,8 +3345,8 @@ CREATE TABLE element_close_mappings ( PRIMARY KEY (element_name, close_mappings), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_close_mappings_element_name ON element_close_mappings (element_name); CREATE INDEX ix_element_close_mappings_close_mappings ON element_close_mappings (close_mappings); +CREATE INDEX ix_element_close_mappings_element_name ON element_close_mappings (element_name); CREATE TABLE element_related_mappings ( element_name TEXT, @@ -3354,8 +3354,8 @@ CREATE TABLE element_related_mappings ( PRIMARY KEY (element_name, related_mappings), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_related_mappings_element_name ON element_related_mappings (element_name); CREATE INDEX ix_element_related_mappings_related_mappings ON element_related_mappings (related_mappings); +CREATE INDEX ix_element_related_mappings_element_name ON element_related_mappings (element_name); CREATE TABLE element_narrow_mappings ( element_name TEXT, @@ -3372,8 +3372,8 @@ CREATE TABLE element_broad_mappings ( PRIMARY KEY (element_name, broad_mappings), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_broad_mappings_broad_mappings ON element_broad_mappings (broad_mappings); CREATE INDEX ix_element_broad_mappings_element_name ON element_broad_mappings (element_name); +CREATE INDEX ix_element_broad_mappings_broad_mappings ON element_broad_mappings (broad_mappings); CREATE TABLE element_contributors ( element_name TEXT, @@ -3381,8 +3381,8 @@ CREATE TABLE element_contributors ( PRIMARY KEY (element_name, contributors), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_contributors_contributors ON element_contributors (contributors); CREATE INDEX ix_element_contributors_element_name ON element_contributors (element_name); +CREATE INDEX ix_element_contributors_contributors ON element_contributors (contributors); CREATE TABLE element_category ( element_name TEXT, @@ -3390,8 +3390,8 @@ CREATE TABLE element_category ( PRIMARY KEY (element_name, category), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_category_category ON element_category (category); CREATE INDEX ix_element_category_element_name ON element_category (element_name); +CREATE INDEX ix_element_category_category ON element_category (category); CREATE TABLE element_keyword ( element_name TEXT, @@ -3399,8 +3399,8 @@ CREATE TABLE element_keyword ( PRIMARY KEY (element_name, keyword), FOREIGN KEY(element_name) REFERENCES element (name) ); -CREATE INDEX ix_element_keyword_element_name ON element_keyword (element_name); CREATE INDEX ix_element_keyword_keyword ON element_keyword (keyword); +CREATE INDEX ix_element_keyword_element_name ON element_keyword (element_name); CREATE TABLE schema_definition_imports ( schema_definition_name TEXT, @@ -3408,8 +3408,8 @@ CREATE TABLE schema_definition_imports ( PRIMARY KEY (schema_definition_name, imports), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_imports_imports ON schema_definition_imports (imports); CREATE INDEX ix_schema_definition_imports_schema_definition_name ON schema_definition_imports (schema_definition_name); +CREATE INDEX ix_schema_definition_imports_imports ON schema_definition_imports (imports); CREATE TABLE schema_definition_emit_prefixes ( schema_definition_name TEXT, @@ -3426,8 +3426,8 @@ CREATE TABLE schema_definition_default_curi_maps ( PRIMARY KEY (schema_definition_name, default_curi_maps), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_default_curi_maps_default_curi_maps ON schema_definition_default_curi_maps (default_curi_maps); CREATE INDEX ix_schema_definition_default_curi_maps_schema_definition_name ON schema_definition_default_curi_maps (schema_definition_name); +CREATE INDEX ix_schema_definition_default_curi_maps_default_curi_maps ON schema_definition_default_curi_maps (default_curi_maps); CREATE TABLE schema_definition_id_prefixes ( schema_definition_name TEXT, @@ -3453,8 +3453,8 @@ CREATE TABLE schema_definition_instantiates ( PRIMARY KEY (schema_definition_name, instantiates), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_instantiates_instantiates ON schema_definition_instantiates (instantiates); CREATE INDEX ix_schema_definition_instantiates_schema_definition_name ON schema_definition_instantiates (schema_definition_name); +CREATE INDEX ix_schema_definition_instantiates_instantiates ON schema_definition_instantiates (instantiates); CREATE TABLE schema_definition_todos ( schema_definition_name TEXT, @@ -3462,8 +3462,8 @@ CREATE TABLE schema_definition_todos ( PRIMARY KEY (schema_definition_name, todos), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_todos_schema_definition_name ON schema_definition_todos (schema_definition_name); CREATE INDEX ix_schema_definition_todos_todos ON schema_definition_todos (todos); +CREATE INDEX ix_schema_definition_todos_schema_definition_name ON schema_definition_todos (schema_definition_name); CREATE TABLE schema_definition_notes ( schema_definition_name TEXT, @@ -3471,8 +3471,8 @@ CREATE TABLE schema_definition_notes ( PRIMARY KEY (schema_definition_name, notes), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_notes_notes ON schema_definition_notes (notes); CREATE INDEX ix_schema_definition_notes_schema_definition_name ON schema_definition_notes (schema_definition_name); +CREATE INDEX ix_schema_definition_notes_notes ON schema_definition_notes (notes); CREATE TABLE schema_definition_comments ( schema_definition_name TEXT, @@ -3489,8 +3489,8 @@ CREATE TABLE schema_definition_see_also ( PRIMARY KEY (schema_definition_name, see_also), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_see_also_schema_definition_name ON schema_definition_see_also (schema_definition_name); CREATE INDEX ix_schema_definition_see_also_see_also ON schema_definition_see_also (see_also); +CREATE INDEX ix_schema_definition_see_also_schema_definition_name ON schema_definition_see_also (schema_definition_name); CREATE TABLE schema_definition_aliases ( schema_definition_name TEXT, @@ -3525,8 +3525,8 @@ CREATE TABLE schema_definition_close_mappings ( PRIMARY KEY (schema_definition_name, close_mappings), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_close_mappings_close_mappings ON schema_definition_close_mappings (close_mappings); CREATE INDEX ix_schema_definition_close_mappings_schema_definition_name ON schema_definition_close_mappings (schema_definition_name); +CREATE INDEX ix_schema_definition_close_mappings_close_mappings ON schema_definition_close_mappings (close_mappings); CREATE TABLE schema_definition_related_mappings ( schema_definition_name TEXT, @@ -3534,8 +3534,8 @@ CREATE TABLE schema_definition_related_mappings ( PRIMARY KEY (schema_definition_name, related_mappings), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_related_mappings_schema_definition_name ON schema_definition_related_mappings (schema_definition_name); CREATE INDEX ix_schema_definition_related_mappings_related_mappings ON schema_definition_related_mappings (related_mappings); +CREATE INDEX ix_schema_definition_related_mappings_schema_definition_name ON schema_definition_related_mappings (schema_definition_name); CREATE TABLE schema_definition_narrow_mappings ( schema_definition_name TEXT, @@ -3552,8 +3552,8 @@ CREATE TABLE schema_definition_broad_mappings ( PRIMARY KEY (schema_definition_name, broad_mappings), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_broad_mappings_broad_mappings ON schema_definition_broad_mappings (broad_mappings); CREATE INDEX ix_schema_definition_broad_mappings_schema_definition_name ON schema_definition_broad_mappings (schema_definition_name); +CREATE INDEX ix_schema_definition_broad_mappings_broad_mappings ON schema_definition_broad_mappings (broad_mappings); CREATE TABLE schema_definition_contributors ( schema_definition_name TEXT, @@ -3579,8 +3579,8 @@ CREATE TABLE schema_definition_keyword ( PRIMARY KEY (schema_definition_name, keyword), FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name) ); -CREATE INDEX ix_schema_definition_keyword_schema_definition_name ON schema_definition_keyword (schema_definition_name); CREATE INDEX ix_schema_definition_keyword_keyword ON schema_definition_keyword (keyword); +CREATE INDEX ix_schema_definition_keyword_schema_definition_name ON schema_definition_keyword (schema_definition_name); CREATE TABLE type_definition_union_of ( type_definition_name TEXT, @@ -3598,8 +3598,8 @@ CREATE TABLE type_definition_equals_string_in ( PRIMARY KEY (type_definition_name, equals_string_in), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_equals_string_in_type_definition_name ON type_definition_equals_string_in (type_definition_name); CREATE INDEX ix_type_definition_equals_string_in_equals_string_in ON type_definition_equals_string_in (equals_string_in); +CREATE INDEX ix_type_definition_equals_string_in_type_definition_name ON type_definition_equals_string_in (type_definition_name); CREATE TABLE type_definition_id_prefixes ( type_definition_name TEXT, @@ -3616,8 +3616,8 @@ CREATE TABLE type_definition_implements ( PRIMARY KEY (type_definition_name, implements), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_implements_type_definition_name ON type_definition_implements (type_definition_name); CREATE INDEX ix_type_definition_implements_implements ON type_definition_implements (implements); +CREATE INDEX ix_type_definition_implements_type_definition_name ON type_definition_implements (type_definition_name); CREATE TABLE type_definition_instantiates ( type_definition_name TEXT, @@ -3679,8 +3679,8 @@ CREATE TABLE type_definition_mappings ( PRIMARY KEY (type_definition_name, mappings), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_mappings_type_definition_name ON type_definition_mappings (type_definition_name); CREATE INDEX ix_type_definition_mappings_mappings ON type_definition_mappings (mappings); +CREATE INDEX ix_type_definition_mappings_type_definition_name ON type_definition_mappings (type_definition_name); CREATE TABLE type_definition_exact_mappings ( type_definition_name TEXT, @@ -3697,8 +3697,8 @@ CREATE TABLE type_definition_close_mappings ( PRIMARY KEY (type_definition_name, close_mappings), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_close_mappings_close_mappings ON type_definition_close_mappings (close_mappings); CREATE INDEX ix_type_definition_close_mappings_type_definition_name ON type_definition_close_mappings (type_definition_name); +CREATE INDEX ix_type_definition_close_mappings_close_mappings ON type_definition_close_mappings (close_mappings); CREATE TABLE type_definition_related_mappings ( type_definition_name TEXT, @@ -3706,8 +3706,8 @@ CREATE TABLE type_definition_related_mappings ( PRIMARY KEY (type_definition_name, related_mappings), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_related_mappings_type_definition_name ON type_definition_related_mappings (type_definition_name); CREATE INDEX ix_type_definition_related_mappings_related_mappings ON type_definition_related_mappings (related_mappings); +CREATE INDEX ix_type_definition_related_mappings_type_definition_name ON type_definition_related_mappings (type_definition_name); CREATE TABLE type_definition_narrow_mappings ( type_definition_name TEXT, @@ -3724,8 +3724,8 @@ CREATE TABLE type_definition_broad_mappings ( PRIMARY KEY (type_definition_name, broad_mappings), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_broad_mappings_broad_mappings ON type_definition_broad_mappings (broad_mappings); CREATE INDEX ix_type_definition_broad_mappings_type_definition_name ON type_definition_broad_mappings (type_definition_name); +CREATE INDEX ix_type_definition_broad_mappings_broad_mappings ON type_definition_broad_mappings (broad_mappings); CREATE TABLE type_definition_contributors ( type_definition_name TEXT, @@ -3733,8 +3733,8 @@ CREATE TABLE type_definition_contributors ( PRIMARY KEY (type_definition_name, contributors), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_contributors_type_definition_name ON type_definition_contributors (type_definition_name); CREATE INDEX ix_type_definition_contributors_contributors ON type_definition_contributors (contributors); +CREATE INDEX ix_type_definition_contributors_type_definition_name ON type_definition_contributors (type_definition_name); CREATE TABLE type_definition_category ( type_definition_name TEXT, @@ -3751,8 +3751,8 @@ CREATE TABLE type_definition_keyword ( PRIMARY KEY (type_definition_name, keyword), FOREIGN KEY(type_definition_name) REFERENCES type_definition (name) ); -CREATE INDEX ix_type_definition_keyword_keyword ON type_definition_keyword (keyword); CREATE INDEX ix_type_definition_keyword_type_definition_name ON type_definition_keyword (type_definition_name); +CREATE INDEX ix_type_definition_keyword_keyword ON type_definition_keyword (keyword); CREATE TABLE definition_mixins ( definition_name TEXT, @@ -3771,8 +3771,8 @@ CREATE TABLE definition_apply_to ( FOREIGN KEY(definition_name) REFERENCES definition (name), FOREIGN KEY(apply_to_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_apply_to_apply_to_name ON definition_apply_to (apply_to_name); CREATE INDEX ix_definition_apply_to_definition_name ON definition_apply_to (definition_name); +CREATE INDEX ix_definition_apply_to_apply_to_name ON definition_apply_to (apply_to_name); CREATE TABLE definition_values_from ( definition_name TEXT, @@ -3789,8 +3789,8 @@ CREATE TABLE definition_id_prefixes ( PRIMARY KEY (definition_name, id_prefixes), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_id_prefixes_definition_name ON definition_id_prefixes (definition_name); CREATE INDEX ix_definition_id_prefixes_id_prefixes ON definition_id_prefixes (id_prefixes); +CREATE INDEX ix_definition_id_prefixes_definition_name ON definition_id_prefixes (definition_name); CREATE TABLE definition_implements ( definition_name TEXT, @@ -3807,8 +3807,8 @@ CREATE TABLE definition_instantiates ( PRIMARY KEY (definition_name, instantiates), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_instantiates_definition_name ON definition_instantiates (definition_name); CREATE INDEX ix_definition_instantiates_instantiates ON definition_instantiates (instantiates); +CREATE INDEX ix_definition_instantiates_definition_name ON definition_instantiates (definition_name); CREATE TABLE definition_todos ( definition_name TEXT, @@ -3825,8 +3825,8 @@ CREATE TABLE definition_notes ( PRIMARY KEY (definition_name, notes), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_notes_notes ON definition_notes (notes); CREATE INDEX ix_definition_notes_definition_name ON definition_notes (definition_name); +CREATE INDEX ix_definition_notes_notes ON definition_notes (notes); CREATE TABLE definition_comments ( definition_name TEXT, @@ -3852,8 +3852,8 @@ CREATE TABLE definition_aliases ( PRIMARY KEY (definition_name, aliases), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_aliases_definition_name ON definition_aliases (definition_name); CREATE INDEX ix_definition_aliases_aliases ON definition_aliases (aliases); +CREATE INDEX ix_definition_aliases_definition_name ON definition_aliases (definition_name); CREATE TABLE definition_mappings ( definition_name TEXT, @@ -3879,8 +3879,8 @@ CREATE TABLE definition_close_mappings ( PRIMARY KEY (definition_name, close_mappings), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_close_mappings_close_mappings ON definition_close_mappings (close_mappings); CREATE INDEX ix_definition_close_mappings_definition_name ON definition_close_mappings (definition_name); +CREATE INDEX ix_definition_close_mappings_close_mappings ON definition_close_mappings (close_mappings); CREATE TABLE definition_related_mappings ( definition_name TEXT, @@ -3888,8 +3888,8 @@ CREATE TABLE definition_related_mappings ( PRIMARY KEY (definition_name, related_mappings), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_related_mappings_related_mappings ON definition_related_mappings (related_mappings); CREATE INDEX ix_definition_related_mappings_definition_name ON definition_related_mappings (definition_name); +CREATE INDEX ix_definition_related_mappings_related_mappings ON definition_related_mappings (related_mappings); CREATE TABLE definition_narrow_mappings ( definition_name TEXT, @@ -3906,8 +3906,8 @@ CREATE TABLE definition_broad_mappings ( PRIMARY KEY (definition_name, broad_mappings), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_broad_mappings_definition_name ON definition_broad_mappings (definition_name); CREATE INDEX ix_definition_broad_mappings_broad_mappings ON definition_broad_mappings (broad_mappings); +CREATE INDEX ix_definition_broad_mappings_definition_name ON definition_broad_mappings (definition_name); CREATE TABLE definition_contributors ( definition_name TEXT, @@ -3915,8 +3915,8 @@ CREATE TABLE definition_contributors ( PRIMARY KEY (definition_name, contributors), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_contributors_definition_name ON definition_contributors (definition_name); CREATE INDEX ix_definition_contributors_contributors ON definition_contributors (contributors); +CREATE INDEX ix_definition_contributors_definition_name ON definition_contributors (definition_name); CREATE TABLE definition_category ( definition_name TEXT, @@ -3924,8 +3924,8 @@ CREATE TABLE definition_category ( PRIMARY KEY (definition_name, category), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_category_category ON definition_category (category); CREATE INDEX ix_definition_category_definition_name ON definition_category (definition_name); +CREATE INDEX ix_definition_category_category ON definition_category (category); CREATE TABLE definition_keyword ( definition_name TEXT, @@ -3933,8 +3933,8 @@ CREATE TABLE definition_keyword ( PRIMARY KEY (definition_name, keyword), FOREIGN KEY(definition_name) REFERENCES definition (name) ); -CREATE INDEX ix_definition_keyword_keyword ON definition_keyword (keyword); CREATE INDEX ix_definition_keyword_definition_name ON definition_keyword (definition_name); +CREATE INDEX ix_definition_keyword_keyword ON definition_keyword (keyword); CREATE TABLE reachability_query_source_nodes ( reachability_query_id INTEGER, @@ -3951,8 +3951,8 @@ CREATE TABLE reachability_query_relationship_types ( PRIMARY KEY (reachability_query_id, relationship_types), FOREIGN KEY(reachability_query_id) REFERENCES reachability_query (id) ); -CREATE INDEX ix_reachability_query_relationship_types_relationship_types ON reachability_query_relationship_types (relationship_types); CREATE INDEX ix_reachability_query_relationship_types_reachability_query_id ON reachability_query_relationship_types (reachability_query_id); +CREATE INDEX ix_reachability_query_relationship_types_relationship_types ON reachability_query_relationship_types (relationship_types); CREATE TABLE anonymous_expression_todos ( anonymous_expression_id INTEGER, @@ -3969,8 +3969,8 @@ CREATE TABLE anonymous_expression_notes ( PRIMARY KEY (anonymous_expression_id, notes), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_notes_notes ON anonymous_expression_notes (notes); CREATE INDEX ix_anonymous_expression_notes_anonymous_expression_id ON anonymous_expression_notes (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_notes_notes ON anonymous_expression_notes (notes); CREATE TABLE anonymous_expression_comments ( anonymous_expression_id INTEGER, @@ -3987,8 +3987,8 @@ CREATE TABLE anonymous_expression_see_also ( PRIMARY KEY (anonymous_expression_id, see_also), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_see_also_see_also ON anonymous_expression_see_also (see_also); CREATE INDEX ix_anonymous_expression_see_also_anonymous_expression_id ON anonymous_expression_see_also (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_see_also_see_also ON anonymous_expression_see_also (see_also); CREATE TABLE anonymous_expression_aliases ( anonymous_expression_id INTEGER, @@ -4014,8 +4014,8 @@ CREATE TABLE anonymous_expression_exact_mappings ( PRIMARY KEY (anonymous_expression_id, exact_mappings), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_exact_mappings_exact_mappings ON anonymous_expression_exact_mappings (exact_mappings); CREATE INDEX ix_anonymous_expression_exact_mappings_anonymous_expression_id ON anonymous_expression_exact_mappings (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_exact_mappings_exact_mappings ON anonymous_expression_exact_mappings (exact_mappings); CREATE TABLE anonymous_expression_close_mappings ( anonymous_expression_id INTEGER, @@ -4032,8 +4032,8 @@ CREATE TABLE anonymous_expression_related_mappings ( PRIMARY KEY (anonymous_expression_id, related_mappings), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_related_mappings_anonymous_expression_id ON anonymous_expression_related_mappings (anonymous_expression_id); CREATE INDEX ix_anonymous_expression_related_mappings_related_mappings ON anonymous_expression_related_mappings (related_mappings); +CREATE INDEX ix_anonymous_expression_related_mappings_anonymous_expression_id ON anonymous_expression_related_mappings (anonymous_expression_id); CREATE TABLE anonymous_expression_narrow_mappings ( anonymous_expression_id INTEGER, @@ -4041,8 +4041,8 @@ CREATE TABLE anonymous_expression_narrow_mappings ( PRIMARY KEY (anonymous_expression_id, narrow_mappings), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_narrow_mappings_narrow_mappings ON anonymous_expression_narrow_mappings (narrow_mappings); CREATE INDEX ix_anonymous_expression_narrow_mappings_anonymous_expression_id ON anonymous_expression_narrow_mappings (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_narrow_mappings_narrow_mappings ON anonymous_expression_narrow_mappings (narrow_mappings); CREATE TABLE anonymous_expression_broad_mappings ( anonymous_expression_id INTEGER, @@ -4050,8 +4050,8 @@ CREATE TABLE anonymous_expression_broad_mappings ( PRIMARY KEY (anonymous_expression_id, broad_mappings), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_broad_mappings_broad_mappings ON anonymous_expression_broad_mappings (broad_mappings); CREATE INDEX ix_anonymous_expression_broad_mappings_anonymous_expression_id ON anonymous_expression_broad_mappings (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_broad_mappings_broad_mappings ON anonymous_expression_broad_mappings (broad_mappings); CREATE TABLE anonymous_expression_contributors ( anonymous_expression_id INTEGER, @@ -4068,8 +4068,8 @@ CREATE TABLE anonymous_expression_category ( PRIMARY KEY (anonymous_expression_id, category), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_category_anonymous_expression_id ON anonymous_expression_category (anonymous_expression_id); CREATE INDEX ix_anonymous_expression_category_category ON anonymous_expression_category (category); +CREATE INDEX ix_anonymous_expression_category_anonymous_expression_id ON anonymous_expression_category (anonymous_expression_id); CREATE TABLE anonymous_expression_keyword ( anonymous_expression_id INTEGER, @@ -4077,8 +4077,8 @@ CREATE TABLE anonymous_expression_keyword ( PRIMARY KEY (anonymous_expression_id, keyword), FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id) ); -CREATE INDEX ix_anonymous_expression_keyword_keyword ON anonymous_expression_keyword (keyword); CREATE INDEX ix_anonymous_expression_keyword_anonymous_expression_id ON anonymous_expression_keyword (anonymous_expression_id); +CREATE INDEX ix_anonymous_expression_keyword_keyword ON anonymous_expression_keyword (keyword); CREATE TABLE path_expression_none_of ( path_expression_id INTEGER, @@ -4097,8 +4097,8 @@ CREATE TABLE path_expression_any_of ( FOREIGN KEY(path_expression_id) REFERENCES path_expression (id), FOREIGN KEY(any_of_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_any_of_any_of_id ON path_expression_any_of (any_of_id); CREATE INDEX ix_path_expression_any_of_path_expression_id ON path_expression_any_of (path_expression_id); +CREATE INDEX ix_path_expression_any_of_any_of_id ON path_expression_any_of (any_of_id); CREATE TABLE path_expression_all_of ( path_expression_id INTEGER, @@ -4126,8 +4126,8 @@ CREATE TABLE path_expression_todos ( PRIMARY KEY (path_expression_id, todos), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_todos_todos ON path_expression_todos (todos); CREATE INDEX ix_path_expression_todos_path_expression_id ON path_expression_todos (path_expression_id); +CREATE INDEX ix_path_expression_todos_todos ON path_expression_todos (todos); CREATE TABLE path_expression_notes ( path_expression_id INTEGER, @@ -4135,8 +4135,8 @@ CREATE TABLE path_expression_notes ( PRIMARY KEY (path_expression_id, notes), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_notes_path_expression_id ON path_expression_notes (path_expression_id); CREATE INDEX ix_path_expression_notes_notes ON path_expression_notes (notes); +CREATE INDEX ix_path_expression_notes_path_expression_id ON path_expression_notes (path_expression_id); CREATE TABLE path_expression_comments ( path_expression_id INTEGER, @@ -4153,8 +4153,8 @@ CREATE TABLE path_expression_see_also ( PRIMARY KEY (path_expression_id, see_also), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_see_also_path_expression_id ON path_expression_see_also (path_expression_id); CREATE INDEX ix_path_expression_see_also_see_also ON path_expression_see_also (see_also); +CREATE INDEX ix_path_expression_see_also_path_expression_id ON path_expression_see_also (path_expression_id); CREATE TABLE path_expression_aliases ( path_expression_id INTEGER, @@ -4171,8 +4171,8 @@ CREATE TABLE path_expression_mappings ( PRIMARY KEY (path_expression_id, mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_mappings_mappings ON path_expression_mappings (mappings); CREATE INDEX ix_path_expression_mappings_path_expression_id ON path_expression_mappings (path_expression_id); +CREATE INDEX ix_path_expression_mappings_mappings ON path_expression_mappings (mappings); CREATE TABLE path_expression_exact_mappings ( path_expression_id INTEGER, @@ -4180,8 +4180,8 @@ CREATE TABLE path_expression_exact_mappings ( PRIMARY KEY (path_expression_id, exact_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_exact_mappings_path_expression_id ON path_expression_exact_mappings (path_expression_id); CREATE INDEX ix_path_expression_exact_mappings_exact_mappings ON path_expression_exact_mappings (exact_mappings); +CREATE INDEX ix_path_expression_exact_mappings_path_expression_id ON path_expression_exact_mappings (path_expression_id); CREATE TABLE path_expression_close_mappings ( path_expression_id INTEGER, @@ -4189,8 +4189,8 @@ CREATE TABLE path_expression_close_mappings ( PRIMARY KEY (path_expression_id, close_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_close_mappings_close_mappings ON path_expression_close_mappings (close_mappings); CREATE INDEX ix_path_expression_close_mappings_path_expression_id ON path_expression_close_mappings (path_expression_id); +CREATE INDEX ix_path_expression_close_mappings_close_mappings ON path_expression_close_mappings (close_mappings); CREATE TABLE path_expression_related_mappings ( path_expression_id INTEGER, @@ -4207,8 +4207,8 @@ CREATE TABLE path_expression_narrow_mappings ( PRIMARY KEY (path_expression_id, narrow_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_narrow_mappings_path_expression_id ON path_expression_narrow_mappings (path_expression_id); CREATE INDEX ix_path_expression_narrow_mappings_narrow_mappings ON path_expression_narrow_mappings (narrow_mappings); +CREATE INDEX ix_path_expression_narrow_mappings_path_expression_id ON path_expression_narrow_mappings (path_expression_id); CREATE TABLE path_expression_broad_mappings ( path_expression_id INTEGER, @@ -4216,8 +4216,8 @@ CREATE TABLE path_expression_broad_mappings ( PRIMARY KEY (path_expression_id, broad_mappings), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_broad_mappings_broad_mappings ON path_expression_broad_mappings (broad_mappings); CREATE INDEX ix_path_expression_broad_mappings_path_expression_id ON path_expression_broad_mappings (path_expression_id); +CREATE INDEX ix_path_expression_broad_mappings_broad_mappings ON path_expression_broad_mappings (broad_mappings); CREATE TABLE path_expression_contributors ( path_expression_id INTEGER, @@ -4225,8 +4225,8 @@ CREATE TABLE path_expression_contributors ( PRIMARY KEY (path_expression_id, contributors), FOREIGN KEY(path_expression_id) REFERENCES path_expression (id) ); -CREATE INDEX ix_path_expression_contributors_contributors ON path_expression_contributors (contributors); CREATE INDEX ix_path_expression_contributors_path_expression_id ON path_expression_contributors (path_expression_id); +CREATE INDEX ix_path_expression_contributors_contributors ON path_expression_contributors (contributors); CREATE TABLE path_expression_category ( path_expression_id INTEGER, @@ -4262,8 +4262,8 @@ CREATE TABLE anonymous_slot_expression_none_of ( FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_none_of_anonymous_slot_expression_id ON anonymous_slot_expression_none_of (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_none_of_none_of_id ON anonymous_slot_expression_none_of (none_of_id); +CREATE INDEX ix_anonymous_slot_expression_none_of_anonymous_slot_expression_id ON anonymous_slot_expression_none_of (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_exactly_one_of ( anonymous_slot_expression_id INTEGER, @@ -4272,8 +4272,8 @@ CREATE TABLE anonymous_slot_expression_exactly_one_of ( FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_exactly_one_of_exactly_one_of_id ON anonymous_slot_expression_exactly_one_of (exactly_one_of_id); CREATE INDEX ix_anonymous_slot_expression_exactly_one_of_anonymous_slot_expression_id ON anonymous_slot_expression_exactly_one_of (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_exactly_one_of_exactly_one_of_id ON anonymous_slot_expression_exactly_one_of (exactly_one_of_id); CREATE TABLE anonymous_slot_expression_any_of ( anonymous_slot_expression_id INTEGER, @@ -4282,8 +4282,8 @@ CREATE TABLE anonymous_slot_expression_any_of ( FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id), FOREIGN KEY(any_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_any_of_anonymous_slot_expression_id ON anonymous_slot_expression_any_of (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_any_of_any_of_id ON anonymous_slot_expression_any_of (any_of_id); +CREATE INDEX ix_anonymous_slot_expression_any_of_anonymous_slot_expression_id ON anonymous_slot_expression_any_of (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_all_of ( anonymous_slot_expression_id INTEGER, @@ -4301,8 +4301,8 @@ CREATE TABLE anonymous_slot_expression_todos ( PRIMARY KEY (anonymous_slot_expression_id, todos), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_todos_anonymous_slot_expression_id ON anonymous_slot_expression_todos (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_todos_todos ON anonymous_slot_expression_todos (todos); +CREATE INDEX ix_anonymous_slot_expression_todos_anonymous_slot_expression_id ON anonymous_slot_expression_todos (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_notes ( anonymous_slot_expression_id INTEGER, @@ -4337,8 +4337,8 @@ CREATE TABLE anonymous_slot_expression_aliases ( PRIMARY KEY (anonymous_slot_expression_id, aliases), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_aliases_anonymous_slot_expression_id ON anonymous_slot_expression_aliases (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_aliases_aliases ON anonymous_slot_expression_aliases (aliases); +CREATE INDEX ix_anonymous_slot_expression_aliases_anonymous_slot_expression_id ON anonymous_slot_expression_aliases (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_mappings ( anonymous_slot_expression_id INTEGER, @@ -4346,8 +4346,8 @@ CREATE TABLE anonymous_slot_expression_mappings ( PRIMARY KEY (anonymous_slot_expression_id, mappings), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_mappings (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_mappings_mappings ON anonymous_slot_expression_mappings (mappings); +CREATE INDEX ix_anonymous_slot_expression_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_mappings (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_exact_mappings ( anonymous_slot_expression_id INTEGER, @@ -4355,8 +4355,8 @@ CREATE TABLE anonymous_slot_expression_exact_mappings ( PRIMARY KEY (anonymous_slot_expression_id, exact_mappings), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_exact_mappings_exact_mappings ON anonymous_slot_expression_exact_mappings (exact_mappings); CREATE INDEX ix_anonymous_slot_expression_exact_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_exact_mappings (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_exact_mappings_exact_mappings ON anonymous_slot_expression_exact_mappings (exact_mappings); CREATE TABLE anonymous_slot_expression_close_mappings ( anonymous_slot_expression_id INTEGER, @@ -4364,8 +4364,8 @@ CREATE TABLE anonymous_slot_expression_close_mappings ( PRIMARY KEY (anonymous_slot_expression_id, close_mappings), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_close_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_close_mappings (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_close_mappings_close_mappings ON anonymous_slot_expression_close_mappings (close_mappings); +CREATE INDEX ix_anonymous_slot_expression_close_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_close_mappings (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_related_mappings ( anonymous_slot_expression_id INTEGER, @@ -4373,8 +4373,8 @@ CREATE TABLE anonymous_slot_expression_related_mappings ( PRIMARY KEY (anonymous_slot_expression_id, related_mappings), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_related_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_related_mappings (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_related_mappings_related_mappings ON anonymous_slot_expression_related_mappings (related_mappings); +CREATE INDEX ix_anonymous_slot_expression_related_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_related_mappings (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_narrow_mappings ( anonymous_slot_expression_id INTEGER, @@ -4382,8 +4382,8 @@ CREATE TABLE anonymous_slot_expression_narrow_mappings ( PRIMARY KEY (anonymous_slot_expression_id, narrow_mappings), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_narrow_mappings_narrow_mappings ON anonymous_slot_expression_narrow_mappings (narrow_mappings); CREATE INDEX ix_anonymous_slot_expression_narrow_mappings_anonymous_slot_expression_id ON anonymous_slot_expression_narrow_mappings (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_narrow_mappings_narrow_mappings ON anonymous_slot_expression_narrow_mappings (narrow_mappings); CREATE TABLE anonymous_slot_expression_broad_mappings ( anonymous_slot_expression_id INTEGER, @@ -4400,8 +4400,8 @@ CREATE TABLE anonymous_slot_expression_contributors ( PRIMARY KEY (anonymous_slot_expression_id, contributors), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_contributors_anonymous_slot_expression_id ON anonymous_slot_expression_contributors (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_contributors_contributors ON anonymous_slot_expression_contributors (contributors); +CREATE INDEX ix_anonymous_slot_expression_contributors_anonymous_slot_expression_id ON anonymous_slot_expression_contributors (anonymous_slot_expression_id); CREATE TABLE anonymous_slot_expression_category ( anonymous_slot_expression_id INTEGER, @@ -4409,8 +4409,8 @@ CREATE TABLE anonymous_slot_expression_category ( PRIMARY KEY (anonymous_slot_expression_id, category), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_category_category ON anonymous_slot_expression_category (category); CREATE INDEX ix_anonymous_slot_expression_category_anonymous_slot_expression_id ON anonymous_slot_expression_category (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_category_category ON anonymous_slot_expression_category (category); CREATE TABLE anonymous_slot_expression_keyword ( anonymous_slot_expression_id INTEGER, @@ -4418,8 +4418,8 @@ CREATE TABLE anonymous_slot_expression_keyword ( PRIMARY KEY (anonymous_slot_expression_id, keyword), FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_anonymous_slot_expression_keyword_keyword ON anonymous_slot_expression_keyword (keyword); CREATE INDEX ix_anonymous_slot_expression_keyword_anonymous_slot_expression_id ON anonymous_slot_expression_keyword (anonymous_slot_expression_id); +CREATE INDEX ix_anonymous_slot_expression_keyword_keyword ON anonymous_slot_expression_keyword (keyword); CREATE TABLE slot_definition_domain_of ( slot_definition_name TEXT, @@ -4457,8 +4457,8 @@ CREATE TABLE slot_definition_equals_string_in ( PRIMARY KEY (slot_definition_name, equals_string_in), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_equals_string_in_equals_string_in ON slot_definition_equals_string_in (equals_string_in); CREATE INDEX ix_slot_definition_equals_string_in_slot_definition_name ON slot_definition_equals_string_in (slot_definition_name); +CREATE INDEX ix_slot_definition_equals_string_in_equals_string_in ON slot_definition_equals_string_in (equals_string_in); CREATE TABLE slot_definition_none_of ( slot_definition_name TEXT, @@ -4467,8 +4467,8 @@ CREATE TABLE slot_definition_none_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(none_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_definition_none_of_none_of_id ON slot_definition_none_of (none_of_id); CREATE INDEX ix_slot_definition_none_of_slot_definition_name ON slot_definition_none_of (slot_definition_name); +CREATE INDEX ix_slot_definition_none_of_none_of_id ON slot_definition_none_of (none_of_id); CREATE TABLE slot_definition_exactly_one_of ( slot_definition_name TEXT, @@ -4477,8 +4477,8 @@ CREATE TABLE slot_definition_exactly_one_of ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_slot_expression (id) ); -CREATE INDEX ix_slot_definition_exactly_one_of_exactly_one_of_id ON slot_definition_exactly_one_of (exactly_one_of_id); CREATE INDEX ix_slot_definition_exactly_one_of_slot_definition_name ON slot_definition_exactly_one_of (slot_definition_name); +CREATE INDEX ix_slot_definition_exactly_one_of_exactly_one_of_id ON slot_definition_exactly_one_of (exactly_one_of_id); CREATE TABLE slot_definition_any_of ( slot_definition_name TEXT, @@ -4507,8 +4507,8 @@ CREATE TABLE slot_definition_mixins ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(mixins_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_mixins_slot_definition_name ON slot_definition_mixins (slot_definition_name); CREATE INDEX ix_slot_definition_mixins_mixins_name ON slot_definition_mixins (mixins_name); +CREATE INDEX ix_slot_definition_mixins_slot_definition_name ON slot_definition_mixins (slot_definition_name); CREATE TABLE slot_definition_apply_to ( slot_definition_name TEXT, @@ -4517,8 +4517,8 @@ CREATE TABLE slot_definition_apply_to ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(apply_to_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_apply_to_slot_definition_name ON slot_definition_apply_to (slot_definition_name); CREATE INDEX ix_slot_definition_apply_to_apply_to_name ON slot_definition_apply_to (apply_to_name); +CREATE INDEX ix_slot_definition_apply_to_slot_definition_name ON slot_definition_apply_to (slot_definition_name); CREATE TABLE slot_definition_values_from ( slot_definition_name TEXT, @@ -4526,8 +4526,8 @@ CREATE TABLE slot_definition_values_from ( PRIMARY KEY (slot_definition_name, values_from), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_values_from_values_from ON slot_definition_values_from (values_from); CREATE INDEX ix_slot_definition_values_from_slot_definition_name ON slot_definition_values_from (slot_definition_name); +CREATE INDEX ix_slot_definition_values_from_values_from ON slot_definition_values_from (values_from); CREATE TABLE slot_definition_id_prefixes ( slot_definition_name TEXT, @@ -4562,8 +4562,8 @@ CREATE TABLE slot_definition_todos ( PRIMARY KEY (slot_definition_name, todos), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_todos_slot_definition_name ON slot_definition_todos (slot_definition_name); CREATE INDEX ix_slot_definition_todos_todos ON slot_definition_todos (todos); +CREATE INDEX ix_slot_definition_todos_slot_definition_name ON slot_definition_todos (slot_definition_name); CREATE TABLE slot_definition_notes ( slot_definition_name TEXT, @@ -4580,8 +4580,8 @@ CREATE TABLE slot_definition_comments ( PRIMARY KEY (slot_definition_name, comments), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_comments_comments ON slot_definition_comments (comments); CREATE INDEX ix_slot_definition_comments_slot_definition_name ON slot_definition_comments (slot_definition_name); +CREATE INDEX ix_slot_definition_comments_comments ON slot_definition_comments (comments); CREATE TABLE slot_definition_see_also ( slot_definition_name TEXT, @@ -4589,8 +4589,8 @@ CREATE TABLE slot_definition_see_also ( PRIMARY KEY (slot_definition_name, see_also), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_see_also_see_also ON slot_definition_see_also (see_also); CREATE INDEX ix_slot_definition_see_also_slot_definition_name ON slot_definition_see_also (slot_definition_name); +CREATE INDEX ix_slot_definition_see_also_see_also ON slot_definition_see_also (see_also); CREATE TABLE slot_definition_aliases ( slot_definition_name TEXT, @@ -4598,8 +4598,8 @@ CREATE TABLE slot_definition_aliases ( PRIMARY KEY (slot_definition_name, aliases), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_aliases_slot_definition_name ON slot_definition_aliases (slot_definition_name); CREATE INDEX ix_slot_definition_aliases_aliases ON slot_definition_aliases (aliases); +CREATE INDEX ix_slot_definition_aliases_slot_definition_name ON slot_definition_aliases (slot_definition_name); CREATE TABLE slot_definition_mappings ( slot_definition_name TEXT, @@ -4616,8 +4616,8 @@ CREATE TABLE slot_definition_exact_mappings ( PRIMARY KEY (slot_definition_name, exact_mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_exact_mappings_exact_mappings ON slot_definition_exact_mappings (exact_mappings); CREATE INDEX ix_slot_definition_exact_mappings_slot_definition_name ON slot_definition_exact_mappings (slot_definition_name); +CREATE INDEX ix_slot_definition_exact_mappings_exact_mappings ON slot_definition_exact_mappings (exact_mappings); CREATE TABLE slot_definition_close_mappings ( slot_definition_name TEXT, @@ -4625,8 +4625,8 @@ CREATE TABLE slot_definition_close_mappings ( PRIMARY KEY (slot_definition_name, close_mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_close_mappings_close_mappings ON slot_definition_close_mappings (close_mappings); CREATE INDEX ix_slot_definition_close_mappings_slot_definition_name ON slot_definition_close_mappings (slot_definition_name); +CREATE INDEX ix_slot_definition_close_mappings_close_mappings ON slot_definition_close_mappings (close_mappings); CREATE TABLE slot_definition_related_mappings ( slot_definition_name TEXT, @@ -4634,8 +4634,8 @@ CREATE TABLE slot_definition_related_mappings ( PRIMARY KEY (slot_definition_name, related_mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_related_mappings_slot_definition_name ON slot_definition_related_mappings (slot_definition_name); CREATE INDEX ix_slot_definition_related_mappings_related_mappings ON slot_definition_related_mappings (related_mappings); +CREATE INDEX ix_slot_definition_related_mappings_slot_definition_name ON slot_definition_related_mappings (slot_definition_name); CREATE TABLE slot_definition_narrow_mappings ( slot_definition_name TEXT, @@ -4643,8 +4643,8 @@ CREATE TABLE slot_definition_narrow_mappings ( PRIMARY KEY (slot_definition_name, narrow_mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_narrow_mappings_narrow_mappings ON slot_definition_narrow_mappings (narrow_mappings); CREATE INDEX ix_slot_definition_narrow_mappings_slot_definition_name ON slot_definition_narrow_mappings (slot_definition_name); +CREATE INDEX ix_slot_definition_narrow_mappings_narrow_mappings ON slot_definition_narrow_mappings (narrow_mappings); CREATE TABLE slot_definition_broad_mappings ( slot_definition_name TEXT, @@ -4652,8 +4652,8 @@ CREATE TABLE slot_definition_broad_mappings ( PRIMARY KEY (slot_definition_name, broad_mappings), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_broad_mappings_broad_mappings ON slot_definition_broad_mappings (broad_mappings); CREATE INDEX ix_slot_definition_broad_mappings_slot_definition_name ON slot_definition_broad_mappings (slot_definition_name); +CREATE INDEX ix_slot_definition_broad_mappings_broad_mappings ON slot_definition_broad_mappings (broad_mappings); CREATE TABLE slot_definition_contributors ( slot_definition_name TEXT, @@ -4661,8 +4661,8 @@ CREATE TABLE slot_definition_contributors ( PRIMARY KEY (slot_definition_name, contributors), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_contributors_slot_definition_name ON slot_definition_contributors (slot_definition_name); CREATE INDEX ix_slot_definition_contributors_contributors ON slot_definition_contributors (contributors); +CREATE INDEX ix_slot_definition_contributors_slot_definition_name ON slot_definition_contributors (slot_definition_name); CREATE TABLE slot_definition_category ( slot_definition_name TEXT, @@ -4679,8 +4679,8 @@ CREATE TABLE slot_definition_keyword ( PRIMARY KEY (slot_definition_name, keyword), FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_slot_definition_keyword_keyword ON slot_definition_keyword (keyword); CREATE INDEX ix_slot_definition_keyword_slot_definition_name ON slot_definition_keyword (slot_definition_name); +CREATE INDEX ix_slot_definition_keyword_keyword ON slot_definition_keyword (keyword); CREATE TABLE class_expression_any_of ( class_expression_id INTEGER, @@ -4739,8 +4739,8 @@ CREATE TABLE anonymous_class_expression_exactly_one_of ( FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_exactly_one_of_anonymous_class_expression_id ON anonymous_class_expression_exactly_one_of (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_exactly_one_of_exactly_one_of_id ON anonymous_class_expression_exactly_one_of (exactly_one_of_id); +CREATE INDEX ix_anonymous_class_expression_exactly_one_of_anonymous_class_expression_id ON anonymous_class_expression_exactly_one_of (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_none_of ( anonymous_class_expression_id INTEGER, @@ -4759,8 +4759,8 @@ CREATE TABLE anonymous_class_expression_all_of ( FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id), FOREIGN KEY(all_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_all_of_all_of_id ON anonymous_class_expression_all_of (all_of_id); CREATE INDEX ix_anonymous_class_expression_all_of_anonymous_class_expression_id ON anonymous_class_expression_all_of (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_all_of_all_of_id ON anonymous_class_expression_all_of (all_of_id); CREATE TABLE anonymous_class_expression_todos ( anonymous_class_expression_id INTEGER, @@ -4777,8 +4777,8 @@ CREATE TABLE anonymous_class_expression_notes ( PRIMARY KEY (anonymous_class_expression_id, notes), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_notes_anonymous_class_expression_id ON anonymous_class_expression_notes (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_notes_notes ON anonymous_class_expression_notes (notes); +CREATE INDEX ix_anonymous_class_expression_notes_anonymous_class_expression_id ON anonymous_class_expression_notes (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_comments ( anonymous_class_expression_id INTEGER, @@ -4804,8 +4804,8 @@ CREATE TABLE anonymous_class_expression_aliases ( PRIMARY KEY (anonymous_class_expression_id, aliases), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_aliases_aliases ON anonymous_class_expression_aliases (aliases); CREATE INDEX ix_anonymous_class_expression_aliases_anonymous_class_expression_id ON anonymous_class_expression_aliases (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_aliases_aliases ON anonymous_class_expression_aliases (aliases); CREATE TABLE anonymous_class_expression_mappings ( anonymous_class_expression_id INTEGER, @@ -4822,8 +4822,8 @@ CREATE TABLE anonymous_class_expression_exact_mappings ( PRIMARY KEY (anonymous_class_expression_id, exact_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_exact_mappings_anonymous_class_expression_id ON anonymous_class_expression_exact_mappings (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_exact_mappings_exact_mappings ON anonymous_class_expression_exact_mappings (exact_mappings); +CREATE INDEX ix_anonymous_class_expression_exact_mappings_anonymous_class_expression_id ON anonymous_class_expression_exact_mappings (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_close_mappings ( anonymous_class_expression_id INTEGER, @@ -4831,8 +4831,8 @@ CREATE TABLE anonymous_class_expression_close_mappings ( PRIMARY KEY (anonymous_class_expression_id, close_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_close_mappings_close_mappings ON anonymous_class_expression_close_mappings (close_mappings); CREATE INDEX ix_anonymous_class_expression_close_mappings_anonymous_class_expression_id ON anonymous_class_expression_close_mappings (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_close_mappings_close_mappings ON anonymous_class_expression_close_mappings (close_mappings); CREATE TABLE anonymous_class_expression_related_mappings ( anonymous_class_expression_id INTEGER, @@ -4849,8 +4849,8 @@ CREATE TABLE anonymous_class_expression_narrow_mappings ( PRIMARY KEY (anonymous_class_expression_id, narrow_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_narrow_mappings_anonymous_class_expression_id ON anonymous_class_expression_narrow_mappings (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_narrow_mappings_narrow_mappings ON anonymous_class_expression_narrow_mappings (narrow_mappings); +CREATE INDEX ix_anonymous_class_expression_narrow_mappings_anonymous_class_expression_id ON anonymous_class_expression_narrow_mappings (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_broad_mappings ( anonymous_class_expression_id INTEGER, @@ -4858,8 +4858,8 @@ CREATE TABLE anonymous_class_expression_broad_mappings ( PRIMARY KEY (anonymous_class_expression_id, broad_mappings), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_broad_mappings_broad_mappings ON anonymous_class_expression_broad_mappings (broad_mappings); CREATE INDEX ix_anonymous_class_expression_broad_mappings_anonymous_class_expression_id ON anonymous_class_expression_broad_mappings (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_broad_mappings_broad_mappings ON anonymous_class_expression_broad_mappings (broad_mappings); CREATE TABLE anonymous_class_expression_contributors ( anonymous_class_expression_id INTEGER, @@ -4867,8 +4867,8 @@ CREATE TABLE anonymous_class_expression_contributors ( PRIMARY KEY (anonymous_class_expression_id, contributors), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_contributors_contributors ON anonymous_class_expression_contributors (contributors); CREATE INDEX ix_anonymous_class_expression_contributors_anonymous_class_expression_id ON anonymous_class_expression_contributors (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_contributors_contributors ON anonymous_class_expression_contributors (contributors); CREATE TABLE anonymous_class_expression_category ( anonymous_class_expression_id INTEGER, @@ -4876,8 +4876,8 @@ CREATE TABLE anonymous_class_expression_category ( PRIMARY KEY (anonymous_class_expression_id, category), FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_anonymous_class_expression_category_anonymous_class_expression_id ON anonymous_class_expression_category (anonymous_class_expression_id); CREATE INDEX ix_anonymous_class_expression_category_category ON anonymous_class_expression_category (category); +CREATE INDEX ix_anonymous_class_expression_category_anonymous_class_expression_id ON anonymous_class_expression_category (anonymous_class_expression_id); CREATE TABLE anonymous_class_expression_keyword ( anonymous_class_expression_id INTEGER, @@ -4905,8 +4905,8 @@ CREATE TABLE class_definition_union_of ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(union_of_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_union_of_union_of_name ON class_definition_union_of (union_of_name); CREATE INDEX ix_class_definition_union_of_class_definition_name ON class_definition_union_of (class_definition_name); +CREATE INDEX ix_class_definition_union_of_union_of_name ON class_definition_union_of (union_of_name); CREATE TABLE class_definition_defining_slots ( class_definition_name TEXT, @@ -4915,8 +4915,8 @@ CREATE TABLE class_definition_defining_slots ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(defining_slots_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_class_definition_defining_slots_class_definition_name ON class_definition_defining_slots (class_definition_name); CREATE INDEX ix_class_definition_defining_slots_defining_slots_name ON class_definition_defining_slots (defining_slots_name); +CREATE INDEX ix_class_definition_defining_slots_class_definition_name ON class_definition_defining_slots (class_definition_name); CREATE TABLE class_definition_disjoint_with ( class_definition_name TEXT, @@ -4935,8 +4935,8 @@ CREATE TABLE class_definition_any_of ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(any_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_definition_any_of_class_definition_name ON class_definition_any_of (class_definition_name); CREATE INDEX ix_class_definition_any_of_any_of_id ON class_definition_any_of (any_of_id); +CREATE INDEX ix_class_definition_any_of_class_definition_name ON class_definition_any_of (class_definition_name); CREATE TABLE class_definition_exactly_one_of ( class_definition_name TEXT, @@ -4955,8 +4955,8 @@ CREATE TABLE class_definition_none_of ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(none_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_definition_none_of_class_definition_name ON class_definition_none_of (class_definition_name); CREATE INDEX ix_class_definition_none_of_none_of_id ON class_definition_none_of (none_of_id); +CREATE INDEX ix_class_definition_none_of_class_definition_name ON class_definition_none_of (class_definition_name); CREATE TABLE class_definition_all_of ( class_definition_name TEXT, @@ -4965,8 +4965,8 @@ CREATE TABLE class_definition_all_of ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(all_of_id) REFERENCES anonymous_class_expression (id) ); -CREATE INDEX ix_class_definition_all_of_all_of_id ON class_definition_all_of (all_of_id); CREATE INDEX ix_class_definition_all_of_class_definition_name ON class_definition_all_of (class_definition_name); +CREATE INDEX ix_class_definition_all_of_all_of_id ON class_definition_all_of (all_of_id); CREATE TABLE class_definition_mixins ( class_definition_name TEXT, @@ -4975,8 +4975,8 @@ CREATE TABLE class_definition_mixins ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(mixins_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_mixins_mixins_name ON class_definition_mixins (mixins_name); CREATE INDEX ix_class_definition_mixins_class_definition_name ON class_definition_mixins (class_definition_name); +CREATE INDEX ix_class_definition_mixins_mixins_name ON class_definition_mixins (mixins_name); CREATE TABLE class_definition_apply_to ( class_definition_name TEXT, @@ -4985,8 +4985,8 @@ CREATE TABLE class_definition_apply_to ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(apply_to_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_apply_to_class_definition_name ON class_definition_apply_to (class_definition_name); CREATE INDEX ix_class_definition_apply_to_apply_to_name ON class_definition_apply_to (apply_to_name); +CREATE INDEX ix_class_definition_apply_to_class_definition_name ON class_definition_apply_to (class_definition_name); CREATE TABLE class_definition_values_from ( class_definition_name TEXT, @@ -5003,8 +5003,8 @@ CREATE TABLE class_definition_id_prefixes ( PRIMARY KEY (class_definition_name, id_prefixes), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_id_prefixes_class_definition_name ON class_definition_id_prefixes (class_definition_name); CREATE INDEX ix_class_definition_id_prefixes_id_prefixes ON class_definition_id_prefixes (id_prefixes); +CREATE INDEX ix_class_definition_id_prefixes_class_definition_name ON class_definition_id_prefixes (class_definition_name); CREATE TABLE class_definition_implements ( class_definition_name TEXT, @@ -5012,8 +5012,8 @@ CREATE TABLE class_definition_implements ( PRIMARY KEY (class_definition_name, implements), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_implements_implements ON class_definition_implements (implements); CREATE INDEX ix_class_definition_implements_class_definition_name ON class_definition_implements (class_definition_name); +CREATE INDEX ix_class_definition_implements_implements ON class_definition_implements (implements); CREATE TABLE class_definition_instantiates ( class_definition_name TEXT, @@ -5030,8 +5030,8 @@ CREATE TABLE class_definition_todos ( PRIMARY KEY (class_definition_name, todos), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_todos_class_definition_name ON class_definition_todos (class_definition_name); CREATE INDEX ix_class_definition_todos_todos ON class_definition_todos (todos); +CREATE INDEX ix_class_definition_todos_class_definition_name ON class_definition_todos (class_definition_name); CREATE TABLE class_definition_notes ( class_definition_name TEXT, @@ -5039,8 +5039,8 @@ CREATE TABLE class_definition_notes ( PRIMARY KEY (class_definition_name, notes), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_notes_class_definition_name ON class_definition_notes (class_definition_name); CREATE INDEX ix_class_definition_notes_notes ON class_definition_notes (notes); +CREATE INDEX ix_class_definition_notes_class_definition_name ON class_definition_notes (class_definition_name); CREATE TABLE class_definition_comments ( class_definition_name TEXT, @@ -5057,8 +5057,8 @@ CREATE TABLE class_definition_see_also ( PRIMARY KEY (class_definition_name, see_also), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_see_also_see_also ON class_definition_see_also (see_also); CREATE INDEX ix_class_definition_see_also_class_definition_name ON class_definition_see_also (class_definition_name); +CREATE INDEX ix_class_definition_see_also_see_also ON class_definition_see_also (see_also); CREATE TABLE class_definition_aliases ( class_definition_name TEXT, @@ -5075,8 +5075,8 @@ CREATE TABLE class_definition_mappings ( PRIMARY KEY (class_definition_name, mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_mappings_class_definition_name ON class_definition_mappings (class_definition_name); CREATE INDEX ix_class_definition_mappings_mappings ON class_definition_mappings (mappings); +CREATE INDEX ix_class_definition_mappings_class_definition_name ON class_definition_mappings (class_definition_name); CREATE TABLE class_definition_exact_mappings ( class_definition_name TEXT, @@ -5084,8 +5084,8 @@ CREATE TABLE class_definition_exact_mappings ( PRIMARY KEY (class_definition_name, exact_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_exact_mappings_exact_mappings ON class_definition_exact_mappings (exact_mappings); CREATE INDEX ix_class_definition_exact_mappings_class_definition_name ON class_definition_exact_mappings (class_definition_name); +CREATE INDEX ix_class_definition_exact_mappings_exact_mappings ON class_definition_exact_mappings (exact_mappings); CREATE TABLE class_definition_close_mappings ( class_definition_name TEXT, @@ -5102,8 +5102,8 @@ CREATE TABLE class_definition_related_mappings ( PRIMARY KEY (class_definition_name, related_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_related_mappings_class_definition_name ON class_definition_related_mappings (class_definition_name); CREATE INDEX ix_class_definition_related_mappings_related_mappings ON class_definition_related_mappings (related_mappings); +CREATE INDEX ix_class_definition_related_mappings_class_definition_name ON class_definition_related_mappings (class_definition_name); CREATE TABLE class_definition_narrow_mappings ( class_definition_name TEXT, @@ -5111,8 +5111,8 @@ CREATE TABLE class_definition_narrow_mappings ( PRIMARY KEY (class_definition_name, narrow_mappings), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_narrow_mappings_class_definition_name ON class_definition_narrow_mappings (class_definition_name); CREATE INDEX ix_class_definition_narrow_mappings_narrow_mappings ON class_definition_narrow_mappings (narrow_mappings); +CREATE INDEX ix_class_definition_narrow_mappings_class_definition_name ON class_definition_narrow_mappings (class_definition_name); CREATE TABLE class_definition_broad_mappings ( class_definition_name TEXT, @@ -5129,8 +5129,8 @@ CREATE TABLE class_definition_contributors ( PRIMARY KEY (class_definition_name, contributors), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_contributors_contributors ON class_definition_contributors (contributors); CREATE INDEX ix_class_definition_contributors_class_definition_name ON class_definition_contributors (class_definition_name); +CREATE INDEX ix_class_definition_contributors_contributors ON class_definition_contributors (contributors); CREATE TABLE class_definition_category ( class_definition_name TEXT, @@ -5138,8 +5138,8 @@ CREATE TABLE class_definition_category ( PRIMARY KEY (class_definition_name, category), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_class_definition_category_class_definition_name ON class_definition_category (class_definition_name); CREATE INDEX ix_class_definition_category_category ON class_definition_category (category); +CREATE INDEX ix_class_definition_category_class_definition_name ON class_definition_category (class_definition_name); CREATE TABLE class_definition_keyword ( class_definition_name TEXT, @@ -5165,8 +5165,8 @@ CREATE TABLE dimension_expression_notes ( PRIMARY KEY (dimension_expression_id, notes), FOREIGN KEY(dimension_expression_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_dimension_expression_notes_notes ON dimension_expression_notes (notes); CREATE INDEX ix_dimension_expression_notes_dimension_expression_id ON dimension_expression_notes (dimension_expression_id); +CREATE INDEX ix_dimension_expression_notes_notes ON dimension_expression_notes (notes); CREATE TABLE dimension_expression_comments ( dimension_expression_id INTEGER, @@ -5174,8 +5174,8 @@ CREATE TABLE dimension_expression_comments ( PRIMARY KEY (dimension_expression_id, comments), FOREIGN KEY(dimension_expression_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_dimension_expression_comments_dimension_expression_id ON dimension_expression_comments (dimension_expression_id); CREATE INDEX ix_dimension_expression_comments_comments ON dimension_expression_comments (comments); +CREATE INDEX ix_dimension_expression_comments_dimension_expression_id ON dimension_expression_comments (dimension_expression_id); CREATE TABLE dimension_expression_see_also ( dimension_expression_id INTEGER, @@ -5183,8 +5183,8 @@ CREATE TABLE dimension_expression_see_also ( PRIMARY KEY (dimension_expression_id, see_also), FOREIGN KEY(dimension_expression_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_dimension_expression_see_also_see_also ON dimension_expression_see_also (see_also); CREATE INDEX ix_dimension_expression_see_also_dimension_expression_id ON dimension_expression_see_also (dimension_expression_id); +CREATE INDEX ix_dimension_expression_see_also_see_also ON dimension_expression_see_also (see_also); CREATE TABLE dimension_expression_aliases ( dimension_expression_id INTEGER, @@ -5210,8 +5210,8 @@ CREATE TABLE dimension_expression_exact_mappings ( PRIMARY KEY (dimension_expression_id, exact_mappings), FOREIGN KEY(dimension_expression_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_dimension_expression_exact_mappings_exact_mappings ON dimension_expression_exact_mappings (exact_mappings); CREATE INDEX ix_dimension_expression_exact_mappings_dimension_expression_id ON dimension_expression_exact_mappings (dimension_expression_id); +CREATE INDEX ix_dimension_expression_exact_mappings_exact_mappings ON dimension_expression_exact_mappings (exact_mappings); CREATE TABLE dimension_expression_close_mappings ( dimension_expression_id INTEGER, @@ -5237,8 +5237,8 @@ CREATE TABLE dimension_expression_narrow_mappings ( PRIMARY KEY (dimension_expression_id, narrow_mappings), FOREIGN KEY(dimension_expression_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_dimension_expression_narrow_mappings_narrow_mappings ON dimension_expression_narrow_mappings (narrow_mappings); CREATE INDEX ix_dimension_expression_narrow_mappings_dimension_expression_id ON dimension_expression_narrow_mappings (dimension_expression_id); +CREATE INDEX ix_dimension_expression_narrow_mappings_narrow_mappings ON dimension_expression_narrow_mappings (narrow_mappings); CREATE TABLE dimension_expression_broad_mappings ( dimension_expression_id INTEGER, @@ -5264,8 +5264,8 @@ CREATE TABLE dimension_expression_category ( PRIMARY KEY (dimension_expression_id, category), FOREIGN KEY(dimension_expression_id) REFERENCES dimension_expression (id) ); -CREATE INDEX ix_dimension_expression_category_dimension_expression_id ON dimension_expression_category (dimension_expression_id); CREATE INDEX ix_dimension_expression_category_category ON dimension_expression_category (category); +CREATE INDEX ix_dimension_expression_category_dimension_expression_id ON dimension_expression_category (dimension_expression_id); CREATE TABLE dimension_expression_keyword ( dimension_expression_id INTEGER, @@ -5291,8 +5291,8 @@ CREATE TABLE pattern_expression_notes ( PRIMARY KEY (pattern_expression_id, notes), FOREIGN KEY(pattern_expression_id) REFERENCES pattern_expression (id) ); -CREATE INDEX ix_pattern_expression_notes_pattern_expression_id ON pattern_expression_notes (pattern_expression_id); CREATE INDEX ix_pattern_expression_notes_notes ON pattern_expression_notes (notes); +CREATE INDEX ix_pattern_expression_notes_pattern_expression_id ON pattern_expression_notes (pattern_expression_id); CREATE TABLE pattern_expression_comments ( pattern_expression_id INTEGER, @@ -5309,8 +5309,8 @@ CREATE TABLE pattern_expression_see_also ( PRIMARY KEY (pattern_expression_id, see_also), FOREIGN KEY(pattern_expression_id) REFERENCES pattern_expression (id) ); -CREATE INDEX ix_pattern_expression_see_also_pattern_expression_id ON pattern_expression_see_also (pattern_expression_id); CREATE INDEX ix_pattern_expression_see_also_see_also ON pattern_expression_see_also (see_also); +CREATE INDEX ix_pattern_expression_see_also_pattern_expression_id ON pattern_expression_see_also (pattern_expression_id); CREATE TABLE pattern_expression_aliases ( pattern_expression_id INTEGER, @@ -5336,8 +5336,8 @@ CREATE TABLE pattern_expression_exact_mappings ( PRIMARY KEY (pattern_expression_id, exact_mappings), FOREIGN KEY(pattern_expression_id) REFERENCES pattern_expression (id) ); -CREATE INDEX ix_pattern_expression_exact_mappings_pattern_expression_id ON pattern_expression_exact_mappings (pattern_expression_id); CREATE INDEX ix_pattern_expression_exact_mappings_exact_mappings ON pattern_expression_exact_mappings (exact_mappings); +CREATE INDEX ix_pattern_expression_exact_mappings_pattern_expression_id ON pattern_expression_exact_mappings (pattern_expression_id); CREATE TABLE pattern_expression_close_mappings ( pattern_expression_id INTEGER, @@ -5363,8 +5363,8 @@ CREATE TABLE pattern_expression_narrow_mappings ( PRIMARY KEY (pattern_expression_id, narrow_mappings), FOREIGN KEY(pattern_expression_id) REFERENCES pattern_expression (id) ); -CREATE INDEX ix_pattern_expression_narrow_mappings_narrow_mappings ON pattern_expression_narrow_mappings (narrow_mappings); CREATE INDEX ix_pattern_expression_narrow_mappings_pattern_expression_id ON pattern_expression_narrow_mappings (pattern_expression_id); +CREATE INDEX ix_pattern_expression_narrow_mappings_narrow_mappings ON pattern_expression_narrow_mappings (narrow_mappings); CREATE TABLE pattern_expression_broad_mappings ( pattern_expression_id INTEGER, @@ -5390,8 +5390,8 @@ CREATE TABLE pattern_expression_category ( PRIMARY KEY (pattern_expression_id, category), FOREIGN KEY(pattern_expression_id) REFERENCES pattern_expression (id) ); -CREATE INDEX ix_pattern_expression_category_category ON pattern_expression_category (category); CREATE INDEX ix_pattern_expression_category_pattern_expression_id ON pattern_expression_category (pattern_expression_id); +CREATE INDEX ix_pattern_expression_category_category ON pattern_expression_category (category); CREATE TABLE pattern_expression_keyword ( pattern_expression_id INTEGER, @@ -5408,8 +5408,8 @@ CREATE TABLE import_expression_todos ( PRIMARY KEY (import_expression_id, todos), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_todos_import_expression_id ON import_expression_todos (import_expression_id); CREATE INDEX ix_import_expression_todos_todos ON import_expression_todos (todos); +CREATE INDEX ix_import_expression_todos_import_expression_id ON import_expression_todos (import_expression_id); CREATE TABLE import_expression_notes ( import_expression_id INTEGER, @@ -5426,8 +5426,8 @@ CREATE TABLE import_expression_comments ( PRIMARY KEY (import_expression_id, comments), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_comments_import_expression_id ON import_expression_comments (import_expression_id); CREATE INDEX ix_import_expression_comments_comments ON import_expression_comments (comments); +CREATE INDEX ix_import_expression_comments_import_expression_id ON import_expression_comments (import_expression_id); CREATE TABLE import_expression_see_also ( import_expression_id INTEGER, @@ -5435,8 +5435,8 @@ CREATE TABLE import_expression_see_also ( PRIMARY KEY (import_expression_id, see_also), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_see_also_import_expression_id ON import_expression_see_also (import_expression_id); CREATE INDEX ix_import_expression_see_also_see_also ON import_expression_see_also (see_also); +CREATE INDEX ix_import_expression_see_also_import_expression_id ON import_expression_see_also (import_expression_id); CREATE TABLE import_expression_aliases ( import_expression_id INTEGER, @@ -5462,8 +5462,8 @@ CREATE TABLE import_expression_exact_mappings ( PRIMARY KEY (import_expression_id, exact_mappings), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_exact_mappings_import_expression_id ON import_expression_exact_mappings (import_expression_id); CREATE INDEX ix_import_expression_exact_mappings_exact_mappings ON import_expression_exact_mappings (exact_mappings); +CREATE INDEX ix_import_expression_exact_mappings_import_expression_id ON import_expression_exact_mappings (import_expression_id); CREATE TABLE import_expression_close_mappings ( import_expression_id INTEGER, @@ -5489,8 +5489,8 @@ CREATE TABLE import_expression_narrow_mappings ( PRIMARY KEY (import_expression_id, narrow_mappings), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_narrow_mappings_narrow_mappings ON import_expression_narrow_mappings (narrow_mappings); CREATE INDEX ix_import_expression_narrow_mappings_import_expression_id ON import_expression_narrow_mappings (import_expression_id); +CREATE INDEX ix_import_expression_narrow_mappings_narrow_mappings ON import_expression_narrow_mappings (narrow_mappings); CREATE TABLE import_expression_broad_mappings ( import_expression_id INTEGER, @@ -5516,8 +5516,8 @@ CREATE TABLE import_expression_category ( PRIMARY KEY (import_expression_id, category), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_category_category ON import_expression_category (category); CREATE INDEX ix_import_expression_category_import_expression_id ON import_expression_category (import_expression_id); +CREATE INDEX ix_import_expression_category_category ON import_expression_category (category); CREATE TABLE import_expression_keyword ( import_expression_id INTEGER, @@ -5525,8 +5525,8 @@ CREATE TABLE import_expression_keyword ( PRIMARY KEY (import_expression_id, keyword), FOREIGN KEY(import_expression_id) REFERENCES import_expression (id) ); -CREATE INDEX ix_import_expression_keyword_import_expression_id ON import_expression_keyword (import_expression_id); CREATE INDEX ix_import_expression_keyword_keyword ON import_expression_keyword (keyword); +CREATE INDEX ix_import_expression_keyword_import_expression_id ON import_expression_keyword (import_expression_id); CREATE TABLE "UnitOfMeasure_exact_mappings" ( "UnitOfMeasure_id" INTEGER, @@ -5534,8 +5534,8 @@ CREATE TABLE "UnitOfMeasure_exact_mappings" ( PRIMARY KEY ("UnitOfMeasure_id", exact_mappings), FOREIGN KEY("UnitOfMeasure_id") REFERENCES "UnitOfMeasure" (id) ); -CREATE INDEX "ix_UnitOfMeasure_exact_mappings_exact_mappings" ON "UnitOfMeasure_exact_mappings" (exact_mappings); CREATE INDEX "ix_UnitOfMeasure_exact_mappings_UnitOfMeasure_id" ON "UnitOfMeasure_exact_mappings" ("UnitOfMeasure_id"); +CREATE INDEX "ix_UnitOfMeasure_exact_mappings_exact_mappings" ON "UnitOfMeasure_exact_mappings" (exact_mappings); CREATE TABLE slot_expression ( id INTEGER NOT NULL, @@ -5606,24 +5606,24 @@ CREATE TABLE local_name ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(class_definition_name) REFERENCES class_definition (name) ); -CREATE INDEX ix_local_name_enum_definition_name ON local_name (enum_definition_name); -CREATE INDEX local_name_slot_definition_name_local_name_source_idx ON local_name (slot_definition_name, local_name_source); -CREATE INDEX local_name_element_name_local_name_source_idx ON local_name (element_name, local_name_source); -CREATE INDEX ix_local_name_schema_definition_name ON local_name (schema_definition_name); -CREATE INDEX local_name_schema_definition_name_local_name_source_idx ON local_name (schema_definition_name, local_name_source); CREATE INDEX ix_local_name_local_name_source ON local_name (local_name_source); -CREATE INDEX ix_local_name_subset_definition_name ON local_name (subset_definition_name); -CREATE INDEX local_name_class_definition_name_local_name_source_idx ON local_name (class_definition_name, local_name_source); CREATE INDEX ix_local_name_definition_name ON local_name (definition_name); -CREATE INDEX ix_local_name_local_name_value ON local_name (local_name_value); -CREATE INDEX local_name_enum_definition_name_local_name_source_idx ON local_name (enum_definition_name, local_name_source); CREATE INDEX ix_local_name_slot_definition_name ON local_name (slot_definition_name); -CREATE INDEX ix_local_name_class_definition_name ON local_name (class_definition_name); CREATE INDEX local_name_type_definition_name_local_name_source_idx ON local_name (type_definition_name, local_name_source); CREATE INDEX local_name_subset_definition_name_local_name_source_idx ON local_name (subset_definition_name, local_name_source); CREATE INDEX ix_local_name_type_definition_name ON local_name (type_definition_name); CREATE INDEX local_name_definition_name_local_name_source_idx ON local_name (definition_name, local_name_source); +CREATE INDEX local_name_enum_definition_name_local_name_source_idx ON local_name (enum_definition_name, local_name_source); +CREATE INDEX ix_local_name_local_name_value ON local_name (local_name_value); CREATE INDEX ix_local_name_element_name ON local_name (element_name); +CREATE INDEX ix_local_name_class_definition_name ON local_name (class_definition_name); +CREATE INDEX local_name_element_name_local_name_source_idx ON local_name (element_name, local_name_source); +CREATE INDEX local_name_slot_definition_name_local_name_source_idx ON local_name (slot_definition_name, local_name_source); +CREATE INDEX local_name_class_definition_name_local_name_source_idx ON local_name (class_definition_name, local_name_source); +CREATE INDEX local_name_schema_definition_name_local_name_source_idx ON local_name (schema_definition_name, local_name_source); +CREATE INDEX ix_local_name_enum_definition_name ON local_name (enum_definition_name); +CREATE INDEX ix_local_name_schema_definition_name ON local_name (schema_definition_name); +CREATE INDEX ix_local_name_subset_definition_name ON local_name (subset_definition_name); CREATE TABLE permissible_value ( text TEXT NOT NULL, @@ -5684,8 +5684,8 @@ CREATE TABLE schema_definition_in_subset ( FOREIGN KEY(schema_definition_name) REFERENCES schema_definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_schema_definition_in_subset_in_subset_name ON schema_definition_in_subset (in_subset_name); CREATE INDEX ix_schema_definition_in_subset_schema_definition_name ON schema_definition_in_subset (schema_definition_name); +CREATE INDEX ix_schema_definition_in_subset_in_subset_name ON schema_definition_in_subset (in_subset_name); CREATE TABLE type_expression_equals_string_in ( type_expression_id INTEGER, @@ -5703,8 +5703,8 @@ CREATE TABLE type_expression_none_of ( FOREIGN KEY(type_expression_id) REFERENCES type_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_type_expression_none_of_none_of_id ON type_expression_none_of (none_of_id); CREATE INDEX ix_type_expression_none_of_type_expression_id ON type_expression_none_of (type_expression_id); +CREATE INDEX ix_type_expression_none_of_none_of_id ON type_expression_none_of (none_of_id); CREATE TABLE type_expression_exactly_one_of ( type_expression_id INTEGER, @@ -5723,8 +5723,8 @@ CREATE TABLE type_expression_any_of ( FOREIGN KEY(type_expression_id) REFERENCES type_expression (id), FOREIGN KEY(any_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_type_expression_any_of_type_expression_id ON type_expression_any_of (type_expression_id); CREATE INDEX ix_type_expression_any_of_any_of_id ON type_expression_any_of (any_of_id); +CREATE INDEX ix_type_expression_any_of_type_expression_id ON type_expression_any_of (type_expression_id); CREATE TABLE type_expression_all_of ( type_expression_id INTEGER, @@ -5733,8 +5733,8 @@ CREATE TABLE type_expression_all_of ( FOREIGN KEY(type_expression_id) REFERENCES type_expression (id), FOREIGN KEY(all_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_type_expression_all_of_type_expression_id ON type_expression_all_of (type_expression_id); CREATE INDEX ix_type_expression_all_of_all_of_id ON type_expression_all_of (all_of_id); +CREATE INDEX ix_type_expression_all_of_type_expression_id ON type_expression_all_of (type_expression_id); CREATE TABLE anonymous_type_expression_equals_string_in ( anonymous_type_expression_id INTEGER, @@ -5742,8 +5742,8 @@ CREATE TABLE anonymous_type_expression_equals_string_in ( PRIMARY KEY (anonymous_type_expression_id, equals_string_in), FOREIGN KEY(anonymous_type_expression_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_anonymous_type_expression_equals_string_in_equals_string_in ON anonymous_type_expression_equals_string_in (equals_string_in); CREATE INDEX ix_anonymous_type_expression_equals_string_in_anonymous_type_expression_id ON anonymous_type_expression_equals_string_in (anonymous_type_expression_id); +CREATE INDEX ix_anonymous_type_expression_equals_string_in_equals_string_in ON anonymous_type_expression_equals_string_in (equals_string_in); CREATE TABLE anonymous_type_expression_none_of ( anonymous_type_expression_id INTEGER, @@ -5752,8 +5752,8 @@ CREATE TABLE anonymous_type_expression_none_of ( FOREIGN KEY(anonymous_type_expression_id) REFERENCES anonymous_type_expression (id), FOREIGN KEY(none_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_anonymous_type_expression_none_of_anonymous_type_expression_id ON anonymous_type_expression_none_of (anonymous_type_expression_id); CREATE INDEX ix_anonymous_type_expression_none_of_none_of_id ON anonymous_type_expression_none_of (none_of_id); +CREATE INDEX ix_anonymous_type_expression_none_of_anonymous_type_expression_id ON anonymous_type_expression_none_of (anonymous_type_expression_id); CREATE TABLE anonymous_type_expression_exactly_one_of ( anonymous_type_expression_id INTEGER, @@ -5782,8 +5782,8 @@ CREATE TABLE anonymous_type_expression_all_of ( FOREIGN KEY(anonymous_type_expression_id) REFERENCES anonymous_type_expression (id), FOREIGN KEY(all_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_anonymous_type_expression_all_of_anonymous_type_expression_id ON anonymous_type_expression_all_of (anonymous_type_expression_id); CREATE INDEX ix_anonymous_type_expression_all_of_all_of_id ON anonymous_type_expression_all_of (all_of_id); +CREATE INDEX ix_anonymous_type_expression_all_of_anonymous_type_expression_id ON anonymous_type_expression_all_of (anonymous_type_expression_id); CREATE TABLE type_definition_none_of ( type_definition_name TEXT, @@ -5792,8 +5792,8 @@ CREATE TABLE type_definition_none_of ( FOREIGN KEY(type_definition_name) REFERENCES type_definition (name), FOREIGN KEY(none_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_type_definition_none_of_none_of_id ON type_definition_none_of (none_of_id); CREATE INDEX ix_type_definition_none_of_type_definition_name ON type_definition_none_of (type_definition_name); +CREATE INDEX ix_type_definition_none_of_none_of_id ON type_definition_none_of (none_of_id); CREATE TABLE type_definition_exactly_one_of ( type_definition_name TEXT, @@ -5802,8 +5802,8 @@ CREATE TABLE type_definition_exactly_one_of ( FOREIGN KEY(type_definition_name) REFERENCES type_definition (name), FOREIGN KEY(exactly_one_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_type_definition_exactly_one_of_type_definition_name ON type_definition_exactly_one_of (type_definition_name); CREATE INDEX ix_type_definition_exactly_one_of_exactly_one_of_id ON type_definition_exactly_one_of (exactly_one_of_id); +CREATE INDEX ix_type_definition_exactly_one_of_type_definition_name ON type_definition_exactly_one_of (type_definition_name); CREATE TABLE type_definition_any_of ( type_definition_name TEXT, @@ -5812,8 +5812,8 @@ CREATE TABLE type_definition_any_of ( FOREIGN KEY(type_definition_name) REFERENCES type_definition (name), FOREIGN KEY(any_of_id) REFERENCES anonymous_type_expression (id) ); -CREATE INDEX ix_type_definition_any_of_type_definition_name ON type_definition_any_of (type_definition_name); CREATE INDEX ix_type_definition_any_of_any_of_id ON type_definition_any_of (any_of_id); +CREATE INDEX ix_type_definition_any_of_type_definition_name ON type_definition_any_of (type_definition_name); CREATE TABLE type_definition_all_of ( type_definition_name TEXT, @@ -5841,8 +5841,8 @@ CREATE TABLE subset_definition_id_prefixes ( PRIMARY KEY (subset_definition_name, id_prefixes), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_id_prefixes_subset_definition_name ON subset_definition_id_prefixes (subset_definition_name); CREATE INDEX ix_subset_definition_id_prefixes_id_prefixes ON subset_definition_id_prefixes (id_prefixes); +CREATE INDEX ix_subset_definition_id_prefixes_subset_definition_name ON subset_definition_id_prefixes (subset_definition_name); CREATE TABLE subset_definition_implements ( subset_definition_name TEXT, @@ -5850,8 +5850,8 @@ CREATE TABLE subset_definition_implements ( PRIMARY KEY (subset_definition_name, implements), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_implements_implements ON subset_definition_implements (implements); CREATE INDEX ix_subset_definition_implements_subset_definition_name ON subset_definition_implements (subset_definition_name); +CREATE INDEX ix_subset_definition_implements_implements ON subset_definition_implements (implements); CREATE TABLE subset_definition_instantiates ( subset_definition_name TEXT, @@ -5886,8 +5886,8 @@ CREATE TABLE subset_definition_comments ( PRIMARY KEY (subset_definition_name, comments), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_comments_comments ON subset_definition_comments (comments); CREATE INDEX ix_subset_definition_comments_subset_definition_name ON subset_definition_comments (subset_definition_name); +CREATE INDEX ix_subset_definition_comments_comments ON subset_definition_comments (comments); CREATE TABLE subset_definition_in_subset ( subset_definition_name TEXT, @@ -5896,8 +5896,8 @@ CREATE TABLE subset_definition_in_subset ( FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_in_subset_in_subset_name ON subset_definition_in_subset (in_subset_name); CREATE INDEX ix_subset_definition_in_subset_subset_definition_name ON subset_definition_in_subset (subset_definition_name); +CREATE INDEX ix_subset_definition_in_subset_in_subset_name ON subset_definition_in_subset (in_subset_name); CREATE TABLE subset_definition_see_also ( subset_definition_name TEXT, @@ -5914,8 +5914,8 @@ CREATE TABLE subset_definition_aliases ( PRIMARY KEY (subset_definition_name, aliases), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_aliases_aliases ON subset_definition_aliases (aliases); CREATE INDEX ix_subset_definition_aliases_subset_definition_name ON subset_definition_aliases (subset_definition_name); +CREATE INDEX ix_subset_definition_aliases_aliases ON subset_definition_aliases (aliases); CREATE TABLE subset_definition_mappings ( subset_definition_name TEXT, @@ -5923,8 +5923,8 @@ CREATE TABLE subset_definition_mappings ( PRIMARY KEY (subset_definition_name, mappings), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_mappings_subset_definition_name ON subset_definition_mappings (subset_definition_name); CREATE INDEX ix_subset_definition_mappings_mappings ON subset_definition_mappings (mappings); +CREATE INDEX ix_subset_definition_mappings_subset_definition_name ON subset_definition_mappings (subset_definition_name); CREATE TABLE subset_definition_exact_mappings ( subset_definition_name TEXT, @@ -5941,8 +5941,8 @@ CREATE TABLE subset_definition_close_mappings ( PRIMARY KEY (subset_definition_name, close_mappings), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_close_mappings_subset_definition_name ON subset_definition_close_mappings (subset_definition_name); CREATE INDEX ix_subset_definition_close_mappings_close_mappings ON subset_definition_close_mappings (close_mappings); +CREATE INDEX ix_subset_definition_close_mappings_subset_definition_name ON subset_definition_close_mappings (subset_definition_name); CREATE TABLE subset_definition_related_mappings ( subset_definition_name TEXT, @@ -5950,8 +5950,8 @@ CREATE TABLE subset_definition_related_mappings ( PRIMARY KEY (subset_definition_name, related_mappings), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_related_mappings_subset_definition_name ON subset_definition_related_mappings (subset_definition_name); CREATE INDEX ix_subset_definition_related_mappings_related_mappings ON subset_definition_related_mappings (related_mappings); +CREATE INDEX ix_subset_definition_related_mappings_subset_definition_name ON subset_definition_related_mappings (subset_definition_name); CREATE TABLE subset_definition_narrow_mappings ( subset_definition_name TEXT, @@ -5959,8 +5959,8 @@ CREATE TABLE subset_definition_narrow_mappings ( PRIMARY KEY (subset_definition_name, narrow_mappings), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_narrow_mappings_narrow_mappings ON subset_definition_narrow_mappings (narrow_mappings); CREATE INDEX ix_subset_definition_narrow_mappings_subset_definition_name ON subset_definition_narrow_mappings (subset_definition_name); +CREATE INDEX ix_subset_definition_narrow_mappings_narrow_mappings ON subset_definition_narrow_mappings (narrow_mappings); CREATE TABLE subset_definition_broad_mappings ( subset_definition_name TEXT, @@ -5986,8 +5986,8 @@ CREATE TABLE subset_definition_category ( PRIMARY KEY (subset_definition_name, category), FOREIGN KEY(subset_definition_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_subset_definition_category_category ON subset_definition_category (category); CREATE INDEX ix_subset_definition_category_subset_definition_name ON subset_definition_category (subset_definition_name); +CREATE INDEX ix_subset_definition_category_category ON subset_definition_category (category); CREATE TABLE subset_definition_keyword ( subset_definition_name TEXT, @@ -6005,8 +6005,8 @@ CREATE TABLE definition_in_subset ( FOREIGN KEY(definition_name) REFERENCES definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_definition_in_subset_definition_name ON definition_in_subset (definition_name); CREATE INDEX ix_definition_in_subset_in_subset_name ON definition_in_subset (in_subset_name); +CREATE INDEX ix_definition_in_subset_definition_name ON definition_in_subset (definition_name); CREATE TABLE enum_expression_include ( enum_expression_id INTEGER, @@ -6015,8 +6015,8 @@ CREATE TABLE enum_expression_include ( FOREIGN KEY(enum_expression_id) REFERENCES enum_expression (id), FOREIGN KEY(include_id) REFERENCES anonymous_enum_expression (id) ); -CREATE INDEX ix_enum_expression_include_include_id ON enum_expression_include (include_id); CREATE INDEX ix_enum_expression_include_enum_expression_id ON enum_expression_include (enum_expression_id); +CREATE INDEX ix_enum_expression_include_include_id ON enum_expression_include (include_id); CREATE TABLE enum_expression_minus ( enum_expression_id INTEGER, @@ -6044,8 +6044,8 @@ CREATE TABLE enum_expression_concepts ( PRIMARY KEY (enum_expression_id, concepts), FOREIGN KEY(enum_expression_id) REFERENCES enum_expression (id) ); -CREATE INDEX ix_enum_expression_concepts_concepts ON enum_expression_concepts (concepts); CREATE INDEX ix_enum_expression_concepts_enum_expression_id ON enum_expression_concepts (enum_expression_id); +CREATE INDEX ix_enum_expression_concepts_concepts ON enum_expression_concepts (concepts); CREATE TABLE anonymous_enum_expression_include ( anonymous_enum_expression_id INTEGER, @@ -6074,8 +6074,8 @@ CREATE TABLE anonymous_enum_expression_inherits ( FOREIGN KEY(anonymous_enum_expression_id) REFERENCES anonymous_enum_expression (id), FOREIGN KEY(inherits_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_anonymous_enum_expression_inherits_anonymous_enum_expression_id ON anonymous_enum_expression_inherits (anonymous_enum_expression_id); CREATE INDEX ix_anonymous_enum_expression_inherits_inherits_name ON anonymous_enum_expression_inherits (inherits_name); +CREATE INDEX ix_anonymous_enum_expression_inherits_anonymous_enum_expression_id ON anonymous_enum_expression_inherits (anonymous_enum_expression_id); CREATE TABLE anonymous_enum_expression_concepts ( anonymous_enum_expression_id INTEGER, @@ -6093,8 +6093,8 @@ CREATE TABLE enum_definition_include ( FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name), FOREIGN KEY(include_id) REFERENCES anonymous_enum_expression (id) ); -CREATE INDEX ix_enum_definition_include_enum_definition_name ON enum_definition_include (enum_definition_name); CREATE INDEX ix_enum_definition_include_include_id ON enum_definition_include (include_id); +CREATE INDEX ix_enum_definition_include_enum_definition_name ON enum_definition_include (enum_definition_name); CREATE TABLE enum_definition_minus ( enum_definition_name TEXT, @@ -6113,8 +6113,8 @@ CREATE TABLE enum_definition_inherits ( FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name), FOREIGN KEY(inherits_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_inherits_enum_definition_name ON enum_definition_inherits (enum_definition_name); CREATE INDEX ix_enum_definition_inherits_inherits_name ON enum_definition_inherits (inherits_name); +CREATE INDEX ix_enum_definition_inherits_enum_definition_name ON enum_definition_inherits (enum_definition_name); CREATE TABLE enum_definition_concepts ( enum_definition_name TEXT, @@ -6122,8 +6122,8 @@ CREATE TABLE enum_definition_concepts ( PRIMARY KEY (enum_definition_name, concepts), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_concepts_concepts ON enum_definition_concepts (concepts); CREATE INDEX ix_enum_definition_concepts_enum_definition_name ON enum_definition_concepts (enum_definition_name); +CREATE INDEX ix_enum_definition_concepts_concepts ON enum_definition_concepts (concepts); CREATE TABLE enum_definition_mixins ( enum_definition_name TEXT, @@ -6160,8 +6160,8 @@ CREATE TABLE enum_definition_id_prefixes ( PRIMARY KEY (enum_definition_name, id_prefixes), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_id_prefixes_id_prefixes ON enum_definition_id_prefixes (id_prefixes); CREATE INDEX ix_enum_definition_id_prefixes_enum_definition_name ON enum_definition_id_prefixes (enum_definition_name); +CREATE INDEX ix_enum_definition_id_prefixes_id_prefixes ON enum_definition_id_prefixes (id_prefixes); CREATE TABLE enum_definition_implements ( enum_definition_name TEXT, @@ -6169,8 +6169,8 @@ CREATE TABLE enum_definition_implements ( PRIMARY KEY (enum_definition_name, implements), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_implements_implements ON enum_definition_implements (implements); CREATE INDEX ix_enum_definition_implements_enum_definition_name ON enum_definition_implements (enum_definition_name); +CREATE INDEX ix_enum_definition_implements_implements ON enum_definition_implements (implements); CREATE TABLE enum_definition_instantiates ( enum_definition_name TEXT, @@ -6178,8 +6178,8 @@ CREATE TABLE enum_definition_instantiates ( PRIMARY KEY (enum_definition_name, instantiates), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_instantiates_enum_definition_name ON enum_definition_instantiates (enum_definition_name); CREATE INDEX ix_enum_definition_instantiates_instantiates ON enum_definition_instantiates (instantiates); +CREATE INDEX ix_enum_definition_instantiates_enum_definition_name ON enum_definition_instantiates (enum_definition_name); CREATE TABLE enum_definition_todos ( enum_definition_name TEXT, @@ -6187,8 +6187,8 @@ CREATE TABLE enum_definition_todos ( PRIMARY KEY (enum_definition_name, todos), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_todos_enum_definition_name ON enum_definition_todos (enum_definition_name); CREATE INDEX ix_enum_definition_todos_todos ON enum_definition_todos (todos); +CREATE INDEX ix_enum_definition_todos_enum_definition_name ON enum_definition_todos (enum_definition_name); CREATE TABLE enum_definition_notes ( enum_definition_name TEXT, @@ -6205,8 +6205,8 @@ CREATE TABLE enum_definition_comments ( PRIMARY KEY (enum_definition_name, comments), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_comments_enum_definition_name ON enum_definition_comments (enum_definition_name); CREATE INDEX ix_enum_definition_comments_comments ON enum_definition_comments (comments); +CREATE INDEX ix_enum_definition_comments_enum_definition_name ON enum_definition_comments (enum_definition_name); CREATE TABLE enum_definition_in_subset ( enum_definition_name TEXT, @@ -6251,8 +6251,8 @@ CREATE TABLE enum_definition_exact_mappings ( PRIMARY KEY (enum_definition_name, exact_mappings), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_exact_mappings_exact_mappings ON enum_definition_exact_mappings (exact_mappings); CREATE INDEX ix_enum_definition_exact_mappings_enum_definition_name ON enum_definition_exact_mappings (enum_definition_name); +CREATE INDEX ix_enum_definition_exact_mappings_exact_mappings ON enum_definition_exact_mappings (exact_mappings); CREATE TABLE enum_definition_close_mappings ( enum_definition_name TEXT, @@ -6305,8 +6305,8 @@ CREATE TABLE enum_definition_category ( PRIMARY KEY (enum_definition_name, category), FOREIGN KEY(enum_definition_name) REFERENCES enum_definition (name) ); -CREATE INDEX ix_enum_definition_category_enum_definition_name ON enum_definition_category (enum_definition_name); CREATE INDEX ix_enum_definition_category_category ON enum_definition_category (category); +CREATE INDEX ix_enum_definition_category_enum_definition_name ON enum_definition_category (enum_definition_name); CREATE TABLE enum_definition_keyword ( enum_definition_name TEXT, @@ -6324,8 +6324,8 @@ CREATE TABLE anonymous_expression_in_subset ( FOREIGN KEY(anonymous_expression_id) REFERENCES anonymous_expression (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_anonymous_expression_in_subset_anonymous_expression_id ON anonymous_expression_in_subset (anonymous_expression_id); CREATE INDEX ix_anonymous_expression_in_subset_in_subset_name ON anonymous_expression_in_subset (in_subset_name); +CREATE INDEX ix_anonymous_expression_in_subset_anonymous_expression_id ON anonymous_expression_in_subset (anonymous_expression_id); CREATE TABLE path_expression_in_subset ( path_expression_id INTEGER, @@ -6344,8 +6344,8 @@ CREATE TABLE anonymous_slot_expression_in_subset ( FOREIGN KEY(anonymous_slot_expression_id) REFERENCES anonymous_slot_expression (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_anonymous_slot_expression_in_subset_anonymous_slot_expression_id ON anonymous_slot_expression_in_subset (anonymous_slot_expression_id); CREATE INDEX ix_anonymous_slot_expression_in_subset_in_subset_name ON anonymous_slot_expression_in_subset (in_subset_name); +CREATE INDEX ix_anonymous_slot_expression_in_subset_anonymous_slot_expression_id ON anonymous_slot_expression_in_subset (anonymous_slot_expression_id); CREATE TABLE slot_definition_type_mappings ( slot_definition_name TEXT, @@ -6364,8 +6364,8 @@ CREATE TABLE slot_definition_in_subset ( FOREIGN KEY(slot_definition_name) REFERENCES slot_definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_slot_definition_in_subset_slot_definition_name ON slot_definition_in_subset (slot_definition_name); CREATE INDEX ix_slot_definition_in_subset_in_subset_name ON slot_definition_in_subset (in_subset_name); +CREATE INDEX ix_slot_definition_in_subset_slot_definition_name ON slot_definition_in_subset (slot_definition_name); CREATE TABLE anonymous_class_expression_in_subset ( anonymous_class_expression_id INTEGER, @@ -6374,8 +6374,8 @@ CREATE TABLE anonymous_class_expression_in_subset ( FOREIGN KEY(anonymous_class_expression_id) REFERENCES anonymous_class_expression (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_anonymous_class_expression_in_subset_in_subset_name ON anonymous_class_expression_in_subset (in_subset_name); CREATE INDEX ix_anonymous_class_expression_in_subset_anonymous_class_expression_id ON anonymous_class_expression_in_subset (anonymous_class_expression_id); +CREATE INDEX ix_anonymous_class_expression_in_subset_in_subset_name ON anonymous_class_expression_in_subset (in_subset_name); CREATE TABLE class_definition_in_subset ( class_definition_name TEXT, @@ -6384,8 +6384,8 @@ CREATE TABLE class_definition_in_subset ( FOREIGN KEY(class_definition_name) REFERENCES class_definition (name), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_class_definition_in_subset_in_subset_name ON class_definition_in_subset (in_subset_name); CREATE INDEX ix_class_definition_in_subset_class_definition_name ON class_definition_in_subset (class_definition_name); +CREATE INDEX ix_class_definition_in_subset_in_subset_name ON class_definition_in_subset (in_subset_name); CREATE TABLE class_rule_todos ( class_rule_id INTEGER, @@ -6411,8 +6411,8 @@ CREATE TABLE class_rule_comments ( PRIMARY KEY (class_rule_id, comments), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_comments_class_rule_id ON class_rule_comments (class_rule_id); CREATE INDEX ix_class_rule_comments_comments ON class_rule_comments (comments); +CREATE INDEX ix_class_rule_comments_class_rule_id ON class_rule_comments (class_rule_id); CREATE TABLE class_rule_in_subset ( class_rule_id INTEGER, @@ -6439,8 +6439,8 @@ CREATE TABLE class_rule_aliases ( PRIMARY KEY (class_rule_id, aliases), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_aliases_class_rule_id ON class_rule_aliases (class_rule_id); CREATE INDEX ix_class_rule_aliases_aliases ON class_rule_aliases (aliases); +CREATE INDEX ix_class_rule_aliases_class_rule_id ON class_rule_aliases (class_rule_id); CREATE TABLE class_rule_mappings ( class_rule_id INTEGER, @@ -6466,8 +6466,8 @@ CREATE TABLE class_rule_close_mappings ( PRIMARY KEY (class_rule_id, close_mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_close_mappings_close_mappings ON class_rule_close_mappings (close_mappings); CREATE INDEX ix_class_rule_close_mappings_class_rule_id ON class_rule_close_mappings (class_rule_id); +CREATE INDEX ix_class_rule_close_mappings_close_mappings ON class_rule_close_mappings (close_mappings); CREATE TABLE class_rule_related_mappings ( class_rule_id INTEGER, @@ -6493,8 +6493,8 @@ CREATE TABLE class_rule_broad_mappings ( PRIMARY KEY (class_rule_id, broad_mappings), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_broad_mappings_class_rule_id ON class_rule_broad_mappings (class_rule_id); CREATE INDEX ix_class_rule_broad_mappings_broad_mappings ON class_rule_broad_mappings (broad_mappings); +CREATE INDEX ix_class_rule_broad_mappings_class_rule_id ON class_rule_broad_mappings (class_rule_id); CREATE TABLE class_rule_contributors ( class_rule_id INTEGER, @@ -6520,8 +6520,8 @@ CREATE TABLE class_rule_keyword ( PRIMARY KEY (class_rule_id, keyword), FOREIGN KEY(class_rule_id) REFERENCES class_rule (id) ); -CREATE INDEX ix_class_rule_keyword_keyword ON class_rule_keyword (keyword); CREATE INDEX ix_class_rule_keyword_class_rule_id ON class_rule_keyword (class_rule_id); +CREATE INDEX ix_class_rule_keyword_keyword ON class_rule_keyword (keyword); CREATE TABLE array_expression_dimensions ( array_expression_id INTEGER, @@ -6539,8 +6539,8 @@ CREATE TABLE array_expression_todos ( PRIMARY KEY (array_expression_id, todos), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_todos_todos ON array_expression_todos (todos); CREATE INDEX ix_array_expression_todos_array_expression_id ON array_expression_todos (array_expression_id); +CREATE INDEX ix_array_expression_todos_todos ON array_expression_todos (todos); CREATE TABLE array_expression_notes ( array_expression_id INTEGER, @@ -6548,8 +6548,8 @@ CREATE TABLE array_expression_notes ( PRIMARY KEY (array_expression_id, notes), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_notes_notes ON array_expression_notes (notes); CREATE INDEX ix_array_expression_notes_array_expression_id ON array_expression_notes (array_expression_id); +CREATE INDEX ix_array_expression_notes_notes ON array_expression_notes (notes); CREATE TABLE array_expression_comments ( array_expression_id INTEGER, @@ -6576,8 +6576,8 @@ CREATE TABLE array_expression_see_also ( PRIMARY KEY (array_expression_id, see_also), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_see_also_array_expression_id ON array_expression_see_also (array_expression_id); CREATE INDEX ix_array_expression_see_also_see_also ON array_expression_see_also (see_also); +CREATE INDEX ix_array_expression_see_also_array_expression_id ON array_expression_see_also (array_expression_id); CREATE TABLE array_expression_aliases ( array_expression_id INTEGER, @@ -6603,8 +6603,8 @@ CREATE TABLE array_expression_exact_mappings ( PRIMARY KEY (array_expression_id, exact_mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_exact_mappings_exact_mappings ON array_expression_exact_mappings (exact_mappings); CREATE INDEX ix_array_expression_exact_mappings_array_expression_id ON array_expression_exact_mappings (array_expression_id); +CREATE INDEX ix_array_expression_exact_mappings_exact_mappings ON array_expression_exact_mappings (exact_mappings); CREATE TABLE array_expression_close_mappings ( array_expression_id INTEGER, @@ -6630,8 +6630,8 @@ CREATE TABLE array_expression_narrow_mappings ( PRIMARY KEY (array_expression_id, narrow_mappings), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_narrow_mappings_array_expression_id ON array_expression_narrow_mappings (array_expression_id); CREATE INDEX ix_array_expression_narrow_mappings_narrow_mappings ON array_expression_narrow_mappings (narrow_mappings); +CREATE INDEX ix_array_expression_narrow_mappings_array_expression_id ON array_expression_narrow_mappings (array_expression_id); CREATE TABLE array_expression_broad_mappings ( array_expression_id INTEGER, @@ -6657,8 +6657,8 @@ CREATE TABLE array_expression_category ( PRIMARY KEY (array_expression_id, category), FOREIGN KEY(array_expression_id) REFERENCES array_expression (id) ); -CREATE INDEX ix_array_expression_category_array_expression_id ON array_expression_category (array_expression_id); CREATE INDEX ix_array_expression_category_category ON array_expression_category (category); +CREATE INDEX ix_array_expression_category_array_expression_id ON array_expression_category (array_expression_id); CREATE TABLE array_expression_keyword ( array_expression_id INTEGER, @@ -6706,8 +6706,8 @@ CREATE TABLE unique_key_unique_key_slots ( FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name), FOREIGN KEY(unique_key_slots_name) REFERENCES slot_definition (name) ); -CREATE INDEX ix_unique_key_unique_key_slots_unique_key_slots_name ON unique_key_unique_key_slots (unique_key_slots_name); CREATE INDEX ix_unique_key_unique_key_slots_unique_key_unique_key_name ON unique_key_unique_key_slots (unique_key_unique_key_name); +CREATE INDEX ix_unique_key_unique_key_slots_unique_key_slots_name ON unique_key_unique_key_slots (unique_key_slots_name); CREATE TABLE unique_key_todos ( unique_key_unique_key_name TEXT, @@ -6724,8 +6724,8 @@ CREATE TABLE unique_key_notes ( PRIMARY KEY (unique_key_unique_key_name, notes), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_notes_unique_key_unique_key_name ON unique_key_notes (unique_key_unique_key_name); CREATE INDEX ix_unique_key_notes_notes ON unique_key_notes (notes); +CREATE INDEX ix_unique_key_notes_unique_key_unique_key_name ON unique_key_notes (unique_key_unique_key_name); CREATE TABLE unique_key_comments ( unique_key_unique_key_name TEXT, @@ -6770,8 +6770,8 @@ CREATE TABLE unique_key_mappings ( PRIMARY KEY (unique_key_unique_key_name, mappings), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_mappings_unique_key_unique_key_name ON unique_key_mappings (unique_key_unique_key_name); CREATE INDEX ix_unique_key_mappings_mappings ON unique_key_mappings (mappings); +CREATE INDEX ix_unique_key_mappings_unique_key_unique_key_name ON unique_key_mappings (unique_key_unique_key_name); CREATE TABLE unique_key_exact_mappings ( unique_key_unique_key_name TEXT, @@ -6788,8 +6788,8 @@ CREATE TABLE unique_key_close_mappings ( PRIMARY KEY (unique_key_unique_key_name, close_mappings), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_close_mappings_unique_key_unique_key_name ON unique_key_close_mappings (unique_key_unique_key_name); CREATE INDEX ix_unique_key_close_mappings_close_mappings ON unique_key_close_mappings (close_mappings); +CREATE INDEX ix_unique_key_close_mappings_unique_key_unique_key_name ON unique_key_close_mappings (unique_key_unique_key_name); CREATE TABLE unique_key_related_mappings ( unique_key_unique_key_name TEXT, @@ -6797,8 +6797,8 @@ CREATE TABLE unique_key_related_mappings ( PRIMARY KEY (unique_key_unique_key_name, related_mappings), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_related_mappings_unique_key_unique_key_name ON unique_key_related_mappings (unique_key_unique_key_name); CREATE INDEX ix_unique_key_related_mappings_related_mappings ON unique_key_related_mappings (related_mappings); +CREATE INDEX ix_unique_key_related_mappings_unique_key_unique_key_name ON unique_key_related_mappings (unique_key_unique_key_name); CREATE TABLE unique_key_narrow_mappings ( unique_key_unique_key_name TEXT, @@ -6824,8 +6824,8 @@ CREATE TABLE unique_key_contributors ( PRIMARY KEY (unique_key_unique_key_name, contributors), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_contributors_unique_key_unique_key_name ON unique_key_contributors (unique_key_unique_key_name); CREATE INDEX ix_unique_key_contributors_contributors ON unique_key_contributors (contributors); +CREATE INDEX ix_unique_key_contributors_unique_key_unique_key_name ON unique_key_contributors (unique_key_unique_key_name); CREATE TABLE unique_key_category ( unique_key_unique_key_name TEXT, @@ -6833,8 +6833,8 @@ CREATE TABLE unique_key_category ( PRIMARY KEY (unique_key_unique_key_name, category), FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name) ); -CREATE INDEX ix_unique_key_category_category ON unique_key_category (category); CREATE INDEX ix_unique_key_category_unique_key_unique_key_name ON unique_key_category (unique_key_unique_key_name); +CREATE INDEX ix_unique_key_category_category ON unique_key_category (category); CREATE TABLE unique_key_keyword ( unique_key_unique_key_name TEXT, @@ -6851,8 +6851,8 @@ CREATE TABLE type_mapping_todos ( PRIMARY KEY (type_mapping_framework, todos), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_todos_type_mapping_framework ON type_mapping_todos (type_mapping_framework); CREATE INDEX ix_type_mapping_todos_todos ON type_mapping_todos (todos); +CREATE INDEX ix_type_mapping_todos_type_mapping_framework ON type_mapping_todos (type_mapping_framework); CREATE TABLE type_mapping_notes ( type_mapping_framework TEXT, @@ -6879,8 +6879,8 @@ CREATE TABLE type_mapping_in_subset ( FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_type_mapping_in_subset_in_subset_name ON type_mapping_in_subset (in_subset_name); CREATE INDEX ix_type_mapping_in_subset_type_mapping_framework ON type_mapping_in_subset (type_mapping_framework); +CREATE INDEX ix_type_mapping_in_subset_in_subset_name ON type_mapping_in_subset (in_subset_name); CREATE TABLE type_mapping_see_also ( type_mapping_framework TEXT, @@ -6942,8 +6942,8 @@ CREATE TABLE type_mapping_narrow_mappings ( PRIMARY KEY (type_mapping_framework, narrow_mappings), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_narrow_mappings_narrow_mappings ON type_mapping_narrow_mappings (narrow_mappings); CREATE INDEX ix_type_mapping_narrow_mappings_type_mapping_framework ON type_mapping_narrow_mappings (type_mapping_framework); +CREATE INDEX ix_type_mapping_narrow_mappings_narrow_mappings ON type_mapping_narrow_mappings (narrow_mappings); CREATE TABLE type_mapping_broad_mappings ( type_mapping_framework TEXT, @@ -6951,8 +6951,8 @@ CREATE TABLE type_mapping_broad_mappings ( PRIMARY KEY (type_mapping_framework, broad_mappings), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); -CREATE INDEX ix_type_mapping_broad_mappings_type_mapping_framework ON type_mapping_broad_mappings (type_mapping_framework); CREATE INDEX ix_type_mapping_broad_mappings_broad_mappings ON type_mapping_broad_mappings (broad_mappings); +CREATE INDEX ix_type_mapping_broad_mappings_type_mapping_framework ON type_mapping_broad_mappings (type_mapping_framework); CREATE TABLE type_mapping_contributors ( type_mapping_framework TEXT, @@ -7079,8 +7079,8 @@ CREATE TABLE permissible_value_implements ( PRIMARY KEY (permissible_value_text, implements), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_implements_implements ON permissible_value_implements (implements); CREATE INDEX ix_permissible_value_implements_permissible_value_text ON permissible_value_implements (permissible_value_text); +CREATE INDEX ix_permissible_value_implements_implements ON permissible_value_implements (implements); CREATE TABLE permissible_value_mixins ( permissible_value_text TEXT, @@ -7089,8 +7089,8 @@ CREATE TABLE permissible_value_mixins ( FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text), FOREIGN KEY(mixins_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_mixins_mixins_text ON permissible_value_mixins (mixins_text); CREATE INDEX ix_permissible_value_mixins_permissible_value_text ON permissible_value_mixins (permissible_value_text); +CREATE INDEX ix_permissible_value_mixins_mixins_text ON permissible_value_mixins (mixins_text); CREATE TABLE permissible_value_todos ( permissible_value_text TEXT, @@ -7107,8 +7107,8 @@ CREATE TABLE permissible_value_notes ( PRIMARY KEY (permissible_value_text, notes), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_notes_permissible_value_text ON permissible_value_notes (permissible_value_text); CREATE INDEX ix_permissible_value_notes_notes ON permissible_value_notes (notes); +CREATE INDEX ix_permissible_value_notes_permissible_value_text ON permissible_value_notes (permissible_value_text); CREATE TABLE permissible_value_comments ( permissible_value_text TEXT, @@ -7135,8 +7135,8 @@ CREATE TABLE permissible_value_see_also ( PRIMARY KEY (permissible_value_text, see_also), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_see_also_permissible_value_text ON permissible_value_see_also (permissible_value_text); CREATE INDEX ix_permissible_value_see_also_see_also ON permissible_value_see_also (see_also); +CREATE INDEX ix_permissible_value_see_also_permissible_value_text ON permissible_value_see_also (permissible_value_text); CREATE TABLE permissible_value_aliases ( permissible_value_text TEXT, @@ -7162,8 +7162,8 @@ CREATE TABLE permissible_value_exact_mappings ( PRIMARY KEY (permissible_value_text, exact_mappings), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_exact_mappings_permissible_value_text ON permissible_value_exact_mappings (permissible_value_text); CREATE INDEX ix_permissible_value_exact_mappings_exact_mappings ON permissible_value_exact_mappings (exact_mappings); +CREATE INDEX ix_permissible_value_exact_mappings_permissible_value_text ON permissible_value_exact_mappings (permissible_value_text); CREATE TABLE permissible_value_close_mappings ( permissible_value_text TEXT, @@ -7171,8 +7171,8 @@ CREATE TABLE permissible_value_close_mappings ( PRIMARY KEY (permissible_value_text, close_mappings), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_close_mappings_permissible_value_text ON permissible_value_close_mappings (permissible_value_text); CREATE INDEX ix_permissible_value_close_mappings_close_mappings ON permissible_value_close_mappings (close_mappings); +CREATE INDEX ix_permissible_value_close_mappings_permissible_value_text ON permissible_value_close_mappings (permissible_value_text); CREATE TABLE permissible_value_related_mappings ( permissible_value_text TEXT, @@ -7180,8 +7180,8 @@ CREATE TABLE permissible_value_related_mappings ( PRIMARY KEY (permissible_value_text, related_mappings), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_related_mappings_permissible_value_text ON permissible_value_related_mappings (permissible_value_text); CREATE INDEX ix_permissible_value_related_mappings_related_mappings ON permissible_value_related_mappings (related_mappings); +CREATE INDEX ix_permissible_value_related_mappings_permissible_value_text ON permissible_value_related_mappings (permissible_value_text); CREATE TABLE permissible_value_narrow_mappings ( permissible_value_text TEXT, @@ -7198,8 +7198,8 @@ CREATE TABLE permissible_value_broad_mappings ( PRIMARY KEY (permissible_value_text, broad_mappings), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_broad_mappings_broad_mappings ON permissible_value_broad_mappings (broad_mappings); CREATE INDEX ix_permissible_value_broad_mappings_permissible_value_text ON permissible_value_broad_mappings (permissible_value_text); +CREATE INDEX ix_permissible_value_broad_mappings_broad_mappings ON permissible_value_broad_mappings (broad_mappings); CREATE TABLE permissible_value_contributors ( permissible_value_text TEXT, @@ -7207,8 +7207,8 @@ CREATE TABLE permissible_value_contributors ( PRIMARY KEY (permissible_value_text, contributors), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_contributors_contributors ON permissible_value_contributors (contributors); CREATE INDEX ix_permissible_value_contributors_permissible_value_text ON permissible_value_contributors (permissible_value_text); +CREATE INDEX ix_permissible_value_contributors_contributors ON permissible_value_contributors (contributors); CREATE TABLE permissible_value_category ( permissible_value_text TEXT, @@ -7225,8 +7225,8 @@ CREATE TABLE permissible_value_keyword ( PRIMARY KEY (permissible_value_text, keyword), FOREIGN KEY(permissible_value_text) REFERENCES permissible_value (text) ); -CREATE INDEX ix_permissible_value_keyword_permissible_value_text ON permissible_value_keyword (permissible_value_text); CREATE INDEX ix_permissible_value_keyword_keyword ON permissible_value_keyword (keyword); +CREATE INDEX ix_permissible_value_keyword_permissible_value_text ON permissible_value_keyword (permissible_value_text); CREATE TABLE structured_alias ( id INTEGER NOT NULL, @@ -7312,8 +7312,8 @@ CREATE TABLE enum_binding_notes ( PRIMARY KEY (enum_binding_id, notes), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_notes_notes ON enum_binding_notes (notes); CREATE INDEX ix_enum_binding_notes_enum_binding_id ON enum_binding_notes (enum_binding_id); +CREATE INDEX ix_enum_binding_notes_notes ON enum_binding_notes (notes); CREATE TABLE enum_binding_comments ( enum_binding_id INTEGER, @@ -7349,8 +7349,8 @@ CREATE TABLE enum_binding_aliases ( PRIMARY KEY (enum_binding_id, aliases), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_aliases_enum_binding_id ON enum_binding_aliases (enum_binding_id); CREATE INDEX ix_enum_binding_aliases_aliases ON enum_binding_aliases (aliases); +CREATE INDEX ix_enum_binding_aliases_enum_binding_id ON enum_binding_aliases (enum_binding_id); CREATE TABLE enum_binding_mappings ( enum_binding_id INTEGER, @@ -7358,8 +7358,8 @@ CREATE TABLE enum_binding_mappings ( PRIMARY KEY (enum_binding_id, mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_mappings_enum_binding_id ON enum_binding_mappings (enum_binding_id); CREATE INDEX ix_enum_binding_mappings_mappings ON enum_binding_mappings (mappings); +CREATE INDEX ix_enum_binding_mappings_enum_binding_id ON enum_binding_mappings (enum_binding_id); CREATE TABLE enum_binding_exact_mappings ( enum_binding_id INTEGER, @@ -7376,8 +7376,8 @@ CREATE TABLE enum_binding_close_mappings ( PRIMARY KEY (enum_binding_id, close_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_close_mappings_close_mappings ON enum_binding_close_mappings (close_mappings); CREATE INDEX ix_enum_binding_close_mappings_enum_binding_id ON enum_binding_close_mappings (enum_binding_id); +CREATE INDEX ix_enum_binding_close_mappings_close_mappings ON enum_binding_close_mappings (close_mappings); CREATE TABLE enum_binding_related_mappings ( enum_binding_id INTEGER, @@ -7385,8 +7385,8 @@ CREATE TABLE enum_binding_related_mappings ( PRIMARY KEY (enum_binding_id, related_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_related_mappings_related_mappings ON enum_binding_related_mappings (related_mappings); CREATE INDEX ix_enum_binding_related_mappings_enum_binding_id ON enum_binding_related_mappings (enum_binding_id); +CREATE INDEX ix_enum_binding_related_mappings_related_mappings ON enum_binding_related_mappings (related_mappings); CREATE TABLE enum_binding_narrow_mappings ( enum_binding_id INTEGER, @@ -7403,8 +7403,8 @@ CREATE TABLE enum_binding_broad_mappings ( PRIMARY KEY (enum_binding_id, broad_mappings), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_broad_mappings_enum_binding_id ON enum_binding_broad_mappings (enum_binding_id); CREATE INDEX ix_enum_binding_broad_mappings_broad_mappings ON enum_binding_broad_mappings (broad_mappings); +CREATE INDEX ix_enum_binding_broad_mappings_enum_binding_id ON enum_binding_broad_mappings (enum_binding_id); CREATE TABLE enum_binding_contributors ( enum_binding_id INTEGER, @@ -7412,8 +7412,8 @@ CREATE TABLE enum_binding_contributors ( PRIMARY KEY (enum_binding_id, contributors), FOREIGN KEY(enum_binding_id) REFERENCES enum_binding (id) ); -CREATE INDEX ix_enum_binding_contributors_enum_binding_id ON enum_binding_contributors (enum_binding_id); CREATE INDEX ix_enum_binding_contributors_contributors ON enum_binding_contributors (contributors); +CREATE INDEX ix_enum_binding_contributors_enum_binding_id ON enum_binding_contributors (enum_binding_id); CREATE TABLE enum_binding_category ( enum_binding_id INTEGER, @@ -7563,54 +7563,54 @@ CREATE TABLE alt_description ( FOREIGN KEY(unique_key_unique_key_name) REFERENCES unique_key (unique_key_name), FOREIGN KEY(type_mapping_framework) REFERENCES type_mapping (framework) ); +CREATE INDEX ix_alt_description_slot_definition_name ON alt_description (slot_definition_name); +CREATE INDEX alt_description_schema_definition_name_source_idx ON alt_description (schema_definition_name, source); +CREATE INDEX alt_description_type_definition_name_source_idx ON alt_description (type_definition_name, source); +CREATE INDEX alt_description_pattern_expression_id_source_idx ON alt_description (pattern_expression_id, source); +CREATE INDEX alt_description_subset_definition_name_source_idx ON alt_description (subset_definition_name, source); CREATE INDEX alt_description_structured_alias_id_source_idx ON alt_description (structured_alias_id, source); CREATE INDEX ix_alt_description_subset_definition_name ON alt_description (subset_definition_name); +CREATE INDEX ix_alt_description_pattern_expression_id ON alt_description (pattern_expression_id); CREATE INDEX ix_alt_description_anonymous_slot_expression_id ON alt_description (anonymous_slot_expression_id); CREATE INDEX ix_alt_description_description ON alt_description (description); -CREATE INDEX ix_alt_description_dimension_expression_id ON alt_description (dimension_expression_id); CREATE INDEX alt_description_class_rule_id_source_idx ON alt_description (class_rule_id, source); -CREATE INDEX ix_alt_description_path_expression_id ON alt_description (path_expression_id); CREATE INDEX ix_alt_description_type_definition_name ON alt_description (type_definition_name); +CREATE INDEX ix_alt_description_path_expression_id ON alt_description (path_expression_id); CREATE INDEX alt_description_definition_name_source_idx ON alt_description (definition_name, source); +CREATE INDEX alt_description_anonymous_slot_expression_id_source_idx ON alt_description (anonymous_slot_expression_id, source); +CREATE INDEX ix_alt_description_dimension_expression_id ON alt_description (dimension_expression_id); CREATE INDEX alt_description_slot_definition_name_source_idx ON alt_description (slot_definition_name, source); CREATE INDEX alt_description_type_mapping_framework_source_idx ON alt_description (type_mapping_framework, source); -CREATE INDEX ix_alt_description_array_expression_id ON alt_description (array_expression_id); -CREATE INDEX alt_description_pattern_expression_id_source_idx ON alt_description (pattern_expression_id, source); +CREATE INDEX alt_description_unique_key_unique_key_name_source_idx ON alt_description (unique_key_unique_key_name, source); CREATE INDEX ix_alt_description_enum_definition_name ON alt_description (enum_definition_name); -CREATE INDEX ix_alt_description_anonymous_expression_id ON alt_description (anonymous_expression_id); CREATE INDEX alt_description_anonymous_expression_id_source_idx ON alt_description (anonymous_expression_id, source); CREATE INDEX alt_description_import_expression_id_source_idx ON alt_description (import_expression_id, source); CREATE INDEX ix_alt_description_schema_definition_name ON alt_description (schema_definition_name); -CREATE INDEX ix_alt_description_type_mapping_framework ON alt_description (type_mapping_framework); +CREATE INDEX ix_alt_description_anonymous_expression_id ON alt_description (anonymous_expression_id); +CREATE INDEX ix_alt_description_array_expression_id ON alt_description (array_expression_id); CREATE INDEX ix_alt_description_element_name ON alt_description (element_name); -CREATE INDEX ix_alt_description_class_rule_id ON alt_description (class_rule_id); CREATE INDEX alt_description_array_expression_id_source_idx ON alt_description (array_expression_id, source); -CREATE INDEX ix_alt_description_structured_alias_id ON alt_description (structured_alias_id); +CREATE INDEX ix_alt_description_type_mapping_framework ON alt_description (type_mapping_framework); +CREATE INDEX ix_alt_description_class_rule_id ON alt_description (class_rule_id); +CREATE INDEX alt_description_enum_definition_name_source_idx ON alt_description (enum_definition_name, source); CREATE INDEX ix_alt_description_source ON alt_description (source); -CREATE INDEX ix_alt_description_unique_key_unique_key_name ON alt_description (unique_key_unique_key_name); +CREATE INDEX ix_alt_description_structured_alias_id ON alt_description (structured_alias_id); CREATE INDEX alt_description_common_metadata_id_source_idx ON alt_description (common_metadata_id, source); -CREATE INDEX alt_description_enum_definition_name_source_idx ON alt_description (enum_definition_name, source); CREATE INDEX alt_description_anonymous_class_expression_id_source_idx ON alt_description (anonymous_class_expression_id, source); +CREATE INDEX ix_alt_description_unique_key_unique_key_name ON alt_description (unique_key_unique_key_name); +CREATE INDEX alt_description_permissible_value_text_source_idx ON alt_description (permissible_value_text, source); CREATE INDEX ix_alt_description_common_metadata_id ON alt_description (common_metadata_id); CREATE INDEX ix_alt_description_enum_binding_id ON alt_description (enum_binding_id); -CREATE INDEX ix_alt_description_class_definition_name ON alt_description (class_definition_name); -CREATE INDEX alt_description_permissible_value_text_source_idx ON alt_description (permissible_value_text, source); CREATE INDEX alt_description_path_expression_id_source_idx ON alt_description (path_expression_id, source); -CREATE INDEX ix_alt_description_permissible_value_text ON alt_description (permissible_value_text); +CREATE INDEX ix_alt_description_class_definition_name ON alt_description (class_definition_name); CREATE INDEX alt_description_dimension_expression_id_source_idx ON alt_description (dimension_expression_id, source); -CREATE INDEX ix_alt_description_anonymous_class_expression_id ON alt_description (anonymous_class_expression_id); +CREATE INDEX ix_alt_description_permissible_value_text ON alt_description (permissible_value_text); CREATE INDEX alt_description_enum_binding_id_source_idx ON alt_description (enum_binding_id, source); -CREATE INDEX ix_alt_description_import_expression_id ON alt_description (import_expression_id); +CREATE INDEX ix_alt_description_anonymous_class_expression_id ON alt_description (anonymous_class_expression_id); CREATE INDEX alt_description_element_name_source_idx ON alt_description (element_name, source); CREATE INDEX alt_description_class_definition_name_source_idx ON alt_description (class_definition_name, source); -CREATE INDEX alt_description_schema_definition_name_source_idx ON alt_description (schema_definition_name, source); +CREATE INDEX ix_alt_description_import_expression_id ON alt_description (import_expression_id); CREATE INDEX ix_alt_description_definition_name ON alt_description (definition_name); -CREATE INDEX ix_alt_description_slot_definition_name ON alt_description (slot_definition_name); -CREATE INDEX alt_description_anonymous_slot_expression_id_source_idx ON alt_description (anonymous_slot_expression_id, source); -CREATE INDEX alt_description_unique_key_unique_key_name_source_idx ON alt_description (unique_key_unique_key_name, source); -CREATE INDEX alt_description_type_definition_name_source_idx ON alt_description (type_definition_name, source); -CREATE INDEX ix_alt_description_pattern_expression_id ON alt_description (pattern_expression_id); -CREATE INDEX alt_description_subset_definition_name_source_idx ON alt_description (subset_definition_name, source); CREATE TABLE annotation ( tag TEXT NOT NULL, @@ -7690,56 +7690,56 @@ CREATE TABLE annotation ( FOREIGN KEY(annotation_tag) REFERENCES annotation (tag), FOREIGN KEY(value_id) REFERENCES "AnyValue" (id) ); -CREATE INDEX ix_annotation_element_name ON annotation (element_name); -CREATE INDEX ix_annotation_type_mapping_framework ON annotation (type_mapping_framework); +CREATE INDEX ix_annotation_value_id ON annotation (value_id); +CREATE INDEX annotation_type_definition_name_tag_idx ON annotation (type_definition_name, tag); +CREATE INDEX ix_annotation_anonymous_expression_id ON annotation (anonymous_expression_id); +CREATE INDEX annotation_annotatable_id_tag_idx ON annotation (annotatable_id, tag); +CREATE INDEX annotation_subset_definition_name_tag_idx ON annotation (subset_definition_name, tag); +CREATE INDEX annotation_anonymous_expression_id_tag_idx ON annotation (anonymous_expression_id, tag); +CREATE INDEX annotation_array_expression_id_tag_idx ON annotation (array_expression_id, tag); +CREATE INDEX ix_annotation_array_expression_id ON annotation (array_expression_id); +CREATE INDEX ix_annotation_annotation_tag ON annotation (annotation_tag); +CREATE INDEX annotation_definition_name_tag_idx ON annotation (definition_name, tag); +CREATE INDEX ix_annotation_class_rule_id ON annotation (class_rule_id); +CREATE INDEX ix_annotation_annotatable_id ON annotation (annotatable_id); CREATE INDEX annotation_enum_definition_name_tag_idx ON annotation (enum_definition_name, tag); CREATE INDEX annotation_anonymous_class_expression_id_tag_idx ON annotation (anonymous_class_expression_id, tag); -CREATE INDEX ix_annotation_enum_binding_id ON annotation (enum_binding_id); CREATE INDEX annotation_permissible_value_text_tag_idx ON annotation (permissible_value_text, tag); -CREATE INDEX ix_annotation_class_definition_name ON annotation (class_definition_name); -CREATE INDEX annotation_definition_name_tag_idx ON annotation (definition_name, tag); -CREATE INDEX ix_annotation_unique_key_unique_key_name ON annotation (unique_key_unique_key_name); +CREATE INDEX ix_annotation_element_name ON annotation (element_name); +CREATE INDEX ix_annotation_enum_binding_id ON annotation (enum_binding_id); +CREATE INDEX ix_annotation_type_mapping_framework ON annotation (type_mapping_framework); +CREATE INDEX annotation_schema_definition_name_tag_idx ON annotation (schema_definition_name, tag); CREATE INDEX annotation_annotation_tag_tag_idx ON annotation (annotation_tag, tag); -CREATE INDEX ix_annotation_enum_definition_name ON annotation (enum_definition_name); +CREATE INDEX ix_annotation_class_definition_name ON annotation (class_definition_name); CREATE INDEX annotation_path_expression_id_tag_idx ON annotation (path_expression_id, tag); CREATE INDEX annotation_dimension_expression_id_tag_idx ON annotation (dimension_expression_id, tag); -CREATE INDEX ix_annotation_anonymous_class_expression_id ON annotation (anonymous_class_expression_id); -CREATE INDEX ix_annotation_permissible_value_text ON annotation (permissible_value_text); +CREATE INDEX ix_annotation_unique_key_unique_key_name ON annotation (unique_key_unique_key_name); +CREATE INDEX ix_annotation_enum_definition_name ON annotation (enum_definition_name); CREATE INDEX annotation_unique_key_unique_key_name_tag_idx ON annotation (unique_key_unique_key_name, tag); -CREATE INDEX ix_annotation_definition_name ON annotation (definition_name); +CREATE INDEX ix_annotation_anonymous_class_expression_id ON annotation (anonymous_class_expression_id); CREATE INDEX annotation_enum_binding_id_tag_idx ON annotation (enum_binding_id, tag); CREATE INDEX annotation_class_definition_name_tag_idx ON annotation (class_definition_name, tag); +CREATE INDEX ix_annotation_definition_name ON annotation (definition_name); +CREATE INDEX ix_annotation_permissible_value_text ON annotation (permissible_value_text); CREATE INDEX ix_annotation_tag ON annotation (tag); CREATE INDEX ix_annotation_slot_definition_name ON annotation (slot_definition_name); -CREATE INDEX ix_annotation_import_expression_id ON annotation (import_expression_id); CREATE INDEX annotation_element_name_tag_idx ON annotation (element_name, tag); -CREATE INDEX ix_annotation_structured_alias_id ON annotation (structured_alias_id); CREATE INDEX annotation_anonymous_slot_expression_id_tag_idx ON annotation (anonymous_slot_expression_id, tag); CREATE INDEX annotation_pattern_expression_id_tag_idx ON annotation (pattern_expression_id, tag); +CREATE INDEX ix_annotation_structured_alias_id ON annotation (structured_alias_id); +CREATE INDEX ix_annotation_dimension_expression_id ON annotation (dimension_expression_id); CREATE INDEX ix_annotation_subset_definition_name ON annotation (subset_definition_name); -CREATE INDEX ix_annotation_anonymous_slot_expression_id ON annotation (anonymous_slot_expression_id); -CREATE INDEX ix_annotation_pattern_expression_id ON annotation (pattern_expression_id); -CREATE INDEX ix_annotation_type_definition_name ON annotation (type_definition_name); +CREATE INDEX ix_annotation_import_expression_id ON annotation (import_expression_id); CREATE INDEX annotation_type_mapping_framework_tag_idx ON annotation (type_mapping_framework, tag); +CREATE INDEX ix_annotation_type_definition_name ON annotation (type_definition_name); +CREATE INDEX ix_annotation_anonymous_slot_expression_id ON annotation (anonymous_slot_expression_id); CREATE INDEX annotation_structured_alias_id_tag_idx ON annotation (structured_alias_id, tag); CREATE INDEX annotation_class_rule_id_tag_idx ON annotation (class_rule_id, tag); +CREATE INDEX ix_annotation_pattern_expression_id ON annotation (pattern_expression_id); CREATE INDEX ix_annotation_path_expression_id ON annotation (path_expression_id); -CREATE INDEX ix_annotation_dimension_expression_id ON annotation (dimension_expression_id); -CREATE INDEX ix_annotation_schema_definition_name ON annotation (schema_definition_name); -CREATE INDEX annotation_anonymous_expression_id_tag_idx ON annotation (anonymous_expression_id, tag); -CREATE INDEX ix_annotation_value_id ON annotation (value_id); -CREATE INDEX annotation_schema_definition_name_tag_idx ON annotation (schema_definition_name, tag); CREATE INDEX annotation_slot_definition_name_tag_idx ON annotation (slot_definition_name, tag); CREATE INDEX annotation_import_expression_id_tag_idx ON annotation (import_expression_id, tag); -CREATE INDEX ix_annotation_anonymous_expression_id ON annotation (anonymous_expression_id); -CREATE INDEX annotation_array_expression_id_tag_idx ON annotation (array_expression_id, tag); -CREATE INDEX annotation_type_definition_name_tag_idx ON annotation (type_definition_name, tag); -CREATE INDEX ix_annotation_array_expression_id ON annotation (array_expression_id); -CREATE INDEX ix_annotation_annotation_tag ON annotation (annotation_tag); -CREATE INDEX annotation_subset_definition_name_tag_idx ON annotation (subset_definition_name, tag); -CREATE INDEX annotation_annotatable_id_tag_idx ON annotation (annotatable_id, tag); -CREATE INDEX ix_annotation_annotatable_id ON annotation (annotatable_id); -CREATE INDEX ix_annotation_class_rule_id ON annotation (class_rule_id); +CREATE INDEX ix_annotation_schema_definition_name ON annotation (schema_definition_name); CREATE TABLE structured_alias_category ( structured_alias_id INTEGER, @@ -7756,8 +7756,8 @@ CREATE TABLE structured_alias_contexts ( PRIMARY KEY (structured_alias_id, contexts), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_contexts_contexts ON structured_alias_contexts (contexts); CREATE INDEX ix_structured_alias_contexts_structured_alias_id ON structured_alias_contexts (structured_alias_id); +CREATE INDEX ix_structured_alias_contexts_contexts ON structured_alias_contexts (contexts); CREATE TABLE structured_alias_todos ( structured_alias_id INTEGER, @@ -7765,8 +7765,8 @@ CREATE TABLE structured_alias_todos ( PRIMARY KEY (structured_alias_id, todos), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_todos_todos ON structured_alias_todos (todos); CREATE INDEX ix_structured_alias_todos_structured_alias_id ON structured_alias_todos (structured_alias_id); +CREATE INDEX ix_structured_alias_todos_todos ON structured_alias_todos (todos); CREATE TABLE structured_alias_notes ( structured_alias_id INTEGER, @@ -7793,8 +7793,8 @@ CREATE TABLE structured_alias_in_subset ( FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id), FOREIGN KEY(in_subset_name) REFERENCES subset_definition (name) ); -CREATE INDEX ix_structured_alias_in_subset_in_subset_name ON structured_alias_in_subset (in_subset_name); CREATE INDEX ix_structured_alias_in_subset_structured_alias_id ON structured_alias_in_subset (structured_alias_id); +CREATE INDEX ix_structured_alias_in_subset_in_subset_name ON structured_alias_in_subset (in_subset_name); CREATE TABLE structured_alias_see_also ( structured_alias_id INTEGER, @@ -7811,8 +7811,8 @@ CREATE TABLE structured_alias_aliases ( PRIMARY KEY (structured_alias_id, aliases), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_aliases_aliases ON structured_alias_aliases (aliases); CREATE INDEX ix_structured_alias_aliases_structured_alias_id ON structured_alias_aliases (structured_alias_id); +CREATE INDEX ix_structured_alias_aliases_aliases ON structured_alias_aliases (aliases); CREATE TABLE structured_alias_mappings ( structured_alias_id INTEGER, @@ -7829,8 +7829,8 @@ CREATE TABLE structured_alias_exact_mappings ( PRIMARY KEY (structured_alias_id, exact_mappings), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_exact_mappings_structured_alias_id ON structured_alias_exact_mappings (structured_alias_id); CREATE INDEX ix_structured_alias_exact_mappings_exact_mappings ON structured_alias_exact_mappings (exact_mappings); +CREATE INDEX ix_structured_alias_exact_mappings_structured_alias_id ON structured_alias_exact_mappings (structured_alias_id); CREATE TABLE structured_alias_close_mappings ( structured_alias_id INTEGER, @@ -7838,8 +7838,8 @@ CREATE TABLE structured_alias_close_mappings ( PRIMARY KEY (structured_alias_id, close_mappings), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_close_mappings_structured_alias_id ON structured_alias_close_mappings (structured_alias_id); CREATE INDEX ix_structured_alias_close_mappings_close_mappings ON structured_alias_close_mappings (close_mappings); +CREATE INDEX ix_structured_alias_close_mappings_structured_alias_id ON structured_alias_close_mappings (structured_alias_id); CREATE TABLE structured_alias_related_mappings ( structured_alias_id INTEGER, @@ -7856,8 +7856,8 @@ CREATE TABLE structured_alias_narrow_mappings ( PRIMARY KEY (structured_alias_id, narrow_mappings), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_narrow_mappings_narrow_mappings ON structured_alias_narrow_mappings (narrow_mappings); CREATE INDEX ix_structured_alias_narrow_mappings_structured_alias_id ON structured_alias_narrow_mappings (structured_alias_id); +CREATE INDEX ix_structured_alias_narrow_mappings_narrow_mappings ON structured_alias_narrow_mappings (narrow_mappings); CREATE TABLE structured_alias_broad_mappings ( structured_alias_id INTEGER, @@ -7865,8 +7865,8 @@ CREATE TABLE structured_alias_broad_mappings ( PRIMARY KEY (structured_alias_id, broad_mappings), FOREIGN KEY(structured_alias_id) REFERENCES structured_alias (id) ); -CREATE INDEX ix_structured_alias_broad_mappings_broad_mappings ON structured_alias_broad_mappings (broad_mappings); CREATE INDEX ix_structured_alias_broad_mappings_structured_alias_id ON structured_alias_broad_mappings (structured_alias_id); +CREATE INDEX ix_structured_alias_broad_mappings_broad_mappings ON structured_alias_broad_mappings (broad_mappings); CREATE TABLE structured_alias_contributors ( structured_alias_id INTEGER, @@ -7967,55 +7967,55 @@ CREATE TABLE extension ( FOREIGN KEY(annotation_tag) REFERENCES annotation (tag), FOREIGN KEY(value_id) REFERENCES "AnyValue" (id) ); +CREATE INDEX ix_extension_definition_name ON extension (definition_name); +CREATE INDEX extension_import_expression_id_tag_idx ON extension (import_expression_id, tag); +CREATE INDEX extension_slot_definition_name_tag_idx ON extension (slot_definition_name, tag); +CREATE INDEX extension_definition_name_tag_idx ON extension (definition_name, tag); +CREATE INDEX ix_extension_structured_alias_id ON extension (structured_alias_id); +CREATE INDEX ix_extension_anonymous_slot_expression_id ON extension (anonymous_slot_expression_id); +CREATE INDEX ix_extension_pattern_expression_id ON extension (pattern_expression_id); +CREATE INDEX ix_extension_subset_definition_name ON extension (subset_definition_name); +CREATE INDEX extension_extension_tag_tag_idx ON extension (extension_tag, tag); +CREATE INDEX ix_extension_type_definition_name ON extension (type_definition_name); CREATE INDEX extension_element_name_tag_idx ON extension (element_name, tag); CREATE INDEX extension_anonymous_expression_id_tag_idx ON extension (anonymous_expression_id, tag); +CREATE INDEX extension_array_expression_id_tag_idx ON extension (array_expression_id, tag); CREATE INDEX ix_extension_path_expression_id ON extension (path_expression_id); CREATE INDEX ix_extension_dimension_expression_id ON extension (dimension_expression_id); CREATE INDEX ix_extension_value_id ON extension (value_id); +CREATE INDEX extension_permissible_value_text_tag_idx ON extension (permissible_value_text, tag); CREATE INDEX ix_extension_schema_definition_name ON extension (schema_definition_name); CREATE INDEX ix_extension_annotation_tag ON extension (annotation_tag); -CREATE INDEX extension_anonymous_class_expression_id_tag_idx ON extension (anonymous_class_expression_id, tag); -CREATE INDEX extension_permissible_value_text_tag_idx ON extension (permissible_value_text, tag); -CREATE INDEX ix_extension_extensible_id ON extension (extensible_id); CREATE INDEX extension_enum_definition_name_tag_idx ON extension (enum_definition_name, tag); -CREATE INDEX extension_extension_tag_tag_idx ON extension (extension_tag, tag); +CREATE INDEX extension_anonymous_class_expression_id_tag_idx ON extension (anonymous_class_expression_id, tag); CREATE INDEX ix_extension_anonymous_expression_id ON extension (anonymous_expression_id); +CREATE INDEX ix_extension_extensible_id ON extension (extensible_id); CREATE INDEX ix_extension_array_expression_id ON extension (array_expression_id); -CREATE INDEX ix_extension_extension_tag ON extension (extension_tag); -CREATE INDEX extension_dimension_expression_id_tag_idx ON extension (dimension_expression_id, tag); CREATE INDEX extension_extensible_id_tag_idx ON extension (extensible_id, tag); +CREATE INDEX ix_extension_extension_tag ON extension (extension_tag); CREATE INDEX extension_path_expression_id_tag_idx ON extension (path_expression_id, tag); +CREATE INDEX extension_dimension_expression_id_tag_idx ON extension (dimension_expression_id, tag); CREATE INDEX ix_extension_element_name ON extension (element_name); CREATE INDEX ix_extension_class_rule_id ON extension (class_rule_id); CREATE INDEX ix_extension_type_mapping_framework ON extension (type_mapping_framework); CREATE INDEX extension_schema_definition_name_tag_idx ON extension (schema_definition_name, tag); -CREATE INDEX extension_class_definition_name_tag_idx ON extension (class_definition_name, tag); CREATE INDEX extension_unique_key_unique_key_name_tag_idx ON extension (unique_key_unique_key_name, tag); +CREATE INDEX ix_extension_import_expression_id ON extension (import_expression_id); CREATE INDEX extension_enum_binding_id_tag_idx ON extension (enum_binding_id, tag); -CREATE INDEX ix_extension_class_definition_name ON extension (class_definition_name); +CREATE INDEX extension_class_definition_name_tag_idx ON extension (class_definition_name, tag); CREATE INDEX ix_extension_unique_key_unique_key_name ON extension (unique_key_unique_key_name); -CREATE INDEX ix_extension_enum_binding_id ON extension (enum_binding_id); -CREATE INDEX extension_pattern_expression_id_tag_idx ON extension (pattern_expression_id, tag); +CREATE INDEX ix_extension_class_definition_name ON extension (class_definition_name); CREATE INDEX extension_annotation_tag_tag_idx ON extension (annotation_tag, tag); +CREATE INDEX ix_extension_enum_binding_id ON extension (enum_binding_id); CREATE INDEX extension_anonymous_slot_expression_id_tag_idx ON extension (anonymous_slot_expression_id, tag); +CREATE INDEX extension_pattern_expression_id_tag_idx ON extension (pattern_expression_id, tag); CREATE INDEX ix_extension_permissible_value_text ON extension (permissible_value_text); -CREATE INDEX ix_extension_enum_definition_name ON extension (enum_definition_name); CREATE INDEX ix_extension_anonymous_class_expression_id ON extension (anonymous_class_expression_id); CREATE INDEX extension_type_definition_name_tag_idx ON extension (type_definition_name, tag); -CREATE INDEX extension_class_rule_id_tag_idx ON extension (class_rule_id, tag); +CREATE INDEX ix_extension_enum_definition_name ON extension (enum_definition_name); CREATE INDEX extension_type_mapping_framework_tag_idx ON extension (type_mapping_framework, tag); -CREATE INDEX ix_extension_import_expression_id ON extension (import_expression_id); CREATE INDEX extension_subset_definition_name_tag_idx ON extension (subset_definition_name, tag); CREATE INDEX extension_structured_alias_id_tag_idx ON extension (structured_alias_id, tag); +CREATE INDEX extension_class_rule_id_tag_idx ON extension (class_rule_id, tag); CREATE INDEX ix_extension_tag ON extension (tag); CREATE INDEX ix_extension_slot_definition_name ON extension (slot_definition_name); -CREATE INDEX ix_extension_definition_name ON extension (definition_name); -CREATE INDEX extension_import_expression_id_tag_idx ON extension (import_expression_id, tag); -CREATE INDEX extension_slot_definition_name_tag_idx ON extension (slot_definition_name, tag); -CREATE INDEX extension_array_expression_id_tag_idx ON extension (array_expression_id, tag); -CREATE INDEX ix_extension_structured_alias_id ON extension (structured_alias_id); -CREATE INDEX ix_extension_pattern_expression_id ON extension (pattern_expression_id); -CREATE INDEX ix_extension_subset_definition_name ON extension (subset_definition_name); -CREATE INDEX ix_extension_anonymous_slot_expression_id ON extension (anonymous_slot_expression_id); -CREATE INDEX extension_definition_name_tag_idx ON extension (definition_name, tag); -CREATE INDEX ix_extension_type_definition_name ON extension (type_definition_name); diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/types.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/types.py index 3bb2141d02..dd69c9236a 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/types.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/types.py @@ -1,5 +1,5 @@ # Auto generated from types.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:15 +# Generation date: 2026-08-12T09:42:14 # Schema: types # # id: https://w3id.org/linkml/types @@ -22,7 +22,7 @@ XSDTime, ) -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = None # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/units.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/units.py index 086c2461fd..7377ee550b 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/units.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/units.py @@ -1,5 +1,5 @@ # Auto generated from units.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:15 +# Generation date: 2026-08-12T09:42:15 # Schema: units # # id: https://w3id.org/linkml/units @@ -16,7 +16,7 @@ from linkml_runtime.utils.slot import Slot from linkml_runtime.utils.yamlutils import YAMLRoot -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = None # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/linkml_model/validation.py b/packages/linkml_runtime/src/linkml_runtime/linkml_model/validation.py index 83caf3e9cc..e23f3191fa 100644 --- a/packages/linkml_runtime/src/linkml_runtime/linkml_model/validation.py +++ b/packages/linkml_runtime/src/linkml_runtime/linkml_model/validation.py @@ -1,5 +1,5 @@ # Auto generated from validation.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-05-05T18:49:16 +# Generation date: 2026-08-12T09:42:17 # Schema: reporting # # id: https://w3id.org/linkml/reporting @@ -18,7 +18,7 @@ from linkml_runtime.utils.slot import Slot from linkml_runtime.utils.yamlutils import YAMLRoot -metamodel_version = "1.7.0" +metamodel_version = "1.11.0" version = None # Namespaces diff --git a/packages/linkml_runtime/src/linkml_runtime/loaders/rdflib_loader.py b/packages/linkml_runtime/src/linkml_runtime/loaders/rdflib_loader.py index 90e39e7c2c..1f0c653fd8 100644 --- a/packages/linkml_runtime/src/linkml_runtime/loaders/rdflib_loader.py +++ b/packages/linkml_runtime/src/linkml_runtime/loaders/rdflib_loader.py @@ -64,6 +64,7 @@ def from_rdf_graph( :param ignore_unmapped_predicates: if True then a predicate that has no mapping to a slot does not raise an error :return: all instances of target class type """ + schemaview.imports_closure() # ensure all imported sub-schemas are in schema_map before namespaces() caches namespaces = schemaview.namespaces() uri_to_class_map = {} for cn, c in schemaview.all_classes().items(): @@ -81,8 +82,11 @@ def from_rdf_graph( prefix_map = {record.prefix: record.uri_prefix for record in prefix_map.records} if prefix_map: for k, v in prefix_map.items(): - namespaces[k] = v - graph.namespace_manager.bind(k, URIRef(v)) + if k == "@base": + namespaces._base = v + else: + namespaces[k] = v + graph.namespace_manager.bind(k, URIRef(v)) # Step 1: Create stub root dict-objects target_class_uriref: URIRef = target_class.class_class_uri root_dicts: list[ANYDICT] = [] diff --git a/pyproject.toml b/pyproject.toml index ad57aad34c..ff1036d98c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -82,6 +82,7 @@ filterwarnings = [ ] markers = [ "network: mark tests that make external network requests", + "upstream_main: soft-fail tests that compare vendored files against linkml-model main branch", "slow: mark test as slow to run", "no_asserts: tests that don't have meaningful asserts, but are only snapshot comparisons, or historically had print statements, or other non-erroring behavior", "strcmp: tests that compare stringified values rather than the values themselves", diff --git a/tests/conftest.py b/tests/conftest.py index d31b356abf..7f591a91ed 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,3 +1,4 @@ +import difflib import os import re import shutil @@ -12,7 +13,6 @@ import docker import pytest import requests_cache -from _pytest.assertion.util import _diff_text import tests from linkml.utils.deprecation import EMITTED @@ -101,11 +101,12 @@ def compare_to_snapshot(self, other: object) -> bool: else: is_eq = normalize_line_endings(actual) == expected if not is_eq: - # TODO: probably better to use something other than this pytest - # private method. See https://docs.python.org/3/library/difflib.html - # highlighter is a no-op function for pytest 8.4+ compatibility self.eq_state = "\n".join( - _diff_text(actual, expected, lambda x, **kwargs: x, verbose=self.config.getoption("verbose")) + line.rstrip("\r\n") + for line in difflib.ndiff( + expected.splitlines(keepends=True), + normalize_line_endings(actual).splitlines(keepends=True), + ) ) return is_eq @@ -245,6 +246,7 @@ def pytest_addoption(parser): ) parser.addoption("--with-slow", action="store_true", help="include tests marked slow") parser.addoption("--with-network", action="store_true", help="include tests marked network") + parser.addoption("--with-upstream-main", action="store_true", help="include tests marked upstream_main") parser.addoption( "--with-output", action="store_true", help="dump output in compliance test for richer debugging information" ) @@ -282,6 +284,12 @@ def pytest_collection_modifyitems(config, items: list[pytest.Item]): if item.get_closest_marker("network"): item.add_marker(skip_network) + if not config.getoption("--with-upstream-main"): + skip_upstream_main = pytest.mark.skip(reason="need --with-upstream-main option to run") + for item in items: + if item.get_closest_marker("upstream_main"): + item.add_marker(skip_upstream_main) + # Group compliance tests on a single xdist worker - they share # mutable module-level caches in helper.py that are not safe to split. for item in items: diff --git a/tests/input/ImportMaps.md b/tests/input/ImportMaps.md index b7db4ff662..53c96a4d91 100644 --- a/tests/input/ImportMaps.md +++ b/tests/input/ImportMaps.md @@ -1,5 +1,5 @@ # Import Maps -The Biolink Modeling Language includes the ability to import one or more model files. Syntax: +LinkML includes the ability to import one or more model files. Syntax: ```yaml prefixes: linkml: https://w3id.org/linkml/ diff --git a/tests/linkml/test_base/__snapshots__/meta.json b/tests/linkml/test_base/__snapshots__/meta.json index 37581d3e9f..8381abdbae 100644 --- a/tests/linkml/test_base/__snapshots__/meta.json +++ b/tests/linkml/test_base/__snapshots__/meta.json @@ -83,6 +83,18 @@ { "prefix_prefix": "SIO", "prefix_reference": "http://semanticscience.org/resource/SIO_" + }, + { + "prefix_prefix": "dcterms", + "prefix_reference": "http://purl.org/dc/terms/" + }, + { + "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#" } ], "emit_prefixes": [ @@ -2955,7 +2967,7 @@ { "name": "unique_keys", "definition_uri": "https://w3id.org/linkml/unique_keys", - "description": "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why there are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key.", + "description": "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key.", "comments": [ "Not to be confused with a \"singular unique key\", which is defined by means of the `key` slot, or with an \"identifier\", which is defined by means of the \"identifier\" slot. Compound keys, singular unique keys, and identifiers all create a unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have.\n" ], diff --git a/tests/linkml/test_base/__snapshots__/meta.owl b/tests/linkml/test_base/__snapshots__/meta.owl index 565b265588..4bb91f12de 100644 --- a/tests/linkml/test_base/__snapshots__/meta.owl +++ b/tests/linkml/test_base/__snapshots__/meta.owl @@ -155,15 +155,6 @@ linkml:DimensionExpression a owl:Class, rdfs:label "dimension_expression" ; bibo:status ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:alias ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:exact_cardinality ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:exact_cardinality ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; @@ -173,23 +164,32 @@ linkml:DimensionExpression a owl:Class, owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:alias ], + owl:minCardinality 0 ; + owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minimum_cardinality ], + owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exact_cardinality ], + owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:minimum_cardinality ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:exact_cardinality ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:exact_cardinality ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:alias ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -200,23 +200,23 @@ linkml:ExtraSlotsExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "extra_slots_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:allowed ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:range_expression ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:allowed ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:range_expression ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:allowed ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:range_expression ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:allowed ], linkml:Expression ; skos:definition """An expression that defines how to handle additional data in an instance of class beyond the slots/attributes defined for that class. @@ -317,25 +317,25 @@ linkml:TypeMapping a owl:Class, rdfs:label "type_mapping" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:string_serialization ], + owl:onProperty linkml:mapped_type ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:string_serialization ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty linkml:framework_key ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:framework_key ], + owl:allValuesFrom linkml:TypeDefinition ; + owl:onProperty linkml:mapped_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:mapped_type ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; - owl:onProperty linkml:mapped_type ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:mapped_type ], + owl:onProperty linkml:string_serialization ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:framework_key ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:string_serialization ], @@ -777,47 +777,47 @@ linkml:ClassExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "class_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:all_of ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exactly_one_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:any_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:any_of ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; + owl:minCardinality 0 ; owl:onProperty linkml:slot_conditions ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:slot_conditions ], + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:exactly_one_of ] ; + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:slot_conditions ] ; skos:definition "A boolean expression that can be used to dynamically determine membership of a class" ; skos:inScheme linkml:meta . @@ -826,67 +826,67 @@ linkml:ClassRule a owl:Class, rdfs:label "class_rule" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:deactivated ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:elseconditions ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:elseconditions ], + owl:minCardinality 0 ; + owl:onProperty linkml:postconditions ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:preconditions ], + owl:minCardinality 0 ; + owl:onProperty linkml:deactivated ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:elseconditions ], + owl:onProperty linkml:bidirectional ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:bidirectional ], + owl:onProperty linkml:elseconditions ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:postconditions ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:open_world ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml:deactivated ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:rank ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:bidirectional ], + owl:onProperty linkml:deactivated ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:preconditions ], + owl:onProperty linkml:bidirectional ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:open_world ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:deactivated ], + owl:onProperty linkml:bidirectional ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:rank ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:elseconditions ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:rank ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:postconditions ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:open_world ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:preconditions ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:deactivated ], + owl:onProperty linkml:open_world ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:open_world ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:postconditions ], + owl:maxCardinality 1 ; + owl:onProperty linkml:preconditions ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:bidirectional ], + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:preconditions ], linkml:Annotatable, linkml:ClassLevelRule, linkml:CommonMetadata, @@ -903,20 +903,20 @@ linkml:MatchQuery a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:identifier_pattern ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:identifier_pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:identifier_pattern ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:identifier_pattern ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:source_ontology ] ; skos:definition "A query that is used on an enum expression to dynamically obtain a set of permissible values via a query that matches on properties of the external concepts." ; skos:inScheme linkml:meta . @@ -925,119 +925,119 @@ linkml:TypeExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "type_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousTypeExpression ; - owl:onProperty linkml:exactly_one_of ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_string_in ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:equals_number ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:maximum_value ], + owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:any_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:any_of ], + owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:maxCardinality 1 ; + owl:onProperty linkml:implicit_prefix ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:all_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:none_of ], + owl:maxCardinality 1 ; + owl:onProperty linkml:unit ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:minCardinality 0 ; owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:pattern ], + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:minCardinality 0 ; owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:implicit_prefix ], + owl:minCardinality 0 ; + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:implicit_prefix ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:unit ], + owl:onProperty linkml:minimum_value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_string ], + owl:onProperty linkml:equals_string_in ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:equals_number ], + owl:minCardinality 0 ; + owl:onProperty linkml:pattern ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:minimum_value ], + owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:onProperty linkml:all_of ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:equals_string_in ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:UnitOfMeasure ; + owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:allValuesFrom linkml:PatternExpression ; owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:structured_pattern ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_string_in ], + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:minimum_value ], + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:minimum_value ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:pattern ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:unit ], + owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_string ], + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:pattern ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:equals_string ], + owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:minimum_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:UnitOfMeasure ; - owl:onProperty linkml:unit ], + owl:allValuesFrom linkml:AnonymousTypeExpression ; + owl:onProperty linkml:exactly_one_of ], linkml:Expression ; skos:definition "An abstract class grouping named types and anonymous type expressions" ; skos:inScheme linkml:meta . @@ -2213,19 +2213,19 @@ linkml:AltDescription a owl:Class, linkml:ClassDefinition ; rdfs:label "alt_description" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:alt_description_source ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:alt_description_text ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty linkml:alt_description_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:alt_description_text ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 1 ; owl:onProperty linkml:alt_description_source ], [ a owl:Restriction ; owl:minCardinality 1 ; @@ -2252,37 +2252,37 @@ linkml:EnumBinding a owl:Class, linkml:ClassDefinition ; rdfs:label "enum_binding" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:pv_formula ], + owl:minCardinality 0 ; + owl:onProperty linkml:range ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:obligation_level ], + owl:onProperty linkml:range ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:EnumDefinition ; + owl:onProperty linkml:range ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:binds_value_of ], + owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; owl:allValuesFrom linkml:ObligationLevelEnum ; owl:onProperty linkml:obligation_level ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:binds_value_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:binds_value_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:range ], + owl:maxCardinality 1 ; + owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumDefinition ; - owl:onProperty linkml:range ], + owl:minCardinality 0 ; + owl:onProperty linkml:obligation_level ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:range ], + owl:onProperty linkml:binds_value_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:obligation_level ], [ a owl:Restriction ; owl:allValuesFrom linkml:PvFormulaOptions ; @@ -2298,17 +2298,14 @@ linkml:ImportExpression a owl:Class, rdfs:label "import_expression" ; bibo:status ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:import_from ], + owl:allValuesFrom linkml:Setting ; + owl:onProperty linkml:import_map ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:import_map ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:import_as ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:import_as ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:import_from ], @@ -2319,8 +2316,11 @@ linkml:ImportExpression a owl:Class, owl:maxCardinality 1 ; owl:onProperty linkml:import_as ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Setting ; - owl:onProperty linkml:import_map ], + owl:minCardinality 1 ; + owl:onProperty linkml:import_from ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:import_as ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -2331,22 +2331,22 @@ linkml:LocalName a owl:Class, linkml:ClassDefinition ; rdfs:label "local_name" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; + owl:maxCardinality 1 ; owl:onProperty linkml:local_name_source ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:local_name_value ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:local_name_source ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:local_name_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:local_name_value ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty linkml:local_name_value ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:local_name_source ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty linkml:local_name_value ] ; skos:definition "an attributed label" ; skos:inScheme linkml:meta . @@ -2355,23 +2355,23 @@ linkml:Prefix a owl:Class, linkml:ClassDefinition ; rdfs:label "prefix" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Uri ; - owl:onProperty linkml:prefix_reference ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:prefix_reference ], - [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:prefix_prefix ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:Uri ; owl:onProperty linkml:prefix_reference ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:prefix_prefix ], [ a owl:Restriction ; owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:prefix_prefix ] ; + owl:onProperty linkml:prefix_prefix ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:prefix_reference ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml:prefix_reference ] ; skos:definition "prefix URI tuple" ; skos:inScheme linkml:meta ; sh:order 12 . @@ -2500,7 +2500,7 @@ linkml:unique_keys a owl:ObjectProperty, rdfs:seeAlso , linkml:identifier, linkml:key ; - skos:definition "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why there are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; + skos:definition "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; skos:exactMatch owl:hasKey ; skos:inScheme linkml:meta ; skos:note """Not to be confused with a "singular unique key", which is defined by means of the `key` slot, or with an "identifier", which is defined by means of the "identifier" slot. Compound keys, singular unique keys, and identifiers all create a unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have. @@ -2510,32 +2510,32 @@ linkml:Example a owl:Class, linkml:ClassDefinition ; rdfs:label "example" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:value_object ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:value_object ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:value ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:value_description ], + owl:onProperty linkml:value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:value_object ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:value_description ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:value_description ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; + owl:onProperty linkml:value_object ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:value_description ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:value ], + owl:onProperty linkml:value_object ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:value ] ; + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:value_object ] ; skos:definition "usage example and description" ; skos:inScheme linkml:meta . @@ -2543,269 +2543,269 @@ linkml:SlotExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "slot_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:inlined ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:maximum_cardinality ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:has_member ], + owl:allValuesFrom linkml:EnumExpression ; + owl:onProperty linkml:enum_range ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:none_of ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:equals_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:range_expression ], + owl:onProperty linkml:range ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:required ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:any_of ], + owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:bindings ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:range ], + owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_string_in ], + owl:onProperty linkml:equals_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:inlined ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumExpression ; owl:onProperty linkml:enum_range ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_string_in ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:unit ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_expression ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumBinding ; - owl:onProperty linkml:bindings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:any_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:any_of ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:minimum_value ], + owl:onProperty linkml:has_member ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_number ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:inlined ], + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:enum_range ], + owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PresenceEnum ; + owl:minCardinality 0 ; owl:onProperty linkml:value_presence ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:maximum_value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Element ; + owl:maxCardinality 1 ; owl:onProperty linkml:range ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:value_presence ], + owl:onProperty linkml:implicit_prefix ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:all_members ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:exactly_one_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:all_members ], + owl:onProperty linkml:all_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:recommended ], + owl:maxCardinality 1 ; + owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_string ], + owl:onProperty linkml:equals_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:inlined_as_list ], + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_expression ], + owl:onProperty linkml:enum_range ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:maximum_cardinality ], + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:has_member ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:minimum_cardinality ], + owl:onProperty linkml:has_member ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:multivalued ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:maximum_value ], + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:exact_cardinality ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:none_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:pattern ], + owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Anything ; - owl:onProperty linkml:minimum_value ], + owl:maxCardinality 1 ; + owl:onProperty linkml:value_presence ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:implicit_prefix ], + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:required ], + owl:minCardinality 0 ; + owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:maximum_cardinality ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:all_members ], + owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:implicit_prefix ], + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:multivalued ], + owl:minCardinality 0 ; + owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:range ], + owl:allValuesFrom linkml:PresenceEnum ; + owl:onProperty linkml:value_presence ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:implicit_prefix ], + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:none_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:pattern ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:inlined_as_list ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:recommended ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:recommended ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:range_expression ], + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:minimum_value ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:enum_range ], + owl:minCardinality 0 ; + owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PatternExpression ; - owl:onProperty linkml:structured_pattern ], + owl:minCardinality 0 ; + owl:onProperty linkml:bindings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:all_of ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:equals_string_in ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_expression ], + owl:onProperty linkml:inlined_as_list ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:structured_pattern ], + owl:onProperty linkml:multivalued ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:pattern ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:exact_cardinality ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:multivalued ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:range_expression ], + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:equals_string_in ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:recommended ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:any_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:UnitOfMeasure ; + owl:onProperty linkml:unit ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:PatternExpression ; owl:onProperty linkml:structured_pattern ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:inlined_as_list ], + owl:maxCardinality 1 ; + owl:onProperty linkml:structured_pattern ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:equals_string ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:unit ], + owl:onProperty linkml:inlined ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minimum_cardinality ], + owl:onProperty linkml:all_members ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:value_presence ], + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:multivalued ], + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:maximum_value ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:minimum_cardinality ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; + owl:onProperty linkml:minimum_value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; - owl:allValuesFrom linkml:UnitOfMeasure ; - owl:onProperty linkml:unit ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:exact_cardinality ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:has_member ], + owl:allValuesFrom linkml:EnumBinding ; + owl:onProperty linkml:bindings ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml:inlined_as_list ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:array ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:equals_string ], + owl:minCardinality 0 ; + owl:onProperty linkml:required ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:exactly_one_of ], + owl:maxCardinality 1 ; + owl:onProperty linkml:pattern ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:has_member ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:inlined_as_list ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:required ], + owl:onProperty linkml:recommended ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:equals_string ], + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:recommended ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:equals_number ], + owl:onProperty linkml:inlined ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousSlotExpression ; - owl:onProperty linkml:none_of ], + owl:onProperty linkml:all_members ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:array ], + owl:maxCardinality 1 ; + owl:onProperty linkml:all_members ], [ a owl:Restriction ; owl:allValuesFrom linkml:ArrayExpression ; owl:onProperty linkml:array ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:equals_number ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:multivalued ], + owl:onProperty linkml:inlined ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:equals_number ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:array ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:required ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:required ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Anything ; + owl:onProperty linkml:minimum_value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousSlotExpression ; + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Element ; + owl:onProperty linkml:range ], linkml:Expression ; skos:definition "an expression that constrains the range of values a slot can take" ; skos:inScheme linkml:meta . @@ -2814,10 +2814,19 @@ linkml:StructuredAlias a owl:Class, linkml:ClassDefinition ; rdfs:label "structured_alias" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:literal_form ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:alias_contexts ], + owl:onProperty linkml:alias_predicate ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:maxCardinality 1 ; + owl:onProperty linkml:literal_form ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:alias_predicate ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:categories ], [ a owl:Restriction ; owl:allValuesFrom linkml:AliasPredicateEnum ; @@ -2825,24 +2834,15 @@ linkml:StructuredAlias a owl:Class, [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:literal_form ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:literal_form ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uri ; owl:onProperty linkml:alias_contexts ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:categories ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:alias_predicate ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:alias_predicate ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:literal_form ], + owl:onProperty linkml:alias_contexts ], linkml:Annotatable, linkml:CommonMetadata, linkml:Expression, @@ -2863,29 +2863,29 @@ linkml:UniqueKey a owl:Class, linkml:ClassDefinition ; rdfs:label "unique_key" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:unique_key_slots ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:unique_key_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:consider_nulls_inequal ], + owl:onProperty linkml:unique_key_name ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:unique_key_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; + owl:minCardinality 0 ; + owl:onProperty linkml:consider_nulls_inequal ], + [ a owl:Restriction ; + owl:minCardinality 1 ; owl:onProperty linkml:unique_key_slots ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:unique_key_name ], + owl:onProperty linkml:consider_nulls_inequal ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:consider_nulls_inequal ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:consider_nulls_inequal ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:unique_key_slots ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -2896,84 +2896,84 @@ linkml:UniqueKey a owl:Class, linkml:UnitOfMeasure a owl:Class, linkml:ClassDefinition ; rdfs:label "UnitOfMeasure" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:has_quantity_kind ], + rdfs:subClassOf [ owl:unionOf ( [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:ucum_code ] [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:iec61360code ] [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:symbol ] [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:exact_mappings ] ) ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:abbreviation ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:abbreviation ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:has_quantity_kind ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:iec61360code ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:exact_mappings ], + owl:onProperty linkml:has_quantity_kind ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:ucum_code ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:iec61360code ], + owl:onProperty linkml:abbreviation ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:descriptive_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:ucum_code ], + owl:onProperty linkml:iec61360code ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:iec61360code ], + owl:onProperty linkml:symbol ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:ucum_code ], - [ owl:unionOf ( [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:ucum_code ] [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:iec61360code ] [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:symbol ] [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:exact_mappings ] ) ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:descriptive_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:ucum_code ], + owl:onProperty linkml:has_quantity_kind ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:exact_mappings ], + owl:onProperty linkml:symbol ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:has_quantity_kind ], + owl:onProperty linkml:iec61360code ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:derivation ], + owl:onProperty linkml:ucum_code ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:descriptive_name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:iec61360code ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:derivation ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:abbreviation ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:symbol ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:symbol ], + owl:onProperty linkml:descriptive_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:derivation ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:derivation ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:abbreviation ], + owl:onProperty linkml:descriptive_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:abbreviation ], + owl:onProperty linkml:exact_mappings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:symbol ] ; + owl:maxCardinality 1 ; + owl:onProperty linkml:derivation ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:exact_mappings ] ; skos:definition "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; skos:exactMatch qudt:Unit ; skos:inScheme linkml:units . @@ -3063,33 +3063,33 @@ linkml:ArrayExpression a owl:Class, owl:onProperty linkml:maximum_number_dimensions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minimum_number_dimensions ], + owl:onProperty linkml:dimensions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:dimensions ], + owl:onProperty linkml:maximum_number_dimensions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:maximum_number_dimensions ], [ a owl:Restriction ; owl:allValuesFrom linkml:DimensionExpression ; owl:onProperty linkml:dimensions ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:exact_number_dimensions ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:maximum_number_dimensions ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:minimum_number_dimensions ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:exact_number_dimensions ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:maximum_number_dimensions ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:exact_number_dimensions ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; + owl:maxCardinality 1 ; owl:onProperty linkml:minimum_number_dimensions ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Integer ; owl:onProperty linkml:minimum_number_dimensions ], linkml:Annotatable, linkml:CommonMetadata, @@ -3101,25 +3101,25 @@ linkml:Extension a owl:Class, linkml:ClassDefinition ; rdfs:label "extension" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:extension_tag ], + [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:extension_tag ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Extension ; + owl:minCardinality 0 ; owl:onProperty linkml:extensions ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnyValue ; - owl:onProperty linkml:extension_value ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty linkml:extension_tag ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:extension_tag ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:extension_value ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:AnyValue ; + owl:onProperty linkml:extension_value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Extension ; owl:onProperty linkml:extensions ], [ a owl:Restriction ; owl:minCardinality 1 ; @@ -3131,6 +3131,12 @@ linkml:PatternExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "pattern_expression" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:interpolated ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:interpolated ], + [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:interpolated ], [ a owl:Restriction ; @@ -3138,15 +3144,9 @@ linkml:PatternExpression a owl:Class, owl:onProperty linkml:syntax ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:partial_match ], + owl:onProperty linkml:syntax ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:interpolated ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:interpolated ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:partial_match ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -3155,8 +3155,8 @@ linkml:PatternExpression a owl:Class, owl:maxCardinality 1 ; owl:onProperty linkml:partial_match ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:syntax ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:partial_match ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -3167,68 +3167,68 @@ linkml:PermissibleValue a owl:Class, linkml:ClassDefinition ; rdfs:label "permissible_value" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:PermissibleValue ; - owl:onProperty linkml:is_a ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:description ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:UnitOfMeasure ; + owl:minCardinality 0 ; owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:implements ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:implements ], + owl:minCardinality 0 ; + owl:onProperty linkml:meaning ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:text ], + owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:instantiates ], + owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:instantiates ], + owl:onProperty linkml:meaning ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:description ], + owl:maxCardinality 1 ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:maxCardinality 1 ; owl:onProperty linkml:meaning ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:text ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:mixins ], + owl:onProperty linkml:instantiates ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:UnitOfMeasure ; + owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:description ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:unit ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:meaning ], + owl:onProperty linkml:implements ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:instantiates ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:text ], [ a owl:Restriction ; owl:allValuesFrom linkml:PermissibleValue ; - owl:onProperty linkml:mixins ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:unit ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:implements ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:PermissibleValue ; + owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:meaning ], + owl:onProperty linkml:text ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml:text ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -3245,10 +3245,7 @@ linkml:Setting a owl:Class, owl:allValuesFrom linkml:String ; owl:onProperty linkml:setting_value ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:setting_value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; + owl:maxCardinality 1 ; owl:onProperty linkml:setting_key ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -3257,7 +3254,10 @@ linkml:Setting a owl:Class, owl:minCardinality 1 ; owl:onProperty linkml:setting_key ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 1 ; + owl:onProperty linkml:setting_value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Ncname ; owl:onProperty linkml:setting_key ] ; skos:definition "assignment of a key to a value" ; skos:inScheme linkml:meta . @@ -3490,77 +3490,77 @@ linkml:PathExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "path_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:none_of ], + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:all_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:followed_by ], + owl:minCardinality 0 ; + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:traverse ], + owl:onProperty linkml:reversed ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; + owl:minCardinality 0 ; owl:onProperty linkml:traverse ], [ a owl:Restriction ; owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:followed_by ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:exactly_one_of ], + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:followed_by ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:exactly_one_of ], + owl:maxCardinality 1 ; + owl:onProperty linkml:all_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:PathExpression ; owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:none_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:followed_by ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:reversed ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:followed_by ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml:traverse ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:reversed ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:exactly_one_of ], + owl:onProperty linkml:range_expression ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:reversed ], + owl:onProperty linkml:any_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:any_of ], + owl:onProperty linkml:followed_by ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:any_of ], + owl:maxCardinality 1 ; + owl:onProperty linkml:none_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:any_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:exactly_one_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousClassExpression ; owl:onProperty linkml:range_expression ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:SlotDefinition ; owl:onProperty linkml:traverse ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:all_of ], + owl:onProperty linkml:exactly_one_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:range_expression ], + owl:onProperty linkml:exactly_one_of ], linkml:Annotatable, linkml:CommonMetadata, linkml:Expression, @@ -3573,13 +3573,19 @@ linkml:ReachabilityQuery a owl:Class, rdfs:label "reachability_query" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:relationship_types ], + owl:onProperty linkml:include_self ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:traverse_up ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:include_self ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_direct ], + owl:onProperty linkml:traverse_up ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:include_self ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:traverse_up ], @@ -3588,37 +3594,31 @@ linkml:ReachabilityQuery a owl:Class, owl:onProperty linkml:source_nodes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:traverse_up ], + owl:onProperty linkml:is_direct ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:source_nodes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:source_ontology ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:is_direct ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:include_self ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:source_ontology ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:is_direct ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:include_self ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:source_ontology ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:relationship_types ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:traverse_up ] ; + owl:onProperty linkml:source_ontology ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:relationship_types ] ; skos:definition "A query that is used on an enum expression to dynamically obtain a set of permissible values via walking from a set of source nodes to a set of descendants or ancestors over a set of relationship types." ; skos:inScheme linkml:meta . @@ -3726,10 +3726,10 @@ linkml:EnumDefinition a owl:Class, linkml:ClassDefinition ; rdfs:label "enum_definition" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty linkml:enum_uri ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:enum_uri ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -3828,248 +3828,248 @@ linkml:CommonMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "common_metadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:see_also ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:notes ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:deprecated_element_has_possible_replacement ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:modified_by ], + owl:onProperty linkml:in_language ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:in_language ], + owl:onProperty linkml:deprecated ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:modified_by ], + owl:allValuesFrom linkml:AltDescription ; + owl:onProperty linkml:alt_descriptions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:modified_by ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:created_by ], + owl:onProperty linkml:in_language ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:from_schema ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty linkml:last_updated_on ], + owl:onProperty linkml:deprecated ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:in_subset ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty linkml:rank ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:status ], + owl:onProperty linkml:created_by ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:related_mappings ], + owl:onProperty linkml:close_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:description ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:description ], + owl:onProperty linkml:broad_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:mappings ], + owl:onProperty linkml:alt_descriptions ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:description ], + owl:onProperty linkml:imported_from ], [ a owl:Restriction ; - owl:allValuesFrom linkml:StructuredAlias ; - owl:onProperty linkml:structured_aliases ], + owl:allValuesFrom linkml:Example ; + owl:onProperty linkml:examples ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:deprecated_element_has_possible_replacement ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml:created_by ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:AltDescription ; - owl:onProperty linkml:alt_descriptions ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:exact_mappings ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SubsetDefinition ; - owl:onProperty linkml:in_subset ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:deprecated_element_has_exact_replacement ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:deprecated ], + owl:onProperty linkml:close_mappings ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:comments ], + owl:onProperty linkml:keywords ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:rank ], + owl:onProperty linkml:deprecated_element_has_possible_replacement ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:categories ], + owl:onProperty linkml:broad_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:categories ], + owl:onProperty linkml:imported_from ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:deprecated_element_has_possible_replacement ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:related_mappings ], + owl:onProperty linkml:in_language ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:title ], + owl:onProperty linkml:todos ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:created_on ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty linkml:created_on ], + owl:onProperty linkml:deprecated ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:structured_aliases ], + owl:onProperty linkml:examples ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:created_by ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:see_also ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uri ; - owl:onProperty linkml:from_schema ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:notes ], + owl:onProperty linkml:structured_aliases ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:narrow_mappings ], + owl:onProperty linkml:related_mappings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:close_mappings ], + owl:minCardinality 0 ; + owl:onProperty linkml:keywords ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:aliases ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:created_on ], + owl:onProperty linkml:contributors ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:deprecated_element_has_exact_replacement ], + owl:onProperty linkml:todos ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:last_updated_on ], + owl:onProperty linkml:deprecated_element_has_exact_replacement ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:last_updated_on ], + owl:allValuesFrom linkml:Uri ; + owl:onProperty linkml:from_schema ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:todos ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:deprecated_element_has_possible_replacement ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:close_mappings ], + owl:onProperty linkml:created_on ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:todos ], + owl:onProperty linkml:see_also ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:source ], + owl:minCardinality 0 ; + owl:onProperty linkml:aliases ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:deprecated_element_has_exact_replacement ], + owl:minCardinality 0 ; + owl:onProperty linkml:rank ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:mappings ], + owl:onProperty linkml:related_mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:broad_mappings ], + owl:onProperty linkml:in_subset ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:source ], + owl:maxCardinality 1 ; + owl:onProperty linkml:deprecated_element_has_possible_replacement ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:contributors ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:title ], + owl:onProperty linkml:from_schema ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:comments ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:source ], + owl:onProperty linkml:deprecated_element_has_exact_replacement ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:imported_from ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:in_language ], + owl:onProperty linkml:narrow_mappings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:keywords ], + owl:allValuesFrom linkml:SubsetDefinition ; + owl:onProperty linkml:in_subset ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:broad_mappings ], + owl:onProperty linkml:see_also ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:contributors ], + owl:onProperty linkml:last_updated_on ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:modified_by ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:comments ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:rank ], + owl:onProperty linkml:deprecated_element_has_exact_replacement ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:imported_from ], + owl:onProperty linkml:notes ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:categories ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:narrow_mappings ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:deprecated ], + owl:onProperty linkml:created_on ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Example ; - owl:onProperty linkml:examples ], + owl:allValuesFrom linkml:StructuredAlias ; + owl:onProperty linkml:structured_aliases ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:title ], + owl:onProperty linkml:rank ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:notes ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:contributors ], + owl:onProperty linkml:modified_by ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:deprecated ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:rank ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:aliases ], + owl:maxCardinality 1 ; + owl:onProperty linkml:from_schema ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:imported_from ], + owl:onProperty linkml:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:title ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:narrow_mappings ], + owl:onProperty linkml:categories ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:keywords ], + owl:maxCardinality 1 ; + owl:onProperty linkml:last_updated_on ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:alt_descriptions ], + owl:maxCardinality 1 ; + owl:onProperty linkml:modified_by ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:comments ], + owl:onProperty linkml:title ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:status ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:in_language ], + owl:minCardinality 0 ; + owl:onProperty linkml:mappings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:examples ], + owl:onProperty linkml:source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:from_schema ], + owl:onProperty linkml:description ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:exact_mappings ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:status ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:mappings ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:source ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:title ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty linkml:created_on ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:exact_mappings ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:status ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:imported_from ] ; + owl:onProperty linkml:source ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty linkml:last_updated_on ] ; skos:definition "Generic metadata shared across definitions" ; skos:inScheme linkml:meta . @@ -4109,47 +4109,47 @@ linkml:TypeDefinition a owl:Class, linkml:ClassDefinition ; rdfs:label "type_definition" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:base ], + owl:minCardinality 0 ; + owl:onProperty linkml:union_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:typeof ], + owl:onProperty linkml:type_uri ], [ a owl:Restriction ; owl:allValuesFrom linkml:TypeDefinition ; owl:onProperty linkml:union_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:repr ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:type_uri ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:repr ], + owl:onProperty linkml:type_uri ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:base ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:typeof ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; - owl:onProperty linkml:typeof ], + owl:minCardinality 0 ; + owl:onProperty linkml:base ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:type_uri ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:repr ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:type_uri ], + owl:onProperty linkml:repr ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:TypeDefinition ; + owl:onProperty linkml:typeof ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:type_uri ], + owl:onProperty linkml:typeof ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:base ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:repr ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:union_of ], linkml:Element, linkml:TypeExpression ; skos:definition "an element that whose instances are atomic scalar values that can be mapped to primitive types" ; @@ -4160,10 +4160,10 @@ linkml:Annotatable a owl:Class, linkml:ClassDefinition ; rdfs:label "annotatable" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Annotation ; + owl:minCardinality 0 ; owl:onProperty linkml:annotations ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Annotation ; owl:onProperty linkml:annotations ] ; skos:definition "mixin for classes that support annotations" ; skos:inScheme linkml:annotations . @@ -4172,88 +4172,88 @@ linkml:EnumExpression a owl:Class, linkml:ClassDefinition ; rdfs:label "enum_expression" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:inherits ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:reachable_from ], + owl:allValuesFrom linkml:MatchQuery ; + owl:onProperty linkml:matches ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:code_set ], + owl:onProperty linkml:minus ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:code_set_tag ], + owl:onProperty linkml:matches ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PermissibleValue ; + owl:minCardinality 0 ; owl:onProperty linkml:permissible_values ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:code_set_version ], + owl:onProperty linkml:reachable_from ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:matches ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:code_set_version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:matches ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:concepts ], + owl:onProperty linkml:code_set ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:concepts ], + owl:allValuesFrom linkml:AnonymousEnumExpression ; + owl:onProperty linkml:minus ], [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumDefinition ; - owl:onProperty linkml:inherits ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:code_set_tag ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml:reachable_from ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty linkml:code_set_version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:permissible_values ], + owl:onProperty linkml:code_set_tag ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:code_set ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:include ], + owl:onProperty linkml:code_set_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:code_set ], [ a owl:Restriction ; owl:allValuesFrom linkml:ReachabilityQuery ; owl:onProperty linkml:reachable_from ], [ a owl:Restriction ; - owl:allValuesFrom linkml:MatchQuery ; - owl:onProperty linkml:matches ], + owl:minCardinality 0 ; + owl:onProperty linkml:pv_formula ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:code_set_tag ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PvFormulaOptions ; - owl:onProperty linkml:pv_formula ], + owl:minCardinality 0 ; + owl:onProperty linkml:inherits ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:code_set ], + owl:onProperty linkml:code_set_version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:PermissibleValue ; + owl:onProperty linkml:permissible_values ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:reachable_from ], + owl:onProperty linkml:include ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:pv_formula ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:code_set ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:minus ], + owl:onProperty linkml:concepts ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousEnumExpression ; - owl:onProperty linkml:include ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:concepts ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:code_set_tag ], + owl:allValuesFrom linkml:EnumDefinition ; + owl:onProperty linkml:inherits ], [ a owl:Restriction ; owl:allValuesFrom linkml:AnonymousEnumExpression ; - owl:onProperty linkml:minus ], + owl:onProperty linkml:include ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:PvFormulaOptions ; owl:onProperty linkml:pv_formula ], linkml:Expression ; skos:definition "An expression that constrains the range of a slot" ; @@ -4285,10 +4285,10 @@ linkml:AnonymousClassExpression a owl:Class, owl:minCardinality 0 ; owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Definition ; + owl:maxCardinality 1 ; owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Definition ; owl:onProperty linkml:is_a ], linkml:AnonymousExpression, linkml:ClassExpression ; @@ -4299,179 +4299,179 @@ linkml:SchemaDefinition a owl:Class, rdfs:label "schema_definition" ; rdfs:seeAlso ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:generation_date ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:default_curi_maps ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:metamodel_version ], + owl:onProperty linkml:source_file ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:prefixes ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:slot_names_unique ], + owl:onProperty linkml:default_curi_maps ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:id ], + owl:minCardinality 0 ; + owl:onProperty linkml:source_file ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:license ], + owl:minCardinality 0 ; + owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uri ; - owl:onProperty linkml:id ], + owl:minCardinality 0 ; + owl:onProperty linkml:subsets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:settings ], + owl:onProperty linkml:types ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:id ], + owl:allValuesFrom linkml:SubsetDefinition ; + owl:onProperty linkml:subsets ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:name ], + owl:minCardinality 0 ; + owl:onProperty linkml:imports ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; + owl:minCardinality 0 ; owl:onProperty linkml:source_file_size ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:subsets ], + owl:allValuesFrom linkml:Prefix ; + owl:onProperty linkml:prefixes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:version ], + owl:onProperty linkml:prefixes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:default_prefix ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:default_prefix ], + owl:onProperty linkml:source_file ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:imports ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:source_file ], + owl:maxCardinality 1 ; + owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:TypeDefinition ; + owl:onProperty linkml:types ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:classes ], + owl:allValuesFrom linkml:Setting ; + owl:onProperty linkml:settings ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uri ; + owl:onProperty linkml:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:version ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:default_range ], + owl:onProperty linkml:source_file_size ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_definitions ], + owl:onProperty linkml:settings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:generation_date ], + owl:onProperty linkml:version ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:emit_prefixes ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty linkml:source_file_size ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:slot_names_unique ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:default_prefix ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; + owl:maxCardinality 1 ; owl:onProperty linkml:name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:source_file_date ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:metamodel_version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:bindings ], + owl:onProperty linkml:default_prefix ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:classes ], + owl:onProperty linkml:metamodel_version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:license ], + owl:onProperty linkml:default_range ], [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumBinding ; + owl:minCardinality 0 ; owl:onProperty linkml:bindings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; + owl:minCardinality 0 ; owl:onProperty linkml:source_file_date ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty linkml:generation_date ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:imports ], + owl:maxCardinality 1 ; + owl:onProperty linkml:version ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:types ], + owl:onProperty linkml:emit_prefixes ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:default_prefix ], + owl:onProperty linkml:license ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:version ], + owl:onProperty linkml:id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:version ], + owl:minCardinality 1 ; + owl:onProperty linkml:name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:EnumDefinition ; + owl:minCardinality 0 ; owl:onProperty linkml:enums ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:emit_prefixes ], + owl:minCardinality 0 ; + owl:onProperty linkml:license ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:metamodel_version ], + owl:onProperty linkml:default_prefix ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:default_curi_maps ], + owl:allValuesFrom linkml:TypeDefinition ; + owl:onProperty linkml:default_range ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:source_file_date ], + owl:maxCardinality 1 ; + owl:onProperty linkml:metamodel_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:default_range ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:metamodel_version ], + owl:onProperty linkml:classes ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:slot_definitions ], + owl:allValuesFrom linkml:EnumBinding ; + owl:onProperty linkml:bindings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:license ], + owl:maxCardinality 1 ; + owl:onProperty linkml:source_file_date ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:enums ], + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; - owl:onProperty linkml:types ], + owl:minCardinality 1 ; + owl:onProperty linkml:id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:default_curi_maps ], + owl:minCardinality 0 ; + owl:onProperty linkml:slot_definitions ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:source_file ], + owl:minCardinality 0 ; + owl:onProperty linkml:generation_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:source_file_size ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Setting ; - owl:onProperty linkml:settings ], + owl:onProperty linkml:license ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeDefinition ; - owl:onProperty linkml:default_range ], + owl:allValuesFrom linkml:EnumDefinition ; + owl:onProperty linkml:enums ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:source_file ], + owl:onProperty linkml:generation_date ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:default_range ], + owl:allValuesFrom linkml:Datetime ; + owl:onProperty linkml:source_file_date ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Prefix ; - owl:onProperty linkml:prefixes ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:classes ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SubsetDefinition ; - owl:onProperty linkml:subsets ], + owl:allValuesFrom linkml:Ncname ; + owl:onProperty linkml:emit_prefixes ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:source_file_size ], + owl:allValuesFrom linkml:Datetime ; + owl:onProperty linkml:generation_date ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml:name ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:slot_definitions ], linkml:Element ; skos:altLabel "data dictionary", "data model", @@ -4489,61 +4489,61 @@ linkml:Definition a owl:Class, linkml:ClassDefinition ; rdfs:label "definition" ; rdfs:seeAlso ; - rdfs:subClassOf [ a owl:Restriction ; + rdfs:subClassOf [ owl:unionOf ( linkml:ClassDefinition linkml:EnumDefinition linkml:SlotDefinition ) ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:abstract ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:mixin ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:string_serialization ], + owl:onProperty linkml:is_a ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:apply_to ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:mixin ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:string_serialization ], + owl:allValuesFrom linkml:Definition ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:mixin ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:values_from ], [ a owl:Restriction ; owl:allValuesFrom linkml:Definition ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:mixins ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:abstract ], + owl:minCardinality 0 ; + owl:onProperty linkml:values_from ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:is_a ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:mixin ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:abstract ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; owl:allValuesFrom linkml:Definition ; owl:onProperty linkml:apply_to ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:values_from ], + owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Definition ; - owl:onProperty linkml:mixins ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:values_from ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:abstract ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml:string_serialization ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:is_a ], - [ owl:unionOf ( linkml:ClassDefinition linkml:EnumDefinition linkml:SlotDefinition ) ], + owl:maxCardinality 1 ; + owl:onProperty linkml:abstract ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:abstract ], linkml:Element ; skos:definition "abstract base class for core metaclasses" ; skos:inScheme linkml:meta . @@ -4552,28 +4552,25 @@ linkml:Element a owl:Class, linkml:ClassDefinition ; rdfs:label "element" ; rdfs:seeAlso ; - rdfs:subClassOf [ a owl:Restriction ; + rdfs:subClassOf [ owl:unionOf ( linkml:Definition linkml:SchemaDefinition linkml:SubsetDefinition linkml:TypeDefinition ) ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:id_prefixes_are_closed ], - [ owl:unionOf ( linkml:Definition linkml:SchemaDefinition linkml:SubsetDefinition linkml:TypeDefinition ) ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:conforms_to ], - [ a owl:Restriction ; - owl:minCardinality 1 ; owl:onProperty linkml:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:name ], + owl:onProperty linkml:conforms_to ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Ncname ; - owl:onProperty linkml:id_prefixes ], + owl:maxCardinality 1 ; + owl:onProperty linkml:id_prefixes_are_closed ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:conforms_to ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:id_prefixes_are_closed ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:definition_uri ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:name ], @@ -4582,15 +4579,24 @@ linkml:Element a owl:Class, owl:onProperty linkml:conforms_to ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:implements ], + owl:onProperty linkml:local_names ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:allValuesFrom linkml:LocalName ; + owl:onProperty linkml:local_names ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml:instantiates ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:id_prefixes_are_closed ], + owl:minCardinality 0 ; + owl:onProperty linkml:id_prefixes ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml:implements ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:instantiates ], [ a owl:Restriction ; owl:minCardinality 0 ; @@ -4599,20 +4605,14 @@ linkml:Element a owl:Class, owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:implements ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:conforms_to ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:definition_uri ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:definition_uri ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Ncname ; owl:onProperty linkml:id_prefixes ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:LocalName ; - owl:onProperty linkml:local_names ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:local_names ], linkml:Annotatable, linkml:CommonMetadata, linkml:Extensible ; @@ -4625,152 +4625,152 @@ linkml:ClassDefinition a owl:Class, linkml:ClassDefinition ; rdfs:label "class_definition" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:alias ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:mixins ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:tree_root ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:union_of ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:represents_relationship ], + owl:onProperty linkml:union_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_usage ], + owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:represents_relationship ], + owl:allValuesFrom linkml:ExtraSlotsExpression ; + owl:onProperty linkml:extra_slots ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:children_are_mutually_disjoint ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:subclass_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:extra_slots ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slots ], + owl:onProperty linkml:unique_keys ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassRule ; - owl:onProperty linkml:rules ], + owl:minCardinality 0 ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:AnonymousClassExpression ; - owl:onProperty linkml:classification_rules ], + owl:minCardinality 0 ; + owl:onProperty linkml:defining_slots ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:subclass_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:disjoint_with ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:minCardinality 0 ; owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:unique_keys ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:slot_usage ], + owl:onProperty linkml:represents_relationship ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:slot_names_unique ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:union_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:defining_slots ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:mixins ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:extra_slots ], + owl:minCardinality 0 ; + owl:onProperty linkml:class_uri ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:slot_names_unique ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:extra_slots ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:apply_to ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty linkml:subclass_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:children_are_mutually_disjoint ], + owl:onProperty linkml:extra_slots ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:class_uri ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:defining_slots ], + owl:onProperty linkml:apply_to ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:slot_names_unique ], + owl:minCardinality 0 ; + owl:onProperty linkml:classification_rules ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:class_uri ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ExtraSlotsExpression ; - owl:onProperty linkml:extra_slots ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:union_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:alias ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:attributes ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:disjoint_with ], + owl:onProperty linkml:subclass_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:represents_relationship ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:children_are_mutually_disjoint ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:represents_relationship ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:class_uri ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:tree_root ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:allValuesFrom linkml:ClassDefinition ; owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:classification_rules ], + owl:onProperty linkml:alias ], [ a owl:Restriction ; - owl:allValuesFrom linkml:UniqueKey ; - owl:onProperty linkml:unique_keys ], + owl:minCardinality 0 ; + owl:onProperty linkml:attributes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:rules ], + owl:onProperty linkml:slots ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:rules ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:attributes ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:mixins ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:UniqueKey ; + owl:onProperty linkml:unique_keys ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml:tree_root ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:tree_root ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:slot_usage ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:subclass_of ], + owl:onProperty linkml:alias ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:apply_to ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:class_uri ], + owl:onProperty linkml:disjoint_with ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:defining_slots ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:AnonymousClassExpression ; + owl:onProperty linkml:classification_rules ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:ClassRule ; + owl:onProperty linkml:rules ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:disjoint_with ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:attributes ], [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; owl:onProperty linkml:slots ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:alias ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:slot_usage ], linkml:ClassExpression, linkml:Definition ; skos:altLabel "message", @@ -4817,349 +4817,349 @@ linkml:SlotDefinition a owl:Class, linkml:ClassDefinition ; rdfs:label "slot_definition" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:designates_type ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:ifabsent ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:transitive ], + owl:onProperty linkml:symmetric ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:reflexive ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:singular_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:domain ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:role ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:key ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:singular_name ], + owl:onProperty linkml:ifabsent ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:asymmetric ], + owl:minCardinality 0 ; + owl:onProperty linkml:union_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:transitive_form_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:symmetric ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:list_elements_unique ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:reflexive_transitive_form_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:role ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml:transitive_form_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:inherited ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:symmetric ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:is_a ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml:slot_group ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:usage_slot_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:is_usage_slot ], + owl:onProperty linkml:subproperty_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:role ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:key ], + owl:onProperty linkml:reflexive ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:shared ], + owl:minCardinality 0 ; + owl:onProperty linkml:slot_uri ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; + owl:minCardinality 0 ; owl:onProperty linkml:domain ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:is_grouping_slot ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:locally_reflexive ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:identifier ], + owl:onProperty linkml:reflexive ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:shared ], + owl:onProperty linkml:is_a ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Definition ; - owl:onProperty linkml:owner ], + owl:minCardinality 0 ; + owl:onProperty linkml:inverse ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:mixins ], + owl:allValuesFrom owl:Thing ; + owl:onProperty linkml:reflexive_transitive_form_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:readonly ], + owl:onProperty linkml:is_class_field ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:children_are_mutually_disjoint ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty linkml:slot_uri ], + owl:onProperty linkml:ifabsent ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:reflexive ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:union_of ], + owl:onProperty linkml:symmetric ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:transitive_form_of ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:owner ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:is_usage_slot ], + owl:onProperty linkml:list_elements_unique ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:path_rule ], + owl:onProperty linkml:role ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:singular_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty linkml:slot_uri ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:relational_role ], + owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:type_mappings ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:locally_reflexive ], + owl:onProperty linkml:inherited ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:list_elements_ordered ], + owl:onProperty linkml:transitive_form_of ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:is_grouping_slot ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:subproperty_of ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:role ], + owl:onProperty linkml:list_elements_unique ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:readonly ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:domain ], + owl:onProperty linkml:slot_group ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_class_field ], + owl:onProperty linkml:subproperty_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:inherited ], + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:usage_slot_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:designates_type ], + owl:onProperty linkml:mixins ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:reflexive_transitive_form_of ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:is_usage_slot ], + owl:onProperty linkml:owner ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:mixins ], + owl:onProperty linkml:designates_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:symmetric ], + owl:onProperty linkml:singular_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:relational_role ], + owl:onProperty linkml:slot_uri ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:transitive ], + owl:onProperty linkml:domain ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:children_are_mutually_disjoint ], + owl:onProperty linkml:usage_slot_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:asymmetric ], + owl:onProperty linkml:reflexive_transitive_form_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:list_elements_unique ], + owl:onProperty linkml:type_mappings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:is_a ], + owl:maxCardinality 1 ; + owl:onProperty linkml:reflexive ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:irreflexive ], + owl:onProperty linkml:readonly ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:disjoint_with ], + owl:onProperty linkml:apply_to ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:inverse ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:is_class_field ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:union_of ], + owl:onProperty linkml:is_grouping_slot ], [ a owl:Restriction ; - owl:allValuesFrom linkml:ClassDefinition ; - owl:onProperty linkml:domain_of ], + owl:minCardinality 0 ; + owl:onProperty linkml:readonly ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:list_elements_unique ], + owl:onProperty linkml:is_class_field ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:symmetric ], + owl:minCardinality 0 ; + owl:onProperty linkml:domain_of ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:list_elements_unique ], + owl:onProperty linkml:children_are_mutually_disjoint ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:inherited ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:locally_reflexive ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty linkml:children_are_mutually_disjoint ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:is_grouping_slot ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:inherited ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:is_a ], + owl:onProperty linkml:owner ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:subproperty_of ], + owl:onProperty linkml:designates_type ], [ a owl:Restriction ; - owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:inverse ], + owl:allValuesFrom linkml:PathExpression ; + owl:onProperty linkml:path_rule ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:alias ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:TypeMapping ; + owl:onProperty linkml:type_mappings ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:irreflexive ], + owl:onProperty linkml:singular_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:PathExpression ; - owl:onProperty linkml:path_rule ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:designates_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_group ], + owl:onProperty linkml:locally_reflexive ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:domain ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:identifier ], [ a owl:Restriction ; owl:allValuesFrom [ owl:intersectionOf ( [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty linkml:is_grouping_slot ] linkml:SlotDefinition ) ] ; owl:onProperty linkml:slot_group ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:list_elements_ordered ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:owner ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml:inverse ], + owl:onProperty linkml:usage_slot_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty linkml:ifabsent ], + owl:onProperty linkml:asymmetric ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:reflexive_transitive_form_of ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:singular_name ], + owl:onProperty linkml:is_usage_slot ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:irreflexive ], + owl:onProperty linkml:key ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:slot_uri ], + owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:alias ], + owl:onProperty linkml:is_grouping_slot ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:alias ], + owl:allValuesFrom linkml:Definition ; + owl:onProperty linkml:owner ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:inherited ], + owl:onProperty linkml:asymmetric ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:readonly ], [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:disjoint_with ], + owl:onProperty linkml:union_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:is_grouping_slot ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:irreflexive ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:subproperty_of ], + owl:onProperty linkml:path_rule ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:list_elements_ordered ], [ a owl:Restriction ; owl:allValuesFrom linkml:SlotDefinition ; - owl:onProperty linkml:apply_to ], + owl:onProperty linkml:transitive_form_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:TypeMapping ; - owl:onProperty linkml:type_mappings ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:subproperty_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty linkml:transitive ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:path_rule ], + owl:onProperty linkml:irreflexive ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:ifabsent ], + owl:onProperty linkml:locally_reflexive ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml:identifier ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:ifabsent ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:reflexive ], + owl:onProperty linkml:relational_role ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:inverse ], + owl:maxCardinality 1 ; + owl:onProperty linkml:is_usage_slot ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:usage_slot_name ], + owl:onProperty linkml:key ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:shared ], + owl:onProperty linkml:identifier ], [ a owl:Restriction ; - owl:allValuesFrom linkml:RelationalRoleEnum ; - owl:onProperty linkml:relational_role ], + owl:maxCardinality 1 ; + owl:onProperty linkml:alias ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml:domain_of ], + owl:onProperty linkml:transitive ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:usage_slot_name ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:is_usage_slot ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml:disjoint_with ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty linkml:key ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:is_a ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:designates_type ], + owl:onProperty linkml:asymmetric ], [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty linkml:reflexive_transitive_form_of ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:inverse ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:role ], + owl:allValuesFrom linkml:ClassDefinition ; + owl:onProperty linkml:domain_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:is_class_field ], + owl:minCardinality 0 ; + owl:onProperty linkml:shared ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:identifier ], + owl:onProperty linkml:path_rule ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:alias ], + owl:maxCardinality 1 ; + owl:onProperty linkml:list_elements_ordered ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:key ], + owl:onProperty linkml:list_elements_ordered ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:is_class_field ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:mixins ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml:transitive ], + owl:maxCardinality 1 ; + owl:onProperty linkml:irreflexive ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:readonly ], + owl:maxCardinality 1 ; + owl:onProperty linkml:relational_role ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml:asymmetric ], + owl:onProperty linkml:transitive ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty linkml:locally_reflexive ], + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:apply_to ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml:shared ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty linkml:list_elements_ordered ], + owl:onProperty linkml:shared ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:RelationalRoleEnum ; + owl:onProperty linkml:relational_role ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:SlotDefinition ; + owl:onProperty linkml:disjoint_with ], linkml:Definition, linkml:SlotExpression ; skos:altLabel "attribute", diff --git a/tests/linkml/test_base/__snapshots__/meta.shex b/tests/linkml/test_base/__snapshots__/meta.shex index 00dc71c76a..156cc7cf49 100644 --- a/tests/linkml/test_base/__snapshots__/meta.shex +++ b/tests/linkml/test_base/__snapshots__/meta.shex @@ -12,7 +12,7 @@ PREFIX oslc: PREFIX schema1: PREFIX bibo: PREFIX qudt: -PREFIX dcterms: +PREFIX dc1: PREFIX oboInOwl: @@ -132,7 +132,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -141,7 +141,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -155,13 +155,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -257,7 +257,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -266,7 +266,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -280,13 +280,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -366,7 +366,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -375,7 +375,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -389,12 +389,12 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -404,7 +404,7 @@ PREFIX oboInOwl: { ( $ ( skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -413,7 +413,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -427,13 +427,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -473,7 +473,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -482,7 +482,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -496,13 +496,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -524,14 +524,14 @@ PREFIX oboInOwl: @ ? ; @ ? ; @ * ; - dcterms:conformsTo @ ? ; + dc1:conformsTo @ ? ; @ * ; @ * ; @ * ; @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -540,7 +540,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -554,13 +554,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] @@ -586,7 +586,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -595,7 +595,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -609,13 +609,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -727,7 +727,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -736,7 +736,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -750,13 +750,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -800,7 +800,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -809,7 +809,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -823,13 +823,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -850,7 +850,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -859,7 +859,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -873,13 +873,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] ? @@ -902,7 +902,7 @@ PREFIX oboInOwl: @ * ; @ * ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -911,7 +911,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -925,13 +925,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] @@ -964,7 +964,7 @@ PREFIX oboInOwl: @ ; pav:version @ ? ; @ * ; - dcterms:license @ ? ; + dc1:license @ ? ; sh:declare @ * ; @ * ; @ * ; @@ -1127,13 +1127,13 @@ PREFIX oboInOwl: rdf:type [ ] ? ; skosxl:literalForm @ ; rdf:predicate [ skos:exactMatch skos:relatedMatch skos:broaderMatch skos:narrowerMatch ] ? ; - dcterms:subject @ * ; + dc1:subject @ * ; @ * ; @ * ; @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -1142,7 +1142,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -1156,7 +1156,7 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; @@ -1239,7 +1239,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -1248,7 +1248,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -1262,13 +1262,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] @@ -1289,7 +1289,7 @@ PREFIX oboInOwl: @ * ; skos:definition @ ? ; @ * ; - dcterms:title @ ? ; + dc1:title @ ? ; @ ? ; @ * ; skos:editorialNote @ * ; @@ -1298,7 +1298,7 @@ PREFIX oboInOwl: oboInOwl:inSubset @ * ; skos:inScheme @ ? ; @ ? ; - dcterms:source @ ? ; + dc1:source @ ? ; schema1:inLanguage @ ? ; rdfs:seeAlso @ * ; @ ? ; @@ -1312,13 +1312,13 @@ PREFIX oboInOwl: skos:narrowMatch @ * ; skos:broadMatch @ * ; pav:createdBy @ ? ; - dcterms:contributor @ * ; + dc1:contributor @ * ; pav:createdOn @ ? ; pav:lastUpdatedOn @ ? ; oslc:modifiedBy @ ? ; bibo:status @ ? ; sh:order @ ? ; - dcterms:subject @ * ; + dc1:subject @ * ; schema1:keywords @ * ) ; rdf:type [ ] diff --git a/tests/linkml/test_base/__snapshots__/meta.ttl b/tests/linkml/test_base/__snapshots__/meta.ttl index 5a789c62d6..2f2a25939d 100644 --- a/tests/linkml/test_base/__snapshots__/meta.ttl +++ b/tests/linkml/test_base/__snapshots__/meta.ttl @@ -26,7 +26,7 @@ linkml:AltDescription OIO:inSubset linkml:BasicSubset ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/AltDescription"^^xsd:anyURI ; linkml:description "an attributed description" ; - linkml:slot_usage _:c14n14 ; + linkml:slot_usage _:c14n16 ; linkml:slots linkml:alt_description_source , linkml:alt_description_text . linkml:Annotatable a linkml:ClassDefinition ; skos:exactMatch linkml:Annotatable ; @@ -35,7 +35,7 @@ linkml:Annotatable a linkml:ClassDefinition ; linkml:description "mixin for classes that support annotations" ; linkml:imported_from "linkml:annotations" ; linkml:mixin true ; - linkml:slot_usage _:c14n27 ; + linkml:slot_usage _:c14n29 ; linkml:slots linkml:annotations . linkml:Annotation a linkml:ClassDefinition ; skos:exactMatch linkml:Annotation ; @@ -45,7 +45,7 @@ linkml:Annotation a linkml:ClassDefinition ; linkml:imported_from "linkml:annotations" ; linkml:is_a linkml:Extension ; linkml:mixins linkml:Annotatable ; - linkml:slot_usage _:c14n88 ; + linkml:slot_usage _:c14n91 ; linkml:slots linkml:annotations , linkml:extension_tag , linkml:extension_value , linkml:extensions . linkml:AnonymousClassExpression a linkml:ClassDefinition ; skos:exactMatch linkml:AnonymousClassExpression ; @@ -53,7 +53,7 @@ linkml:AnonymousClassExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/AnonymousClassExpression"^^xsd:anyURI ; linkml:is_a linkml:AnonymousExpression ; linkml:mixins linkml:ClassExpression ; - linkml:slot_usage _:c14n53 ; + linkml:slot_usage _:c14n55 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:class_expression_all_of , linkml:class_expression_any_of , linkml:class_expression_exactly_one_of , linkml:class_expression_none_of , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:is_a , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:slot_conditions , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:AnonymousEnumExpression a linkml:ClassDefinition ; skos:exactMatch linkml:AnonymousEnumExpression ; @@ -61,7 +61,7 @@ linkml:AnonymousEnumExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/AnonymousEnumExpression"^^xsd:anyURI ; linkml:description "An enum_expression that is not named" ; linkml:mixins linkml:EnumExpression ; - linkml:slot_usage _:c14n73 ; + linkml:slot_usage _:c14n75 ; linkml:slots linkml:code_set , linkml:code_set_tag , linkml:code_set_version , linkml:concepts , linkml:include , linkml:inherits , linkml:matches , linkml:minus , linkml:permissible_values , linkml:pv_formula , linkml:reachable_from . linkml:AnonymousExpression a linkml:ClassDefinition ; skos:exactMatch linkml:AnonymousExpression ; @@ -71,7 +71,7 @@ linkml:AnonymousExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/AnonymousExpression"^^xsd:anyURI ; linkml:description "An abstract parent class for any nested expression" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Expression , linkml:Extensible ; - linkml:slot_usage _:c14n79 ; + linkml:slot_usage _:c14n81 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:AnonymousSlotExpression a linkml:ClassDefinition ; skos:exactMatch linkml:AnonymousSlotExpression ; @@ -79,7 +79,7 @@ linkml:AnonymousSlotExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/AnonymousSlotExpression"^^xsd:anyURI ; linkml:is_a linkml:AnonymousExpression ; linkml:mixins linkml:SlotExpression ; - linkml:slot_usage _:c14n52 ; + linkml:slot_usage _:c14n54 ; linkml:slots linkml:aliases , linkml:all_members , linkml:alt_descriptions , linkml:annotations , linkml:array , linkml:bindings , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:enum_range , linkml:equals_expression , linkml:equals_number , linkml:equals_string , linkml:equals_string_in , linkml:exact_cardinality , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:has_member , linkml:implicit_prefix , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:inlined , linkml:inlined_as_list , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:maximum_cardinality , linkml:maximum_value , linkml:minimum_cardinality , linkml:minimum_value , linkml:modified_by , linkml:multivalued , linkml:narrow_mappings , linkml:notes , linkml:pattern , linkml:range , linkml:range_expression , linkml:rank , linkml:recommended , linkml:related_mappings , linkml:required , linkml:see_also , linkml:slot_expression_all_of , linkml:slot_expression_any_of , linkml:slot_expression_exactly_one_of , linkml:slot_expression_none_of , linkml:source , linkml:status , linkml:structured_aliases , linkml:structured_pattern , linkml:title , linkml:todos , linkml:unit , linkml:value_presence . linkml:AnonymousTypeExpression a linkml:ClassDefinition ; skos:exactMatch linkml:AnonymousTypeExpression ; @@ -87,19 +87,19 @@ linkml:AnonymousTypeExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/AnonymousTypeExpression"^^xsd:anyURI ; linkml:description "A type expression that is not a top-level named type definition. Used for nesting." ; linkml:mixins linkml:TypeExpression ; - linkml:slot_usage _:c14n36 ; + linkml:slot_usage _:c14n38 ; linkml:slots linkml:equals_number , linkml:equals_string , linkml:equals_string_in , linkml:implicit_prefix , linkml:maximum_value , linkml:minimum_value , linkml:pattern , linkml:structured_pattern , linkml:type_expression_all_of , linkml:type_expression_any_of , linkml:type_expression_exactly_one_of , linkml:type_expression_none_of , linkml:unit . linkml:AnyValue a linkml:ClassDefinition ; skos:exactMatch linkml:Any ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/AnyValue"^^xsd:anyURI ; linkml:imported_from "linkml:extensions" ; - linkml:slot_usage _:c14n41 . + linkml:slot_usage _:c14n43 . linkml:Anything a linkml:ClassDefinition ; skos:exactMatch linkml:Any ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/Anything"^^xsd:anyURI ; - linkml:slot_usage _:c14n45 . + linkml:slot_usage _:c14n47 . linkml:ArrayExpression bibo:status "testing"^^xsd:anyURI ; a linkml:ClassDefinition ; skos:exactMatch linkml:ArrayExpression ; @@ -107,7 +107,7 @@ linkml:ArrayExpression bibo:status "testing"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/ArrayExpression"^^xsd:anyURI ; linkml:description "defines the dimensions of an array" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n16 ; + linkml:slot_usage _:c14n18 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:dimensions , linkml:exact_mappings , linkml:exact_number_dimensions , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:maximum_number_dimensions , linkml:minimum_number_dimensions , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:BROAD_SYNONYM linkml:meaning "skos:broaderMatch"^^xsd:anyURI . linkml:BasicSubset dcterms:title "basic subset" ; @@ -129,7 +129,7 @@ linkml:ClassDefinition OIO:inSubset linkml:BasicSubset , linkml:MinimalSubset , linkml:description "an element whose instances are complex objects that may have slot-value assignments" ; linkml:is_a linkml:Definition ; linkml:mixins linkml:ClassExpression ; - linkml:slot_usage _:c14n33 ; + linkml:slot_usage _:c14n35 ; linkml:slots linkml:abstract , linkml:alias , linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:attributes , linkml:broad_mappings , linkml:categories , linkml:children_are_mutually_disjoint , linkml:class_definition_apply_to , linkml:class_definition_disjoint_with , linkml:class_definition_is_a , linkml:class_definition_mixins , linkml:class_definition_rules , linkml:class_definition_union_of , linkml:class_expression_all_of , linkml:class_expression_any_of , linkml:class_expression_exactly_one_of , linkml:class_expression_none_of , linkml:class_uri , linkml:classification_rules , linkml:close_mappings , linkml:comments , linkml:conforms_to , linkml:contributors , linkml:created_by , linkml:created_on , linkml:defining_slots , linkml:definition_uri , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:extra_slots , linkml:from_schema , linkml:id_prefixes , linkml:id_prefixes_are_closed , linkml:implements , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:instantiates , linkml:keywords , linkml:last_updated_on , linkml:local_names , linkml:mappings , linkml:mixin , linkml:modified_by , linkml:name , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:represents_relationship , linkml:see_also , linkml:slot_conditions , linkml:slot_names_unique , linkml:slot_usage , linkml:slots , linkml:source , linkml:status , linkml:string_serialization , linkml:structured_aliases , linkml:subclass_of , linkml:title , linkml:todos , linkml:tree_root , linkml:unique_keys , linkml:values_from . linkml:ClassExpression a linkml:ClassDefinition ; skos:exactMatch linkml:ClassExpression ; @@ -137,7 +137,7 @@ linkml:ClassExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/ClassExpression"^^xsd:anyURI ; linkml:description "A boolean expression that can be used to dynamically determine membership of a class" ; linkml:mixin true ; - linkml:slot_usage _:c14n72 ; + linkml:slot_usage _:c14n74 ; linkml:slots linkml:class_expression_all_of , linkml:class_expression_any_of , linkml:class_expression_exactly_one_of , linkml:class_expression_none_of , linkml:slot_conditions . linkml:ClassLevelRule a linkml:ClassDefinition ; skos:exactMatch linkml:ClassLevelRule ; @@ -145,7 +145,7 @@ linkml:ClassLevelRule a linkml:ClassDefinition ; linkml:abstract true ; linkml:definition_uri "https://w3id.org/linkml/ClassLevelRule"^^xsd:anyURI ; linkml:description "A rule that is applied to classes" ; - linkml:slot_usage _:c14n84 . + linkml:slot_usage _:c14n87 . linkml:ClassRule OIO:inSubset linkml:SpecificationSubset ; a linkml:ClassDefinition ; skos:altLabel "if rule" ; @@ -156,7 +156,7 @@ linkml:ClassRule OIO:inSubset linkml:SpecificationSubset ; linkml:description "A rule that applies to instances of a class" ; linkml:is_a linkml:ClassLevelRule ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n77 ; + linkml:slot_usage _:c14n79 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:bidirectional , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deactivated , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:elseconditions , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:open_world , linkml:postconditions , linkml:preconditions , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:CommonMetadata OIO:inSubset linkml:BasicSubset ; a linkml:ClassDefinition ; @@ -165,7 +165,7 @@ linkml:CommonMetadata OIO:inSubset linkml:BasicSubset ; linkml:definition_uri "https://w3id.org/linkml/CommonMetadata"^^xsd:anyURI ; linkml:description "Generic metadata shared across definitions" ; linkml:mixin true ; - linkml:slot_usage _:c14n49 ; + linkml:slot_usage _:c14n51 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:DISCOURAGED linkml:description "The metadata element is allowed but discouraged to be present in the model" . linkml:Definition OIO:inSubset linkml:BasicSubset ; @@ -186,7 +186,7 @@ linkml:DimensionExpression bibo:status "testing"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/DimensionExpression"^^xsd:anyURI ; linkml:description "defines one of the dimensions of an array" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n89 ; + linkml:slot_usage _:c14n92 ; linkml:slots linkml:alias , linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_cardinality , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:maximum_cardinality , linkml:minimum_cardinality , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:EXACT_SYNONYM linkml:meaning "skos:exactMatch"^^xsd:anyURI . linkml:EXAMPLE linkml:description "The metadata element is an example of how to use the model" . @@ -209,7 +209,7 @@ linkml:EnumBinding OIO:inSubset linkml:SpecificationSubset ; linkml:definition_uri "https://w3id.org/linkml/EnumBinding"^^xsd:anyURI ; linkml:description "A binding of a slot or a class to a permissible value from an enumeration." ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n78 ; + linkml:slot_usage _:c14n80 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:binds_value_of , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:enum_binding_range , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:obligation_level , linkml:pv_formula , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:EnumDefinition OIO:inSubset linkml:BasicSubset , linkml:ObjectOrientedProfile , linkml:OwlProfile , linkml:RelationalModelProfile , linkml:SpecificationSubset ; a linkml:ClassDefinition ; @@ -230,7 +230,7 @@ linkml:EnumExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/EnumExpression"^^xsd:anyURI ; linkml:description "An expression that constrains the range of a slot" ; linkml:is_a linkml:Expression ; - linkml:slot_usage _:c14n47 ; + linkml:slot_usage _:c14n49 ; linkml:slots linkml:code_set , linkml:code_set_tag , linkml:code_set_version , linkml:concepts , linkml:include , linkml:inherits , linkml:matches , linkml:minus , linkml:permissible_values , linkml:pv_formula , linkml:reachable_from . linkml:Example OIO:inSubset linkml:BasicSubset ; a linkml:ClassDefinition ; @@ -238,7 +238,7 @@ linkml:Example OIO:inSubset linkml:BasicSubset ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/Example"^^xsd:anyURI ; linkml:description "usage example and description" ; - linkml:slot_usage _:c14n64 ; + linkml:slot_usage _:c14n66 ; linkml:slots linkml:value , linkml:value_description , linkml:value_object . linkml:Expression a linkml:ClassDefinition ; skos:exactMatch linkml:Expression ; @@ -247,7 +247,7 @@ linkml:Expression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/Expression"^^xsd:anyURI ; linkml:description "general mixin for any class that can represent some form of expression" ; linkml:mixin true ; - linkml:slot_usage _:c14n90 . + linkml:slot_usage _:c14n93 . linkml:Extensible a linkml:ClassDefinition ; skos:exactMatch linkml:Extensible ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; @@ -255,7 +255,7 @@ linkml:Extensible a linkml:ClassDefinition ; linkml:description "mixin for classes that support extension" ; linkml:imported_from "linkml:extensions" ; linkml:mixin true ; - linkml:slot_usage _:c14n83 ; + linkml:slot_usage _:c14n86 ; linkml:slots linkml:extensions . linkml:Extension a linkml:ClassDefinition ; skos:exactMatch linkml:Extension ; @@ -263,7 +263,7 @@ linkml:Extension a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/Extension"^^xsd:anyURI ; linkml:description "a tag/value pair used to add non-model information to an entry" ; linkml:imported_from "linkml:extensions" ; - linkml:slot_usage _:c14n71 ; + linkml:slot_usage _:c14n73 ; linkml:slots linkml:extension_tag , linkml:extension_value , linkml:extensions . linkml:ExtraSlotsExpression a linkml:ClassDefinition ; skos:exactMatch linkml:ExtraSlotsExpression ; @@ -271,7 +271,7 @@ linkml:ExtraSlotsExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/ExtraSlotsExpression"^^xsd:anyURI ; linkml:description "An expression that defines how to handle additional data in an instance of class\nbeyond the slots/attributes defined for that class.\nSee `extra_slots` for usage examples.\n" ; linkml:mixins linkml:Expression ; - linkml:slot_usage _:c14n17 ; + linkml:slot_usage _:c14n19 ; linkml:slots linkml:allowed , linkml:extra_slots_expression_range_expression . linkml:FHIR_CODING linkml:description "The permissible values are the set of FHIR coding elements derived from the code set" . linkml:ImportExpression bibo:status "testing"^^xsd:anyURI ; @@ -281,7 +281,7 @@ linkml:ImportExpression bibo:status "testing"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/ImportExpression"^^xsd:anyURI ; linkml:description "an expression describing an import" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n67 ; + linkml:slot_usage _:c14n69 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:import_as , linkml:import_from , linkml:import_map , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos . linkml:LABEL linkml:description "The permissible values are the set of human readable labels in the code set" . linkml:LocalName a linkml:ClassDefinition ; @@ -289,7 +289,7 @@ linkml:LocalName a linkml:ClassDefinition ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/LocalName"^^xsd:anyURI ; linkml:description "an attributed label" ; - linkml:slot_usage _:c14n87 ; + linkml:slot_usage _:c14n90 ; linkml:slots linkml:local_name_source , linkml:local_name_value . linkml:MatchQuery OIO:inSubset linkml:SpecificationSubset ; a linkml:ClassDefinition ; @@ -297,7 +297,7 @@ linkml:MatchQuery OIO:inSubset linkml:SpecificationSubset ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/MatchQuery"^^xsd:anyURI ; linkml:description "A query that is used on an enum expression to dynamically obtain a set of permissible values via a query that matches on properties of the external concepts." ; - linkml:slot_usage _:c14n46 ; + linkml:slot_usage _:c14n48 ; linkml:slots linkml:identifier_pattern , linkml:source_ontology . linkml:MinimalSubset dcterms:title "minimal subset" ; a linkml:SubsetDefinition ; @@ -332,7 +332,7 @@ linkml:PathExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/PathExpression"^^xsd:anyURI ; linkml:description "An expression that describes an abstract path from an object to another through a sequence of slot lookups" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Expression , linkml:Extensible ; - linkml:slot_usage _:c14n65 ; + linkml:slot_usage _:c14n67 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:path_expression_all_of , linkml:path_expression_any_of , linkml:path_expression_exactly_one_of , linkml:path_expression_followed_by , linkml:path_expression_none_of , linkml:range_expression , linkml:rank , linkml:related_mappings , linkml:reversed , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos , linkml:traverse . linkml:PatternExpression a linkml:ClassDefinition ; skos:exactMatch linkml:PatternExpression ; @@ -340,7 +340,7 @@ linkml:PatternExpression a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/PatternExpression"^^xsd:anyURI ; linkml:description "a regular expression pattern used to evaluate conformance of a string" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n24 ; + linkml:slot_usage _:c14n26 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:interpolated , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:partial_match , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:syntax , linkml:title , linkml:todos . linkml:PermissibleValue OIO:inSubset linkml:BasicSubset , linkml:SpecificationSubset ; a linkml:ClassDefinition ; @@ -352,7 +352,7 @@ linkml:PermissibleValue OIO:inSubset linkml:BasicSubset , linkml:SpecificationSu linkml:definition_uri "https://w3id.org/linkml/PermissibleValue"^^xsd:anyURI ; linkml:description "a permissible value, accompanied by intended text and an optional mapping to a concept URI" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n60 ; + linkml:slot_usage _:c14n62 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:implements , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:instantiates , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:meaning , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:permissible_value_is_a , linkml:permissible_value_mixins , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:text , linkml:title , linkml:todos , linkml:unit . linkml:Prefix OIO:inSubset linkml:BasicSubset , linkml:SpecificationSubset ; a linkml:ClassDefinition ; @@ -361,7 +361,7 @@ linkml:Prefix OIO:inSubset linkml:BasicSubset , linkml:SpecificationSubset ; sh:order 12 ; linkml:definition_uri "https://w3id.org/linkml/Prefix"^^xsd:anyURI ; linkml:description "prefix URI tuple" ; - linkml:slot_usage _:c14n48 ; + linkml:slot_usage _:c14n50 ; linkml:slots linkml:prefix_prefix , linkml:prefix_reference . linkml:RECOMMENDED skos:altLabel "ENCOURAGED" ; linkml:description "The metadata element is recommended to be present in the model" . @@ -373,7 +373,7 @@ linkml:ReachabilityQuery OIO:inSubset linkml:SpecificationSubset ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/ReachabilityQuery"^^xsd:anyURI ; linkml:description "A query that is used on an enum expression to dynamically obtain a set of permissible values via walking from a set of source nodes to a set of descendants or ancestors over a set of relationship types." ; - linkml:slot_usage _:c14n23 ; + linkml:slot_usage _:c14n25 ; linkml:slots linkml:include_self , linkml:is_direct , linkml:relationship_types , linkml:source_nodes , linkml:source_ontology , linkml:traverse_up . linkml:RelationalModelProfile dcterms:title "relational model profile" ; a linkml:SubsetDefinition ; @@ -395,7 +395,7 @@ linkml:SchemaDefinition OIO:inSubset linkml:BasicSubset , linkml:MinimalSubset , linkml:definition_uri "https://w3id.org/linkml/SchemaDefinition"^^xsd:anyURI ; linkml:description "A collection of definitions that make up a schema or a data model." ; linkml:is_a linkml:Element ; - linkml:slot_usage _:c14n44 ; + linkml:slot_usage _:c14n46 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:bindings , linkml:broad_mappings , linkml:categories , linkml:classes , linkml:close_mappings , linkml:comments , linkml:conforms_to , linkml:contributors , linkml:created_by , linkml:created_on , linkml:default_curi_maps , linkml:default_prefix , linkml:default_range , linkml:definition_uri , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:emit_prefixes , linkml:enums , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:generation_date , linkml:id , linkml:id_prefixes , linkml:id_prefixes_are_closed , linkml:implements , linkml:imported_from , linkml:imports , linkml:in_language , linkml:in_subset , linkml:instantiates , linkml:keywords , linkml:last_updated_on , linkml:license , linkml:local_names , linkml:mappings , linkml:metamodel_version , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:prefixes , linkml:rank , linkml:related_mappings , linkml:schema_definition_name , linkml:see_also , linkml:settings , linkml:slot_definitions , linkml:slot_names_unique , linkml:source , linkml:source_file , linkml:source_file_date , linkml:source_file_size , linkml:status , linkml:structured_aliases , linkml:subsets , linkml:title , linkml:todos , linkml:types , linkml:version ; linkml:tree_root true . linkml:Setting OIO:inSubset linkml:SpecificationSubset ; @@ -404,7 +404,7 @@ linkml:Setting OIO:inSubset linkml:SpecificationSubset ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; linkml:definition_uri "https://w3id.org/linkml/Setting"^^xsd:anyURI ; linkml:description "assignment of a key to a value" ; - linkml:slot_usage _:c14n55 ; + linkml:slot_usage _:c14n57 ; linkml:slots linkml:setting_key , linkml:setting_value . linkml:SlotDefinition OIO:inSubset linkml:BasicSubset , linkml:MinimalSubset , linkml:OwlProfile , linkml:SpecificationSubset ; a linkml:ClassDefinition ; @@ -417,7 +417,7 @@ linkml:SlotDefinition OIO:inSubset linkml:BasicSubset , linkml:MinimalSubset , l linkml:description "an element that describes how instances are related to other instances" ; linkml:is_a linkml:Definition ; linkml:mixins linkml:SlotExpression ; - linkml:slot_usage _:c14n39 ; + linkml:slot_usage _:c14n41 ; linkml:slots linkml:abstract , linkml:alias , linkml:aliases , linkml:all_members , linkml:alt_descriptions , linkml:annotations , linkml:array , linkml:asymmetric , linkml:bindings , linkml:broad_mappings , linkml:categories , linkml:children_are_mutually_disjoint , linkml:close_mappings , linkml:comments , linkml:conforms_to , linkml:contributors , linkml:created_by , linkml:created_on , linkml:definition_uri , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:designates_type , linkml:domain , linkml:domain_of , linkml:enum_range , linkml:equals_expression , linkml:equals_number , linkml:equals_string , linkml:equals_string_in , linkml:exact_cardinality , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:has_member , linkml:id_prefixes , linkml:id_prefixes_are_closed , linkml:identifier , linkml:ifabsent , linkml:implements , linkml:implicit_prefix , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:inherited , linkml:inlined , linkml:inlined_as_list , linkml:instantiates , linkml:inverse , linkml:irreflexive , linkml:is_class_field , linkml:is_grouping_slot , linkml:is_usage_slot , linkml:key , linkml:keywords , linkml:last_updated_on , linkml:list_elements_ordered , linkml:list_elements_unique , linkml:local_names , linkml:locally_reflexive , linkml:mappings , linkml:maximum_cardinality , linkml:maximum_value , linkml:minimum_cardinality , linkml:minimum_value , linkml:mixin , linkml:modified_by , linkml:multivalued , linkml:name , linkml:narrow_mappings , linkml:notes , linkml:owner , linkml:path_rule , linkml:pattern , linkml:range , linkml:range_expression , linkml:rank , linkml:readonly , linkml:recommended , linkml:reflexive , linkml:reflexive_transitive_form_of , linkml:related_mappings , linkml:relational_role , linkml:required , linkml:role , linkml:see_also , linkml:shared , linkml:singular_name , linkml:slot_definition_apply_to , linkml:slot_definition_disjoint_with , linkml:slot_definition_is_a , linkml:slot_definition_mixins , linkml:slot_definition_union_of , linkml:slot_expression_all_of , linkml:slot_expression_any_of , linkml:slot_expression_exactly_one_of , linkml:slot_expression_none_of , linkml:slot_group , linkml:slot_uri , linkml:source , linkml:status , linkml:string_serialization , linkml:structured_aliases , linkml:structured_pattern , linkml:subproperty_of , linkml:symmetric , linkml:title , linkml:todos , linkml:transitive , linkml:transitive_form_of , linkml:type_mappings , linkml:unit , linkml:usage_slot_name , linkml:value_presence , linkml:values_from . linkml:SlotExpression a linkml:ClassDefinition ; skos:exactMatch linkml:SlotExpression ; @@ -426,7 +426,7 @@ linkml:SlotExpression a linkml:ClassDefinition ; linkml:description "an expression that constrains the range of values a slot can take" ; linkml:is_a linkml:Expression ; linkml:mixin true ; - linkml:slot_usage _:c14n54 ; + linkml:slot_usage _:c14n56 ; linkml:slots linkml:all_members , linkml:array , linkml:bindings , linkml:enum_range , linkml:equals_expression , linkml:equals_number , linkml:equals_string , linkml:equals_string_in , linkml:exact_cardinality , linkml:has_member , linkml:implicit_prefix , linkml:inlined , linkml:inlined_as_list , linkml:maximum_cardinality , linkml:maximum_value , linkml:minimum_cardinality , linkml:minimum_value , linkml:multivalued , linkml:pattern , linkml:range , linkml:range_expression , linkml:recommended , linkml:required , linkml:slot_expression_all_of , linkml:slot_expression_any_of , linkml:slot_expression_exactly_one_of , linkml:slot_expression_none_of , linkml:structured_pattern , linkml:unit , linkml:value_presence . linkml:SpecificationSubset dcterms:title "specification subset" ; a linkml:SubsetDefinition ; @@ -440,7 +440,7 @@ linkml:StructuredAlias a linkml:ClassDefinition ; linkml:definition_uri "https://w3id.org/linkml/StructuredAlias"^^xsd:anyURI ; linkml:description "object that contains meta data about a synonym or alias including where it came from (source) and its scope (narrow, broad, etc.)" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Expression , linkml:Extensible ; - linkml:slot_usage _:c14n20 ; + linkml:slot_usage _:c14n22 ; linkml:slots linkml:alias_contexts , linkml:alias_predicate , linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:literal_form , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_alias_categories , linkml:structured_aliases , linkml:title , linkml:todos . linkml:SubsetDefinition OIO:inSubset linkml:BasicSubset , linkml:SpecificationSubset ; a linkml:ClassDefinition ; @@ -470,7 +470,7 @@ linkml:TypeExpression a linkml:ClassDefinition ; linkml:description "An abstract class grouping named types and anonymous type expressions" ; linkml:is_a linkml:Expression ; linkml:mixin true ; - linkml:slot_usage _:c14n40 ; + linkml:slot_usage _:c14n42 ; linkml:slots linkml:equals_number , linkml:equals_string , linkml:equals_string_in , linkml:implicit_prefix , linkml:maximum_value , linkml:minimum_value , linkml:pattern , linkml:structured_pattern , linkml:type_expression_all_of , linkml:type_expression_any_of , linkml:type_expression_exactly_one_of , linkml:type_expression_none_of , linkml:unit . linkml:TypeMapping OIO:inSubset linkml:SpecificationSubset ; a linkml:ClassDefinition ; @@ -480,7 +480,7 @@ linkml:TypeMapping OIO:inSubset linkml:SpecificationSubset ; linkml:definition_uri "https://w3id.org/linkml/TypeMapping"^^xsd:anyURI ; linkml:description "Represents how a slot or type can be serialized to a format." ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n18 ; + linkml:slot_usage _:c14n20 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:framework_key , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mapped_type , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:string_serialization , linkml:structured_aliases , linkml:title , linkml:todos . linkml:URI linkml:description "The permissible values are the set of code URIs in the code set" . linkml:UniqueKey OIO:inSubset linkml:BasicSubset , linkml:RelationalModelProfile , linkml:SpecificationSubset ; @@ -491,16 +491,16 @@ linkml:UniqueKey OIO:inSubset linkml:BasicSubset , linkml:RelationalModelProfile linkml:definition_uri "https://w3id.org/linkml/UniqueKey"^^xsd:anyURI ; linkml:description "a collection of slots whose values uniquely identify an instance of a class" ; linkml:mixins linkml:Annotatable , linkml:CommonMetadata , linkml:Extensible ; - linkml:slot_usage _:c14n58 ; + linkml:slot_usage _:c14n60 ; linkml:slots linkml:aliases , linkml:alt_descriptions , linkml:annotations , linkml:broad_mappings , linkml:categories , linkml:close_mappings , linkml:comments , linkml:consider_nulls_inequal , linkml:contributors , linkml:created_by , linkml:created_on , linkml:deprecated , linkml:deprecated_element_has_exact_replacement , linkml:deprecated_element_has_possible_replacement , linkml:description , linkml:exact_mappings , linkml:examples , linkml:extensions , linkml:from_schema , linkml:imported_from , linkml:in_language , linkml:in_subset , linkml:keywords , linkml:last_updated_on , linkml:mappings , linkml:modified_by , linkml:narrow_mappings , linkml:notes , linkml:rank , linkml:related_mappings , linkml:see_also , linkml:source , linkml:status , linkml:structured_aliases , linkml:title , linkml:todos , linkml:unique_key_name , linkml:unique_key_slots . linkml:UnitOfMeasure a linkml:ClassDefinition ; skos:exactMatch qudt:Unit ; skos:inScheme "https://w3id.org/linkml/units"^^xsd:anyURI ; - linkml:any_of _:c14n11 , _:c14n56 , _:c14n70 , _:c14n9 ; + linkml:any_of _:c14n13 , _:c14n58 , _:c14n72 , _:c14n9 ; linkml:definition_uri "https://w3id.org/linkml/UnitOfMeasure"^^xsd:anyURI ; linkml:description "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; linkml:imported_from "linkml:units" ; - linkml:slot_usage _:c14n12 ; + linkml:slot_usage _:c14n14 ; linkml:slots linkml:UnitOfMeasure_exact_mappings , linkml:abbreviation , linkml:derivation , linkml:descriptive_name , linkml:has_quantity_kind , linkml:iec61360code , linkml:symbol , linkml:ucum_code . linkml:UnitOfMeasure_exact_mappings a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/mappings"^^xsd:anyURI ; @@ -1668,7 +1668,7 @@ linkml:extension_tag a linkml:SlotDefinition ; linkml:extension_value a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/extensions"^^xsd:anyURI ; skos:prefLabel "value" ; - linkml:annotations _:c14n68 ; + linkml:annotations _:c14n70 ; linkml:definition_uri "https://w3id.org/linkml/extension_value"^^xsd:anyURI ; linkml:description "the actual annotation" ; linkml:domain linkml:Extension ; @@ -1699,7 +1699,7 @@ linkml:extra_slots OIO:inSubset linkml:BasicSubset , linkml:SpecificationSubset linkml:description "How a class instance handles extra data not specified in the class definition.\nNote that this does *not* define the constraints that are placed on additional slots defined by inheriting classes.\n\nPossible values:\n- `allowed: true` - allow all additional data\n- `allowed: false` (or `allowed:` or `allowed: null` while `range_expression` is `null`) -\n forbid all additional data (default)\n- `range_expression: ...` - allow additional data if it matches the slot expression (see examples)\n" ; linkml:domain linkml:ClassDefinition ; linkml:domain_of linkml:ClassDefinition ; - linkml:examples _:c14n13 , _:c14n25 , _:c14n35 , _:c14n38 , _:c14n50 , _:c14n59 , _:c14n62 , _:c14n82 ; + linkml:examples _:c14n15 , _:c14n27 , _:c14n37 , _:c14n40 , _:c14n52 , _:c14n61 , _:c14n64 , _:c14n85 ; linkml:inlined true ; linkml:inlined_as_list true ; linkml:owner linkml:ClassDefinition ; @@ -2393,7 +2393,7 @@ linkml:maximum_number_dimensions bibo:status "testing"^^xsd:anyURI ; a linkml:SlotDefinition ; skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; skos:note "maximum_number_dimensions cannot be less than minimum_number_dimensions" ; - linkml:any_of _:c14n4 , _:c14n51 ; + linkml:any_of _:c14n4 , _:c14n53 ; linkml:definition_uri "https://w3id.org/linkml/maximum_number_dimensions"^^xsd:anyURI ; linkml:description "maximum number of dimensions in the array, or False if explicitly no maximum. If this is unset, and an explicit list of dimensions are passed using dimensions, then this is interpreted as a closed list and the maximum_number_dimensions is the length of the dimensions list, unless this value is set to False" ; linkml:domain linkml:ArrayExpression ; @@ -2435,7 +2435,7 @@ linkml:meaning OIO:inSubset linkml:BasicSubset , linkml:SpecificationSubset ; linkml:meta dcterms:license "https://creativecommons.org/publicdomain/zero/1.0/" ; dcterms:title "LinkML Schema Metamodel" ; a linkml:SchemaDefinition ; - sh:declare _:c14n0 , _:c14n10 , _:c14n15 , _:c14n19 , _:c14n22 , _:c14n26 , _:c14n28 , _:c14n29 , _:c14n30 , _:c14n34 , _:c14n37 , _:c14n42 , _:c14n43 , _:c14n69 , _:c14n74 , _:c14n76 , _:c14n81 , _:c14n91 ; + sh:declare _:c14n0 , _:c14n10 , _:c14n11 , _:c14n12 , _:c14n17 , _:c14n21 , _:c14n24 , _:c14n28 , _:c14n30 , _:c14n31 , _:c14n32 , _:c14n36 , _:c14n39 , _:c14n44 , _:c14n45 , _:c14n71 , _:c14n76 , _:c14n78 , _:c14n83 , _:c14n84 , _:c14n94 ; linkml:classes linkml:AltDescription , linkml:Annotatable , linkml:Annotation , linkml:AnonymousClassExpression , linkml:AnonymousEnumExpression , linkml:AnonymousExpression , linkml:AnonymousSlotExpression , linkml:AnonymousTypeExpression , linkml:AnyValue , linkml:Anything , linkml:ArrayExpression , linkml:ClassDefinition , linkml:ClassExpression , linkml:ClassLevelRule , linkml:ClassRule , linkml:CommonMetadata , linkml:Definition , linkml:DimensionExpression , linkml:Element , linkml:EnumBinding , linkml:EnumDefinition , linkml:EnumExpression , linkml:Example , linkml:Expression , linkml:Extensible , linkml:Extension , linkml:ExtraSlotsExpression , linkml:ImportExpression , linkml:LocalName , linkml:MatchQuery , linkml:PathExpression , linkml:PatternExpression , linkml:PermissibleValue , linkml:Prefix , linkml:ReachabilityQuery , linkml:SchemaDefinition , linkml:Setting , linkml:SlotDefinition , linkml:SlotExpression , linkml:StructuredAlias , linkml:SubsetDefinition , linkml:TypeDefinition , linkml:TypeExpression , linkml:TypeMapping , linkml:UniqueKey , linkml:UnitOfMeasure ; linkml:default_curi_maps "semweb_context" ; linkml:default_prefix "linkml" ; @@ -3494,7 +3494,7 @@ linkml:slot_group OIO:inSubset linkml:BasicSubset , linkml:SpecificationSubset ; linkml:domain_of linkml:SlotDefinition ; linkml:owner linkml:SlotDefinition ; linkml:range linkml:SlotDefinition ; - linkml:range_expression _:c14n86 ; + linkml:range_expression _:c14n89 ; linkml:slot_uri "http://www.w3.org/ns/shacl#group"^^xsd:anyURI . linkml:slot_names_unique bibo:status "testing"^^xsd:anyURI ; a linkml:SlotDefinition ; @@ -3637,7 +3637,7 @@ linkml:status OIO:inSubset linkml:BasicSubset ; linkml:description "status of the element" ; linkml:domain linkml:Element ; linkml:domain_of linkml:CommonMetadata ; - linkml:examples _:c14n57 ; + linkml:examples _:c14n59 ; linkml:owner linkml:status ; linkml:range linkml:uriorcurie ; linkml:slot_uri "http://purl.org/ontology/bibo/status"^^xsd:anyURI . @@ -3671,7 +3671,7 @@ linkml:structured_alias_categories OIO:inSubset linkml:BasicSubset ; linkml:description "The category or categories of an alias. This can be drawn from any relevant vocabulary" ; linkml:domain linkml:StructuredAlias ; linkml:domain_of linkml:StructuredAlias ; - linkml:examples _:c14n66 ; + linkml:examples _:c14n68 ; linkml:is_a linkml:categories ; linkml:is_usage_slot true ; linkml:multivalued true ; @@ -3737,7 +3737,7 @@ linkml:subproperty_of a linkml:SlotDefinition ; linkml:description "Ontology property which this slot is a subproperty of. Note: setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model." ; linkml:domain linkml:SlotDefinition ; linkml:domain_of linkml:SlotDefinition ; - linkml:examples _:c14n31 ; + linkml:examples _:c14n33 ; linkml:owner linkml:SlotDefinition ; linkml:range linkml:SlotDefinition ; linkml:slot_uri "http://www.w3.org/2000/01/rdf-schema#subPropertyOf"^^xsd:anyURI . @@ -4093,7 +4093,7 @@ linkml:unique_keys OIO:inSubset linkml:BasicSubset , linkml:RelationalModelProfi skos:inScheme "https://w3id.org/linkml/meta"^^xsd:anyURI ; skos:note "Not to be confused with a \"singular unique key\", which is defined by means of the `key` slot, or with an \"identifier\", which is defined by means of the \"identifier\" slot. Compound keys, singular unique keys, and identifiers all create a unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have.\n" ; linkml:definition_uri "https://w3id.org/linkml/unique_keys"^^xsd:anyURI ; - linkml:description "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why there are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; + linkml:description "A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why they are also called \"compound keys\". A unique key uniquely identifies instances of the class within a given container, meaning there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key." ; linkml:domain linkml:ClassDefinition ; linkml:domain_of linkml:ClassDefinition ; linkml:inlined true ; @@ -4225,106 +4225,112 @@ linkml:version OIO:inSubset linkml:BasicSubset ; linkml:slot_uri "http://purl.org/pav/version"^^xsd:anyURI . _:c14n0 sh:namespace "http://purl.org/ontology/bibo/"^^xsd:anyURI ; sh:prefix "bibo" . -_:c14n10 sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; +_:c14n10 sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ; + sh:prefix "dcterms" . +_:c14n100 linkml:range_expression _:c14n65 . +_:c14n101 linkml:range linkml:string . +_:c14n11 sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + sh:prefix "rdf" . +_:c14n12 sh:namespace "http://open-services.net/ns/core#"^^xsd:anyURI ; sh:prefix "oslc" . -_:c14n11 a linkml:AnonymousClassExpression ; +_:c14n13 a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:symbol . -_:c14n13 a linkml:Example ; +_:c14n15 a linkml:Example ; linkml:description "Allow additional data that are strings" ; - linkml:object _:c14n94 . -_:c14n15 sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ; + linkml:object _:c14n97 . +_:c14n17 sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ; sh:prefix "sh" . -_:c14n19 sh:namespace "http://www.w3.org/ns/prov#"^^xsd:anyURI ; +_:c14n21 sh:namespace "http://www.w3.org/ns/prov#"^^xsd:anyURI ; sh:prefix "prov" . -_:c14n21 linkml:range linkml:AClassDefinition . -_:c14n22 sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; +_:c14n23 linkml:range linkml:AClassDefinition . +_:c14n24 sh:namespace "http://qudt.org/schema/qudt/"^^xsd:anyURI ; sh:prefix "qudt" . -_:c14n25 a linkml:Example ; +_:c14n27 a linkml:Example ; linkml:description "A semantically *invalid* use of `extra_slots`, as extra slots will be forbidden and the\n`anonymous_slot_expression` will be ignored.\n" ; linkml:object _:c14n3 . -_:c14n26 sh:namespace "http://www.w3.org/2002/07/owl#"^^xsd:anyURI ; +_:c14n28 sh:namespace "http://www.w3.org/2002/07/owl#"^^xsd:anyURI ; sh:prefix "owl" . -_:c14n28 sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; +_:c14n3 linkml:allowed false ; + linkml:range_expression _:c14n101 . +_:c14n30 sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI ; sh:prefix "linkml" . -_:c14n29 sh:namespace "http://www.w3.org/2003/11/swrl#"^^xsd:anyURI ; +_:c14n31 sh:namespace "http://www.w3.org/2003/11/swrl#"^^xsd:anyURI ; sh:prefix "swrl" . -_:c14n3 linkml:allowed false ; - linkml:range_expression _:c14n98 . -_:c14n30 sh:namespace "http://www.w3.org/2008/05/skos-xl#"^^xsd:anyURI ; +_:c14n32 sh:namespace "http://www.w3.org/2008/05/skos-xl#"^^xsd:anyURI ; sh:prefix "skosxl" . -_:c14n31 a linkml:Example ; +_:c14n33 a linkml:Example ; skos:example "RO:HOM0000001" ; linkml:description "this is the RO term for \"in homology relationship with\", and used as a value of subproperty of this means that any ontological child (related to RO:HOM0000001 via an is_a relationship), is a valid value for the slot that declares this with the subproperty_of tag. This differs from the 'values_from' meta model component in that 'values_from' requires the id of a value set (said another way, if an entire ontology had a curie/identifier that was the identifier for the entire ontology, then that identifier would be used in 'values_from.')" . -_:c14n32 linkml:range linkml:integer . -_:c14n34 sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; +_:c14n34 linkml:range linkml:integer . +_:c14n36 sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ; sh:prefix "skos" . -_:c14n35 a linkml:Example ; +_:c14n37 a linkml:Example ; linkml:description "Allow additional data if they are integers.\n`required` is meaningless in this context and ignored, since by definition all \"extra\" slots are optional.\n" ; - linkml:object _:c14n93 . -_:c14n37 sh:namespace "http://semanticscience.org/resource/SIO_"^^xsd:anyURI ; + linkml:object _:c14n95 . +_:c14n39 sh:namespace "http://semanticscience.org/resource/SIO_"^^xsd:anyURI ; sh:prefix "SIO" . -_:c14n38 a linkml:Example ; - linkml:description "Forbid any additional data" ; - linkml:object _:c14n85 . _:c14n4 a linkml:AnonymousSlotExpression ; linkml:range linkml:boolean . -_:c14n42 sh:namespace "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#"^^xsd:anyURI ; +_:c14n40 a linkml:Example ; + linkml:description "Forbid any additional data" ; + linkml:object _:c14n88 . +_:c14n44 sh:namespace "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#"^^xsd:anyURI ; sh:prefix "NCIT" . -_:c14n43 sh:namespace "https://vocab.org/vann/"^^xsd:anyURI ; +_:c14n45 sh:namespace "https://vocab.org/vann/"^^xsd:anyURI ; sh:prefix "vann" . _:c14n5 linkml:range linkml:integer ; linkml:required true . -_:c14n50 a linkml:Example ; +_:c14n52 a linkml:Example ; linkml:description "Allow all additional data" ; - linkml:object _:c14n80 . -_:c14n51 a linkml:AnonymousSlotExpression ; + linkml:object _:c14n82 . +_:c14n53 a linkml:AnonymousSlotExpression ; linkml:range linkml:integer . -_:c14n56 a linkml:AnonymousClassExpression ; +_:c14n58 a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:iec61360code . -_:c14n57 a linkml:Example ; - skos:example "bibo:draft" . _:c14n59 a linkml:Example ; + skos:example "bibo:draft" . +_:c14n61 a linkml:Example ; linkml:description "Allow additional data if they are instances of the class definition \"AClassDefinition\"" ; - linkml:object _:c14n97 . -_:c14n61 linkml:any_of _:c14n32 , _:c14n75 . -_:c14n62 a linkml:Example ; + linkml:object _:c14n96 . +_:c14n63 linkml:any_of _:c14n34 , _:c14n77 . +_:c14n64 a linkml:Example ; linkml:description "Allow additional data if they are lists of integers of at most length 5.\nNote that this does *not* mean that a maximum of 5 extra slots are allowed.\n" ; - linkml:object _:c14n92 . -_:c14n63 linkml:maximum_cardinality 5 ; + linkml:object _:c14n100 . +_:c14n65 linkml:maximum_cardinality 5 ; linkml:multivalued true ; linkml:range linkml:integer . -_:c14n66 a linkml:Example ; +_:c14n68 a linkml:Example ; skos:example "https://w3id.org/mod#acronym" ; linkml:description "An acronym" . -_:c14n68 a linkml:Annotation ; +_:c14n70 a linkml:Annotation ; skos:example true ; linkml:tag linkml:simple_dict_value . -_:c14n69 sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; +_:c14n71 sh:namespace "http://purl.org/pav/"^^xsd:anyURI ; sh:prefix "pav" . -_:c14n70 a linkml:AnonymousClassExpression ; +_:c14n72 a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:exact_mappings . -_:c14n74 sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; +_:c14n76 sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI ; sh:prefix "OIO" . -_:c14n75 linkml:range linkml:string . -_:c14n76 sh:namespace "http://rdf.cdisc.org/mms#"^^xsd:anyURI ; +_:c14n77 linkml:range linkml:string . +_:c14n78 sh:namespace "http://rdf.cdisc.org/mms#"^^xsd:anyURI ; sh:prefix "cdisc" . -_:c14n80 linkml:allowed true . -_:c14n81 sh:namespace "http://purl.org/linked-data/cube#"^^xsd:anyURI ; +_:c14n82 linkml:allowed true . +_:c14n83 sh:namespace "http://purl.org/linked-data/cube#"^^xsd:anyURI ; sh:prefix "qb" . -_:c14n82 a linkml:Example ; +_:c14n84 sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ; + sh:prefix "rdfs" . +_:c14n85 a linkml:Example ; linkml:description "allow additional data if they are either strings or integers" ; - linkml:object _:c14n96 . -_:c14n85 linkml:allowed false . -_:c14n86 a linkml:AnonymousClassExpression ; + linkml:object _:c14n99 . +_:c14n88 linkml:allowed false . +_:c14n89 a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:is_grouping_slot . _:c14n9 a linkml:AnonymousClassExpression ; linkml:slot_conditions linkml:ucum_code . -_:c14n91 sh:namespace "http://schema.org/"^^xsd:anyURI ; +_:c14n94 sh:namespace "http://schema.org/"^^xsd:anyURI ; sh:prefix "schema" . -_:c14n92 linkml:range_expression _:c14n63 . -_:c14n93 linkml:range_expression _:c14n5 . -_:c14n94 linkml:range_expression _:c14n95 . -_:c14n95 linkml:range linkml:string . -_:c14n96 linkml:range_expression _:c14n61 . -_:c14n97 linkml:range_expression _:c14n21 . +_:c14n95 linkml:range_expression _:c14n5 . +_:c14n96 linkml:range_expression _:c14n23 . +_:c14n97 linkml:range_expression _:c14n98 . _:c14n98 linkml:range linkml:string . +_:c14n99 linkml:range_expression _:c14n63 . diff --git a/tests/linkml/test_biolink_model/__snapshots__/biolink.schema.json b/tests/linkml/test_biolink_model/__snapshots__/biolink.schema.json index 98581ec002..0cbae5182d 100644 --- a/tests/linkml/test_biolink_model/__snapshots__/biolink.schema.json +++ b/tests/linkml/test_biolink_model/__snapshots__/biolink.schema.json @@ -3031,7 +3031,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -3210,7 +3217,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -5064,7 +5078,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -5243,7 +5264,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -5555,7 +5583,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -5701,7 +5736,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -5746,7 +5788,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -6299,7 +6348,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -6467,7 +6523,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -7234,7 +7297,14 @@ ] }, "causal_mechanism_qualifier": { - "$ref": "#/$defs/CausalMechanismQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/CausalMechanismQualifierEnum" + }, + { + "type": "null" + } + ], "description": "A statement qualifier representing a type of molecular control mechanism through which an effect of a chemical on a gene or gene product is mediated (e.g. 'agonism', 'inhibition', 'allosteric modulation', 'channel blocker')" }, "deprecated": { @@ -7327,7 +7397,14 @@ "description": "connects an association to the object of the association. For example, in a gene-to-phenotype association, the gene is subject and phenotype is object." }, "object_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the object of an association (aka: statement).", "examples": [ "stability", @@ -7384,11 +7461,25 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_form_or_variant_qualifier": { - "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to define a specific type, variant, alternative version of this concept. The composed concept remains a subtype or instance of the core concept. For example, the qualifier \u2018mutation\u2019 combines with the core concept \u2018Gene X\u2019 to express the compose concept \u2018a mutation of Gene X\u2019. This qualifier specifies a change in the object of an association (aka: statement).", "examples": [ "mutation", @@ -7425,7 +7516,14 @@ ] }, "object_part_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum" + }, + { + "type": "null" + } + ], "description": "defines a specific part/component of the core concept (used in cases there this specific part has no IRI we can use to directly represent it, e.g. 'ESR1 transcript' q: polyA tail). This qualifier is for the object of an association (or statement)." }, "original_object": { @@ -7542,7 +7640,14 @@ "type": "string" }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -7593,18 +7698,39 @@ ] }, "subject_derivative_qualifier": { - "$ref": "#/$defs/ChemicalEntityDerivativeEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalEntityDerivativeEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to describe something that is derived from the core concept. For example, the qualifier \u2018metabolite\u2019 combines with a \u2018Chemical X\u2019 core concept to express the composed concept \u2018a metabolite of Chemical X\u2019. This qualifier is for the subject of an association (or statement).", "examples": [ "metabolite" ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_form_or_variant_qualifier": { - "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to define a specific type, variant, alternative version of this concept. The composed concept remains a subtype or instance of the core concept. For example, the qualifier \u2018mutation\u2019 combines with the core concept \u2018Gene X\u2019 to express the compose concept \u2018a mutation of Gene X\u2019. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "mutation", @@ -7640,7 +7766,14 @@ ] }, "subject_part_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum" + }, + { + "type": "null" + } + ], "description": "defines a specific part/component of the core concept (used in cases there this specific part has no IRI we can use to directly represent it, e.g. 'ESR1 transcript' q: polyA tail). This qualifier is for the subject of an association (or statement)." }, "timepoint": { @@ -8386,7 +8519,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -8951,7 +9091,14 @@ ] }, "object_form_or_variant_qualifier": { - "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to define a specific type, variant, alternative version of this concept. The composed concept remains a subtype or instance of the core concept. For example, the qualifier \u2018mutation\u2019 combines with the core concept \u2018Gene X\u2019 to express the compose concept \u2018a mutation of Gene X\u2019. This qualifier specifies a change in the object of an association (aka: statement).", "examples": [ "mutation", @@ -8988,7 +9135,14 @@ ] }, "object_part_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum" + }, + { + "type": "null" + } + ], "description": "defines a specific part/component of the core concept (used in cases there this specific part has no IRI we can use to directly represent it, e.g. 'ESR1 transcript' q: polyA tail). This qualifier is for the object of an association (or statement)." }, "original_object": { @@ -9119,14 +9273,28 @@ ] }, "subject_derivative_qualifier": { - "$ref": "#/$defs/ChemicalEntityDerivativeEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalEntityDerivativeEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to describe something that is derived from the core concept. For example, the qualifier \u2018metabolite\u2019 combines with a \u2018Chemical X\u2019 core concept to express the composed concept \u2018a metabolite of Chemical X\u2019. This qualifier is for the subject of an association (or statement).", "examples": [ "metabolite" ] }, "subject_form_or_variant_qualifier": { - "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to define a specific type, variant, alternative version of this concept. The composed concept remains a subtype or instance of the core concept. For example, the qualifier \u2018mutation\u2019 combines with the core concept \u2018Gene X\u2019 to express the compose concept \u2018a mutation of Gene X\u2019. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "mutation", @@ -9162,7 +9330,14 @@ ] }, "subject_part_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum" + }, + { + "type": "null" + } + ], "description": "defines a specific part/component of the core concept (used in cases there this specific part has no IRI we can use to directly represent it, e.g. 'ESR1 transcript' q: polyA tail). This qualifier is for the subject of an association (or statement)." }, "timepoint": { @@ -9234,7 +9409,14 @@ ] }, "drug_regulatory_status_world_wide": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "An agglomeration of drug regulatory status worldwide. Not specific to FDA." }, "full_name": { @@ -9265,7 +9447,14 @@ ] }, "highest_FDA_approval_status": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "Should be the highest level of FDA approval this chemical entity or device has, regardless of which disease, condition or phenotype it is currently being reviewed to treat. For specific levels of FDA approval for a specific condition, disease, phenotype, etc., see the association slot, 'clinical approval status.'" }, "id": { @@ -9382,7 +9571,14 @@ "description": "This association defines a relationship between a chemical or treatment (or procedure) and a disease or phenotypic feature where the disesae or phenotypic feature is a secondary, typically (but not always) undesirable effect.", "properties": { "FDA_adverse_event_level": { - "$ref": "#/$defs/FDAIDAAdverseEventEnum", + "anyOf": [ + { + "$ref": "#/$defs/FDAIDAAdverseEventEnum" + }, + { + "type": "null" + } + ], "description": "" }, "adjusted_p_value": { @@ -9591,7 +9787,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -9759,7 +9962,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -9822,7 +10032,14 @@ "description": "This association defines a relationship between a chemical or treatment (or procedure) and a disease or phenotypic feature where the disease or phenotypic feature is a secondary undesirable effect.", "properties": { "FDA_adverse_event_level": { - "$ref": "#/$defs/FDAIDAAdverseEventEnum", + "anyOf": [ + { + "$ref": "#/$defs/FDAIDAAdverseEventEnum" + }, + { + "type": "null" + } + ], "description": "" }, "adjusted_p_value": { @@ -10031,7 +10248,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -10199,7 +10423,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -13631,7 +13862,14 @@ ] }, "drug_regulatory_status_world_wide": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "An agglomeration of drug regulatory status worldwide. Not specific to FDA." }, "full_name": { @@ -13662,7 +13900,14 @@ ] }, "highest_FDA_approval_status": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "Should be the highest level of FDA approval this chemical entity or device has, regardless of which disease, condition or phenotype it is currently being reviewed to treat. For specific levels of FDA approval for a specific condition, disease, phenotype, etc., see the association slot, 'clinical approval status.'" }, "id": { @@ -14664,7 +14909,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -14810,7 +15062,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -14855,7 +15114,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -17567,7 +17833,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -17756,7 +18029,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -17860,7 +18140,14 @@ ] }, "drug_regulatory_status_world_wide": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "An agglomeration of drug regulatory status worldwide. Not specific to FDA." }, "full_name": { @@ -17891,7 +18178,14 @@ ] }, "highest_FDA_approval_status": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "Should be the highest level of FDA approval this chemical entity or device has, regardless of which disease, condition or phenotype it is currently being reviewed to treat. For specific levels of FDA approval for a specific condition, disease, phenotype, etc., see the association slot, 'clinical approval status.'" }, "id": { @@ -19151,7 +19445,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -19288,7 +19589,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -19333,7 +19641,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -19518,7 +19833,14 @@ ] }, "clinical_approval_status": { - "$ref": "#/$defs/ClinicalApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ClinicalApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "" }, "deprecated": { @@ -19593,7 +19915,14 @@ ] }, "max_research_phase": { - "$ref": "#/$defs/ResearchPhaseEnum" + "anyOf": [ + { + "$ref": "#/$defs/ResearchPhaseEnum" + }, + { + "type": "null" + } + ] }, "name": { "description": "A human-readable name for an attribute or entity.", @@ -19893,7 +20222,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "predicate": { @@ -19925,7 +20261,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." } }, @@ -20031,7 +20374,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "predicate": { @@ -20063,7 +20413,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." } }, @@ -20145,7 +20502,14 @@ ] }, "clinical_approval_status": { - "$ref": "#/$defs/ClinicalApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ClinicalApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "" }, "deprecated": { @@ -20220,7 +20584,14 @@ ] }, "max_research_phase": { - "$ref": "#/$defs/ResearchPhaseEnum" + "anyOf": [ + { + "$ref": "#/$defs/ResearchPhaseEnum" + }, + { + "type": "null" + } + ] }, "name": { "description": "A human-readable name for an attribute or entity.", @@ -20560,7 +20931,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_specialization_qualifier": { @@ -20606,7 +20984,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_specialization_qualifier": { @@ -22557,7 +22942,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -22736,7 +23128,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -22841,7 +23240,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "predicate": { @@ -22873,7 +23279,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." } }, @@ -22924,7 +23337,14 @@ ] }, "drug_regulatory_status_world_wide": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "An agglomeration of drug regulatory status worldwide. Not specific to FDA." }, "full_name": { @@ -22955,7 +23375,14 @@ ] }, "highest_FDA_approval_status": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "Should be the highest level of FDA approval this chemical entity or device has, regardless of which disease, condition or phenotype it is currently being reviewed to treat. For specific levels of FDA approval for a specific condition, disease, phenotype, etc., see the association slot, 'clinical approval status.'" }, "id": { @@ -23983,7 +24410,14 @@ ] }, "causal_mechanism_qualifier": { - "$ref": "#/$defs/CausalMechanismQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/CausalMechanismQualifierEnum" + }, + { + "type": "null" + } + ], "description": "A statement qualifier representing a type of molecular control mechanism through which an effect of a chemical on a gene or gene product is mediated (e.g. 'agonism', 'inhibition', 'allosteric modulation', 'channel blocker')" }, "deprecated": { @@ -24076,7 +24510,14 @@ "type": "string" }, "object_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the object of an association (aka: statement).", "examples": [ "stability", @@ -24133,18 +24574,39 @@ ] }, "object_derivative_qualifier": { - "$ref": "#/$defs/ChemicalEntityDerivativeEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalEntityDerivativeEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to describe something that is derived from the core concept. For example, the qualifier \u2018metabolite\u2019 combines with a \u2018Chemical X\u2019 core concept to express the composed concept \u2018a metabolite of Chemical X\u2019. This qualifier is for the object of an association (or statement).", "examples": [ "metabolite" ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_form_or_variant_qualifier": { - "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to define a specific type, variant, alternative version of this concept. The composed concept remains a subtype or instance of the core concept. For example, the qualifier \u2018mutation\u2019 combines with the core concept \u2018Gene X\u2019 to express the compose concept \u2018a mutation of Gene X\u2019. This qualifier specifies a change in the object of an association (aka: statement).", "examples": [ "mutation", @@ -24181,7 +24643,14 @@ ] }, "object_part_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum" + }, + { + "type": "null" + } + ], "description": "defines a specific part/component of the core concept (used in cases there this specific part has no IRI we can use to directly represent it, e.g. 'ESR1 transcript' q: polyA tail). This qualifier is for the object of an association (or statement)." }, "original_object": { @@ -24298,7 +24767,14 @@ "description": "connects an association to the subject of the association. For example, in a gene-to-phenotype association, the gene is subject and phenotype is object." }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -24359,11 +24835,25 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_form_or_variant_qualifier": { - "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum", + "anyOf": [ + { + "$ref": "#/$defs/ChemicalOrGeneOrGeneProductFormOrVariantEnum" + }, + { + "type": "null" + } + ], "description": "A qualifier that composes with a core subject/object concept to define a specific type, variant, alternative version of this concept. The composed concept remains a subtype or instance of the core concept. For example, the qualifier \u2018mutation\u2019 combines with the core concept \u2018Gene X\u2019 to express the compose concept \u2018a mutation of Gene X\u2019. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "mutation", @@ -24399,7 +24889,14 @@ ] }, "subject_part_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalPartQualifierEnum" + }, + { + "type": "null" + } + ], "description": "defines a specific part/component of the core concept (used in cases there this specific part has no IRI we can use to directly represent it, e.g. 'ESR1 transcript' q: polyA tail). This qualifier is for the subject of an association (or statement)." }, "timepoint": { @@ -24679,7 +25176,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -24816,7 +25320,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -24861,7 +25372,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -25370,7 +25888,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -25508,7 +26033,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -25553,7 +26085,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_form_or_variant_qualifier": { @@ -26447,7 +26986,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -26593,7 +27139,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -26638,7 +27191,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -26952,7 +27512,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -27098,7 +27665,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -27143,7 +27717,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -30520,7 +31101,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -30666,7 +31254,14 @@ ] }, "subject_aspect_qualifier": { - "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum", + "anyOf": [ + { + "$ref": "#/$defs/GeneOrGeneProductOrChemicalEntityAspectEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept to describe new concepts of a different ontological type. e.g. a process in which the core concept participates, a function/activity/role held by the core concept, or a characteristic/quality that inheres in the core concept. The purpose of the aspect slot is to indicate what aspect is being affected in an 'affects' association. This qualifier specifies a change in the subject of an association (aka: statement).", "examples": [ "stability", @@ -30711,7 +31306,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -31292,7 +31894,14 @@ ] }, "genome_build": { - "$ref": "#/$defs/StrandEnum", + "anyOf": [ + { + "$ref": "#/$defs/StrandEnum" + }, + { + "type": "null" + } + ], "description": "The version of the genome on which a feature is located. For example, GRCh38 for Homo sapiens." }, "has_attribute": { @@ -31466,7 +32075,14 @@ ] }, "phase": { - "$ref": "#/$defs/PhaseEnum", + "anyOf": [ + { + "$ref": "#/$defs/PhaseEnum" + }, + { + "type": "null" + } + ], "description": "The phase for a coding sequence entity. For example, phase of a CDS as represented in a GFF3 with a value of 0, 1 or 2." }, "predicate": { @@ -31528,7 +32144,14 @@ ] }, "strand": { - "$ref": "#/$defs/StrandEnum", + "anyOf": [ + { + "$ref": "#/$defs/StrandEnum" + }, + { + "type": "null" + } + ], "description": "The strand on which a feature is located. Has a value of '+' (sense strand or forward strand) or '-' (anti-sense strand or reverse strand)." }, "subject": { @@ -31974,7 +32597,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -32142,7 +32772,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -32409,7 +33046,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -32577,7 +33221,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -33652,7 +34303,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -33834,7 +34492,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -40565,7 +41230,14 @@ ] }, "drug_regulatory_status_world_wide": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "An agglomeration of drug regulatory status worldwide. Not specific to FDA." }, "full_name": { @@ -40596,7 +41268,14 @@ ] }, "highest_FDA_approval_status": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "Should be the highest level of FDA approval this chemical entity or device has, regardless of which disease, condition or phenotype it is currently being reviewed to treat. For specific levels of FDA approval for a specific condition, disease, phenotype, etc., see the association slot, 'clinical approval status.'" }, "id": { @@ -44599,7 +45278,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -44767,7 +45453,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -47030,7 +47723,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -47231,7 +47931,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -47345,7 +48052,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "predicate": { @@ -47389,7 +48103,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." } }, @@ -47650,7 +48371,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -47834,7 +48562,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -49459,7 +50194,14 @@ ] }, "causal_mechanism_qualifier": { - "$ref": "#/$defs/CausalMechanismQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/CausalMechanismQualifierEnum" + }, + { + "type": "null" + } + ], "description": "A statement qualifier representing a type of molecular control mechanism through which an effect of a chemical on a gene or gene product is mediated (e.g. 'agonism', 'inhibition', 'allosteric modulation', 'channel blocker')" }, "exact_match": { @@ -49519,7 +50261,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_form_or_variant_qualifier": { @@ -49595,7 +50344,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_form_or_variant_qualifier": { @@ -50339,7 +51095,14 @@ ] }, "drug_regulatory_status_world_wide": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "An agglomeration of drug regulatory status worldwide. Not specific to FDA." }, "full_name": { @@ -50370,7 +51133,14 @@ ] }, "highest_FDA_approval_status": { - "$ref": "#/$defs/ApprovalStatusEnum", + "anyOf": [ + { + "$ref": "#/$defs/ApprovalStatusEnum" + }, + { + "type": "null" + } + ], "description": "Should be the highest level of FDA approval this chemical entity or device has, regardless of which disease, condition or phenotype it is currently being reviewed to treat. For specific levels of FDA approval for a specific condition, disease, phenotype, etc., see the association slot, 'clinical approval status.'" }, "id": { @@ -51758,11 +52528,25 @@ ] }, "reaction_direction": { - "$ref": "#/$defs/ReactionDirectionEnum", + "anyOf": [ + { + "$ref": "#/$defs/ReactionDirectionEnum" + }, + { + "type": "null" + } + ], "description": "the direction of a reaction as constrained by the direction enum (ie: left_to_right, neutral, etc.)" }, "reaction_side": { - "$ref": "#/$defs/ReactionSideEnum", + "anyOf": [ + { + "$ref": "#/$defs/ReactionSideEnum" + }, + { + "type": "null" + } + ], "description": "the side of a reaction being modeled (ie: left or right)" }, "retrieval_source_ids": { @@ -52143,11 +52927,25 @@ ] }, "reaction_direction": { - "$ref": "#/$defs/ReactionDirectionEnum", + "anyOf": [ + { + "$ref": "#/$defs/ReactionDirectionEnum" + }, + { + "type": "null" + } + ], "description": "the direction of a reaction as constrained by the direction enum (ie: left_to_right, neutral, etc.)" }, "reaction_side": { - "$ref": "#/$defs/ReactionSideEnum", + "anyOf": [ + { + "$ref": "#/$defs/ReactionSideEnum" + }, + { + "type": "null" + } + ], "description": "the side of a reaction being modeled (ie: left or right)" }, "retrieval_source_ids": { @@ -57256,7 +58054,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -57427,7 +58232,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -57694,7 +58506,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -57865,7 +58684,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { @@ -59000,7 +59826,14 @@ ] }, "object_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the object of an association (aka: statement)." }, "object_label_closure": { @@ -59183,7 +60016,14 @@ ] }, "subject_direction_qualifier": { - "$ref": "#/$defs/DirectionQualifierEnum", + "anyOf": [ + { + "$ref": "#/$defs/DirectionQualifierEnum" + }, + { + "type": "null" + } + ], "description": "Composes with the core concept (+ aspect if provided) to describe a change in its direction or degree. This qualifier qualifies the subject of an association (aka: statement)." }, "subject_label_closure": { diff --git a/tests/linkml/test_compliance/helper.py b/tests/linkml/test_compliance/helper.py index 3d069d8843..f3a8da29bc 100644 --- a/tests/linkml/test_compliance/helper.py +++ b/tests/linkml/test_compliance/helper.py @@ -752,6 +752,7 @@ def check_data( description: str = None, coerced: dict = None, exclude_rdf=False, + strip_nulls: bool = True, ): """ Validate the given object against the given schema using the given framework. @@ -771,6 +772,8 @@ def check_data( :param target_class: the type of the object :param description: description of this particular test combination :param coerced: Dict representation of repaired/coerced form of object + :param strip_nulls: if True (default), remove null-valued keys before plugin-based + validation (jsonschema, shacl); set to False to test explicit null handling :return: """ out_dir = _schema_out_path(schema) @@ -937,7 +940,8 @@ def check_data( # errors = list(validator.iter_validate_dict(_clean_dict(object_to_validate), target_class, closed=True)) try: - errors = list(validator.iter_results(clean_null_terms(object_to_validate), target_class)) + cleaned_object = clean_null_terms(object_to_validate) if strip_nulls else object_to_validate + errors = list(validator.iter_results(cleaned_object, target_class)) except Exception as e: errors = [e] logger.info(f"Expecting {valid}, Validating {object_to_validate} against {target_class}, errors: {errors}") diff --git a/tests/linkml/test_compliance/test_boolean_slot_compliance.py b/tests/linkml/test_compliance/test_boolean_slot_compliance.py index bb572822c4..486176a980 100644 --- a/tests/linkml/test_compliance/test_boolean_slot_compliance.py +++ b/tests/linkml/test_compliance/test_boolean_slot_compliance.py @@ -93,11 +93,6 @@ def test_slot_any_of(framework, data_name, value, is_valid, use_any_type, use_de :return: """ expected_json_schema = {"s1": {"anyOf": [{"$ref": "#/$defs/D"}, {"type": "integer"}, {"type": "null"}]}} - if use_default_range and not use_any_type: - # default_range is set to string, any no explicit range set. - # in this case the schema is violating monotonicity. - # TODO: undesired behavior, see https://github.com/linkml/linkml/issues/1483 - expected_json_schema["s1"]["type"] = "string" classes = { CLASS_D: { diff --git a/tests/linkml/test_compliance/test_enum_compliance.py b/tests/linkml/test_compliance/test_enum_compliance.py index cd582b9f90..be6eebeb46 100644 --- a/tests/linkml/test_compliance/test_enum_compliance.py +++ b/tests/linkml/test_compliance/test_enum_compliance.py @@ -24,7 +24,15 @@ generate_tree, validated_schema, ) -from tests.linkml.test_compliance.test_compliance import CLASS_C, CORE_FRAMEWORKS, ENUM_E, EXAMPLE_NS, SLOT_S1 +from tests.linkml.test_compliance.test_compliance import ( + CLASS_C, + CORE_FRAMEWORKS, + ENUM_E, + EXAMPLE_NS, + PV_1, + PV_2, + SLOT_S1, +) @feature_category("Enumerations", "Static enums") @@ -454,3 +462,67 @@ def _make_pv(_pv_name, pv_meaning=None, pv_description=None): expected_behavior=expected_behavior, description=data_name, ) + + +@feature_category("Enumerations", "Optional enum nullability") +@pytest.mark.parametrize( + "data_name,data,is_valid", + [ + ("present", {SLOT_S1: PV_1}, True), + ("absent", {}, True), + ("explicit_null", {SLOT_S1: None}, True), + ("invalid_value", {SLOT_S1: "not_a_pv"}, False), + ], +) +@pytest.mark.parametrize("framework", CORE_FRAMEWORKS) +def test_optional_enum_slot_nullability(framework, data_name, data, is_valid): + """ + Tests that an optional (required: false) enum slot accepts an absent key or an explicit null value. + + Non-required slots of other ranges (types, classes) already accept explicit nulls; enum + ranges should behave consistently. + + References: + - https://github.com/linkml/linkml/issues/3736 + - https://github.com/linkml/linkml/issues/2155 + + :param framework: generator framework to check + :param data_name: unique label for the data case + :param data: object to validate + :param is_valid: whether the object is expected to be valid + """ + classes = { + CLASS_C: { + "attributes": { + SLOT_S1: { + "range": ENUM_E, + "required": False, + }, + } + }, + } + enums = { + ENUM_E: { + "permissible_values": {PV_1: {}, PV_2: {}}, + } + } + schema = validated_schema( + test_optional_enum_slot_nullability, + "optional_enum", + framework, + classes=classes, + enums=enums, + core_elements=["enum_definitions", "permissible_values", "required"], + ) + expected_behavior = ValidationBehavior.IMPLEMENTS + check_data( + schema, + data_name, + framework, + data, + is_valid, + target_class=CLASS_C, + expected_behavior=expected_behavior, + description=data_name, + strip_nulls=False, + ) diff --git a/tests/linkml/test_generators/input/not_required.yaml b/tests/linkml/test_generators/input/not_required.yaml index 8c489e74d9..8f4c9b467f 100644 --- a/tests/linkml/test_generators/input/not_required.yaml +++ b/tests/linkml/test_generators/input/not_required.yaml @@ -15,6 +15,8 @@ classes: slots: - scalar - multi + - enum_range + - enum_range_multivalued - is_inlined_as_list - is_inlined_as_dict - is_any_of @@ -49,6 +51,12 @@ classes: range: string required: true +enums: + StatusEnum: + permissible_values: + active: + inactive: + slots: scalar: range: string @@ -57,6 +65,13 @@ slots: range: integer multivalued: true required: false + enum_range: + range: StatusEnum + required: false + enum_range_multivalued: + range: StatusEnum + multivalued: true + required: false is_inlined_as_list: range: string inlined: true diff --git a/tests/linkml/test_generators/input/openapi/schema_type_constraints.yaml b/tests/linkml/test_generators/input/openapi/schema_type_constraints.yaml new file mode 100644 index 0000000000..029f5c7ee6 --- /dev/null +++ b/tests/linkml/test_generators/input/openapi/schema_type_constraints.yaml @@ -0,0 +1,26 @@ +# LinkML schema providing constrained types +id: https://w3id.org/linkml/tests/type_constraints +name: type_constraints +default_prefix: type_constraints +imports: + - linkml:types + +types: + CodeString: + base: str + pattern: "^[A-Z]{2,10}$" + description: A 2-10 character uppercase code + + PositiveInt: + base: int + minimum_value: 1 + maximum_value: 9999 + description: A positive integer between 1 and 9999 + +classes: + WithCode: + description: A thing with a code + attributes: + code: + range: CodeString + required: true diff --git a/tests/linkml/test_generators/input/openapi/spec-fixed.openapi.yaml b/tests/linkml/test_generators/input/openapi/spec-fixed.openapi.yaml new file mode 100644 index 0000000000..075ef81b95 --- /dev/null +++ b/tests/linkml/test_generators/input/openapi/spec-fixed.openapi.yaml @@ -0,0 +1,24 @@ +# OpenAPI template provided as template that is fully fixed +# because there are no fields to be replaced +openapi: 3.0.3 +info: + title: LinkML tests + version: 1.0.0 +servers: + - url: https://example.org/ +security: + - PayloadSignature: [] +paths: + /api/endpoint1: + post: + security: + - PayloadSignature: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + responses: + "200": + description: Success diff --git a/tests/linkml/test_generators/input/openapi/spec-types.openapi.yaml b/tests/linkml/test_generators/input/openapi/spec-types.openapi.yaml new file mode 100644 index 0000000000..b910ec9605 --- /dev/null +++ b/tests/linkml/test_generators/input/openapi/spec-types.openapi.yaml @@ -0,0 +1,24 @@ +# OpenAPI template referring a Type defined in the LinkML schema +openapi: 3.0.3 +info: + title: LinkML type constraints test + version: 1.0.0 +servers: + - url: https://example.org/ +paths: + /api/code: + get: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/CodeStringRef' + +components: + schemas: + CodeStringRef: + type: object + x-linkml-schema: https://w3id.org/linkml/tests/type_constraints + x-linkml-source: CodeString diff --git a/tests/linkml/test_generators/input/shaclgen/cardinality.yaml b/tests/linkml/test_generators/input/shaclgen/cardinality.yaml index 6bacffa680..d12b06df4c 100644 --- a/tests/linkml/test_generators/input/shaclgen/cardinality.yaml +++ b/tests/linkml/test_generators/input/shaclgen/cardinality.yaml @@ -17,6 +17,36 @@ classes: slots: - list_exact_size + ParentClass: + slots: + - inherited_slot + - restricted_slot + + ChildWithZeroMaxCard: + is_a: ParentClass + slot_usage: + restricted_slot: + maximum_cardinality: 0 + + ChildWithZeroExactCard: + is_a: ParentClass + slot_usage: + restricted_slot: + exact_cardinality: 0 + + ChildWithZeroMinCard: + is_a: ParentClass + slot_usage: + restricted_slot: + minimum_cardinality: 0 + + ChildWithRequiredAndZeroMinCard: + is_a: ParentClass + slot_usage: + restricted_slot: + required: true + minimum_cardinality: 0 + slots: list_min_max_size: range: integer @@ -28,3 +58,11 @@ slots: range: integer multivalued: true exact_cardinality: 3 + + inherited_slot: + range: string + multivalued: true + + restricted_slot: + range: string + multivalued: true diff --git a/tests/linkml/test_generators/test_javagen.py b/tests/linkml/test_generators/test_javagen.py index 1620212066..e09ac34036 100644 --- a/tests/linkml/test_generators/test_javagen.py +++ b/tests/linkml/test_generators/test_javagen.py @@ -1,4 +1,6 @@ -from linkml.generators.javagen import JavaGenerator +import pytest + +from linkml.generators.javagen import JavaBundle, JavaGenerator from linkml.generators.oocodegen import OOEnum, OOEnumValue from tests.linkml.utils.fileutils import assert_file_contains @@ -228,3 +230,71 @@ def test_refined_ranges(input_path): # - ThirdDerivedFoo refines the slot compared to its parent SecondDerivedFoo; # this is the second refinement in the hierarchy since the defining class assert gen.get_refined_ranges("bar", "ThirdDerivedFoo", upwards=True) == ["FirstDerivedBar", "Bar"] + + +def test_render_returns_bundle(kitchen_sink_path, tmp_path): + """`render()` returns a `JavaBundle` with rendered files but touches no disk.""" + gen = JavaGenerator(kitchen_sink_path, package=PACKAGE) + bundle = gen.render() + + assert isinstance(bundle, JavaBundle) + assert bundle.package == PACKAGE + assert "Address.java" in bundle.files + address_code = bundle.files["Address.java"] + assert "public class Address" in address_code + assert f"package {PACKAGE}" in address_code + + # render() must not write anything to disk. + assert list(tmp_path.iterdir()) == [] + + +def test_render_template_variant(kitchen_sink_path): + """`render(template_variant=...)` is honoured (records variant here).""" + gen = JavaGenerator(kitchen_sink_path, package=PACKAGE) + bundle = gen.render(template_variant="records") + + assert "Address.java" in bundle.files + assert "public record Address(String street, String city, BigDecimal altitude)" in bundle.files["Address.java"] + + +def test_render_visitors(kitchen_sink_path): + """`render(visitors=[...])` emits the visitor interface and adds `accept()` to visited classes.""" + gen = JavaGenerator(kitchen_sink_path, package=PACKAGE) + bundle = gen.render(visitors=["Concept"]) + + assert "IConceptVisitor.java" in bundle.files + assert "public void visit(DiagnosisConcept visited);" in bundle.files["IConceptVisitor.java"] + # A class in the visited hierarchy carries the accept() method. + assert "ProcedureConcept.java" in bundle.files + assert "public void accept(IConceptVisitor visitor)" in bundle.files["ProcedureConcept.java"] + + +def test_render_true_enums(kitchen_sink_path): + """With `true_enums=True`, enum-typed files appear in the bundle.""" + gen = JavaGenerator(kitchen_sink_path, package=PACKAGE, true_enums=True) + bundle = gen.render() + + assert "CordialnessEnum.java" in bundle.files + assert "public enum CordialnessEnum" in bundle.files["CordialnessEnum.java"] + + +def test_serialize_accepts_rendered_module(kitchen_sink_path, tmp_path): + """Passing `rendered_module=` writes the given bundle as-is.""" + gen = JavaGenerator(kitchen_sink_path, package=PACKAGE) + bundle = gen.render() + bundle.files["Address.java"] = "// sentinel: pre-rendered bundle content" + + gen.serialize(directory=str(tmp_path), rendered_module=bundle) + + assert_file_contains(tmp_path / "Address.java", "// sentinel: pre-rendered bundle content") + + +@pytest.mark.parametrize("as_path", [False, True], ids=["str", "Path"]) +def test_serialize_accepts_str_or_path_directory(kitchen_sink_path, tmp_path, as_path): + """`directory` accepts both a ``str`` and a :class:`pathlib.Path`.""" + gen = JavaGenerator(kitchen_sink_path, package=PACKAGE) + directory = tmp_path if as_path else str(tmp_path) + + gen.serialize(directory=directory) + + assert_file_contains(tmp_path / "Address.java", "public class Address", after=f"package {PACKAGE}") diff --git a/tests/linkml/test_generators/test_jsonschemagen.py b/tests/linkml/test_generators/test_jsonschemagen.py index 04ee3dbfd9..1cd039a96e 100644 --- a/tests/linkml/test_generators/test_jsonschemagen.py +++ b/tests/linkml/test_generators/test_jsonschemagen.py @@ -381,6 +381,7 @@ def test_slot_not_required_nullability(input_path, not_closed): References: - https://github.com/linkml/linkml/issues/2155 + - https://github.com/linkml/linkml/issues/3736 """ schema = input_path("not_required.yaml") generator = JsonSchemaGenerator(schema, mergeimports=True, top_class="Optionals", not_closed=not_closed) @@ -391,6 +392,11 @@ def test_slot_not_required_nullability(input_path, not_closed): assert "null" in prop["type"], f"{key} does not allow null" elif "anyOf" in prop: assert {"type": "null"} in prop["anyOf"], f"{key} does not allow null" + else: + pytest.fail(f"{key} has neither 'type' nor 'anyOf', so it cannot allow null: {prop}") + + # nullability of an optional multivalued enum slot applies to the array, not its elements + assert properties["enum_range_multivalued"]["items"] == {"$ref": "#/$defs/StatusEnum"} def test_lifecycle_classes(kitchen_sink_path): diff --git a/tests/linkml/test_generators/test_openapigen.py b/tests/linkml/test_generators/test_openapigen.py index 6a6b528493..151f3b7ff4 100644 --- a/tests/linkml/test_generators/test_openapigen.py +++ b/tests/linkml/test_generators/test_openapigen.py @@ -34,6 +34,13 @@ def test_openapi_missing_template(kitchen_sink_path): OpenApiGenerator(kitchen_sink_path).serialize() +def test_openapi_fixed_template(input_path, kitchen_sink_path): + """Test that serialize raises ValueError when no template file is provided.""" + head_path = str(input_path("openapi/spec-fixed.openapi.yaml")) + oa_spec = OpenApiGenerator(kitchen_sink_path).serialize(head_path) + assert open(head_path).read() == oa_spec + + def test_openapi_spec_no_defs_references(openapi_spec): """Test that all $defs references are converted to components/schemas.""" for schema in openapi_spec["components"]["schemas"].values(): @@ -114,6 +121,22 @@ def test_missing_schema_declaration_raises(tmp_path, kitchen_sink_path): OpenApiGenerator(kitchen_sink_path).serialize(str(template)) +def test_openapi_type_constraints(input_path): + """Test that LinkML types with constraints (e.g., pattern) are properly generated in the spec.""" + schema_path = str(input_path("openapi/schema_type_constraints.yaml")) + head_path = str(input_path("openapi/spec-types.openapi.yaml")) + spec = yaml.safe_load(OpenApiGenerator(schema_path).serialize(head_path)) + schemas = spec["components"]["schemas"] + # the type schema is exposed under the template's resource name + code_str = schemas["CodeStringRef"] + assert code_str["type"] == "string" + assert code_str["pattern"] == "^[A-Z]{2,10}$" + assert code_str["description"] == "A 2-10 character uppercase code" + assert validate(spec, cls=OpenAPIV30SpecValidator) is None + for schema in schemas.values(): + assert "#/$defs/" not in str(schema) + + def test_renaming(input_path, kitchen_sink_path): """Test that resource names differing from LinkML class names are renamed throughout the spec.""" head_path = str(input_path("openapi/spec-renaming.openapi.yaml")) diff --git a/tests/linkml/test_generators/test_shaclgen.py b/tests/linkml/test_generators/test_shaclgen.py index 6b19cf24b1..949d37e1ee 100644 --- a/tests/linkml/test_generators/test_shaclgen.py +++ b/tests/linkml/test_generators/test_shaclgen.py @@ -600,6 +600,151 @@ def test_multivalued_slot_exact_cardinality(input_path): ) in g +def test_zero_maximum_cardinality_emits_maxcount(input_path): + """Test that maximum_cardinality: 0 correctly emits sh:maxCount 0. + + Regression test for the bug where Python truthiness check + `if s.maximum_cardinality:` would skip the value 0 (falsy), + failing to emit sh:maxCount 0 in the generated SHACL shape. + The fix uses `if s.maximum_cardinality is not None:` instead. + + This is the primary mechanism for suppressing inherited slots on + subclasses via slot_usage (e.g., OWL maxCardinality 0 pattern). + """ + shacl = ShaclGenerator(input_path("shaclgen/cardinality.yaml"), mergeimports=True).serialize() + + g = rdflib.Graph() + g.parse(data=shacl) + + # Find the ChildWithZeroMaxCard shape + child_uri = URIRef("https://w3id.org/linkml/examples/cardinality/ChildWithZeroMaxCard") + restricted_slot_uri = URIRef("https://w3id.org/linkml/examples/cardinality/restricted_slot") + + # Get all property shapes for the child class + prop_nodes = list(g.objects(child_uri, SH.property)) + assert prop_nodes, "ChildWithZeroMaxCard should have property shapes" + + # Find the property shape for restricted_slot + restricted_prop_node = None + for pn in prop_nodes: + if (pn, SH.path, restricted_slot_uri) in g: + restricted_prop_node = pn + break + assert restricted_prop_node is not None, "Should have a property shape for restricted_slot" + + # The critical assertion: sh:maxCount 0 must be emitted + max_count_values = list(g.objects(restricted_prop_node, SH.maxCount)) + assert len(max_count_values) == 1, f"Expected exactly one sh:maxCount, got {max_count_values}" + assert max_count_values[0] == rdflib.term.Literal( + 0, datatype=rdflib.term.URIRef("http://www.w3.org/2001/XMLSchema#integer") + ), f"sh:maxCount should be 0, got {max_count_values[0]}" + + +def test_zero_exact_cardinality_emits_both_counts(input_path): + """Test that exact_cardinality: 0 emits both sh:minCount 0 and sh:maxCount 0. + + Same truthiness bug as maximum_cardinality: `if s.exact_cardinality:` + skips value 0 (falsy). The fix uses `is not None` instead. + """ + shacl = ShaclGenerator(input_path("shaclgen/cardinality.yaml"), mergeimports=True).serialize() + + g = rdflib.Graph() + g.parse(data=shacl) + + child_uri = URIRef("https://w3id.org/linkml/examples/cardinality/ChildWithZeroExactCard") + restricted_slot_uri = URIRef("https://w3id.org/linkml/examples/cardinality/restricted_slot") + + prop_nodes = list(g.objects(child_uri, SH.property)) + assert prop_nodes, "ChildWithZeroExactCard should have property shapes" + + restricted_prop_node = None + for pn in prop_nodes: + if (pn, SH.path, restricted_slot_uri) in g: + restricted_prop_node = pn + break + assert restricted_prop_node is not None, "Should have a property shape for restricted_slot" + + XSD_INT = rdflib.term.URIRef("http://www.w3.org/2001/XMLSchema#integer") + + min_count_values = list(g.objects(restricted_prop_node, SH.minCount)) + assert len(min_count_values) == 1, f"Expected exactly one sh:minCount, got {min_count_values}" + assert min_count_values[0] == rdflib.term.Literal(0, datatype=XSD_INT) + + max_count_values = list(g.objects(restricted_prop_node, SH.maxCount)) + assert len(max_count_values) == 1, f"Expected exactly one sh:maxCount, got {max_count_values}" + assert max_count_values[0] == rdflib.term.Literal(0, datatype=XSD_INT) + + +def test_zero_minimum_cardinality_emits_mincount(input_path): + """Test that minimum_cardinality: 0 emits sh:minCount 0. + + Same truthiness bug as maximum_cardinality: `if s.minimum_cardinality:` + skips value 0 (falsy). The fix uses `is not None` instead. sh:minCount 0 + is vacuously satisfied (W3C SHACL 4.2.2) but is emitted for consistency + with owlgen (owl:minCardinality 0) and to faithfully reflect the schema. + """ + shacl = ShaclGenerator(input_path("shaclgen/cardinality.yaml"), mergeimports=True).serialize() + + g = rdflib.Graph() + g.parse(data=shacl) + + child_uri = URIRef("https://w3id.org/linkml/examples/cardinality/ChildWithZeroMinCard") + restricted_slot_uri = URIRef("https://w3id.org/linkml/examples/cardinality/restricted_slot") + + prop_nodes = list(g.objects(child_uri, SH.property)) + assert prop_nodes, "ChildWithZeroMinCard should have property shapes" + + restricted_prop_node = None + for pn in prop_nodes: + if (pn, SH.path, restricted_slot_uri) in g: + restricted_prop_node = pn + break + assert restricted_prop_node is not None, "Should have a property shape for restricted_slot" + + XSD_INT = rdflib.term.URIRef("http://www.w3.org/2001/XMLSchema#integer") + + min_count_values = list(g.objects(restricted_prop_node, SH.minCount)) + assert len(min_count_values) == 1, f"Expected exactly one sh:minCount, got {min_count_values}" + assert min_count_values[0] == rdflib.term.Literal(0, datatype=XSD_INT) + + +def test_explicit_minimum_cardinality_overrides_required(input_path): + """An explicit minimum_cardinality: 0 takes precedence over required: true. + + The generator resolves min-count with an ``elif`` cascade in which an + explicit ``minimum_cardinality`` wins and ``required`` is only the fallback. + This mirrors owlgen.py (``if slot.minimum_cardinality is not None ... elif + slot.required``), so ``required: true`` + ``minimum_cardinality: 0`` yields + ``sh:minCount 0`` (not 1). The combination is a schema contradiction; the + explicit, more specific constraint is emitted. + """ + shacl = ShaclGenerator(input_path("shaclgen/cardinality.yaml"), mergeimports=True).serialize() + + g = rdflib.Graph() + g.parse(data=shacl) + + child_uri = URIRef("https://w3id.org/linkml/examples/cardinality/ChildWithRequiredAndZeroMinCard") + restricted_slot_uri = URIRef("https://w3id.org/linkml/examples/cardinality/restricted_slot") + + prop_nodes = list(g.objects(child_uri, SH.property)) + assert prop_nodes, "ChildWithRequiredAndZeroMinCard should have property shapes" + + restricted_prop_node = None + for pn in prop_nodes: + if (pn, SH.path, restricted_slot_uri) in g: + restricted_prop_node = pn + break + assert restricted_prop_node is not None, "Should have a property shape for restricted_slot" + + XSD_INT = rdflib.term.URIRef("http://www.w3.org/2001/XMLSchema#integer") + + min_count_values = list(g.objects(restricted_prop_node, SH.minCount)) + assert len(min_count_values) == 1, f"Expected exactly one sh:minCount, got {min_count_values}" + assert min_count_values[0] == rdflib.term.Literal(0, datatype=XSD_INT), ( + f"explicit minimum_cardinality: 0 should override required: true (minCount 0, not 1), got {min_count_values[0]}" + ) + + def test_exclude_imports(input_path): shacl = ShaclGenerator( input_path("shaclgen/exclude_imports.yaml"), mergeimports=True, exclude_imports=True @@ -1250,6 +1395,10 @@ def _build_message_test_schema(): return sb.schema +# Helper functions +# --------------------------------------------------------------------------- + + def _parse_shacl(schema, **kwargs): shacl = ShaclGenerator(schema, mergeimports=False, **kwargs).serialize() g = rdflib.Graph() @@ -1744,3 +1893,876 @@ def test_message_template_ignores_per_slot_in_language(): # Contrast: sh:name DOES follow the slot's in_language ("de"). names = _get_prop_objects(g, vehicle_shape, EX.vehicle_name, SH.name) assert Literal("Name", lang="de") in names + + +# --------------------------------------------------------------------------- +# --emit-rules / sh:sparql tests +# --------------------------------------------------------------------------- + +_RULES_SCHEMA_YAML = """ +id: https://example.org/boolean-guards +name: boolean_guard_rules +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/boolean-guards/ +imports: + - linkml:types +default_prefix: ex +default_range: string +slots: + WeatherWind: + range: boolean + slot_uri: ex:WeatherWind + weatherWindValue: + description: Wind speed value. + range: decimal + slot_uri: ex:weatherWindValue + WeatherRain: + range: boolean + slot_uri: ex:WeatherRain + weatherRainValue: + description: Rain intensity value. + range: decimal + slot_uri: ex:weatherRainValue + Temperature: + range: decimal + slot_uri: ex:Temperature +classes: + Environment: + class_uri: ex:Environment + slots: + - WeatherWind + - weatherWindValue + - WeatherRain + - weatherRainValue + - Temperature + rules: + - description: If weatherWindValue is provided, WeatherWind must be true. + preconditions: + slot_conditions: + weatherWindValue: + value_presence: PRESENT + postconditions: + slot_conditions: + WeatherWind: + equals_string: "true" + - description: If weatherRainValue is provided, WeatherRain must be true. + preconditions: + slot_conditions: + weatherRainValue: + value_presence: PRESENT + postconditions: + slot_conditions: + WeatherRain: + equals_string: "true" +""" + +EX_RULES = rdflib.Namespace("https://example.org/boolean-guards/") + + +def test_rule_boolean_guard_generates_sparql(): + """Boolean-guard rules produce sh:sparql constraints on the NodeShape.""" + g = _parse_shacl(_RULES_SCHEMA_YAML) + + shape = EX_RULES.Environment + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 2, f"Expected 2 sh:sparql constraints, got {len(sparql_nodes)}" + + for node in sparql_nodes: + assert (node, RDF.type, SH.SPARQLConstraint) in g + selects = list(g.objects(node, SH.select)) + assert len(selects) == 1, "Each constraint must have exactly one sh:select" + query = str(selects[0]) + assert "$this" in query, "SPARQL must use $this pre-bound variable" + assert "OPTIONAL" in query, "SPARQL must use OPTIONAL for flag/value" + assert "FILTER" in query, "SPARQL must have a FILTER clause" + assert "BOUND" in query, "SPARQL must use BOUND()" + + +def test_rule_with_description_generates_message(): + """Rule description is emitted as sh:message on the SPARQLConstraint.""" + g = _parse_shacl(_RULES_SCHEMA_YAML) + + shape = EX_RULES.Environment + sparql_nodes = list(g.objects(shape, SH.sparql)) + + messages = set() + for node in sparql_nodes: + for msg in g.objects(node, SH.message): + messages.add(str(msg)) + + assert "If weatherWindValue is provided, WeatherWind must be true." in messages + assert "If weatherRainValue is provided, WeatherRain must be true." in messages + + +def test_rule_sparql_contains_correct_uris(): + """SPARQL queries reference the correct slot URIs.""" + g = _parse_shacl(_RULES_SCHEMA_YAML) + + shape = EX_RULES.Environment + sparql_nodes = list(g.objects(shape, SH.sparql)) + + queries = [str(list(g.objects(n, SH.select))[0]) for n in sparql_nodes] + all_sparql = "\n".join(queries) + + assert str(EX_RULES.WeatherWind) in all_sparql + assert str(EX_RULES.weatherWindValue) in all_sparql + assert str(EX_RULES.WeatherRain) in all_sparql + assert str(EX_RULES.weatherRainValue) in all_sparql + + +_DEACTIVATED_RULE_SCHEMA_YAML = """ +id: https://example.org/deactivated-test +name: deactivated_rule_test +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/deactivated-test/ +imports: + - linkml:types +default_prefix: ex +default_range: string +slots: + Flag: + range: boolean + slot_uri: ex:Flag + flagValue: + range: decimal + slot_uri: ex:flagValue +classes: + TestClass: + class_uri: ex:TestClass + slots: + - Flag + - flagValue + rules: + - description: This rule is deactivated. + deactivated: true + preconditions: + slot_conditions: + flagValue: + value_presence: PRESENT + postconditions: + slot_conditions: + Flag: + equals_string: "true" +""" + + +def test_rule_deactivated_skipped(): + """Deactivated rules do not produce sh:sparql constraints.""" + g = _parse_shacl(_DEACTIVATED_RULE_SCHEMA_YAML) + + shape = URIRef("https://example.org/deactivated-test/TestClass") + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 0, f"Deactivated rule should not emit sh:sparql, got {len(sparql_nodes)}" + + +_UNSUPPORTED_RULE_SCHEMA_YAML = """ +id: https://example.org/unsupported-test +name: unsupported_rule_test +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/unsupported-test/ +imports: + - linkml:types +default_prefix: ex +default_range: string +slots: + slotA: + range: string + slot_uri: ex:slotA + slotB: + range: string + slot_uri: ex:slotB +classes: + TestClass: + class_uri: ex:TestClass + slots: + - slotA + - slotB + rules: + - description: Rule with no postconditions. + preconditions: + slot_conditions: + slotA: + value_presence: PRESENT +""" + + +def test_rule_unsupported_pattern_skipped(): + """Unrecognised rule patterns are silently skipped (no sh:sparql emitted).""" + g = _parse_shacl(_UNSUPPORTED_RULE_SCHEMA_YAML) + + shape = URIRef("https://example.org/unsupported-test/TestClass") + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 0 + + +def test_rule_no_emit_rules_flag(): + """--no-emit-rules suppresses sh:sparql constraint generation.""" + g = _parse_shacl(_RULES_SCHEMA_YAML, emit_rules=False) + + shape = EX_RULES.Environment + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 0, f"emit_rules=False should suppress rules, got {len(sparql_nodes)}" + + +_NO_RULES_SCHEMA_YAML = """ +id: https://example.org/no-rules +name: no_rules_test +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/no-rules/ +imports: + - linkml:types +default_prefix: ex +default_range: string +slots: + name: + range: string + slot_uri: ex:name +classes: + SimpleClass: + class_uri: ex:SimpleClass + slots: + - name +""" + + +def test_rule_no_rules_no_sparql(): + """Classes without rules: blocks produce no sh:sparql constraints.""" + g = _parse_shacl(_NO_RULES_SCHEMA_YAML) + + shape = URIRef("https://example.org/no-rules/SimpleClass") + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 0 + + +def test_rule_multiple_rules_per_class(): + """Multiple boolean-guard rules on one class produce multiple sh:sparql constraints.""" + g = _parse_shacl(_RULES_SCHEMA_YAML) + + shape = EX_RULES.Environment + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 2 + + # Each constraint should reference different slot pairs + queries = [str(list(g.objects(n, SH.select))[0]) for n in sparql_nodes] + wind_query = [q for q in queries if "weatherWindValue" in q] + rain_query = [q for q in queries if "weatherRainValue" in q] + assert len(wind_query) == 1, "Expected exactly one wind query" + assert len(rain_query) == 1, "Expected exactly one rain query" + + +# --------------------------------------------------------------------------- +# Tests for URI resolution without explicit slot_uri +# --------------------------------------------------------------------------- + +_NO_SLOT_URI_SCHEMA_YAML = """ +id: https://example.org/no-slot-uri +name: no_slot_uri_test +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/no-slot-uri/ +imports: + - linkml:types +default_prefix: ex +default_range: string +slots: + is_active: + range: boolean + measured_value: + range: decimal +classes: + Reading: + class_uri: ex:Reading + slots: + - is_active + - measured_value + rules: + - description: If measured_value is provided, is_active must be true. + preconditions: + slot_conditions: + measured_value: + value_presence: PRESENT + postconditions: + slot_conditions: + is_active: + equals_string: "true" +""" + + +def test_rule_no_explicit_slot_uri(): + """Slots without explicit slot_uri resolve via default_prefix + underscore(name).""" + g = _parse_shacl(_NO_SLOT_URI_SCHEMA_YAML) + + shape = URIRef("https://example.org/no-slot-uri/Reading") + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 1 + + query = str(list(g.objects(sparql_nodes[0], SH.select))[0]) + # URIs should be default_prefix:underscore(name) + assert "https://example.org/no-slot-uri/is_active" in query + assert "https://example.org/no-slot-uri/measured_value" in query + + +# --------------------------------------------------------------------------- +# Tests for elseconditions rejection +# --------------------------------------------------------------------------- + +_ELSE_COND_SCHEMA_YAML = """ +id: https://example.org/else-test +name: else_cond_test +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/else-test/ +imports: + - linkml:types +default_prefix: ex +default_range: string +slots: + Flag: + range: boolean + slot_uri: ex:Flag + flagValue: + range: decimal + slot_uri: ex:flagValue + fallbackValue: + range: string + slot_uri: ex:fallbackValue +classes: + TestClass: + class_uri: ex:TestClass + slots: + - Flag + - flagValue + - fallbackValue + rules: + - description: Rule with elseconditions should be skipped. + preconditions: + slot_conditions: + flagValue: + value_presence: PRESENT + postconditions: + slot_conditions: + Flag: + equals_string: "true" + elseconditions: + slot_conditions: + fallbackValue: + value_presence: PRESENT +""" + + +def test_rule_with_elseconditions_emitted(): + """Rules with elseconditions emit the forward (if/then) branch and warn.""" + + g = _parse_shacl(_ELSE_COND_SCHEMA_YAML) + + shape = URIRef("https://example.org/else-test/TestClass") + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) >= 1, "Rule with elseconditions should emit sh:sparql for the forward branch" + + +def test_rule_with_elseconditions_warns(caplog): + """Rules with elseconditions emit a warning about the dropped else branch.""" + import logging + + with caplog.at_level(logging.WARNING): + _parse_shacl(_ELSE_COND_SCHEMA_YAML) + + assert any("elseconditions" in rec.message for rec in caplog.records), ( + "Expected a warning about elseconditions being dropped" + ) + + +_BIDIRECTIONAL_RULE_SCHEMA_YAML = """ +id: https://example.org/bidir-test +name: bidir_rule_test +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/bidir-test/ +imports: + - linkml:types +default_prefix: ex +default_range: string +slots: + Flag: + range: boolean + slot_uri: ex:Flag + flagValue: + range: decimal + slot_uri: ex:flagValue +classes: + TestClass: + class_uri: ex:TestClass + slots: + - Flag + - flagValue + rules: + - description: Bidirectional rule should be skipped. + bidirectional: true + preconditions: + slot_conditions: + flagValue: + value_presence: PRESENT + postconditions: + slot_conditions: + Flag: + equals_string: "true" +""" + + +def test_rule_bidirectional_skipped(caplog): + """Rules with bidirectional=true are skipped entirely with a warning.""" + import logging + + with caplog.at_level(logging.WARNING): + g = _parse_shacl(_BIDIRECTIONAL_RULE_SCHEMA_YAML) + + shape = URIRef("https://example.org/bidir-test/TestClass") + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 0, "Bidirectional rules should NOT emit sh:sparql" + assert any("bidirectional" in rec.message for rec in caplog.records), ( + "Expected a warning about bidirectional rules being skipped" + ) + + +# --------------------------------------------------------------------------- +# End-to-end pyshacl validation test +# --------------------------------------------------------------------------- + + +def test_rule_boolean_guard_pyshacl_end_to_end(): + """End-to-end: pyshacl flags a violation and passes a conforming instance.""" + import pyshacl + + shacl_ttl = ShaclGenerator(_RULES_SCHEMA_YAML, mergeimports=False, emit_rules=True).serialize() + + # Build a conforming RDF instance: weatherWindValue present AND WeatherWind = true + conforming_data = """ + @prefix ex: . + @prefix xsd: . + + ex:env1 a ex:Environment ; + ex:WeatherWind "true"^^xsd:boolean ; + ex:weatherWindValue "12.5"^^xsd:decimal . + """ + + # Build a violating RDF instance: weatherWindValue present but WeatherWind missing + violating_data = """ + @prefix ex: . + @prefix xsd: . + + ex:env2 a ex:Environment ; + ex:weatherWindValue "8.0"^^xsd:decimal . + """ + + # Conforming instance should pass + conforms, _, _ = pyshacl.validate( + data_graph=conforming_data, + shacl_graph=shacl_ttl, + data_graph_format="turtle", + shacl_graph_format="turtle", + advanced=True, + ) + assert conforms, "Conforming instance should pass SHACL validation" + + # Violating instance should fail + conforms, results_graph, results_text = pyshacl.validate( + data_graph=violating_data, + shacl_graph=shacl_ttl, + data_graph_format="turtle", + shacl_graph_format="turtle", + advanced=True, + ) + assert not conforms, f"Violating instance should fail SHACL validation:\n{results_text}" + + +# --------------------------------------------------------------------------- +# SPARQL syntax validation +# --------------------------------------------------------------------------- + + +def test_rule_sparql_syntax_valid(): + """Generated SPARQL queries must be syntactically valid.""" + from rdflib.plugins.sparql import prepareQuery + + g = _parse_shacl(_RULES_SCHEMA_YAML) + + shape = EX_RULES.Environment + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) >= 1 + + for node in sparql_nodes: + query_text = str(list(g.objects(node, SH.select))[0]) + # prepareQuery validates SPARQL syntax; $this is a valid variable name + prepareQuery(query_text) + + +# =========================================================================== +# Exclusive-value pattern tests (SHACL §5 SPARQL constraints) +# =========================================================================== +# +# The "exclusive value" pattern translates a LinkML rule where: +# - preconditions: slot X has equals_string (a specific enum value name) +# - postconditions: same slot X has maximum_cardinality N +# +# Semantics: "If value V is present in multivalued slot X, then X has at most +# N values total." For N=1 this means V must be the sole value (mutual +# exclusion with other enum members). +# +# Generated SHACL: sh:SPARQLConstraint per W3C SHACL §5.3.1, using $this +# pre-bound to each focus node. +# +# References: +# - W3C SHACL §5 +# - W3C SHACL §5.3.1 +# - ISO 34503:2023, 9.3.6 (motivating use case: EdgeNone exclusivity) +# =========================================================================== + +_EXCLUSIVE_VALUE_SCHEMA_YAML = """ +id: https://example.org/exclusive-value +name: exclusive_value_rules +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/exclusive-value/ +imports: + - linkml:types +default_prefix: ex +default_range: string + +enums: + EdgeTypeEnum: + permissible_values: + EdgeNone: + meaning: ex:EdgeNone + EdgeBarriers: + meaning: ex:EdgeBarriers + EdgeMarkers: + meaning: ex:EdgeMarkers + + PriorityEnum: + permissible_values: + High: + description: High priority (no meaning IRI). + Medium: + description: Medium priority (no meaning IRI). + Low: + description: Low priority (no meaning IRI). + +slots: + edgeType: + range: EdgeTypeEnum + multivalued: true + slot_uri: ex:edgeType + priority: + range: PriorityEnum + multivalued: true + slot_uri: ex:priority + otherSlot: + range: string + slot_uri: ex:otherSlot + +classes: + Road: + class_uri: ex:Road + slots: + - edgeType + - otherSlot + rules: + - description: >- + EdgeNone is mutually exclusive with other edge types. + preconditions: + slot_conditions: + edgeType: + equals_string: "EdgeNone" + postconditions: + slot_conditions: + edgeType: + maximum_cardinality: 1 + + Intersection: + class_uri: ex:Intersection + slots: + - edgeType + rules: + - description: >- + EdgeNone allows at most 2 total edge values. + preconditions: + slot_conditions: + edgeType: + equals_string: "EdgeNone" + postconditions: + slot_conditions: + edgeType: + maximum_cardinality: 2 + + Task: + class_uri: ex:Task + slots: + - priority + rules: + - description: >- + High priority is exclusive (literal fallback test). + preconditions: + slot_conditions: + priority: + equals_string: "High" + postconditions: + slot_conditions: + priority: + maximum_cardinality: 1 + + MismatchedSlots: + class_uri: ex:MismatchedSlots + slots: + - edgeType + - otherSlot + rules: + - description: >- + Different slots in pre/post — not an exclusive-value pattern. + preconditions: + slot_conditions: + edgeType: + equals_string: "EdgeNone" + postconditions: + slot_conditions: + otherSlot: + maximum_cardinality: 1 +""" + +EX_EXCL = rdflib.Namespace("https://example.org/exclusive-value/") + + +def test_exclusive_value_generates_sparql(): + """Exclusive-value rules produce sh:sparql constraints on the NodeShape.""" + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + shape = EX_EXCL.Road + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 1, f"Expected 1 sh:sparql constraint, got {len(sparql_nodes)}" + + node = sparql_nodes[0] + assert (node, RDF.type, SH.SPARQLConstraint) in g + selects = list(g.objects(node, SH.select)) + assert len(selects) == 1, "Constraint must have exactly one sh:select" + + +def test_exclusive_value_sparql_uses_enum_iri(): + """SPARQL references the enum value's meaning IRI, not a string literal. + + Per the enum definition, EdgeNone has meaning: ex:EdgeNone which expands + to . The generated SPARQL + must use this full IRI in angle brackets. + """ + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + shape = EX_EXCL.Road + sparql_nodes = list(g.objects(shape, SH.sparql)) + query = str(list(g.objects(sparql_nodes[0], SH.select))[0]) + + edge_none_iri = str(EX_EXCL.EdgeNone) + assert f"<{edge_none_iri}>" in query, f"SPARQL must reference EdgeNone as full IRI <{edge_none_iri}>, got:\n{query}" + + +def test_exclusive_value_max_card_1_sparql_structure(): + """For maximum_cardinality: 1, SPARQL uses FILTER(?other != ). + + The query pattern for N=1 is: + SELECT $this WHERE { + $this . + $this ?other . + FILTER (?other != ) + } + + This is more efficient than the COUNT-based approach for the common + singleton exclusion case. + """ + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + shape = EX_EXCL.Road + sparql_nodes = list(g.objects(shape, SH.sparql)) + query = str(list(g.objects(sparql_nodes[0], SH.select))[0]) + + assert "$this" in query, "SPARQL must use $this pre-bound variable (SHACL §5.3.1)" + assert "FILTER" in query, "N=1 pattern must use FILTER for exclusion check" + assert "?other" in query, "N=1 pattern must bind ?other for comparison" + # Must NOT use COUNT for the N=1 case (simpler pattern) + assert "COUNT" not in query, "N=1 pattern should use FILTER, not COUNT" + # The slot URI must appear (property path) + assert str(EX_EXCL.edgeType) in query, "SPARQL must reference the slot URI" + + +def test_exclusive_value_max_card_gt1_sparql_structure(): + """For maximum_cardinality > 1, SPARQL uses COUNT-based subquery. + + The query pattern for N>1 is: + SELECT $this WHERE { + $this . + { + SELECT $this (COUNT(?val) AS ?count) + WHERE { $this ?val . } + GROUP BY $this + HAVING (?count > N) + } + } + """ + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + shape = EX_EXCL.Intersection + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 1, f"Expected 1 sh:sparql constraint, got {len(sparql_nodes)}" + + query = str(list(g.objects(sparql_nodes[0], SH.select))[0]) + + assert "$this" in query, "SPARQL must use $this pre-bound variable" + assert "COUNT" in query, "N>1 pattern must use COUNT" + assert "GROUP BY" in query, "N>1 pattern must GROUP BY $this" + assert "HAVING" in query, "N>1 pattern must use HAVING for count check" + assert "> 2" in query, "HAVING must check count > maximum_cardinality (2)" + + +def test_exclusive_value_no_meaning_falls_back_to_literal(): + """When enum values lack a meaning IRI, the value is compared as a literal. + + PriorityEnum values have no meaning field, so 'High' is used as a + quoted string in the SPARQL rather than an IRI in angle brackets. + """ + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + shape = EX_EXCL.Task + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 1, f"Expected 1 sh:sparql constraint, got {len(sparql_nodes)}" + + query = str(list(g.objects(sparql_nodes[0], SH.select))[0]) + + # Should use quoted literal, not angle-bracket IRI + assert '"High"' in query, f"No-meaning enum should use literal '\"High\"', got:\n{query}" + assert "" not in query, "Should not emit as IRI when meaning is absent" + + +def test_exclusive_value_different_slots_not_recognised(): + """Rules where pre/post reference different slots are NOT exclusive-value. + + The pattern requires the SAME slot in both preconditions and + postconditions. When they differ, the rule is unrecognised and + silently skipped (no sh:sparql emitted). + """ + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + shape = EX_EXCL.MismatchedSlots + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 0, ( + f"Mismatched slots should not trigger exclusive-value pattern, got {len(sparql_nodes)}" + ) + + +def test_exclusive_value_message_from_description(): + """Rule description is emitted as sh:message on the SPARQLConstraint.""" + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + shape = EX_EXCL.Road + sparql_nodes = list(g.objects(shape, SH.sparql)) + messages = [str(m) for node in sparql_nodes for m in g.objects(node, SH.message)] + + assert any("EdgeNone is mutually exclusive" in m for m in messages), ( + f"Expected message about EdgeNone exclusivity, got: {messages}" + ) + + +def test_exclusive_value_sparql_syntax_valid(): + """Generated SPARQL for exclusive-value rules must be syntactically valid. + + Uses rdflib's prepareQuery() which validates SPARQL syntax. + $this is a valid SPARQL variable name per the grammar. + """ + from rdflib.plugins.sparql import prepareQuery + + g = _parse_shacl(_EXCLUSIVE_VALUE_SCHEMA_YAML) + + for shape in (EX_EXCL.Road, EX_EXCL.Intersection, EX_EXCL.Task): + sparql_nodes = list(g.objects(shape, SH.sparql)) + for node in sparql_nodes: + query_text = str(list(g.objects(node, SH.select))[0]) + # prepareQuery validates SPARQL syntax + prepareQuery(query_text) + + +def test_exclusive_value_coexists_with_boolean_guard(): + """Exclusive-value and boolean-guard rules can coexist on the same class. + + When a class has both pattern types, both produce sh:sparql constraints. + """ + schema = """ +id: https://example.org/mixed-rules +name: mixed_rules +prefixes: + linkml: https://w3id.org/linkml/ + ex: https://example.org/mixed-rules/ +imports: + - linkml:types +default_prefix: ex +default_range: string + +enums: + StatusEnum: + permissible_values: + None: + meaning: ex:None + Active: + meaning: ex:Active + +slots: + status: + range: StatusEnum + multivalued: true + slot_uri: ex:status + Flag: + range: boolean + slot_uri: ex:Flag + flagValue: + range: decimal + slot_uri: ex:flagValue + +classes: + Widget: + class_uri: ex:Widget + slots: + - status + - Flag + - flagValue + rules: + - description: None is exclusive. + preconditions: + slot_conditions: + status: + equals_string: "None" + postconditions: + slot_conditions: + status: + maximum_cardinality: 1 + - description: If flagValue present, Flag must be true. + preconditions: + slot_conditions: + flagValue: + value_presence: PRESENT + postconditions: + slot_conditions: + Flag: + equals_string: "true" +""" + g = _parse_shacl(schema) + + shape = URIRef("https://example.org/mixed-rules/Widget") + sparql_nodes = list(g.objects(shape, SH.sparql)) + assert len(sparql_nodes) == 2, ( + f"Expected 2 sh:sparql constraints (1 exclusive + 1 boolean guard), got {len(sparql_nodes)}" + ) + + queries = [str(list(g.objects(n, SH.select))[0]) for n in sparql_nodes] + # One should have FILTER(?other != ...) pattern, the other BOUND pattern + has_exclusive = any("?other" in q for q in queries) + has_boolean = any("BOUND" in q for q in queries) + assert has_exclusive, "Expected one exclusive-value SPARQL constraint" + assert has_boolean, "Expected one boolean-guard SPARQL constraint" diff --git a/tests/linkml/test_generators/test_sqlvalidationgen.py b/tests/linkml/test_generators/test_sqlvalidationgen.py index 78e49106a2..02e969746f 100644 --- a/tests/linkml/test_generators/test_sqlvalidationgen.py +++ b/tests/linkml/test_generators/test_sqlvalidationgen.py @@ -1,5 +1,7 @@ """Tests for SQL Validation Generator.""" +import logging +import re import sqlite3 import pytest @@ -8,7 +10,13 @@ from linkml.generators.sqltablegen import SQLTableGenerator from linkml.generators.sqlvalidationgen import SQLValidationGenerator, cli -from linkml_runtime.linkml_model.meta import SlotDefinition, UniqueKey +from linkml_runtime.linkml_model import SchemaDefinition +from linkml_runtime.linkml_model.meta import ( + AnonymousClassExpression, + ClassRule, + SlotDefinition, + UniqueKey, +) from linkml_runtime.utils.schema_builder import SchemaBuilder @@ -95,7 +103,29 @@ def test_identifier_uniqueness(minimal_schema_queries): assert "count(*) > 1" in minimal_schema_queries -def test_unique_key_constraint(): +def test_single_column_unique_key(): + """Single-column unique key should use simple IN subquery, not tuple syntax.""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + b.add_slot(SlotDefinition("code")) + b.add_class( + "Item", + slots=["id", "code"], + unique_keys={"code_key": UniqueKey(unique_key_name="code_key", unique_key_slots=["code"])}, + ) + b.add_defaults() + + gen = SQLValidationGenerator(b.schema) + queries = gen.generate_validation_queries() + + assert "unique_key" in queries + assert "code" in queries + assert "GROUP BY" in queries + # Single-column path does not use tuple syntax + assert "ROW(" not in queries + + +def test_multi_column_unique_key(): """Test generation of unique key validation query.""" b = SchemaBuilder() b.add_slot(SlotDefinition("id", identifier=True)) @@ -119,6 +149,28 @@ def test_unique_key_constraint(): assert "||" in queries or "CONCAT" in queries +def test_unique_key_with_aliased_slot(): + """Unique key slots are given as slot names, but the columns are named after the alias.""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + b.add_slot(SlotDefinition("first name")) + b.add_slot(SlotDefinition("last name")) + b.add_class( + "Person", + slots=["id", "first name", "last name"], + slot_usage={"first name": SlotDefinition("first name", alias="given_name")}, + unique_keys={"name_key": UniqueKey(unique_key_name="name_key", unique_key_slots=["first name", "last name"])}, + ) + b.add_defaults() + + gen = SQLValidationGenerator(b.schema) + queries = gen.generate_validation_queries() + + assert "unique_key" in queries + assert "GROUP BY given_name, last_name" in queries + assert "first_name" not in queries + + def test_enum_constraint(): """Test generation of enum validation query.""" b = SchemaBuilder() @@ -154,6 +206,21 @@ def test_dialect_specific_pattern(minimal_schema, dialect, pattern_syntax): assert pattern_syntax in queries +@pytest.mark.parametrize("dialect", ["postgresql", "sqlite"]) +def test_pattern_check_guards_against_null(minimal_schema, dialect): + """Pattern checks must exclude NULLs: absence of a value is the required constraint's concern. + + On SQLite the guard is also what keeps NULLs out of the user-registered REGEXP + function, see test_pattern_check_ignores_nulls_sqlite. + """ + gen = SQLValidationGenerator(minimal_schema, dialect=dialect) + queries = gen.generate_validation_queries() + + pattern_query = next(q for q in queries.split("UNION ALL") if "'pattern'" in q) + + assert "email IS NOT NULL" in pattern_query + + def test_with_kitchen_sink_schema(input_path): """Test with the kitchen_sink.yaml schema.""" schema = str(input_path("kitchen_sink.yaml")) @@ -214,6 +281,38 @@ def test_check_patterns_disabled(minimal_schema): assert "REGEXP" not in queries +def test_check_enums_disabled(): + """Test disabling enum constraint checks.""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + b.add_slot(SlotDefinition("status", range="StatusEnum")) + b.add_enum("StatusEnum", permissible_values=["active", "inactive", "pending"]) + b.add_class("Record", slots=["id", "status"]) + b.add_defaults() + gen = SQLValidationGenerator(b.schema, check_enums=False) + queries = gen.generate_validation_queries() + + assert "enum" not in queries + assert " NOT IN " not in queries + + +def test_check_unique_keys_disabled(): + """Test disabling unique_keys constraint checks.""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + b.add_slot(SlotDefinition("first_name")) + b.add_slot(SlotDefinition("last_name")) + b.add_class( + "Person", + slots=["id", "first_name", "last_name"], + unique_keys={"name_key": UniqueKey(unique_key_name="name_key", unique_key_slots=["first_name", "last_name"])}, + ) + b.add_defaults() + gen = SQLValidationGenerator(b.schema, check_unique_keys=False) + queries = gen.generate_validation_queries() + assert "unique_key" not in queries + + def test_include_comments_disabled(minimal_schema): """Test disabling comments in output.""" gen = SQLValidationGenerator(minimal_schema, include_comments=False) @@ -501,3 +600,651 @@ def test_validation_interop_with_invalid_data(input_path, tmp_path): ) conn.close() + + +@pytest.mark.slow +def test_pattern_check_ignores_nulls_sqlite(tmp_path): + """Executing pattern checks against SQLite must survive NULLs in the constrained column. + + SQLite has no built-in REGEXP: the operator dispatches to a scalar function the + application registers, and SQLite hands that function a NULL argument rather than + short-circuiting the way a native operator would. The function registered here is + deliberately NULL-intolerant (the idiomatic implementation), so an unguarded pattern + check surfaces as sqlite3.OperationalError and takes down the entire UNION ALL query. + + Unlike the other interop tests, this one leaves check_patterns enabled. + """ + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + # optional, so NULL is a legal value despite the pattern + b.add_slot(SlotDefinition("email", pattern=r"^\S+@\S+$")) + b.add_class("Person", slots=["id", "email"]) + b.add_defaults() + schema = b.schema + + ddl = SQLTableGenerator(schema, dialect="sqlite").generate_ddl() + validation_sql = SQLValidationGenerator(schema, dialect="sqlite").generate_validation_queries() + + conn = sqlite3.connect(str(tmp_path / "pattern_null_test.db")) + conn.create_function("regexp", 2, lambda pattern, value: re.search(pattern, value) is not None) + cursor = conn.cursor() + cursor.executescript(ddl) + + cursor.execute('INSERT INTO "Person" (id, email) VALUES (?, ?)', ("P:001", "jane@example.com")) + cursor.execute('INSERT INTO "Person" (id, email) VALUES (?, ?)', ("P:002", None)) + cursor.execute('INSERT INTO "Person" (id, email) VALUES (?, ?)', ("P:003", "not-an-email")) + conn.commit() + + cursor.execute(validation_sql) + violations = cursor.fetchall() + conn.close() + + pattern_violations = [v for v in violations if v[2] == "pattern"] + assert [v[3] for v in pattern_violations] == ["P:003"], ( + f"Only the malformed email should be a pattern violation, got: {pattern_violations}" + ) + + +def _schema_with_rules( + rules: list[ClassRule], + slots: list[SlotDefinition] | None = None, + class_name: str = "LivingThings", +) -> SchemaDefinition: + """Helper to build a schema with rules on a class. + + :param rules: list of ClassRule objects + :param slots: list of SlotDefinition objects (defaults to id/type/age) + :param class_name: class name to apply rules to + :return: schema object + """ + b = SchemaBuilder() + if slots is None: + slots = [ + SlotDefinition("id", identifier=True), + SlotDefinition("type"), + SlotDefinition("age", range="integer"), + ] + for s in slots: + b.add_slot(s) + b.add_class(class_name, slots=[s.name for s in slots]) + b.add_defaults() + # Attach rules directly + b.schema.classes[class_name].rules = rules + return b.schema + + +def test_simple_rule_equals_string_and_maximum_value(): + """Precondition equals_string + postcondition maximum_value.""" + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")}, + ), + postconditions=AnonymousClassExpression( + slot_conditions={"age": SlotDefinition("age", maximum_value=150)}, + ), + ) + ] + ) + gen = SQLValidationGenerator(schema) + sql = gen.generate_validation_queries() + + # Precondition positive: type = 'Human' + assert "type" in sql + assert "'Human'" in sql + # Postcondition negated: age > 150 + assert "age > 150" in sql + assert "'rule'" in sql + + +@pytest.mark.parametrize( + "preconditions,postconditions,expected_sql,unexpected_sql", + [ + pytest.param( + {"type": SlotDefinition("type", equals_string_in=["Human", "Elf"])}, + {"age": SlotDefinition("age", maximum_value=500)}, + ["IN", "'Human'", "'Elf'", "age > 500"], + [], + id="equals_string_in-precondition_maximum_value-postcondition", + ), + pytest.param( + {"type": SlotDefinition("type", equals_string="Adult")}, + {"age": SlotDefinition("age", minimum_value=18)}, + ["age < 18"], + [], + id="minimum_value-postcondition", + ), + pytest.param( + None, + {"age": SlotDefinition("age", maximum_value=200)}, + ["age > 200"], + ["'Human'"], # no preconditions → no precondition clause + id="postcondition-only", + ), + pytest.param( + {"type": SlotDefinition("type", equals_string="Human")}, + { + "age": SlotDefinition("age", maximum_value=150), + "weight": SlotDefinition("weight", maximum_value=500), + }, + ["age > 150", "weight > 500", " OR "], + [], + id="multiple-postcondition-slots", + ), + pytest.param( + {"type": SlotDefinition("type", equals_string="Human")}, + {"name": SlotDefinition("name", required=True)}, + ["name IS NULL"], + [], + id="required-postcondition", + ), + pytest.param( + {"age": SlotDefinition("age", equals_number=0)}, + {"type": SlotDefinition("type", equals_string="Newborn")}, + ["age = 0"], + [], + id="equals_number-precondition", + ), + ], +) +def test_rule_slot_condition_types( + preconditions: dict[str, SlotDefinition] | None, + postconditions: dict[str, SlotDefinition], + expected_sql: list[str], + unexpected_sql: list[str], +) -> None: + """Various slot condition types in rule pre/postconditions. + + :param preconditions: slot_conditions for the rule preconditions, or None for no preconditions + :param postconditions: slot_conditions for the rule postconditions + :param expected_sql: SQL fragments that must appear in the generated queries + :param unexpected_sql: SQL fragments that must not appear in the generated queries + """ + slots = [ + SlotDefinition("id", identifier=True), + SlotDefinition("type"), + SlotDefinition("age", range="integer"), + SlotDefinition("weight", range="integer"), + SlotDefinition("name"), + ] + rule = ClassRule(postconditions=AnonymousClassExpression(slot_conditions=postconditions)) + if preconditions is not None: + rule.preconditions = AnonymousClassExpression(slot_conditions=preconditions) + + schema = _schema_with_rules([rule], slots=slots) + gen = SQLValidationGenerator(schema) + sql = gen.generate_validation_queries() + + for fragment in expected_sql: + assert fragment in sql + for fragment in unexpected_sql: + assert fragment not in sql + + +def test_check_rules_disabled(): + """check_rules=False should suppress all rule SQL.""" + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")}, + ), + postconditions=AnonymousClassExpression( + slot_conditions={"age": SlotDefinition("age", maximum_value=150)}, + ), + ) + ] + ) + gen = SQLValidationGenerator(schema, check_rules=False) + sql = gen.generate_validation_queries() + + assert "'rule'" not in sql + + +def test_rule_deactivated(): + """Deactivated rules should be skipped.""" + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")}, + ), + postconditions=AnonymousClassExpression( + slot_conditions={"age": SlotDefinition("age", maximum_value=150)}, + ), + deactivated=True, + ) + ] + ) + gen = SQLValidationGenerator(schema) + sql = gen.generate_validation_queries() + + assert "'rule'" not in sql + + +def test_cli_check_rules_option(tmp_path): + """CLI --no-check-rules suppresses rule queries.""" + schema = _schema_with_rules( + [ + ClassRule( + postconditions=AnonymousClassExpression( + slot_conditions={"age": SlotDefinition("age", maximum_value=150)}, + ), + ) + ] + ) + schema_path = tmp_path / "rules_schema.yaml" + from linkml_runtime.dumpers import yaml_dumper + + with open(schema_path, "w") as f: + f.write(yaml_dumper.dumps(schema)) + + runner = CliRunner() + result = runner.invoke(cli, [str(schema_path), "--no-check-rules"]) + assert result.exit_code == 0 + assert "'rule'" not in result.output + + +@pytest.mark.parametrize( + "slot_condition_kwargs", + [ + {"equals_string": "Alive"}, + {"equals_number": 1}, + {"equals_string_in": ["Alive", "Dormant"]}, + ], +) +def test_rule_equals_postcondition_null_safe(slot_condition_kwargs): + """Negated equals-type postcondition checks must treat NULL as a violation. + + SQL's three-valued logic makes `col != lit` and `col NOT IN (...)` evaluate to + NULL (not TRUE) when col is NULL, silently dropping the row from the WHERE + clause. The generated SQL must explicitly OR in an `IS NULL` check so that a + NULL value in a postcondition column is treated as failing the postcondition. + """ + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")}, + ), + postconditions=AnonymousClassExpression( + slot_conditions={"status": SlotDefinition("status", **slot_condition_kwargs)}, + ), + ) + ], + slots=[ + SlotDefinition("id", identifier=True), + SlotDefinition("type"), + SlotDefinition("status"), + ], + ) + gen = SQLValidationGenerator(schema) + sql = gen.generate_validation_queries() + + rule_query = next(q for q in sql.split("UNION ALL") if "'rule'" in q) + assert "status IS NULL" in rule_query + + +@pytest.mark.slow +def test_rule_interop_equals_string_null_is_violation(tmp_path): + """A NULL value in a postcondition equals_string column must be detected as a violation.""" + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")}, + ), + postconditions=AnonymousClassExpression( + slot_conditions={"status": SlotDefinition("status", equals_string="Alive")}, + ), + ) + ], + slots=[ + SlotDefinition("id", identifier=True), + SlotDefinition("type"), + SlotDefinition("status"), + ], + ) + table_gen = SQLTableGenerator(schema, dialect="sqlite") + ddl = table_gen.generate_ddl() + val_gen = SQLValidationGenerator(schema, dialect="sqlite", check_patterns=False) + validation_sql = val_gen.generate_validation_queries() + + db_path = tmp_path / "rule_null_test.db" + conn = sqlite3.connect(str(db_path)) + cursor = conn.cursor() + cursor.executescript(ddl) + + cursor.execute('INSERT INTO "LivingThings" (id, type, status) VALUES (?, ?, ?)', ("1", "Human", "Alive")) + cursor.execute('INSERT INTO "LivingThings" (id, type, status) VALUES (?, ?, ?)', ("2", "Elf", None)) + cursor.execute('INSERT INTO "LivingThings" (id, type, status) VALUES (?, ?, ?)', ("3", "Human", None)) + conn.commit() + + cursor.execute(validation_sql) + violations = cursor.fetchall() + conn.close() + + rule_violations = [v for v in violations if v[2] == "rule"] + violating_ids = {v[3] for v in rule_violations} + assert "3" in violating_ids, f"Expected record 3 (NULL status) to violate rule. Violations: {rule_violations}" + assert "2" not in violating_ids, f"Record 2 should not violate (precondition unmet). Violations: {rule_violations}" + + +def test_rule_slot_names_resolved_to_sql_columns(): + """Rule slot names must be resolved through alias/underscore.""" + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"driver status": SlotDefinition("driver status", equals_string="licensed")}, + ), + postconditions=AnonymousClassExpression( + slot_conditions={"age value": SlotDefinition("age value", minimum_value=18)}, + ), + ) + ], + slots=[ + SlotDefinition("id", identifier=True), + SlotDefinition("driver status"), + SlotDefinition("age value", alias="personAge", range="integer"), + ], + ) + validation_sql = SQLValidationGenerator(schema, dialect="sqlite").generate_validation_queries() + + rule_query = next(q for q in validation_sql.split("UNION ALL") if "'rule'" in q) + assert "driver_status" in rule_query, f"Spaced slot name not underscored: {rule_query}" + assert "driver status" not in rule_query, f"Raw schema slot name leaked into SQL: {rule_query}" + assert "personAge" in rule_query, f"Alias not resolved: {rule_query}" + assert "age value" not in rule_query, f"Raw schema slot name leaked into SQL: {rule_query}" + + +@pytest.mark.slow +def test_rule_interop_sqlite(tmp_path): + """End-to-end: create DB, insert violating data, run validation, verify detection.""" + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")}, + ), + postconditions=AnonymousClassExpression( + slot_conditions={"age": SlotDefinition("age", maximum_value=150)}, + ), + ) + ] + ) + # Generate DDL and validation + table_gen = SQLTableGenerator(schema, dialect="sqlite") + ddl = table_gen.generate_ddl() + val_gen = SQLValidationGenerator(schema, dialect="sqlite", check_patterns=False) + validation_sql = val_gen.generate_validation_queries() + + db_path = tmp_path / "rules_test.db" + conn = sqlite3.connect(str(db_path)) + cursor = conn.cursor() + cursor.executescript(ddl) + + # Valid: Human with age <= 150 + cursor.execute('INSERT INTO "LivingThings" (id, type, age) VALUES (?, ?, ?)', ("1", "Human", 30)) + # Valid: non-Human with age > 150 (precondition not met) + cursor.execute('INSERT INTO "LivingThings" (id, type, age) VALUES (?, ?, ?)', ("2", "Elf", 500)) + # INVALID: Human with age > 150 + cursor.execute('INSERT INTO "LivingThings" (id, type, age) VALUES (?, ?, ?)', ("3", "Human", 200)) + conn.commit() + + cursor.execute(validation_sql) + violations = cursor.fetchall() + + rule_violations = [v for v in violations if v[2] == "rule"] + assert len(rule_violations) >= 1, f"Expected rule violations but got: {violations}" + # The violating record should be id=3 + violating_ids = {v[3] for v in rule_violations} + assert "3" in violating_ids, f"Expected record 3 to violate rule. Violations: {rule_violations}" + + conn.close() + + +def test_unknown_dialect_fallback(caplog): + """Unknown dialects should log a warning and fall back to sqlite syntax (REGEXP, not ~).""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + b.add_slot(SlotDefinition("email", pattern=r"^\S+@\S+$")) + b.add_class("Person", slots=["id", "email"]) + b.add_defaults() + + gen = SQLValidationGenerator(b.schema, dialect="mysql") + with caplog.at_level(logging.WARNING, logger="linkml.generators.sqlvalidationgen"): + queries = gen.generate_validation_queries() + + assert any("mysql" in record.message and "sqlite" in record.message for record in caplog.records) + assert gen.dialect == "sqlite" + # Should fall back to sqlite syntax + assert "REGEXP" in queries + assert "~" not in queries + + +def test_skip_mixin_classes(): + """Mixin classes should be excluded from generated queries.""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + b.add_slot(SlotDefinition("name", required=True)) + b.add_class("HasName", slots=["id", "name"]) + b.add_defaults() + b.schema.classes["HasName"].mixin = True + + gen = SQLValidationGenerator(b.schema) + queries = gen.generate_validation_queries() + + assert "HasName" not in queries + + +def test_rule_no_postconditions_skipped(): + """Rule with no postconditions should be silently skipped (no 'rule' in output).""" + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")}, + ), + # no postconditions + ) + ] + ) + gen = SQLValidationGenerator(schema) + sql = gen.generate_validation_queries() + + assert "'rule'" not in sql + + +def test_rule_any_of_logs_warning(caplog): + """Unsupported class expression attributes (any_of) should log a warning.""" + schema = _schema_with_rules( + [ + ClassRule( + postconditions=AnonymousClassExpression( + slot_conditions={"age": SlotDefinition("age", maximum_value=150)}, + any_of=[ + AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")} + ) + ], + ), + ) + ] + ) + gen = SQLValidationGenerator(schema) + with caplog.at_level(logging.WARNING): + sql = gen.generate_validation_queries() + + assert "any_of" in caplog.text + # The supported slot_conditions still produce a query + assert "age > 150" in sql + + +@pytest.mark.parametrize("combinator", ["any_of", "all_of", "none_of", "exactly_one_of"]) +def test_rule_precondition_only_combinator_skips_rule(caplog, combinator): + """A precondition expressed purely via an unsupported combinator must skip the whole rule. + + Dropping such a precondition would apply the postcondition to every row of the table, + producing false-positive violations. + """ + schema = _schema_with_rules( + [ + ClassRule( + preconditions=AnonymousClassExpression( + **{ + combinator: [ + AnonymousClassExpression( + slot_conditions={"type": SlotDefinition("type", equals_string="Human")} + ) + ] + } + ), + postconditions=AnonymousClassExpression( + slot_conditions={"age": SlotDefinition("age", maximum_value=150)}, + ), + ) + ] + ) + gen = SQLValidationGenerator(schema) + with caplog.at_level(logging.WARNING): + sql = gen.generate_validation_queries() + + assert combinator in caplog.text + assert "Skipping the rule" in caplog.text + # The rule must not be emitted at all: an unconditional "age > 150" check would flag + # non-Human rows that the precondition was meant to exclude. + assert "'rule'" not in sql + assert "age > 150" not in sql + + +def test_postgresql_casts_invalid_value(): + """PostgreSQL dialect should wrap invalid_value in CAST(... AS TEXT).""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("id", identifier=True)) + b.add_slot(SlotDefinition("age", range="integer", minimum_value=0, maximum_value=120)) + b.add_class("Person", slots=["id", "age"]) + b.add_defaults() + + gen = SQLValidationGenerator(b.schema, dialect="postgresql") + queries = gen.generate_validation_queries() + + assert "CAST" in queries + assert "age AS TEXT" in queries + + +def test_include_comments_content(minimal_schema): + """Default include_comments=True should produce a header with expected content.""" + gen = SQLValidationGenerator(minimal_schema) + queries = gen.generate_validation_queries() + + assert "SQL Validation Queries" in queries + assert "LinkML" in queries + assert "-- " in queries # comment marker + + +@pytest.fixture +def no_identifier_schema(): + """Schema whose class has neither an identifier nor a key slot.""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("value", range="integer", required=True, minimum_value=0)) + b.add_class("Measurement", slots=["value"]) + b.add_defaults() + return b.schema + + +@pytest.mark.parametrize( + "slots,dialect,expected_record_id", + [ + ([SlotDefinition("pid", identifier=True)], "sqlite", "pid AS record_id"), + ([SlotDefinition("code", key=True)], "sqlite", "code AS record_id"), + # an identifier wins over a key slot, regardless of declaration order + ( + [SlotDefinition("code", key=True), SlotDefinition("pid", identifier=True)], + "sqlite", + "pid AS record_id", + ), + # a slot merely named 'id' is not an identifier and must not become the record_id + ([SlotDefinition("id")], "sqlite", "NULL AS record_id"), + ([], "sqlite", "NULL AS record_id"), + ([], "postgresql", "CAST(NULL AS TEXT) AS record_id"), + ], + ids=["identifier", "key_only", "identifier_wins_over_key", "plain_slot_named_id", "neither", "neither_postgres"], +) +def test_record_id_column_selection(slots, dialect, expected_record_id, caplog): + """The record_id is the identifier slot, else the key slot, else NULL. + + A class needs neither in LinkML. Falling back to a hardcoded 'id' column would either + reference a column absent from the DDL - taking down the whole UNION ALL query - or + silently report an unrelated data slot as the identity of the violating record. + """ + b = SchemaBuilder() + for slot in [*slots, SlotDefinition("name", required=True)]: + b.add_slot(slot) + b.add_class("Record", slots=[s.name for s in slots] + ["name"]) + b.add_defaults() + + gen = SQLValidationGenerator(b.schema, dialect=dialect, include_comments=False) + with caplog.at_level(logging.WARNING, logger="linkml.generators.sqlvalidationgen"): + queries = gen.generate_validation_queries() + + assert expected_record_id in queries + # leading space so this does not match a legitimate 'pid AS record_id' + assert " id AS record_id" not in queries + # a NULL record_id is announced, and only then + assert ("no identifier or key slot" in caplog.text) == ("NULL" in expected_record_id) + + +def test_rule_on_class_without_identifier_selects_null_record_id(): + """The rule path builds its own table clause, and must resolve the record_id the same way.""" + b = SchemaBuilder() + b.add_slot(SlotDefinition("status")) + b.add_slot(SlotDefinition("age", range="integer")) + b.add_class("Person", slots=["status", "age"]) + b.add_defaults() + b.schema.classes["Person"].rules = [ + ClassRule( + preconditions=AnonymousClassExpression( + slot_conditions={"status": SlotDefinition("status", equals_string="adult")} + ), + postconditions=AnonymousClassExpression(slot_conditions={"age": SlotDefinition("age", minimum_value=18)}), + ) + ] + + gen = SQLValidationGenerator(b.schema, include_comments=False) + queries = gen.generate_validation_queries() + + assert "'rule'" in queries + assert "NULL AS record_id" in queries + assert "id AS record_id" not in queries + + +@pytest.mark.slow +def test_interop_class_without_identifier_executes(no_identifier_schema, tmp_path): + """Queries for an identifier-less class must run against the matching DDL. + + SQLValidationGenerator transforms with NO_FOREIGN_KEYS, under which no surrogate + primary key is injected, so the corresponding DDL is the one without foreign keys. + """ + ddl = SQLTableGenerator(no_identifier_schema, dialect="sqlite", use_foreign_keys=False).generate_ddl() + assert "id" not in ddl.split("CREATE TABLE")[1].split(";")[0] + + conn = sqlite3.connect(str(tmp_path / "no_identifier.db")) + cursor = conn.cursor() + cursor.executescript(ddl) + cursor.execute('INSERT INTO "Measurement" (value) VALUES (?)', (5,)) + cursor.execute('INSERT INTO "Measurement" (value) VALUES (?)', (-1,)) + conn.commit() + + validation_query = SQLValidationGenerator(no_identifier_schema, dialect="sqlite").generate_validation_queries() + cursor.execute(validation_query) + violations = cursor.fetchall() + conn.close() + + # one range violation, reported without a record_id + assert len(violations) == 1 + table_name, column_name, constraint_type, record_id, invalid_value = violations[0] + assert (table_name, column_name, constraint_type) == ("Measurement", "value", "range") + assert record_id is None + assert invalid_value == -1 diff --git a/tests/linkml/test_generators/test_typedbgen_integration.py b/tests/linkml/test_generators/test_typedbgen_integration.py index bb4ec47610..1f592953f6 100644 --- a/tests/linkml/test_generators/test_typedbgen_integration.py +++ b/tests/linkml/test_generators/test_typedbgen_integration.py @@ -11,6 +11,7 @@ """ import socket +import sys import uuid from pathlib import Path @@ -18,9 +19,18 @@ from linkml.generators.typedbgen import TypeDBGenerator +# The typedb-driver wheel embeds a CPython 3.13 extension, so importing it on +# 3.14 raises ImportError rather than ModuleNotFoundError. Skip before the +# import is attempted; importorskip only treats a missing module as a skip. +if sys.version_info >= (3, 14): + pytest.skip( + "typedb-driver native extension does not support Python 3.14", + allow_module_level=True, + ) + typedb = pytest.importorskip("typedb.driver", reason="typedb-driver not installed") -from typedb.driver import Credentials, DriverOptions, TransactionType, TypeDB # noqa: E402 +from typedb.driver import Credentials, DriverOptions, DriverTlsConfig, TransactionType, TypeDB # noqa: E402 TYPEDB_HOST = "localhost:1729" @@ -41,7 +51,7 @@ def _typedb_available() -> bool: _INPUT_DIR = Path(__file__).parent / "input" TYPEDB_CREDENTIALS = Credentials("admin", "password") -TYPEDB_OPTIONS = DriverOptions(is_tls_enabled=False) +TYPEDB_OPTIONS = DriverOptions(DriverTlsConfig.disabled()) @pytest.fixture(scope="module") diff --git a/tests/linkml/test_issues/input/linkml_issue_3677.yaml b/tests/linkml/test_issues/input/linkml_issue_3677.yaml new file mode 100644 index 0000000000..b1d4a38174 --- /dev/null +++ b/tests/linkml/test_issues/input/linkml_issue_3677.yaml @@ -0,0 +1,34 @@ +id: https://example.org/slot-uri-on-attribute +name: slot-uri-on-attribute +description: >- + This schema illustrates the case of a local, class-specific attribute + being assigned a slot_uri. +prefixes: + linkml: https://w3id.org/linkml/ +imports: + - linkml:types +default_range: string + +classes: + + PrefixDeclaration: + description: >- + A prefix declaration in a prefix map. + attributes: + name: + description: The prefix's name. + slot_uri: "http://www.w3.org/ns/shacl#prefix" + prefix: + description: The associated IRI prefix. + range: uri + slot_uri: "http://www.w3.org/ns/shacl#namespace" + + AnotherClass: + description: >- + This class has a local attribute also named `name`. + attributes: + name: + description: >- + The mere presence of this attribute confuses the object code + generator when it has to produce the URI for the `name` + attribute in the `PrefixDeclaration` class. diff --git a/tests/linkml/test_issues/test_linkml_issue_3196.py b/tests/linkml/test_issues/test_linkml_issue_3196.py new file mode 100644 index 0000000000..a307fd48e3 --- /dev/null +++ b/tests/linkml/test_issues/test_linkml_issue_3196.py @@ -0,0 +1,149 @@ +import typing + +from linkml.generators.pydanticgen import PydanticGenerator + +test_schema = """ +id: https://w3id.org/test +name: Test + +imports: + - linkml:types + +classes: + Foo: + abstract: true + attributes: + foo_field: + range: string + required: true + type: + range: string + designates_type: true + + Bar: + is_a: Foo + attributes: + bar_field: + range: string + required: true + Baz: + is_a: Foo + attributes: + baz_field: + range: string + required: true + + Qux: + attributes: + foo_object: + range: Foo + required: true +""" + + +def test_pydantic_abstract_class_not_in_range_union(): + mod = PydanticGenerator(test_schema).compile_module() + annotation = mod.Qux.model_fields["foo_object"].annotation + + # Assert that our abstract class is not in the type union for the Qux.foo_object slot + # Assert that our abstract class is not in the type union for the Qux.foo_object slot + assert mod.Foo not in typing.get_args(annotation) + + +def test_concrete_descendants_are_in_range_union(): + mod = PydanticGenerator(test_schema).compile_module() + annotation = mod.Qux.model_fields["foo_object"].annotation + args = typing.get_args(annotation) + assert mod.Bar in args + assert mod.Baz in args + + +nested_abstract_schema = """ +id: https://w3id.org/test +name: TestNested +imports: + - linkml:types +classes: + Foo: + abstract: true + attributes: + type: {range: string, designates_type: true} + Mid: + is_a: Foo + abstract: true + Leaf1: + is_a: Mid + attributes: {f1: {range: string}} + Leaf2: + is_a: Foo + attributes: {f2: {range: string}} + Qux: + attributes: + foo_object: {range: Foo, required: true} +""" + + +def test_nested_abstract_intermediates_excluded(): + mod = PydanticGenerator(nested_abstract_schema).compile_module() + args = typing.get_args(mod.Qux.model_fields["foo_object"].annotation) + assert mod.Foo not in args + assert mod.Mid not in args + assert mod.Leaf1 in args + assert mod.Leaf2 in args + + +mixin_schema = """ +id: https://w3id.org/test +name: TestMixin +imports: + - linkml:types +classes: + Foo: + abstract: true + attributes: + type: {range: string, designates_type: true} + Bar: + is_a: Foo + attributes: {bar_field: {range: string}} + MixinChild: + mixins: [Foo] + attributes: {mc_field: {range: string}} + Qux: + attributes: + foo_object: {range: Foo, required: true} +""" + + +def test_mixin_descendant_included_in_union(): + mod = PydanticGenerator(mixin_schema).compile_module() + args = typing.get_args(mod.Qux.model_fields["foo_object"].annotation) + assert mod.Foo not in args + assert mod.Bar in args + assert mod.MixinChild in args + + +all_abstract_schema = """ +id: https://w3id.org/test +name: TestAllAbstract +imports: + - linkml:types +classes: + Foo: + abstract: true + attributes: + type: {range: string, designates_type: true} + MidAbstract: + is_a: Foo + abstract: true + Qux: + attributes: + foo_object: {range: Foo, required: true} +""" + + +def test_all_descendants_abstract_raises(): + """Abstract range with no concrete descendants is a schema error.""" + import pytest + + with pytest.raises(ValueError, match="no concrete descendants"): + PydanticGenerator(all_abstract_schema).compile_module() diff --git a/tests/linkml/test_issues/test_linkml_issue_3677.py b/tests/linkml/test_issues/test_linkml_issue_3677.py new file mode 100644 index 0000000000..8be7eca3b3 --- /dev/null +++ b/tests/linkml/test_issues/test_linkml_issue_3677.py @@ -0,0 +1,10 @@ +from linkml.generators.javagen import JavaGenerator + + +def test_slot_uri_on_locally_defined_attribute(input_path): + """The generator should produce the correct slot_uri for a locally defined attribute.""" + gen = JavaGenerator(input_path("linkml_issue_3677.yaml")) + docs = gen.create_documents() + witness = [doc for doc in docs if doc.name == "PrefixDeclaration"][0] + assert witness.classes[0].fields[0].slot_uri == "http://www.w3.org/ns/shacl#prefix" + assert witness.classes[0].fields[1].slot_uri == "http://www.w3.org/ns/shacl#namespace" diff --git a/tests/linkml/test_metamodel_compat/input/metamodel/meta.yaml b/tests/linkml/test_metamodel_compat/input/metamodel/meta.yaml index f80f21922b..6d0dfca471 100644 --- a/tests/linkml/test_metamodel_compat/input/metamodel/meta.yaml +++ b/tests/linkml/test_metamodel_compat/input/metamodel/meta.yaml @@ -1308,7 +1308,15 @@ slots: range: unique_key multivalued: true inlined: true - description: A collection of named unique keys for this class. Unique keys may be singular or compound. + description: >- + A collection of named unique keys for this class. Such unique keys may be spread over several slots, which is why there + are also called "compound keys". A unique key uniquely identifies instances of the class within a given container, meaning + there cannot be two (or more) instances of the class with the same values for all the slots that make up the unique key. + comments: + - > + Not to be confused with a "singular unique key", which is defined by means of the `key` slot, or with an "identifier", + which is defined by means of the "identifier" slot. Compound keys, singular unique keys, and identifiers all create a + unicity constraint, but singular unique keys and identifiers have additional effects that compound keys do not have. exact_mappings: - owl:hasKey in_subset: @@ -1316,7 +1324,9 @@ slots: - BasicSubset - RelationalModelProfile see_also: - - https://linkml.io/linkml/schemas/constraints.html#unique-key + - https://linkml.io/linkml/schemas/constraints.html#unique-keys + - key + - identifier unique_key_name: domain: unique_key @@ -1859,18 +1869,24 @@ slots: range: boolean inherited: true description: >- - True means that the key slot(s) uniquely identify the elements within a single container + True means that the slot is the "singular unique key" (also known more simply as the "key slot") of its class. Such a slot + uniquely identifies instances of the class within a single container, meaning there cannot be two (or more) instances of + the class (or instances of any of its descendants) with the same value for the key slot within the container. comments: - - key is inherited - - a given domain can have at most one key slot (restriction to be removed in the future) - - identifiers and keys are mutually exclusive. A given domain cannot have both - - a key slot is automatically required. Keys cannot be optional + - The key slot is inherited. + - A domain can have at most one key slot OR one identifier slot. However a domain can have both a key slot and any number + of compound keys. + - A key slot is automatically required. Singular unique keys cannot be optional. + - The presence of a key slot makes a class eligible for inlining as a dictionary. in_subset: - SpecificationSubset - BasicSubset - RelationalModelProfile see_also: + - https://linkml.io/linkml/schemas/constraints.html#singular-unique-keys + - https://linkml.io/linkml/schemas/inlining.html - unique_keys + - identifier identifier: rank: 5 @@ -1878,8 +1894,16 @@ slots: range: boolean inherited: true description: >- - True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per - container + True means that the slot is the identifier slot of its class. Such a slot uniquely identifies instances of the class + throughout an entire document, meaning there cannot be two (or more) instances of the class (or instances of any of its + descendants) with the same value for the identifier slot anywhere in the document. + comments: + - The identifier slot is inherited. + - A domain can have at most one identifier slot OR a key slot. However a domain can have both an identifier slot and any + number of compound keys. + - An identifier slot is automatically required. Identifiers cannot be optional. + - The presence of an identifier slot makes a class eligible for inlining as a dictionary. + - The presence of an identifier slot makes a class eligible for being referenced rather than inlined. aliases: - primary key - ID @@ -1887,12 +1911,10 @@ slots: - code see_also: - https://en.wikipedia.org/wiki/Identifier + - https://linkml.io/linkml/schemas/constraints.html#unique-keys + - https://linkml.io/linkml/schemas/inlining.html - unique_keys - comments: - - identifier is inherited - - a key slot is automatically required. Identifiers cannot be optional - - a given domain can have at most one identifier - - identifiers and keys are mutually exclusive. A given domain cannot have both + - key in_subset: - SpecificationSubset - MinimalSubset diff --git a/tests/linkml/test_notebooks/input/distributedmodels.py b/tests/linkml/test_notebooks/input/distributedmodels.py index 3eee75559e..f27d5f78f8 100644 --- a/tests/linkml/test_notebooks/input/distributedmodels.py +++ b/tests/linkml/test_notebooks/input/distributedmodels.py @@ -51,7 +51,7 @@ # imported files can now be specified in an accompanying mapping file. The imports below # reference: # https://w3id.org/biolink/biolink-model -- the biolink model -# https://w3id.org/linkml/types -- the biolink modeling language types definitions +# https://w3id.org/linkml/types -- linked open data modeling language, types definitions imports: - https://w3id.org/biolink/biolink-model - linkml:types diff --git a/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta.json b/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta.json index b115f96bca..7879b587a7 100644 --- a/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta.json +++ b/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta.json @@ -128,8 +128,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfClasses", @@ -150,8 +149,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfEnums", @@ -175,8 +173,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfMix", @@ -197,8 +194,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfSimpleType", @@ -271,7 +267,14 @@ "type": "string" }, "long_id": { - "$ref": "#/$defs/LongEnum" + "anyOf": [ + { + "$ref": "#/$defs/LongEnum" + }, + { + "type": "null" + } + ] }, "name": { "type": [ @@ -498,8 +501,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "EmploymentEvent", @@ -607,7 +609,14 @@ "description": "", "properties": { "cordialness": { - "$ref": "#/$defs/CordialnessEnum" + "anyOf": [ + { + "$ref": "#/$defs/CordialnessEnum" + }, + { + "type": "null" + } + ] }, "ended_at_time": { "format": "date", @@ -946,7 +955,14 @@ "type": "string" }, "is_living": { - "$ref": "#/$defs/LifeStatusEnum" + "anyOf": [ + { + "$ref": "#/$defs/LifeStatusEnum" + }, + { + "type": "null" + } + ] }, "name": { "pattern": "^\\S+ \\S+$", @@ -1037,7 +1053,14 @@ "description": "", "properties": { "cordialness": { - "$ref": "#/$defs/CordialnessEnum" + "anyOf": [ + { + "$ref": "#/$defs/CordialnessEnum" + }, + { + "type": "null" + } + ] }, "ended_at_time": { "format": "date", diff --git a/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta_inline.json b/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta_inline.json index b115f96bca..7879b587a7 100644 --- a/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta_inline.json +++ b/tests/linkml/test_scripts/__snapshots__/genjsonschema/meta_inline.json @@ -128,8 +128,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfClasses", @@ -150,8 +149,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfEnums", @@ -175,8 +173,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfMix", @@ -197,8 +194,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "AnyOfSimpleType", @@ -271,7 +267,14 @@ "type": "string" }, "long_id": { - "$ref": "#/$defs/LongEnum" + "anyOf": [ + { + "$ref": "#/$defs/LongEnum" + }, + { + "type": "null" + } + ] }, "name": { "type": [ @@ -498,8 +501,7 @@ { "type": "null" } - ], - "type": "string" + ] } }, "title": "EmploymentEvent", @@ -607,7 +609,14 @@ "description": "", "properties": { "cordialness": { - "$ref": "#/$defs/CordialnessEnum" + "anyOf": [ + { + "$ref": "#/$defs/CordialnessEnum" + }, + { + "type": "null" + } + ] }, "ended_at_time": { "format": "date", @@ -946,7 +955,14 @@ "type": "string" }, "is_living": { - "$ref": "#/$defs/LifeStatusEnum" + "anyOf": [ + { + "$ref": "#/$defs/LifeStatusEnum" + }, + { + "type": "null" + } + ] }, "name": { "pattern": "^\\S+ \\S+$", @@ -1037,7 +1053,14 @@ "description": "", "properties": { "cordialness": { - "$ref": "#/$defs/CordialnessEnum" + "anyOf": [ + { + "$ref": "#/$defs/CordialnessEnum" + }, + { + "type": "null" + } + ] }, "ended_at_time": { "format": "date", diff --git a/tests/linkml_runtime/test_linkml_model/test_linkml_files.py b/tests/linkml_runtime/test_linkml_model/test_linkml_files.py index 76f99c3e03..2ac566ec87 100644 --- a/tests/linkml_runtime/test_linkml_model/test_linkml_files.py +++ b/tests/linkml_runtime/test_linkml_model/test_linkml_files.py @@ -1,3 +1,7 @@ +import re +import subprocess +import tempfile +from collections.abc import Callable, Iterator from importlib.util import find_spec from itertools import product from pathlib import Path @@ -130,15 +134,65 @@ def test_fixed_meta_url(): """Source files resolved locally at runtime by generators (YAML for schema imports, JSONLD for context resolution). Drift here means generators silently use stale definitions.""" -LINKML_MODEL_MAIN_BASE = "https://raw.githubusercontent.com/linkml/linkml-model/main/linkml_model/" -"""Base URL for the source-of-truth copies on linkml-model's main branch. +UPSTREAM_SHA_FILE = _LOCAL_BASE / "UPSTREAM_SHA" +"""File written by ``make update_model`` that records the upstream linkml-model commit SHA +that was vendored. The test uses this SHA to fetch the exact same revision from GitHub.""" -We compare against main rather than the w3id.org redirect because the redirect lags behind: -it points to gh-pages, which only updates after a successful PyPI/docs publish workflow. -A pre-release vendored bump (where local is intentionally ahead of the latest published -release) would otherwise false-alarm here. Comparing to main catches the actually-useful -signal — vendored files out of sync with what was merged upstream — without coupling to -the publish pipeline.""" +LINKML_MODEL_GITHUB_RAW_BASE = "https://raw.githubusercontent.com/linkml/linkml-model/" +"""Base URL for raw content on the linkml-model GitHub repository.""" + +LINKML_MODEL_REPO = "https://github.com/linkml/linkml-model.git" +"""URL of the upstream linkml-model Git repository.""" + +LINKML_MODEL_MAIN_BASE = f"{LINKML_MODEL_GITHUB_RAW_BASE}main/linkml_model/" +"""Base URL for the source-of-truth copies on linkml-model's main branch.""" + + +def _get_upstream_sha() -> str: + """Read the upstream commit SHA recorded by ``make update_model``. + + Returns the 40-character hex SHA written to ``UPSTREAM_SHA`` at vendoring time. + """ + regenerate = "Run 'make update_model' in packages/linkml_runtime/ to regenerate it." + assert UPSTREAM_SHA_FILE.exists(), f"{UPSTREAM_SHA_FILE} not found. {regenerate}" + + sha = UPSTREAM_SHA_FILE.read_text().strip() + assert re.fullmatch(r"[0-9a-f]{40}", sha), ( + f"{UPSTREAM_SHA_FILE} does not contain a 40-character hex commit SHA (got {sha!r}). {regenerate}" + ) + return sha + + +@pytest.fixture(scope="session") +def upstream_file_reader() -> Iterator[Callable[[str], str]]: + """Read files from the vendored upstream commit, fetching it only once per session. + + Uses the git protocol (``git fetch`` + ``git show``) rather than the GitHub REST + API to avoid IP-based rate limiting. The fetch is the expensive part, so it runs + a single time and every lookup reuses the same bare repository. + + Yields a callable taking a path inside the repository (e.g. + ``"linkml_model/model/schema/meta.yaml"``) and returning its content. + """ + sha = _get_upstream_sha() + with tempfile.TemporaryDirectory() as tmp: + subprocess.run(["git", "init", "--bare", "-q", tmp], check=True) + subprocess.run( + ["git", "-C", tmp, "fetch", "--depth=1", LINKML_MODEL_REPO, sha], + check=True, + capture_output=True, + ) + + def read(repo_path: str) -> str: + result = subprocess.run( + ["git", "-C", tmp, "show", f"FETCH_HEAD:{repo_path}"], + check=True, + capture_output=True, + text=True, + ) + return result.stdout + + yield read def _linkml_model_main_url(source: Source, fmt: Format) -> str: @@ -149,12 +203,45 @@ def _linkml_model_main_url(source: Source, fmt: Format) -> str: @pytest.mark.network @pytest.mark.parametrize("source,fmt", VENDORED_RUNTIME_FILES) -def test_vendored_files_match_upstream(source, fmt): - """Detect drift between vendored files and their upstream linkml-model main version. +def test_vendored_files_match_upstream(source, fmt, upstream_file_reader): + """Detect drift between vendored files and the upstream commit they were vendored from. Generators resolve these files locally instead of fetching from the network. - If upstream changes without updating the vendored copies, generated output - will silently diverge from what users expect. + The expected upstream revision is read from ``UPSTREAM_SHA``, which is written + by ``make update_model`` at vendoring time and committed alongside the files. + If the vendored files were modified without re-running ``make update_model``, + this test will catch it. + + File content is fetched via the git protocol (not the GitHub REST API) to + avoid IP-based rate limiting. + """ + sha = _get_upstream_sha() + local_path = Path(LOCAL_PATH_FOR(source, fmt)) + repo_path = f"linkml_model/{Path(LOCAL_PATH_FOR(source, fmt)).relative_to(_LOCAL_BASE).as_posix()}" + + local_content = local_path.read_text() + upstream_content = upstream_file_reader(repo_path) + + assert local_content == upstream_content, ( + f"Vendored {local_path.name} differs from upstream {LINKML_MODEL_REPO} " + f"at {repo_path} (SHA {sha[:12]}). " + "Run 'make update_model' in packages/linkml_runtime/ to re-vendor the files." + ) + + +@pytest.mark.network +@pytest.mark.upstream_main +@pytest.mark.parametrize("source,fmt", VENDORED_RUNTIME_FILES) +def test_vendored_files_match_upstream_main(source, fmt): + """Detect drift between vendored files and the linkml-model main branch. + + This is a soft-fail early-warning test. It catches cases where upstream main + has moved ahead of the vendored files before a new release is cut. Failures + here are informational — they do not block a PR — but signal that a vendored + update may be needed soon. + + For the hard check against the vendored commit, see + ``test_vendored_files_match_upstream``. """ local_path = Path(LOCAL_PATH_FOR(source, fmt)) url = _linkml_model_main_url(source, fmt) @@ -164,6 +251,7 @@ def test_vendored_files_match_upstream(source, fmt): assert response.ok, f"Failed to fetch {url}: {response.status_code}" assert local_content == response.text, ( - f"Vendored {local_path.name} differs from upstream {url}. " - "Update vendored files to match the current upstream main." + f"Vendored {local_path.name} differs from upstream main {url}. " + "This is an early warning: upstream main has diverged from the vendored files. " + "No action is required until a new linkml-model release is cut." ) diff --git a/tests/linkml_runtime/test_loaders_dumpers/test_rdflib_dumper.py b/tests/linkml_runtime/test_loaders_dumpers/test_rdflib_dumper.py index 9dece010b8..2df96c656a 100644 --- a/tests/linkml_runtime/test_loaders_dumpers/test_rdflib_dumper.py +++ b/tests/linkml_runtime/test_loaders_dumpers/test_rdflib_dumper.py @@ -394,6 +394,15 @@ def test_phenopackets(prefix_map): assert Literal(test_label) in list(g.objects(URIRef(expected_uri))), ( f"Expected label {test_label} for {expected_uri} in {ttl}" ) + # Predicates and type objects must be fully expanded URIs, not raw CURIEs. + # A raw CURIE like "base:label" as a predicate indicates that sub-schema + # prefixes were not loaded into the namespace cache before URI expansion. + for s, p, o in g: + assert "://" in str(p), f"Predicate {p!r} is not a full URI — sub-schema prefixes may not have been loaded" + if str(p) == str(RDF.type): + assert "://" in str(o), ( + f"rdf:type object {o!r} is not a full URI — sub-schema prefixes may not have been loaded" + ) pf = PhenotypicFeature(type=c) pkt = Phenopacket( id="id with spaces", @@ -411,6 +420,26 @@ def test_phenopackets(prefix_map): assert len(list(g.objects(resource_uri))) == 1 +def test_rdflib_phenopackets_roundtrip(): + """Round-trip a phenopackets OntologyClass through dump then load. + + Uses a fresh SchemaView for the load (cold namespace cache) to verify + that the loader also resolves sub-schema prefixes after imports_closure(). + """ + schema_path = str(INPUT_PATH / "phenopackets" / "phenopackets.yaml") + view = SchemaView(schema_path) + c = OntologyClass(id="HP:1", label="test label") + ttl = rdflib_dumper.dumps(c, view) + g = Graph() + g.parse(data=ttl, format="ttl") + view2 = SchemaView(schema_path) + objs = rdflib_loader.from_rdf_graph(g, target_class=OntologyClass, schemaview=view2) + assert len(objs) == 1 + loaded = objs[0] + assert loaded.id == "HP:1" + assert loaded.label == "test label" + + def test_rdf_output(issue_429_graph): """Test RDF output for issue 429.""" g = issue_429_graph @@ -424,13 +453,23 @@ def test_rdf_output(issue_429_graph): assert (ORCID["4567"], personinfo.phone, Literal("555-555-5555")) in g -def test_output_prefixes(): - """Test output prefixes for issue 429.""" - with open(str(OUT_429), encoding="UTF-8") as file: - file_string = file.read() - prefixes = ["prefix ORCID:", "prefix personinfo:", "prefix sdo:", "sdo:Person", "personinfo:age", "ORCID:1234"] - for prefix in prefixes: - assert prefix in file_string +def test_output_prefixes(issue_429_graph): + """Test output namespace binding for issue 429. + + Assertions use the graph object and namespace manager directly rather than + matching against the turtle serialisation string, so they are independent + of rdflib version, semweb_context prefix labels, and serialisation order. + """ + g = issue_429_graph + nm = g.namespace_manager + bound_prefixes = {pfx for pfx, _ in nm.namespaces()} + bound_uris = {str(ns) for _, ns in nm.namespaces()} + # Key prefix namespaces must be bound. + assert "ORCID" in bound_prefixes + assert "personinfo" in bound_prefixes + # http://schema.org/ may be serialised as sdo: or schema1: depending on the + # semweb_context version; check the URI rather than the label. + assert "http://schema.org/" in bound_uris def test_pydantic_model_dump(): diff --git a/tests/linkml_runtime/test_utils/input/mcc/creature_schema_remote.yaml b/tests/linkml_runtime/test_utils/input/mcc/creature_schema_remote.yaml index 833975cab2..72d528c3c8 100644 --- a/tests/linkml_runtime/test_utils/input/mcc/creature_schema_remote.yaml +++ b/tests/linkml_runtime/test_utils/input/mcc/creature_schema_remote.yaml @@ -5,6 +5,6 @@ description: | Schema for testing remote imports via a prefix. This produces yields exactly the same schema as creature_schema.yaml, but pulls in the files via remote import. prefixes: - mcc: https://github.com/linkml/linkml/raw/refs/heads/main/tests/linkml_runtime/test_utils/input/mcc/ + mcc: https://raw.githubusercontent.com/linkml/linkml/refs/heads/main/tests/linkml_runtime/test_utils/input/mcc/ imports: - mcc:creature_schema diff --git a/tests/linkml_runtime/test_utils/test_rdf_canonicalize.py b/tests/linkml_runtime/test_utils/test_rdf_canonicalize.py index 0251ddcb95..63dbf095a1 100644 --- a/tests/linkml_runtime/test_utils/test_rdf_canonicalize.py +++ b/tests/linkml_runtime/test_utils/test_rdf_canonicalize.py @@ -1,5 +1,6 @@ """Tests for deterministic RDF serialization via pyoxigraph RDFC-1.0.""" +import os import re import subprocess import sys @@ -259,7 +260,9 @@ def test_sort_is_load_bearing(): ) def run(seed: str) -> str: - env = {"PYTHONHASHSEED": seed, "PATH": "/usr/bin:/bin"} + # Inherit the real environment and vary only the hash seed. Replacing it + # wholesale drops SystemRoot on Windows, which breaks winsock init. + env = {**os.environ, "PYTHONHASHSEED": seed} result = subprocess.run( [sys.executable, "-c", program], check=True, @@ -487,7 +490,9 @@ def test_fallback_is_deterministic_across_processes(output_format): ) def run(seed: str) -> str: - env = {"PYTHONHASHSEED": seed, "PATH": "/usr/bin:/bin"} + # Inherit the real environment and vary only the hash seed. Replacing it + # wholesale drops SystemRoot on Windows, which breaks winsock init. + env = {**os.environ, "PYTHONHASHSEED": seed} result = subprocess.run( [sys.executable, "-c", program], check=True, diff --git a/tests/linkml_runtime/test_utils/test_schemaview.py b/tests/linkml_runtime/test_utils/test_schemaview.py index 9a2c018f01..0943ab558d 100644 --- a/tests/linkml_runtime/test_utils/test_schemaview.py +++ b/tests/linkml_runtime/test_utils/test_schemaview.py @@ -57,7 +57,7 @@ CREATURE_SCHEMA = "creature_schema" CREATURE_SCHEMA_BASE_URL = "https://github.com/linkml/linkml/tree/main/tests/linkml_runtime/test_utils/input/mcc" -CREATURE_SCHEMA_RAW_URL = "https://github.com/linkml/linkml/raw/refs/heads/main/tests/linkml_runtime/test_utils/input/mcc/creature_schema.yaml" +CREATURE_SCHEMA_RAW_URL = "https://raw.githubusercontent.com/linkml/linkml/refs/heads/main/tests/linkml_runtime/test_utils/input/mcc/creature_schema.yaml" CREATURE_SCHEMA_BASE_PATH = INPUT_DIR_PATH / "mcc" diff --git a/uv.lock b/uv.lock index 0fdfe8bb3e..aeb931aa1c 100644 --- a/uv.lock +++ b/uv.lock @@ -192,6 +192,99 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" }, ] +[[package]] +name = "backports-zstd" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/b5/5a873da082bd08acd6a497f7aae224e94a7c27fa8f24488089cc50a16c84/backports_zstd-1.6.0.tar.gz", hash = "sha256:80a7859ffe70bf239d7a2ce15293bdeb5b4280ff7dc326ffab312b0e254dbb24", size = 1000009, upload-time = "2026-06-14T10:50:58.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/8d/3f8e7a0fd319b3c0dbf0c4f751336309bb50a873b9185c2f5d228ff0d21b/backports_zstd-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:73000459db113a658c4fb0510100ef0e79137b5828bf957b7709aacae4eb1b87", size = 437068, upload-time = "2026-06-14T10:49:05.528Z" }, + { url = "https://files.pythonhosted.org/packages/db/14/4700047713a60131efcb3977a9892fab60bc9dd6634272550b8f1c5a427d/backports_zstd-1.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6e78d5e28f812b39f92397806ecddd4a6f3bf35531a8c039a1f187abc931af8", size = 363456, upload-time = "2026-06-14T10:49:07.154Z" }, + { url = "https://files.pythonhosted.org/packages/c4/34/92de2f1bd5ee29b24302c871b9f3c19155bf9478cd3af5a0dfd70fa2f483/backports_zstd-1.6.0-cp310-cp310-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:32f04d54ec1fdf3aa648b24a10b1c9234ed2046cc4af7a8850cbc236c05d42f3", size = 507392, upload-time = "2026-06-14T10:49:08.63Z" }, + { url = "https://files.pythonhosted.org/packages/5a/95/ed5b8b026c6df1a59681a73396f63cfd10e17ccfbc6315974745a8b7d834/backports_zstd-1.6.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83415af3c64550a56cc20b4cce59bbaa81f21d28466d7adf98feff011ecbc66d", size = 476957, upload-time = "2026-06-14T10:49:09.894Z" }, + { url = "https://files.pythonhosted.org/packages/5a/47/1a82ede48d9df99c8245cb38622cd1a9b388b34f89e1cb7b6650913b493d/backports_zstd-1.6.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a3c17e6a267d13de9cbf14bf2ebfa87e03d26692456fc67d2dbed9da4f479b18", size = 582618, upload-time = "2026-06-14T10:49:11.097Z" }, + { url = "https://files.pythonhosted.org/packages/6b/70/441ed36e230b0f66d7d49382c58249b540139c5b1aa096ace1ff00bd7873/backports_zstd-1.6.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:75578c71644b031118ce938855a53530708db7f4af6e83e2f8840d5a1de990f8", size = 642278, upload-time = "2026-06-14T10:49:12.545Z" }, + { url = "https://files.pythonhosted.org/packages/58/a3/8f5737bdb02576577a018c10a4c345a5b4b2e63cc3811baeecc054f71c00/backports_zstd-1.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a4ae7ed5a6d813450cc2d818284ea3db9721edcef50a56aae42ea06feec38c6e", size = 492492, upload-time = "2026-06-14T10:49:14.037Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a9/c086507f535c2466a25bf83a876666c9ccde07b17ce81680217ac17355fe/backports_zstd-1.6.0-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5e9a8370c8ed873083d5de956d6b2e60adbad31e52d7a11111c96ef01d1910ae", size = 566440, upload-time = "2026-06-14T10:49:15.483Z" }, + { url = "https://files.pythonhosted.org/packages/89/bb/778aaccb58c4d2fba3482438c0d33c6a3a413710ecdb2ee8559ff28632fc/backports_zstd-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2d1ccfe088e8279d605011a3575619a74526c261be357695b3258c0f636115a", size = 482894, upload-time = "2026-06-14T10:49:16.982Z" }, + { url = "https://files.pythonhosted.org/packages/3a/88/87ad188ce971c15bce933e13c4dc2939e741a9cb06a8bd692ef8614c3ed4/backports_zstd-1.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e73a550dbeb84e8fa50f8385f7735e9a4735b465851ef617d02f80ab10e44e7e", size = 510822, upload-time = "2026-06-14T10:49:18.274Z" }, + { url = "https://files.pythonhosted.org/packages/6e/8c/01714884a14b836abfdb1d80339acbb39515b0e92e615c4b65caf0eec257/backports_zstd-1.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:84f92e5a60a78c72ccda79d0417d311a1f6da18f446423ed411726d545bf7b56", size = 586941, upload-time = "2026-06-14T10:49:19.563Z" }, + { url = "https://files.pythonhosted.org/packages/63/43/e2cb44bbe3f7485d6ad8493211f0c8fffdb7e02fb94203fd968751d9fad7/backports_zstd-1.6.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:0eb4281f402b94d397b7482f6d9efd04c28274e4ed6eb57eb1f87bdd091a6a87", size = 564255, upload-time = "2026-06-14T10:49:20.968Z" }, + { url = "https://files.pythonhosted.org/packages/36/eb/eb0f00f6f7778db3710f757d77f5699c325548037dd975b52b186394125e/backports_zstd-1.6.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:d6b9b06323e3ba947c0003b2d70e02f33c90c36bc6262a92eb8201afc4a1aa08", size = 632836, upload-time = "2026-06-14T10:49:22.177Z" }, + { url = "https://files.pythonhosted.org/packages/ac/b8/5434897431de92e79ebfb2c02e1ab3cd228e92853b7ff981b2cffcce7355/backports_zstd-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8872a0e9f1af975966b5be6af7eebd3dc4046f15e470b719316516dc3d137cd6", size = 496501, upload-time = "2026-06-14T10:49:23.444Z" }, + { url = "https://files.pythonhosted.org/packages/db/76/754939c3914e9724e20a50b75b17fdc27aeb24d697eb61c3e93438a42920/backports_zstd-1.6.0-cp310-cp310-win32.whl", hash = "sha256:c14fa5dc39a804f1b92d63506f450eca5c59647a18d197d1a564b89dac1be1ce", size = 291527, upload-time = "2026-06-14T10:49:24.568Z" }, + { url = "https://files.pythonhosted.org/packages/84/f1/adcebdc2caa2e3d3d496ac2501f0ada49ad2942ee36e5f88a944bca9ca92/backports_zstd-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:8219d6fceae6b39535c4ac323dba0923d10f781d59962ff3504e693fdcafa92c", size = 329024, upload-time = "2026-06-14T10:49:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/74/10/12edc0b401a08aba157b9d331748ac0f0e9890af0a58a9c72425063d1450/backports_zstd-1.6.0-cp310-cp310-win_arm64.whl", hash = "sha256:b7bc9a0b66097f03820a54316d2fdd0beb38859cf98f10d63e94c55450ed8920", size = 291597, upload-time = "2026-06-14T10:49:27.156Z" }, + { url = "https://files.pythonhosted.org/packages/c5/90/428dd82228b1b6d62d5a1bf312c29e6c125af6a182fcfd82768ca179dcc7/backports_zstd-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c4fc41b2df5529cad5ceb230319e82728096d4b353ce8d4df68a2ec37e291bb8", size = 437067, upload-time = "2026-06-14T10:49:28.335Z" }, + { url = "https://files.pythonhosted.org/packages/ef/48/768edf21fe33bae8d874470b1be136681d4d32eb820a32e1c98262ebe39b/backports_zstd-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:83391ef5935cc0f329b1abca414ae20ffe40d335fc21a4b5e664f08a74317d5f", size = 363454, upload-time = "2026-06-14T10:49:29.784Z" }, + { url = "https://files.pythonhosted.org/packages/29/8a/d462c2e5071eb573378f0d26760f6590613086fdf59c2d3c66bdfffb9f41/backports_zstd-1.6.0-cp311-cp311-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:7d3f64c503af7b60115b97c16feaf75bd191ef2c978d5c0c7725a6682bef63c5", size = 507393, upload-time = "2026-06-14T10:49:31.077Z" }, + { url = "https://files.pythonhosted.org/packages/b9/cb/af58363b0dd0b497282ecef1fa99789b03cc1885a01a41394cad42ceeff6/backports_zstd-1.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0308990ffc998df3c7ed35276bde049728b5c3956203cae40d80893576a41459", size = 476957, upload-time = "2026-06-14T10:49:32.53Z" }, + { url = "https://files.pythonhosted.org/packages/e4/fd/5fbdf2275cefae95c4b3509f6db2dc372d0587ebafea342d28781d51d932/backports_zstd-1.6.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8c298785e2fadeab82342040f2d9ce764ce500e6da6a6d99a2de514e63580b5a", size = 582618, upload-time = "2026-06-14T10:49:33.723Z" }, + { url = "https://files.pythonhosted.org/packages/99/6f/7dd45c53c907ea67f635c3900b58bb3347c01dc2ded441402028aae0ef9c/backports_zstd-1.6.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ae106fe16e36efc60ab098d02478d30aa0e31e1420eb4ecf0116459253bc6361", size = 642279, upload-time = "2026-06-14T10:49:34.938Z" }, + { url = "https://files.pythonhosted.org/packages/4d/25/a9e37dd035027565fa0b7e367da50e88a6ab26e7fd413269aa118e25258b/backports_zstd-1.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7293fefe15f0e5852bdb4ad1e0e26f3cbd4d3e61c19f751ecc4ff34bc1eb237d", size = 492486, upload-time = "2026-06-14T10:49:36.06Z" }, + { url = "https://files.pythonhosted.org/packages/a1/52/659686bf8f7c53ea279e1c44038504b82a6901cee2f5ae83c30bbf581301/backports_zstd-1.6.0-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ece8e7288db5b827ef8c64b2f78519f1a173a8991a625978fce02eccd7654fe9", size = 566440, upload-time = "2026-06-14T10:49:37.536Z" }, + { url = "https://files.pythonhosted.org/packages/d9/1a/c7ea5a0ff607a1a6066bb7c7cb65ae20e2f85da6adc69ab77fd8943e180c/backports_zstd-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:28eef3881164f3c23ce58ed59e4684103bdd279583eb2d299858c9e9b72fde9a", size = 482899, upload-time = "2026-06-14T10:49:38.805Z" }, + { url = "https://files.pythonhosted.org/packages/83/48/bd2b91100ee4fe6bb4d816e3659cbbb0cda5dd32760d2379c54d1752ec25/backports_zstd-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:481a1e9bd8f419fdc625307aa20234687f99368c75df511ef589693c5fea4c6f", size = 510826, upload-time = "2026-06-14T10:49:40.062Z" }, + { url = "https://files.pythonhosted.org/packages/25/fe/fa28509d7ce2ad59404e7ce738a2fd858e12dfd9a896629f10330222a7fb/backports_zstd-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3b6713371f8987a1178df93cb36f29eef191f224021e2d656b2f11ce60d26816", size = 586941, upload-time = "2026-06-14T10:49:41.305Z" }, + { url = "https://files.pythonhosted.org/packages/45/28/757daf2399aa71bb37f9f7f48b42ab03fc51c340eccfad2fec92a23f6aa3/backports_zstd-1.6.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:b0ddbcd2866b8ff1a2836e4b0e4d44788f5b992d83fac75a38cda8f9a2bee079", size = 564261, upload-time = "2026-06-14T10:49:42.49Z" }, + { url = "https://files.pythonhosted.org/packages/4e/53/9b9db30cb2c148a69c40ad7647aa787338041f3dc81c5b22113286e590e9/backports_zstd-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2914abea516704bdafb2090acd3f15b5f9debecfabd15b8dd8285b2ad3b92209", size = 632869, upload-time = "2026-06-14T10:49:43.981Z" }, + { url = "https://files.pythonhosted.org/packages/81/a4/1692fbb88af8aaf900a53619fcc95c9e45d9ff162223a47fd672a9893c8d/backports_zstd-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dd085eafa2aac6f883afd28210a3231f717f25409a1e44a39bb7b04c8c5b5646", size = 496496, upload-time = "2026-06-14T10:49:45.118Z" }, + { url = "https://files.pythonhosted.org/packages/93/42/c5a66c47320bd12ce84a7341330ea582d67069bdb70214bca0b6bf394cfd/backports_zstd-1.6.0-cp311-cp311-win32.whl", hash = "sha256:b81b4cf3d6e0ad7ac92bef248f49fafc954262c5fb0f7e19d6aac497e5a856b2", size = 291613, upload-time = "2026-06-14T10:49:46.473Z" }, + { url = "https://files.pythonhosted.org/packages/2a/f2/f22c19b4cdde429805ff5ac8dd77a95569a7c4cb8991741b2ff0d538f220/backports_zstd-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:10b61850c4112952e05aa6e6cce8c9a5936fbeadb321e154216705cc76a14afa", size = 329078, upload-time = "2026-06-14T10:49:47.71Z" }, + { url = "https://files.pythonhosted.org/packages/ef/dc/e902a3f1eb92c4907b5f47f90cb3c2734ee315c4ff67179fc111343b45ba/backports_zstd-1.6.0-cp311-cp311-win_arm64.whl", hash = "sha256:068ef3d8c18815a2e3a752f766313e19910e7c50939b956923748d9c04ebcb1b", size = 291727, upload-time = "2026-06-14T10:49:48.929Z" }, + { url = "https://files.pythonhosted.org/packages/1e/bb/009af3a9532d4cc66d5385391c512210fae32ab2442605f26aca1d8d2957/backports_zstd-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0466b14723f3b7697669c00ee66fe16e30e25636b286b0a923fa86fa3d8a753c", size = 437407, upload-time = "2026-06-14T10:49:50.155Z" }, + { url = "https://files.pythonhosted.org/packages/0c/76/f7c02efde81ebb9993586f9e435d2fd1191a6f806f640e4eeb8d004493ed/backports_zstd-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d146926e997d2d3de8212bdcbf4985344a2622ca3bec458d8908000a84fd883", size = 363519, upload-time = "2026-06-14T10:49:51.383Z" }, + { url = "https://files.pythonhosted.org/packages/2e/5e/0cf66f12472fe3e082cc4134395a7e0b8746cfb30aabd74251ce8fafa9a7/backports_zstd-1.6.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:460fd6b3f338c659507ae36cfd6b58ac9942a2ff233c5cf574416dfec0451a84", size = 507756, upload-time = "2026-06-14T10:49:52.497Z" }, + { url = "https://files.pythonhosted.org/packages/03/95/7ed25c90369360f96f8bfa961540845e063377c32a43b775201af66a588c/backports_zstd-1.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c2b1f4a640c51130caa92cef5bf72bd3c3dbbcfbf814c37403aa0601b1811b0", size = 477578, upload-time = "2026-06-14T10:49:53.887Z" }, + { url = "https://files.pythonhosted.org/packages/e3/75/f16b1d3e33ca396525847c81d96e3de7bc74d2c6f9ca2ddee76b0c450697/backports_zstd-1.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:beb43e9885202c8d4f3762319ed4d5e98e197622afbff8439fbbdd81d08938b9", size = 583029, upload-time = "2026-06-14T10:49:55.132Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2b/a17b111b631e1c79a0e570881c1a266c661b936585afa395435a458b1991/backports_zstd-1.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fbb746522ebfc11155f1cd688e2c48ef3d74125e38b63eabdaab068a055c3e88", size = 641741, upload-time = "2026-06-14T10:49:56.42Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b2/d17b2722c636d64b4e77ddc68d8d0625719d39f94021be8719a218af4c0a/backports_zstd-1.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a99710fbb225d459d66def4dc2bb2cd4a9a0bdc8b799fc0621cfdd863be9c93", size = 495554, upload-time = "2026-06-14T10:49:57.652Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/2853e8b6c03f03795b6548ea61f82cc104d4f7ff2523a04bc69f46984663/backports_zstd-1.6.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f69365ee2b836939137de024a302395a1cb8654fb6dc5ffef6381105259c8f87", size = 570027, upload-time = "2026-06-14T10:49:59.003Z" }, + { url = "https://files.pythonhosted.org/packages/18/aa/83f37b81f3b8c6ea035bf260ec374648bd59372894c02323dc9de3cbdf77/backports_zstd-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:66cf8038893c7708ec345ffb3ac63c775d10f430f323ac2f0334fdb6a397c57c", size = 483594, upload-time = "2026-06-14T10:50:00.49Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6a/d77f8cd2ff642d3b3652c1ccab5b6583114dbf10f8cb0143531357c83998/backports_zstd-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e514c71ca72f3b56bd8fbda1a6a5b7d1100a2764b42a3c74a38841f25f9b00ab", size = 511206, upload-time = "2026-06-14T10:50:01.86Z" }, + { url = "https://files.pythonhosted.org/packages/56/b2/99a60fe4d1aac8053769d2463271d5df37a7c11c387072fdbb0b16aed7f7/backports_zstd-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7741e44f7938ec94f9a52678c8d19b7bc548522ffdc39c9e4481af8db545fa9a", size = 587416, upload-time = "2026-06-14T10:50:03.236Z" }, + { url = "https://files.pythonhosted.org/packages/ec/1e/a9c003fe4d14bd4bf671598d4c7dcc1cef51e3513d9d7111ba1d07b6f07b/backports_zstd-1.6.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:97e8a9674652496c7612b528085dd5a296c052a2edc466ca1bfb7b0b27820413", size = 567615, upload-time = "2026-06-14T10:50:04.524Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b9/955bd604f692c550c7cb66d00bd7691ead5c86df8ebd23d7254eeaa90789/backports_zstd-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:23a793f2fed4dbf0517319759a2cded0b0dd8e8d3797fe30badd5693e320c175", size = 632269, upload-time = "2026-06-14T10:50:05.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/d7/9f61f612f8a4193484c78a1f26db82a50141234189885113ef0085a8a961/backports_zstd-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b951113113ed4b8d173418a4f155c14b739dace626b3fa3f82be1831958d39e4", size = 500066, upload-time = "2026-06-14T10:50:07.446Z" }, + { url = "https://files.pythonhosted.org/packages/81/a3/19fb8c48d94139481c5ccaf2fb54c31b543fa635fd7bd7399aadd15752ac/backports_zstd-1.6.0-cp312-cp312-win32.whl", hash = "sha256:6430b34a2ae6fcc604672f4f913102563473d9a015bdca1ce8c95041cc1f2677", size = 291825, upload-time = "2026-06-14T10:50:08.762Z" }, + { url = "https://files.pythonhosted.org/packages/58/38/40ba081c6c71f0f22c64d3d54b912ad75a4e6812caa1397cbb15b5693b12/backports_zstd-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:08793876172551a930ce4d65c712cd516184d1a97070d4a1193e05bf0cf7040d", size = 329201, upload-time = "2026-06-14T10:50:09.979Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6c/f7116dd2edc6f960545f0d8616939eae3a20031b3b6669697d4f9fd83b2e/backports_zstd-1.6.0-cp312-cp312-win_arm64.whl", hash = "sha256:03b7c59c71f7a597e2bcb3f8368371e9a660a1bdf1c37afc1f1ad1496a013c19", size = 291901, upload-time = "2026-06-14T10:50:11.198Z" }, + { url = "https://files.pythonhosted.org/packages/38/06/c430537d59c55d49bcd15ecf4b1aa965453219caad810a4f2b484816f4be/backports_zstd-1.6.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:2ace939e4d620e119423606f2d3d7115f8707733bf57f279ad9a9383f875986f", size = 400327, upload-time = "2026-06-14T10:50:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/36/48/2f8323bb0e3ebba88b54877a2979afeb83983fb2ca572f09ad61aae2d3a0/backports_zstd-1.6.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:4c68a9ed2df0cca51d774c521e68a34d2e3d9ebfc687ef8096adfd4f345b551d", size = 454276, upload-time = "2026-06-14T10:50:13.667Z" }, + { url = "https://files.pythonhosted.org/packages/7c/39/87a665244a65f5b87a06b848c29a8cce07e91d59c5988ee2a32c0293a21c/backports_zstd-1.6.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:30576f49b82328ec8af16c11100efe52ca88526f71bbe100ef6b4e707dc13bf2", size = 357457, upload-time = "2026-06-14T10:50:14.906Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8b/854d4a47bb8b7a48bfb2ed381c7b03a70efb4fc49f0e4a1509b38a2e1727/backports_zstd-1.6.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:b4bddfcfb6679215d6f4dc5f79a1f9301af339480d70527a14b57a1f2e6b6cbf", size = 366139, upload-time = "2026-06-14T10:50:16.399Z" }, + { url = "https://files.pythonhosted.org/packages/8f/de/c3af43eb8df6f2581e157e18a3e0121eadb826055b2fde3f91ec188689cb/backports_zstd-1.6.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:65048ed08c5124f05ff9f355ab9703014bb2dbe7f8d9948ce193685b1775f442", size = 446683, upload-time = "2026-06-14T10:50:17.633Z" }, + { url = "https://files.pythonhosted.org/packages/5c/39/87cf3d883d386c10ac52f5322604fb9afdd204229f4c47d4a820a839b8ff/backports_zstd-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5918fc6b31437208721276964323933cd86077b8d5b469c59c1b3fd2c8220a05", size = 436869, upload-time = "2026-06-14T10:50:19.113Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b6/9479e6f0f18824ad38e8d7dd85161ab0842a198be669421232925bb30960/backports_zstd-1.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4b6c8b02ab0ccb2431bb7bc238be91d158b308915e7b07937388e540466fe7e7", size = 363090, upload-time = "2026-06-14T10:50:20.302Z" }, + { url = "https://files.pythonhosted.org/packages/d9/74/a5e98fe108e17c91d9bc590a19e77f5d47d579e34d3f5bc098a949d6c27c/backports_zstd-1.6.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:711e6b98f8924e8b4a61ff97ab6321f33de024e1ed6a32f5123763aeda8459be", size = 507070, upload-time = "2026-06-14T10:50:21.536Z" }, + { url = "https://files.pythonhosted.org/packages/69/f5/392bb7dce7363b77bc5403060f418fad438b9cfdd3edd10d65cee7d8fd11/backports_zstd-1.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2ba9ac10fc393e5123a08802e0e895a107cb4a66b9973d2844dbd8a343111e59", size = 477200, upload-time = "2026-06-14T10:50:22.91Z" }, + { url = "https://files.pythonhosted.org/packages/e4/4d/dfb665806ba4f74bc48071d32006843b53568c4a17ff627a3061de5eaa09/backports_zstd-1.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2f723219335387d7546412d8141e0303590600949b4184a1391a0c6a3c756058", size = 582724, upload-time = "2026-06-14T10:50:24.28Z" }, + { url = "https://files.pythonhosted.org/packages/57/b2/beeca7393a8310debd82ee2f0ce5c1801e8d7cb673f7f226f4a0866ca238/backports_zstd-1.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:64b94d7a836568926a3309ff510c7f8261b881b341fd4992cabf4f0998878f8a", size = 643493, upload-time = "2026-06-14T10:50:25.736Z" }, + { url = "https://files.pythonhosted.org/packages/38/26/ce90e9eed6f25aaa4a4fa305a2aaf2d2ad81fd69de8eb248ddd91c80d1e0/backports_zstd-1.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e39258a09b1c7ca70b5e94a5c5ccfe4700b4250b8077cfeab31d0f79565d4c9b", size = 492190, upload-time = "2026-06-14T10:50:27.205Z" }, + { url = "https://files.pythonhosted.org/packages/17/9b/37b9b146df1f5452419a96071a7017cbac212ec9b137d7a88ca46dc2aa9e/backports_zstd-1.6.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:15b1aae0f64cd742df4bba1d989d0a09a6ec619202543fdba684640454541fd3", size = 567432, upload-time = "2026-06-14T10:50:28.386Z" }, + { url = "https://files.pythonhosted.org/packages/06/66/81b30991be83237529f36335ac3682bce26409064b906ac6122874575196/backports_zstd-1.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:25b5ddc789480072551af571a746e9500356b2aff0499861cf2ca07ea7431e68", size = 483021, upload-time = "2026-06-14T10:50:29.654Z" }, + { url = "https://files.pythonhosted.org/packages/49/2a/792c65dcc1e45eb0c1bdc012ee94b84867186bfe27a860d0813bd216f03b/backports_zstd-1.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a13cfa3410a75e4cb87abdb669aaf79da861cb79299159054ff8f77b9671bc40", size = 510596, upload-time = "2026-06-14T10:50:31.657Z" }, + { url = "https://files.pythonhosted.org/packages/1d/22/01b92a600505620e4cb5f20429e181f30458b7207ca8b52ca5ca6068c35f/backports_zstd-1.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2ddab55a5f54dec8acfad68ef70f1c704fd21919990ddc238afbd6f496e61c6a", size = 587143, upload-time = "2026-06-14T10:50:32.868Z" }, + { url = "https://files.pythonhosted.org/packages/d8/60/4672f5110b9eb01388cc6225a739e3a5fcd749a63a9c4c1450a04fa27113/backports_zstd-1.6.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fa305a84087e10d7a85e8a8a3dcba8cdbda4868f2180173b264b7b488fd37c55", size = 565238, upload-time = "2026-06-14T10:50:34.173Z" }, + { url = "https://files.pythonhosted.org/packages/5c/3b/19928d60ea7d25820bf12ef88de74534ca85b56ff7cf13c1b0e74e3a3d7c/backports_zstd-1.6.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:df27b57d214a3124fbe4e933ef5a903d4567f154260d9aece8c797a987f2a205", size = 633970, upload-time = "2026-06-14T10:50:35.506Z" }, + { url = "https://files.pythonhosted.org/packages/df/97/c4cecb3e0ff53563ef9819f0395d919ceaae9c5147392ac23bac7afdb20f/backports_zstd-1.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28fecd73459d74910ae1987ab84b7bef690d3dd860948430dd5555108b006daf", size = 496539, upload-time = "2026-06-14T10:50:37.015Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f4/46b2f29d2938a80e56e61a19f11ab093f531a9f8cd0ec8eeaac1246bcd99/backports_zstd-1.6.0-cp313-cp313-win32.whl", hash = "sha256:3e689af303df287142770abe3a48bbefd24dab4a09da5807d0e1fa8c75bab026", size = 291451, upload-time = "2026-06-14T10:50:38.518Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ad/b529f92166da61f496621345f95d2dc583c8ca5ac553c084a4ef6c12cd71/backports_zstd-1.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:b067b1ef9c8e41fb0882c828aa37829938b5c0dab067eca72b23fc24c563b9da", size = 329023, upload-time = "2026-06-14T10:50:39.742Z" }, + { url = "https://files.pythonhosted.org/packages/30/d8/6be904d20345fbebec583ca83676e01f30c76118b283eb666d8ec8291ca1/backports_zstd-1.6.0-cp313-cp313-win_arm64.whl", hash = "sha256:a838296f5b84c920172fb579cac894d255c1fc25457c7234613ddcfa385e49b7", size = 291636, upload-time = "2026-06-14T10:50:41.004Z" }, + { url = "https://files.pythonhosted.org/packages/f7/52/9ed88f528b9484f3847f07b9d1d014b496e048d391b4bc04cb0117bd71a5/backports_zstd-1.6.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6c73ae37dbf9207727ac095dedef864c05d836eaec962a47b3b64eaadaf1c6b6", size = 411126, upload-time = "2026-06-14T10:50:42.253Z" }, + { url = "https://files.pythonhosted.org/packages/fe/26/bf8093d117cb6c36202ee7a2127f672c7b0c81f0c104ce28124534b75efa/backports_zstd-1.6.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:839faf90a7eb525a401978dc925df8c44bd12526e8ba1529b9f8a7106e729637", size = 340643, upload-time = "2026-06-14T10:50:43.571Z" }, + { url = "https://files.pythonhosted.org/packages/17/10/55f0860ed359d290e0eadd410da47ae720a1acf0d8362149e22acbe63223/backports_zstd-1.6.0-pp310-pypy310_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:f8f5c1c7c69a4b00889e52d9304a918a5b49010f9645768eb5fd0ad404f790ba", size = 421696, upload-time = "2026-06-14T10:50:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3e/8dd9cc6f3e697e4721e53d6b9ca8c95c9d51ad2e759e7fcee6885e5b71db/backports_zstd-1.6.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e80bceebc9b58e959bede9b26cafe15b5b9526f3533a6dd06330c5da73cb9329", size = 395239, upload-time = "2026-06-14T10:50:46.186Z" }, + { url = "https://files.pythonhosted.org/packages/fb/bb/ab92f8599749cb6063416dd9f46e084004c4e8db68e2eb768283012a6d27/backports_zstd-1.6.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:79284c1dd702f4f24ed1a36e51555c907dd237b6c0d829595978f4089a2aeea9", size = 415202, upload-time = "2026-06-14T10:50:47.726Z" }, + { url = "https://files.pythonhosted.org/packages/2c/f4/dd3ef995f6b22e23da145ac3ecc91e1f1fc4cb572b7f95e6b2b11de16782/backports_zstd-1.6.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1e20b3ecd0a711be82e964aca28554eabbc31ee69a20e5e7b8fd42268af46212", size = 315722, upload-time = "2026-06-14T10:50:49Z" }, + { url = "https://files.pythonhosted.org/packages/e8/09/898fe2f8196fa7ab825f5fed786c68581fdac7d23a8e20baa0cc01cb2f0b/backports_zstd-1.6.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:aeef8563b82ed4af328f98e5041c1b4800d86f68f857ffd1577d4d47dc9aa6cd", size = 411023, upload-time = "2026-06-14T10:50:50.286Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ad/6ad9af1596ab5f284bb53954be41396e13d23c81cdfe3d945402e8ee0215/backports_zstd-1.6.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9cb75e33131946fabd6319061df3b8b1d588fe0963183280e9b5f49f7772fc09", size = 340554, upload-time = "2026-06-14T10:50:51.523Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/f083d7c8a4ee5d0bb21b4d3144e76de9f655ca4dd0bffcb95baa5bc47a62/backports_zstd-1.6.0-pp311-pypy311_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:ef132cfb638e9a86bd5dc07fb4e1cb895bc55bce6bb5e759366e8b160d0747e2", size = 421694, upload-time = "2026-06-14T10:50:52.917Z" }, + { url = "https://files.pythonhosted.org/packages/41/d7/693b20f3ccae2e05d166f98fe55b1657451170b72c804ed9f6b98df520be/backports_zstd-1.6.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab70eace272d6f122b121c057e436709b50a28abf30d97aab28433c08f4a4095", size = 395237, upload-time = "2026-06-14T10:50:54.448Z" }, + { url = "https://files.pythonhosted.org/packages/53/a1/484e0f9ec994bd2285d6747e7c8028350f1a177e9210bc57637898042d3b/backports_zstd-1.6.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:17efb3d11137de5166dd51eedab9c36ad633402acba386eee8d715213ea47e49", size = 415201, upload-time = "2026-06-14T10:50:55.854Z" }, + { url = "https://files.pythonhosted.org/packages/3c/56/70860ece85cd49b564305cbc22bf6c4183975427ff6dfe2097e855f5dd5e/backports_zstd-1.6.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:994167ff6551b9c1ce226e0aab16295b98c94507b5701aa60d2c32b7d50796b1", size = 315721, upload-time = "2026-06-14T10:50:57.074Z" }, +] + [[package]] name = "beautifulsoup4" version = "4.14.2" @@ -216,7 +309,7 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, { name = "pytokens" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c0/37/5628dd55bf2b34257fc7603f0fe97c40e3aaf24265f416a9c85c95ca1436/black-26.5.1.tar.gz", hash = "sha256:dd321f668053961824bcc1be1cc1df748b2d7e4fa28086b08331e577b0100a73", size = 679439, upload-time = "2026-05-18T16:53:36.107Z" } @@ -268,11 +361,11 @@ css = [ [[package]] name = "cachetools" -version = "6.2.1" +version = "7.1.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/7e/b975b5814bd36faf009faebe22c1072a1fa1168db34d285ef0ba071ad78c/cachetools-6.2.1.tar.gz", hash = "sha256:3f391e4bd8f8bf0931169baf7456cc822705f4e2a31f840d218f445b9a854201", size = 31325, upload-time = "2025-10-12T14:55:30.139Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/af/861ebc2e318a5c3300e3eb63bc4d30f3d70a46d13b360093728ac0705eed/cachetools-7.1.6.tar.gz", hash = "sha256:c7a79e7f30ba9943c1cefd08cc36f006aaae086e017af9166f1d59d6170c47e1", size = 40572, upload-time = "2026-07-23T22:47:53.737Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/c5/1e741d26306c42e2bf6ab740b2202872727e0f606033c9dd713f8b93f5a8/cachetools-6.2.1-py3-none-any.whl", hash = "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701", size = 11280, upload-time = "2025-10-12T14:55:28.382Z" }, + { url = "https://files.pythonhosted.org/packages/9f/f2/2086ba18a925a73586c4d4e61d25f4a6058e56fd00d77ce8f1d361ab4c9b/cachetools-7.1.6-py3-none-any.whl", hash = "sha256:2c12e255780330af28b91bb7fb96cce4c766f04e38396b9a24510190a5827096", size = 16954, upload-time = "2026-07-23T22:47:52.397Z" }, ] [[package]] @@ -559,7 +652,7 @@ resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } wheels = [ @@ -632,7 +725,7 @@ resolution-markers = [ "python_full_version == '3.11.*'", ] dependencies = [ - { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } wheels = [ @@ -711,176 +804,207 @@ wheels = [ [[package]] name = "coverage" -version = "7.11.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/38/ee22495420457259d2f3390309505ea98f98a5eed40901cf62196abad006/coverage-7.11.0.tar.gz", hash = "sha256:167bd504ac1ca2af7ff3b81d245dfea0292c5032ebef9d66cc08a7d28c1b8050", size = 811905, upload-time = "2025-10-15T15:15:08.542Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/95/c49df0aceb5507a80b9fe5172d3d39bf23f05be40c23c8d77d556df96cec/coverage-7.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eb53f1e8adeeb2e78962bade0c08bfdc461853c7969706ed901821e009b35e31", size = 215800, upload-time = "2025-10-15T15:12:19.824Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c6/7bb46ce01ed634fff1d7bb53a54049f539971862cc388b304ff3c51b4f66/coverage-7.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d9a03ec6cb9f40a5c360f138b88266fd8f58408d71e89f536b4f91d85721d075", size = 216198, upload-time = "2025-10-15T15:12:22.549Z" }, - { url = "https://files.pythonhosted.org/packages/94/b2/75d9d8fbf2900268aca5de29cd0a0fe671b0f69ef88be16767cc3c828b85/coverage-7.11.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0d7f0616c557cbc3d1c2090334eddcbb70e1ae3a40b07222d62b3aa47f608fab", size = 242953, upload-time = "2025-10-15T15:12:24.139Z" }, - { url = "https://files.pythonhosted.org/packages/65/ac/acaa984c18f440170525a8743eb4b6c960ace2dbad80dc22056a437fc3c6/coverage-7.11.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e44a86a47bbdf83b0a3ea4d7df5410d6b1a0de984fbd805fa5101f3624b9abe0", size = 244766, upload-time = "2025-10-15T15:12:25.974Z" }, - { url = "https://files.pythonhosted.org/packages/d8/0d/938d0bff76dfa4a6b228c3fc4b3e1c0e2ad4aa6200c141fcda2bd1170227/coverage-7.11.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:596763d2f9a0ee7eec6e643e29660def2eef297e1de0d334c78c08706f1cb785", size = 246625, upload-time = "2025-10-15T15:12:27.387Z" }, - { url = "https://files.pythonhosted.org/packages/38/54/8f5f5e84bfa268df98f46b2cb396b1009734cfb1e5d6adb663d284893b32/coverage-7.11.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ef55537ff511b5e0a43edb4c50a7bf7ba1c3eea20b4f49b1490f1e8e0e42c591", size = 243568, upload-time = "2025-10-15T15:12:28.799Z" }, - { url = "https://files.pythonhosted.org/packages/68/30/8ba337c2877fe3f2e1af0ed7ff4be0c0c4aca44d6f4007040f3ca2255e99/coverage-7.11.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cbabd8f4d0d3dc571d77ae5bdbfa6afe5061e679a9d74b6797c48d143307088", size = 244665, upload-time = "2025-10-15T15:12:30.297Z" }, - { url = "https://files.pythonhosted.org/packages/cc/fb/c6f1d6d9a665536b7dde2333346f0cc41dc6a60bd1ffc10cd5c33e7eb000/coverage-7.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e24045453384e0ae2a587d562df2a04d852672eb63051d16096d3f08aa4c7c2f", size = 242681, upload-time = "2025-10-15T15:12:32.326Z" }, - { url = "https://files.pythonhosted.org/packages/be/38/1b532319af5f991fa153c20373291dc65c2bf532af7dbcffdeef745c8f79/coverage-7.11.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:7161edd3426c8d19bdccde7d49e6f27f748f3c31cc350c5de7c633fea445d866", size = 242912, upload-time = "2025-10-15T15:12:34.079Z" }, - { url = "https://files.pythonhosted.org/packages/67/3d/f39331c60ef6050d2a861dc1b514fa78f85f792820b68e8c04196ad733d6/coverage-7.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d4ed4de17e692ba6415b0587bc7f12bc80915031fc9db46a23ce70fc88c9841", size = 243559, upload-time = "2025-10-15T15:12:35.809Z" }, - { url = "https://files.pythonhosted.org/packages/4b/55/cb7c9df9d0495036ce582a8a2958d50c23cd73f84a23284bc23bd4711a6f/coverage-7.11.0-cp310-cp310-win32.whl", hash = "sha256:765c0bc8fe46f48e341ef737c91c715bd2a53a12792592296a095f0c237e09cf", size = 218266, upload-time = "2025-10-15T15:12:37.429Z" }, - { url = "https://files.pythonhosted.org/packages/68/a8/b79cb275fa7bd0208767f89d57a1b5f6ba830813875738599741b97c2e04/coverage-7.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:24d6f3128f1b2d20d84b24f4074475457faedc3d4613a7e66b5e769939c7d969", size = 219169, upload-time = "2025-10-15T15:12:39.25Z" }, - { url = "https://files.pythonhosted.org/packages/49/3a/ee1074c15c408ddddddb1db7dd904f6b81bc524e01f5a1c5920e13dbde23/coverage-7.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d58ecaa865c5b9fa56e35efc51d1014d4c0d22838815b9fce57a27dd9576847", size = 215912, upload-time = "2025-10-15T15:12:40.665Z" }, - { url = "https://files.pythonhosted.org/packages/70/c4/9f44bebe5cb15f31608597b037d78799cc5f450044465bcd1ae8cb222fe1/coverage-7.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b679e171f1c104a5668550ada700e3c4937110dbdd153b7ef9055c4f1a1ee3cc", size = 216310, upload-time = "2025-10-15T15:12:42.461Z" }, - { url = "https://files.pythonhosted.org/packages/42/01/5e06077cfef92d8af926bdd86b84fb28bf9bc6ad27343d68be9b501d89f2/coverage-7.11.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ca61691ba8c5b6797deb221a0d09d7470364733ea9c69425a640f1f01b7c5bf0", size = 246706, upload-time = "2025-10-15T15:12:44.001Z" }, - { url = "https://files.pythonhosted.org/packages/40/b8/7a3f1f33b35cc4a6c37e759137533119560d06c0cc14753d1a803be0cd4a/coverage-7.11.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:aef1747ede4bd8ca9cfc04cc3011516500c6891f1b33a94add3253f6f876b7b7", size = 248634, upload-time = "2025-10-15T15:12:45.768Z" }, - { url = "https://files.pythonhosted.org/packages/7a/41/7f987eb33de386bc4c665ab0bf98d15fcf203369d6aacae74f5dd8ec489a/coverage-7.11.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1839d08406e4cba2953dcc0ffb312252f14d7c4c96919f70167611f4dee2623", size = 250741, upload-time = "2025-10-15T15:12:47.222Z" }, - { url = "https://files.pythonhosted.org/packages/23/c1/a4e0ca6a4e83069fb8216b49b30a7352061ca0cb38654bd2dc96b7b3b7da/coverage-7.11.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e0eb0a2dcc62478eb5b4cbb80b97bdee852d7e280b90e81f11b407d0b81c4287", size = 246837, upload-time = "2025-10-15T15:12:48.904Z" }, - { url = "https://files.pythonhosted.org/packages/5d/03/ced062a17f7c38b4728ff76c3acb40d8465634b20b4833cdb3cc3a74e115/coverage-7.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bc1fbea96343b53f65d5351d8fd3b34fd415a2670d7c300b06d3e14a5af4f552", size = 248429, upload-time = "2025-10-15T15:12:50.73Z" }, - { url = "https://files.pythonhosted.org/packages/97/af/a7c6f194bb8c5a2705ae019036b8fe7f49ea818d638eedb15fdb7bed227c/coverage-7.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:214b622259dd0cf435f10241f1333d32caa64dbc27f8790ab693428a141723de", size = 246490, upload-time = "2025-10-15T15:12:52.646Z" }, - { url = "https://files.pythonhosted.org/packages/ab/c3/aab4df02b04a8fde79068c3c41ad7a622b0ef2b12e1ed154da986a727c3f/coverage-7.11.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:258d9967520cca899695d4eb7ea38be03f06951d6ca2f21fb48b1235f791e601", size = 246208, upload-time = "2025-10-15T15:12:54.586Z" }, - { url = "https://files.pythonhosted.org/packages/30/d8/e282ec19cd658238d60ed404f99ef2e45eed52e81b866ab1518c0d4163cf/coverage-7.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cf9e6ff4ca908ca15c157c409d608da77a56a09877b97c889b98fb2c32b6465e", size = 247126, upload-time = "2025-10-15T15:12:56.485Z" }, - { url = "https://files.pythonhosted.org/packages/d1/17/a635fa07fac23adb1a5451ec756216768c2767efaed2e4331710342a3399/coverage-7.11.0-cp311-cp311-win32.whl", hash = "sha256:fcc15fc462707b0680cff6242c48625da7f9a16a28a41bb8fd7a4280920e676c", size = 218314, upload-time = "2025-10-15T15:12:58.365Z" }, - { url = "https://files.pythonhosted.org/packages/2a/29/2ac1dfcdd4ab9a70026edc8d715ece9b4be9a1653075c658ee6f271f394d/coverage-7.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:865965bf955d92790f1facd64fe7ff73551bd2c1e7e6b26443934e9701ba30b9", size = 219203, upload-time = "2025-10-15T15:12:59.902Z" }, - { url = "https://files.pythonhosted.org/packages/03/21/5ce8b3a0133179115af4c041abf2ee652395837cb896614beb8ce8ddcfd9/coverage-7.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:5693e57a065760dcbeb292d60cc4d0231a6d4b6b6f6a3191561e1d5e8820b745", size = 217879, upload-time = "2025-10-15T15:13:01.35Z" }, - { url = "https://files.pythonhosted.org/packages/c4/db/86f6906a7c7edc1a52b2c6682d6dd9be775d73c0dfe2b84f8923dfea5784/coverage-7.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9c49e77811cf9d024b95faf86c3f059b11c0c9be0b0d61bc598f453703bd6fd1", size = 216098, upload-time = "2025-10-15T15:13:02.916Z" }, - { url = "https://files.pythonhosted.org/packages/21/54/e7b26157048c7ba555596aad8569ff903d6cd67867d41b75287323678ede/coverage-7.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a61e37a403a778e2cda2a6a39abcc895f1d984071942a41074b5c7ee31642007", size = 216331, upload-time = "2025-10-15T15:13:04.403Z" }, - { url = "https://files.pythonhosted.org/packages/b9/19/1ce6bf444f858b83a733171306134a0544eaddf1ca8851ede6540a55b2ad/coverage-7.11.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c79cae102bb3b1801e2ef1511fb50e91ec83a1ce466b2c7c25010d884336de46", size = 247825, upload-time = "2025-10-15T15:13:05.92Z" }, - { url = "https://files.pythonhosted.org/packages/71/0b/d3bcbbc259fcced5fb67c5d78f6e7ee965f49760c14afd931e9e663a83b2/coverage-7.11.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:16ce17ceb5d211f320b62df002fa7016b7442ea0fd260c11cec8ce7730954893", size = 250573, upload-time = "2025-10-15T15:13:07.471Z" }, - { url = "https://files.pythonhosted.org/packages/58/8d/b0ff3641a320abb047258d36ed1c21d16be33beed4152628331a1baf3365/coverage-7.11.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:80027673e9d0bd6aef86134b0771845e2da85755cf686e7c7c59566cf5a89115", size = 251706, upload-time = "2025-10-15T15:13:09.4Z" }, - { url = "https://files.pythonhosted.org/packages/59/c8/5a586fe8c7b0458053d9c687f5cff515a74b66c85931f7fe17a1c958b4ac/coverage-7.11.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d3ffa07a08657306cd2215b0da53761c4d73cb54d9143b9303a6481ec0cd415", size = 248221, upload-time = "2025-10-15T15:13:10.964Z" }, - { url = "https://files.pythonhosted.org/packages/d0/ff/3a25e3132804ba44cfa9a778cdf2b73dbbe63ef4b0945e39602fc896ba52/coverage-7.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a3b6a5f8b2524fd6c1066bc85bfd97e78709bb5e37b5b94911a6506b65f47186", size = 249624, upload-time = "2025-10-15T15:13:12.5Z" }, - { url = "https://files.pythonhosted.org/packages/c5/12/ff10c8ce3895e1b17a73485ea79ebc1896a9e466a9d0f4aef63e0d17b718/coverage-7.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fcc0a4aa589de34bc56e1a80a740ee0f8c47611bdfb28cd1849de60660f3799d", size = 247744, upload-time = "2025-10-15T15:13:14.554Z" }, - { url = "https://files.pythonhosted.org/packages/16/02/d500b91f5471b2975947e0629b8980e5e90786fe316b6d7299852c1d793d/coverage-7.11.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:dba82204769d78c3fd31b35c3d5f46e06511936c5019c39f98320e05b08f794d", size = 247325, upload-time = "2025-10-15T15:13:16.438Z" }, - { url = "https://files.pythonhosted.org/packages/77/11/dee0284fbbd9cd64cfce806b827452c6df3f100d9e66188e82dfe771d4af/coverage-7.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:81b335f03ba67309a95210caf3eb43bd6fe75a4e22ba653ef97b4696c56c7ec2", size = 249180, upload-time = "2025-10-15T15:13:17.959Z" }, - { url = "https://files.pythonhosted.org/packages/59/1b/cdf1def928f0a150a057cab03286774e73e29c2395f0d30ce3d9e9f8e697/coverage-7.11.0-cp312-cp312-win32.whl", hash = "sha256:037b2d064c2f8cc8716fe4d39cb705779af3fbf1ba318dc96a1af858888c7bb5", size = 218479, upload-time = "2025-10-15T15:13:19.608Z" }, - { url = "https://files.pythonhosted.org/packages/ff/55/e5884d55e031da9c15b94b90a23beccc9d6beee65e9835cd6da0a79e4f3a/coverage-7.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:d66c0104aec3b75e5fd897e7940188ea1892ca1d0235316bf89286d6a22568c0", size = 219290, upload-time = "2025-10-15T15:13:21.593Z" }, - { url = "https://files.pythonhosted.org/packages/23/a8/faa930cfc71c1d16bc78f9a19bb73700464f9c331d9e547bfbc1dbd3a108/coverage-7.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:d91ebeac603812a09cf6a886ba6e464f3bbb367411904ae3790dfe28311b15ad", size = 217924, upload-time = "2025-10-15T15:13:23.39Z" }, - { url = "https://files.pythonhosted.org/packages/60/7f/85e4dfe65e400645464b25c036a26ac226cf3a69d4a50c3934c532491cdd/coverage-7.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cc3f49e65ea6e0d5d9bd60368684fe52a704d46f9e7fc413918f18d046ec40e1", size = 216129, upload-time = "2025-10-15T15:13:25.371Z" }, - { url = "https://files.pythonhosted.org/packages/96/5d/dc5fa98fea3c175caf9d360649cb1aa3715e391ab00dc78c4c66fabd7356/coverage-7.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f39ae2f63f37472c17b4990f794035c9890418b1b8cca75c01193f3c8d3e01be", size = 216380, upload-time = "2025-10-15T15:13:26.976Z" }, - { url = "https://files.pythonhosted.org/packages/b2/f5/3da9cc9596708273385189289c0e4d8197d37a386bdf17619013554b3447/coverage-7.11.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7db53b5cdd2917b6eaadd0b1251cf4e7d96f4a8d24e174bdbdf2f65b5ea7994d", size = 247375, upload-time = "2025-10-15T15:13:28.923Z" }, - { url = "https://files.pythonhosted.org/packages/65/6c/f7f59c342359a235559d2bc76b0c73cfc4bac7d61bb0df210965cb1ecffd/coverage-7.11.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10ad04ac3a122048688387828b4537bc9cf60c0bf4869c1e9989c46e45690b82", size = 249978, upload-time = "2025-10-15T15:13:30.525Z" }, - { url = "https://files.pythonhosted.org/packages/e7/8c/042dede2e23525e863bf1ccd2b92689692a148d8b5fd37c37899ba882645/coverage-7.11.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4036cc9c7983a2b1f2556d574d2eb2154ac6ed55114761685657e38782b23f52", size = 251253, upload-time = "2025-10-15T15:13:32.174Z" }, - { url = "https://files.pythonhosted.org/packages/7b/a9/3c58df67bfa809a7bddd786356d9c5283e45d693edb5f3f55d0986dd905a/coverage-7.11.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7ab934dd13b1c5e94b692b1e01bd87e4488cb746e3a50f798cb9464fd128374b", size = 247591, upload-time = "2025-10-15T15:13:34.147Z" }, - { url = "https://files.pythonhosted.org/packages/26/5b/c7f32efd862ee0477a18c41e4761305de6ddd2d49cdeda0c1116227570fd/coverage-7.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59a6e5a265f7cfc05f76e3bb53eca2e0dfe90f05e07e849930fecd6abb8f40b4", size = 249411, upload-time = "2025-10-15T15:13:38.425Z" }, - { url = "https://files.pythonhosted.org/packages/76/b5/78cb4f1e86c1611431c990423ec0768122905b03837e1b4c6a6f388a858b/coverage-7.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df01d6c4c81e15a7c88337b795bb7595a8596e92310266b5072c7e301168efbd", size = 247303, upload-time = "2025-10-15T15:13:40.464Z" }, - { url = "https://files.pythonhosted.org/packages/87/c9/23c753a8641a330f45f221286e707c427e46d0ffd1719b080cedc984ec40/coverage-7.11.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:8c934bd088eed6174210942761e38ee81d28c46de0132ebb1801dbe36a390dcc", size = 247157, upload-time = "2025-10-15T15:13:42.087Z" }, - { url = "https://files.pythonhosted.org/packages/c5/42/6e0cc71dc8a464486e944a4fa0d85bdec031cc2969e98ed41532a98336b9/coverage-7.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a03eaf7ec24078ad64a07f02e30060aaf22b91dedf31a6b24d0d98d2bba7f48", size = 248921, upload-time = "2025-10-15T15:13:43.715Z" }, - { url = "https://files.pythonhosted.org/packages/e8/1c/743c2ef665e6858cccb0f84377dfe3a4c25add51e8c7ef19249be92465b6/coverage-7.11.0-cp313-cp313-win32.whl", hash = "sha256:695340f698a5f56f795b2836abe6fb576e7c53d48cd155ad2f80fd24bc63a040", size = 218526, upload-time = "2025-10-15T15:13:45.336Z" }, - { url = "https://files.pythonhosted.org/packages/ff/d5/226daadfd1bf8ddbccefbd3aa3547d7b960fb48e1bdac124e2dd13a2b71a/coverage-7.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:2727d47fce3ee2bac648528e41455d1b0c46395a087a229deac75e9f88ba5a05", size = 219317, upload-time = "2025-10-15T15:13:47.401Z" }, - { url = "https://files.pythonhosted.org/packages/97/54/47db81dcbe571a48a298f206183ba8a7ba79200a37cd0d9f4788fcd2af4a/coverage-7.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:0efa742f431529699712b92ecdf22de8ff198df41e43aeaaadf69973eb93f17a", size = 217948, upload-time = "2025-10-15T15:13:49.096Z" }, - { url = "https://files.pythonhosted.org/packages/e5/8b/cb68425420154e7e2a82fd779a8cc01549b6fa83c2ad3679cd6c088ebd07/coverage-7.11.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:587c38849b853b157706407e9ebdca8fd12f45869edb56defbef2daa5fb0812b", size = 216837, upload-time = "2025-10-15T15:13:51.09Z" }, - { url = "https://files.pythonhosted.org/packages/33/55/9d61b5765a025685e14659c8d07037247de6383c0385757544ffe4606475/coverage-7.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b971bdefdd75096163dd4261c74be813c4508477e39ff7b92191dea19f24cd37", size = 217061, upload-time = "2025-10-15T15:13:52.747Z" }, - { url = "https://files.pythonhosted.org/packages/52/85/292459c9186d70dcec6538f06ea251bc968046922497377bf4a1dc9a71de/coverage-7.11.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:269bfe913b7d5be12ab13a95f3a76da23cf147be7fa043933320ba5625f0a8de", size = 258398, upload-time = "2025-10-15T15:13:54.45Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e2/46edd73fb8bf51446c41148d81944c54ed224854812b6ca549be25113ee0/coverage-7.11.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:dadbcce51a10c07b7c72b0ce4a25e4b6dcb0c0372846afb8e5b6307a121eb99f", size = 260574, upload-time = "2025-10-15T15:13:56.145Z" }, - { url = "https://files.pythonhosted.org/packages/07/5e/1df469a19007ff82e2ca8fe509822820a31e251f80ee7344c34f6cd2ec43/coverage-7.11.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ed43fa22c6436f7957df036331f8fe4efa7af132054e1844918866cd228af6c", size = 262797, upload-time = "2025-10-15T15:13:58.635Z" }, - { url = "https://files.pythonhosted.org/packages/f9/50/de216b31a1434b94d9b34a964c09943c6be45069ec704bfc379d8d89a649/coverage-7.11.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9516add7256b6713ec08359b7b05aeff8850c98d357784c7205b2e60aa2513fa", size = 257361, upload-time = "2025-10-15T15:14:00.409Z" }, - { url = "https://files.pythonhosted.org/packages/82/1e/3f9f8344a48111e152e0fd495b6fff13cc743e771a6050abf1627a7ba918/coverage-7.11.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb92e47c92fcbcdc692f428da67db33337fa213756f7adb6a011f7b5a7a20740", size = 260349, upload-time = "2025-10-15T15:14:02.188Z" }, - { url = "https://files.pythonhosted.org/packages/65/9b/3f52741f9e7d82124272f3070bbe316006a7de1bad1093f88d59bfc6c548/coverage-7.11.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d06f4fc7acf3cabd6d74941d53329e06bab00a8fe10e4df2714f0b134bfc64ef", size = 258114, upload-time = "2025-10-15T15:14:03.907Z" }, - { url = "https://files.pythonhosted.org/packages/0b/8b/918f0e15f0365d50d3986bbd3338ca01178717ac5678301f3f547b6619e6/coverage-7.11.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:6fbcee1a8f056af07ecd344482f711f563a9eb1c2cad192e87df00338ec3cdb0", size = 256723, upload-time = "2025-10-15T15:14:06.324Z" }, - { url = "https://files.pythonhosted.org/packages/44/9e/7776829f82d3cf630878a7965a7d70cc6ca94f22c7d20ec4944f7148cb46/coverage-7.11.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dbbf012be5f32533a490709ad597ad8a8ff80c582a95adc8d62af664e532f9ca", size = 259238, upload-time = "2025-10-15T15:14:08.002Z" }, - { url = "https://files.pythonhosted.org/packages/9a/b8/49cf253e1e7a3bedb85199b201862dd7ca4859f75b6cf25ffa7298aa0760/coverage-7.11.0-cp313-cp313t-win32.whl", hash = "sha256:cee6291bb4fed184f1c2b663606a115c743df98a537c969c3c64b49989da96c2", size = 219180, upload-time = "2025-10-15T15:14:09.786Z" }, - { url = "https://files.pythonhosted.org/packages/ac/e1/1a541703826be7ae2125a0fb7f821af5729d56bb71e946e7b933cc7a89a4/coverage-7.11.0-cp313-cp313t-win_amd64.whl", hash = "sha256:a386c1061bf98e7ea4758e4313c0ab5ecf57af341ef0f43a0bf26c2477b5c268", size = 220241, upload-time = "2025-10-15T15:14:11.471Z" }, - { url = "https://files.pythonhosted.org/packages/d5/d1/5ee0e0a08621140fd418ec4020f595b4d52d7eb429ae6a0c6542b4ba6f14/coverage-7.11.0-cp313-cp313t-win_arm64.whl", hash = "sha256:f9ea02ef40bb83823b2b04964459d281688fe173e20643870bb5d2edf68bc836", size = 218510, upload-time = "2025-10-15T15:14:13.46Z" }, - { url = "https://files.pythonhosted.org/packages/f4/06/e923830c1985ce808e40a3fa3eb46c13350b3224b7da59757d37b6ce12b8/coverage-7.11.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c770885b28fb399aaf2a65bbd1c12bf6f307ffd112d6a76c5231a94276f0c497", size = 216110, upload-time = "2025-10-15T15:14:15.157Z" }, - { url = "https://files.pythonhosted.org/packages/42/82/cdeed03bfead45203fb651ed756dfb5266028f5f939e7f06efac4041dad5/coverage-7.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a3d0e2087dba64c86a6b254f43e12d264b636a39e88c5cc0a01a7c71bcfdab7e", size = 216395, upload-time = "2025-10-15T15:14:16.863Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ba/e1c80caffc3199aa699813f73ff097bc2df7b31642bdbc7493600a8f1de5/coverage-7.11.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:73feb83bb41c32811973b8565f3705caf01d928d972b72042b44e97c71fd70d1", size = 247433, upload-time = "2025-10-15T15:14:18.589Z" }, - { url = "https://files.pythonhosted.org/packages/80/c0/5b259b029694ce0a5bbc1548834c7ba3db41d3efd3474489d7efce4ceb18/coverage-7.11.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c6f31f281012235ad08f9a560976cc2fc9c95c17604ff3ab20120fe480169bca", size = 249970, upload-time = "2025-10-15T15:14:20.307Z" }, - { url = "https://files.pythonhosted.org/packages/8c/86/171b2b5e1aac7e2fd9b43f7158b987dbeb95f06d1fbecad54ad8163ae3e8/coverage-7.11.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9570ad567f880ef675673992222746a124b9595506826b210fbe0ce3f0499cd", size = 251324, upload-time = "2025-10-15T15:14:22.419Z" }, - { url = "https://files.pythonhosted.org/packages/1a/7e/7e10414d343385b92024af3932a27a1caf75c6e27ee88ba211221ff1a145/coverage-7.11.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8badf70446042553a773547a61fecaa734b55dc738cacf20c56ab04b77425e43", size = 247445, upload-time = "2025-10-15T15:14:24.205Z" }, - { url = "https://files.pythonhosted.org/packages/c4/3b/e4f966b21f5be8c4bf86ad75ae94efa0de4c99c7bbb8114476323102e345/coverage-7.11.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a09c1211959903a479e389685b7feb8a17f59ec5a4ef9afde7650bd5eabc2777", size = 249324, upload-time = "2025-10-15T15:14:26.234Z" }, - { url = "https://files.pythonhosted.org/packages/00/a2/8479325576dfcd909244d0df215f077f47437ab852ab778cfa2f8bf4d954/coverage-7.11.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:5ef83b107f50db3f9ae40f69e34b3bd9337456c5a7fe3461c7abf8b75dd666a2", size = 247261, upload-time = "2025-10-15T15:14:28.42Z" }, - { url = "https://files.pythonhosted.org/packages/7b/d8/3a9e2db19d94d65771d0f2e21a9ea587d11b831332a73622f901157cc24b/coverage-7.11.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f91f927a3215b8907e214af77200250bb6aae36eca3f760f89780d13e495388d", size = 247092, upload-time = "2025-10-15T15:14:30.784Z" }, - { url = "https://files.pythonhosted.org/packages/b3/b1/bbca3c472544f9e2ad2d5116b2379732957048be4b93a9c543fcd0207e5f/coverage-7.11.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cdbcd376716d6b7fbfeedd687a6c4be019c5a5671b35f804ba76a4c0a778cba4", size = 248755, upload-time = "2025-10-15T15:14:32.585Z" }, - { url = "https://files.pythonhosted.org/packages/89/49/638d5a45a6a0f00af53d6b637c87007eb2297042186334e9923a61aa8854/coverage-7.11.0-cp314-cp314-win32.whl", hash = "sha256:bab7ec4bb501743edc63609320aaec8cd9188b396354f482f4de4d40a9d10721", size = 218793, upload-time = "2025-10-15T15:14:34.972Z" }, - { url = "https://files.pythonhosted.org/packages/30/cc/b675a51f2d068adb3cdf3799212c662239b0ca27f4691d1fff81b92ea850/coverage-7.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:3d4ba9a449e9364a936a27322b20d32d8b166553bfe63059bd21527e681e2fad", size = 219587, upload-time = "2025-10-15T15:14:37.047Z" }, - { url = "https://files.pythonhosted.org/packages/93/98/5ac886876026de04f00820e5094fe22166b98dcb8b426bf6827aaf67048c/coverage-7.11.0-cp314-cp314-win_arm64.whl", hash = "sha256:ce37f215223af94ef0f75ac68ea096f9f8e8c8ec7d6e8c346ee45c0d363f0479", size = 218168, upload-time = "2025-10-15T15:14:38.861Z" }, - { url = "https://files.pythonhosted.org/packages/14/d1/b4145d35b3e3ecf4d917e97fc8895bcf027d854879ba401d9ff0f533f997/coverage-7.11.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:f413ce6e07e0d0dc9c433228727b619871532674b45165abafe201f200cc215f", size = 216850, upload-time = "2025-10-15T15:14:40.651Z" }, - { url = "https://files.pythonhosted.org/packages/ca/d1/7f645fc2eccd318369a8a9948acc447bb7c1ade2911e31d3c5620544c22b/coverage-7.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:05791e528a18f7072bf5998ba772fe29db4da1234c45c2087866b5ba4dea710e", size = 217071, upload-time = "2025-10-15T15:14:42.755Z" }, - { url = "https://files.pythonhosted.org/packages/54/7d/64d124649db2737ceced1dfcbdcb79898d5868d311730f622f8ecae84250/coverage-7.11.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cacb29f420cfeb9283b803263c3b9a068924474ff19ca126ba9103e1278dfa44", size = 258570, upload-time = "2025-10-15T15:14:44.542Z" }, - { url = "https://files.pythonhosted.org/packages/6c/3f/6f5922f80dc6f2d8b2c6f974835c43f53eb4257a7797727e6ca5b7b2ec1f/coverage-7.11.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314c24e700d7027ae3ab0d95fbf8d53544fca1f20345fd30cd219b737c6e58d3", size = 260738, upload-time = "2025-10-15T15:14:46.436Z" }, - { url = "https://files.pythonhosted.org/packages/0e/5f/9e883523c4647c860b3812b417a2017e361eca5b635ee658387dc11b13c1/coverage-7.11.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:630d0bd7a293ad2fc8b4b94e5758c8b2536fdf36c05f1681270203e463cbfa9b", size = 262994, upload-time = "2025-10-15T15:14:48.3Z" }, - { url = "https://files.pythonhosted.org/packages/07/bb/43b5a8e94c09c8bf51743ffc65c4c841a4ca5d3ed191d0a6919c379a1b83/coverage-7.11.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e89641f5175d65e2dbb44db15fe4ea48fade5d5bbb9868fdc2b4fce22f4a469d", size = 257282, upload-time = "2025-10-15T15:14:50.236Z" }, - { url = "https://files.pythonhosted.org/packages/aa/e5/0ead8af411411330b928733e1d201384b39251a5f043c1612970310e8283/coverage-7.11.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c9f08ea03114a637dab06cedb2e914da9dc67fa52c6015c018ff43fdde25b9c2", size = 260430, upload-time = "2025-10-15T15:14:52.413Z" }, - { url = "https://files.pythonhosted.org/packages/ae/66/03dd8bb0ba5b971620dcaac145461950f6d8204953e535d2b20c6b65d729/coverage-7.11.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce9f3bde4e9b031eaf1eb61df95c1401427029ea1bfddb8621c1161dcb0fa02e", size = 258190, upload-time = "2025-10-15T15:14:54.268Z" }, - { url = "https://files.pythonhosted.org/packages/45/ae/28a9cce40bf3174426cb2f7e71ee172d98e7f6446dff936a7ccecee34b14/coverage-7.11.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:e4dc07e95495923d6fd4d6c27bf70769425b71c89053083843fd78f378558996", size = 256658, upload-time = "2025-10-15T15:14:56.436Z" }, - { url = "https://files.pythonhosted.org/packages/5c/7c/3a44234a8599513684bfc8684878fd7b126c2760f79712bb78c56f19efc4/coverage-7.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:424538266794db2861db4922b05d729ade0940ee69dcf0591ce8f69784db0e11", size = 259342, upload-time = "2025-10-15T15:14:58.538Z" }, - { url = "https://files.pythonhosted.org/packages/e1/e6/0108519cba871af0351725ebdb8660fd7a0fe2ba3850d56d32490c7d9b4b/coverage-7.11.0-cp314-cp314t-win32.whl", hash = "sha256:4c1eeb3fb8eb9e0190bebafd0462936f75717687117339f708f395fe455acc73", size = 219568, upload-time = "2025-10-15T15:15:00.382Z" }, - { url = "https://files.pythonhosted.org/packages/c9/76/44ba876e0942b4e62fdde23ccb029ddb16d19ba1bef081edd00857ba0b16/coverage-7.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b56efee146c98dbf2cf5cffc61b9829d1e94442df4d7398b26892a53992d3547", size = 220687, upload-time = "2025-10-15T15:15:02.322Z" }, - { url = "https://files.pythonhosted.org/packages/b9/0c/0df55ecb20d0d0ed5c322e10a441775e1a3a5d78c60f0c4e1abfe6fcf949/coverage-7.11.0-cp314-cp314t-win_arm64.whl", hash = "sha256:b5c2705afa83f49bd91962a4094b6b082f94aef7626365ab3f8f4bd159c5acf3", size = 218711, upload-time = "2025-10-15T15:15:04.575Z" }, - { url = "https://files.pythonhosted.org/packages/5f/04/642c1d8a448ae5ea1369eac8495740a79eb4e581a9fb0cbdce56bbf56da1/coverage-7.11.0-py3-none-any.whl", hash = "sha256:4b7589765348d78fb4e5fb6ea35d07564e387da2fc5efff62e0222971f155f68", size = 207761, upload-time = "2025-10-15T15:15:06.439Z" }, +version = "7.15.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/c3/4f2195f512fb172aa425a8803a874b2baa9ba7f80ff7b6080998761fc701/coverage-7.15.4.tar.gz", hash = "sha256:0548198fff07ccf4faf469520bce1c2eceb1ce3e62891921138dec10907f9d00", size = 936952, upload-time = "2026-08-06T13:50:24.442Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/70/b052a519a584663a7bd052841a2debe11c8309ec49a7786340003f9c0a02/coverage-7.15.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d0be6daac4cce6b8c8dc65886bae1b082ddbca4da8e5cbb5e15166acf253e264", size = 222245, upload-time = "2026-08-06T13:46:55.253Z" }, + { url = "https://files.pythonhosted.org/packages/67/39/892fa511aba3d1c3c8f49509a0ff5c71eab9f9f88d08e1a38da395821660/coverage-7.15.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b24e078eabcd6a9caa8b0713f9bc1eeb310bcc960a29d45a3b4fcd4b16d5b11d", size = 222762, upload-time = "2026-08-06T13:46:57.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/95/b2c724ce1e64bc23cb5b1d7eeffa9548dc3d811f7a6297b2d01607f4e062/coverage-7.15.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cfe20cc8cf8821d4fe54f89106cbf06aa27f37b5bbe3535568065a81539b4150", size = 249498, upload-time = "2026-08-06T13:46:59.012Z" }, + { url = "https://files.pythonhosted.org/packages/0b/4f/b1973f67a1382af65b572a31ed692f8e490a6ad707191eab59148376832a/coverage-7.15.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:83cf06cdd687677742caff1a9134833b7a8b75f111519d2cb0e0ba1b9a851e15", size = 251328, upload-time = "2026-08-06T13:47:00.764Z" }, + { url = "https://files.pythonhosted.org/packages/a2/09/03efa6722a132abcac91b32a60b64b240dd707c189c64eee697e48992c96/coverage-7.15.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8fa4de68e2a752468ff14b4e15db7def689a71be759e826a31ccecbef69c5fd0", size = 253194, upload-time = "2026-08-06T13:47:01.976Z" }, + { url = "https://files.pythonhosted.org/packages/45/63/8299201d9c80fb65551ce99c966cab83d706ec4066ac999bef08201346de/coverage-7.15.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4dff9daa47d83120c3ec38ce921214242944a832aa04e903e50b5b7ebac8972d", size = 255106, upload-time = "2026-08-06T13:47:03.281Z" }, + { url = "https://files.pythonhosted.org/packages/ee/16/26fd8a691eb8d9a230128685f6d23309d7402cb030aa553001788c8c50fc/coverage-7.15.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a093fd37229918976f602aa07aa59e0973cde82186f220c8e197f721f5be0ce4", size = 250177, upload-time = "2026-08-06T13:47:04.713Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ef/3c7556f33783a0a566e01443ca62bd8eb2cdfe22d271efdc02e08beb5654/coverage-7.15.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:317db01a2cb02552fd67e2b1cca77a4b528a2a277176c5e0bf2cecbb639d3f54", size = 251234, upload-time = "2026-08-06T13:47:06.104Z" }, + { url = "https://files.pythonhosted.org/packages/29/49/640a34043edac950738f36a3567832db5731d4cb2ed84b59cdb89c6bccbf/coverage-7.15.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8ee3838dcb656602c3b51e16aed9bfb0822f8d8d6d1c5966d32ec8c104be8e20", size = 249237, upload-time = "2026-08-06T13:47:07.467Z" }, + { url = "https://files.pythonhosted.org/packages/48/f5/e80f212669dd1be954ff844f883ef11a437ef4fd0089c6e0effc7b66b15d/coverage-7.15.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:425920379052ff1fe465268f3361d35804a241bbdd5a1b592c8cb60df4c52325", size = 253050, upload-time = "2026-08-06T13:47:08.748Z" }, + { url = "https://files.pythonhosted.org/packages/c7/e9/e5da0fe39f7fde1bca9edc09c60921bb5fdba4cec7db5bbad41ddfd8c230/coverage-7.15.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:69bb2400abef928e365ea7d4d9925169ada78ed2295546780002d4b65de3df88", size = 249508, upload-time = "2026-08-06T13:47:10.072Z" }, + { url = "https://files.pythonhosted.org/packages/7d/38/41bf25774a0c8bba6b467f917cb1c9a0a2605e02dc93aad489fc7050ed59/coverage-7.15.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:81661f82d302484e3119e7c80c519c02fa9bcc2a6b339baf67d67bc89c580f04", size = 250110, upload-time = "2026-08-06T13:47:11.35Z" }, + { url = "https://files.pythonhosted.org/packages/89/6e/26f2e54b79acc29d179ee4272922625aedb69198c4eb61f7ff4f098f3c78/coverage-7.15.4-cp310-cp310-win32.whl", hash = "sha256:cb476b2e828ecb71cb6b6a928d23fd20a7ddb501188022dae1c37499149cc338", size = 224294, upload-time = "2026-08-06T13:47:12.753Z" }, + { url = "https://files.pythonhosted.org/packages/7b/06/9a318fc3ae040d4d6cb2d86101c6aa963fab20899a5c58666adf52cde0ca/coverage-7.15.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fc2130bf37df31852a8384f12601563a45a0024bccc6624f38355cba7a8d360", size = 224919, upload-time = "2026-08-06T13:47:14.17Z" }, + { url = "https://files.pythonhosted.org/packages/2a/66/edcec7d7a0b524aa8923e22925fde6fe50ce005a113dca13ae1581455c4c/coverage-7.15.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbac5abad70df71019988f83f26ac7092ff2642975def4429e98dc7585ef3490", size = 222367, upload-time = "2026-08-06T13:47:15.578Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c6/ab8de429e2e8548faf58ec7e1674a4ce00414b4113942d3fe87109cf0f68/coverage-7.15.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:357a173465c7ce028d07a95cc2b63b5bf59f50ecdd5ad75c5cbb78ada984048e", size = 222874, upload-time = "2026-08-06T13:47:16.961Z" }, + { url = "https://files.pythonhosted.org/packages/be/c4/3b7b49587e8a6b9af79b3eb468d443d6042b6d65b47aa26586846a0d6566/coverage-7.15.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:21b803935e2efc3acebe9697197a294fccf5dc4e5382bd6369542ff7a7d2a1d7", size = 253287, upload-time = "2026-08-06T13:47:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/fb/65/ec03b743a2a229c72cc1eff3e57be9d3564e9c6b4d5aba2d70744a3fc0d8/coverage-7.15.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7a2b580774a4786c1053157c0165e04476e03ff293993d7c148eee784a94bae6", size = 255199, upload-time = "2026-08-06T13:47:19.765Z" }, + { url = "https://files.pythonhosted.org/packages/41/4b/5163729e4b6582d61975cfd3ccab45b4ec53e21cf156d9941cb025188468/coverage-7.15.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9464451c4efffe8d47ace5a540b10b0dc10e879066290f8600872b7f54a419d", size = 257308, upload-time = "2026-08-06T13:47:21.206Z" }, + { url = "https://files.pythonhosted.org/packages/86/08/2167a0f08fb87d702fa423a48578a32865464b7c9e1db3911ad7812ab414/coverage-7.15.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de602f34123c2f4af1c1869c6dbbbd60da6d5983bf01937367295d135cccbfce", size = 259268, upload-time = "2026-08-06T13:47:22.503Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e5/68eebae3053dbd48508edea559c21b23fbdf3460784f91370c83a86a6acd/coverage-7.15.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6879ded16a27f3eeca19b900c147e81616e7054db451471a611b2755ee5249f7", size = 253392, upload-time = "2026-08-06T13:47:23.88Z" }, + { url = "https://files.pythonhosted.org/packages/1a/46/fd4ced40a2b691c774e515c9b69500bfa64c7960b67fcee4b2f6fad97fc3/coverage-7.15.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:986be58c3ab54aae8d3496a6225eea74f760fdbe739b38bd442c7e8d133aa53b", size = 255001, upload-time = "2026-08-06T13:47:25.469Z" }, + { url = "https://files.pythonhosted.org/packages/53/25/ae2e5fa710bb6957a9aadeb9e3598d3b3e4af6587ce857ad42e8639a3f30/coverage-7.15.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c6103639613fe6c1e989082948419bc77a2d26b6c825c99d7fad25f7d3d87afc", size = 253061, upload-time = "2026-08-06T13:47:26.845Z" }, + { url = "https://files.pythonhosted.org/packages/d7/31/67ddc0365db2c6e93ac8580bc4bbc50f65273262f973f63ebcdbc15c0495/coverage-7.15.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d3af93dddb5659276c63bc16ac6466ac2033a70ca816097bbc06345b8ccdf571", size = 256831, upload-time = "2026-08-06T13:47:28.217Z" }, + { url = "https://files.pythonhosted.org/packages/f6/78/82b8fd18f57fb13f12d98fe874995bb2c4f9f17be8aff762c426323fdb96/coverage-7.15.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:b10075e5421d04265766a6d1dac809bbeb8a946fbb23c8f82c227409b2190719", size = 252781, upload-time = "2026-08-06T13:47:29.712Z" }, + { url = "https://files.pythonhosted.org/packages/0a/eb/6c74ef4dd12b252e573c49bdef9e2ac265bf3dbb79b8d7feb3266e084e9e/coverage-7.15.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a67a9f78b2942d87ba8ce3059c642164d2aedd65337377fb52fe9803656bc5c7", size = 253692, upload-time = "2026-08-06T13:47:31.192Z" }, + { url = "https://files.pythonhosted.org/packages/5a/66/eb9aed1c3fd2d36ee00eb173f434b14fa607fc056739c9a89ff4244010ea/coverage-7.15.4-cp311-cp311-win32.whl", hash = "sha256:69484d1aca26e322e1c3ce03f09341e84524ababad2d7202161738d83cc9f82e", size = 224461, upload-time = "2026-08-06T13:47:32.572Z" }, + { url = "https://files.pythonhosted.org/packages/e2/6d/81fa4161dfb3ed9d74e40d58647eff83a56b7612e78352581280fce2f477/coverage-7.15.4-cp311-cp311-win_amd64.whl", hash = "sha256:63fd6fcd1dd6e158f7eb78606e72933b3f6d01e7b747f99c6c12d764307a0fdc", size = 224937, upload-time = "2026-08-06T13:47:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c1/d8dacf683c6cad3cf85ce68fd3774a6774ec402128822fdfaed920f11e6a/coverage-7.15.4-cp311-cp311-win_arm64.whl", hash = "sha256:ea82116c9893fa89e929b7f197ee5a1950a76e91cc5c85ba503fc02379d04890", size = 224479, upload-time = "2026-08-06T13:47:36.118Z" }, + { url = "https://files.pythonhosted.org/packages/1d/48/bc8d4ba7b37551a767bd863f15b3f80182b271c2f55975356f5f7dbe94c2/coverage-7.15.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d4fedd1f7f428f9fe83b1ead5e7cc87a43427be31aadafbac3ac0636dc7abb22", size = 222543, upload-time = "2026-08-06T13:47:37.562Z" }, + { url = "https://files.pythonhosted.org/packages/20/dd/88d6f83f1fffc974a3691a34a97951c5b12df7512a6782c5963883cbc058/coverage-7.15.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37e2f0cdf58e2e1fed4e4d5a8f8786ae2f7eb80b478016876667dc4a01d60a97", size = 222905, upload-time = "2026-08-06T13:47:38.927Z" }, + { url = "https://files.pythonhosted.org/packages/bd/5c/54ee0d4748585bb0acab9891cd8d92f2d3593165b4e59fc9de113bfb3140/coverage-7.15.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:fb55d0e70bb15f2e81477613627286581414693d74ac7963c93a790dd453ca9d", size = 254407, upload-time = "2026-08-06T13:47:40.488Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3f/f0642a372f494bd0d7dad3b497083b910194a5f1c88be2c94fef707c3b59/coverage-7.15.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:899b9da30f3c6c336566e3707495bb23e8302d39d862f01fa78c48b99b9437e2", size = 257145, upload-time = "2026-08-06T13:47:41.931Z" }, + { url = "https://files.pythonhosted.org/packages/71/17/8b46d0ed68251016002ec972c8fc0119961a765d0984cafb8bf317c43758/coverage-7.15.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d15715e8c46552827e5e4f30a35575a2dbcad14454cf3284c54483946bd16931", size = 258257, upload-time = "2026-08-06T13:47:43.527Z" }, + { url = "https://files.pythonhosted.org/packages/30/b8/8498a0e72d0adbe15477dd07463d2b3bb2c9f6a4815e8589e50939e2c3ae/coverage-7.15.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:002a438859f7b430bc99afeaf01a6d187dad1d0dc907b64cdeffc632a5db8fd8", size = 260517, upload-time = "2026-08-06T13:47:45.121Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/7dce19c3bdb1e3dd63e769508216500edad81bd5f69a26d724e32aceaf78/coverage-7.15.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e4193a04b518f7968f3099755f5509ee7cccc6dc2b92a6b14841934d22e222c9", size = 254785, upload-time = "2026-08-06T13:47:46.541Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b1/e1494703c675a2561723cd9b89f45c9168782c31280c611b1f767851e57c/coverage-7.15.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e98dcc55d572b38e69d117da7e8e8efb8500f1f5eaf81ecd460a63220790b839", size = 256176, upload-time = "2026-08-06T13:47:48.155Z" }, + { url = "https://files.pythonhosted.org/packages/73/76/a5629d270fb638a43a4b10466f51e2f49d532c1aa4da2913cbbb150bbe0a/coverage-7.15.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:af6c538498ce66c10d3fd541c2a8d5b03da5850355add34e6cba564210cb9e72", size = 254321, upload-time = "2026-08-06T13:47:49.757Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/9c44447218435d5766b911534f9d798144a5560f85e9a54ebe5f3f5d19f9/coverage-7.15.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1d10025d96ea89fc2f73714dbc4cbd433fe012c1ac9e23f895d7728b238b6e52", size = 258390, upload-time = "2026-08-06T13:47:51.248Z" }, + { url = "https://files.pythonhosted.org/packages/de/36/c1e127616fb3fa18a9ff71e76c417f2fd7424332a4870015ac224ef4c039/coverage-7.15.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d802e1947603162ded419bff83ac7489820355d2b856dfb09206574e3a37ac0c", size = 253894, upload-time = "2026-08-06T13:47:52.816Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b9/fdb92c8ae7a8bb9b850cc253b7b3b9c8526f68130002048b5671cd510d09/coverage-7.15.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c2de40895718f91951b86712b4c5b694acaf9a0a49be13874896f599a1eed3f4", size = 255763, upload-time = "2026-08-06T13:47:54.296Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/a7d51b2587c7bdb76e71b0896d2565bf7d60436b5122fc83e511adb1f7cd/coverage-7.15.4-cp312-cp312-win32.whl", hash = "sha256:5c3431b2161279b7db5c2a1aa58ae02e5cb8c3c42d93a5094be3f5537bd5b11b", size = 224597, upload-time = "2026-08-06T13:47:56.074Z" }, + { url = "https://files.pythonhosted.org/packages/49/b9/5c5f80cc55f5acaaca6dee677626bfcec8c87204a7809b438b08e84f4571/coverage-7.15.4-cp312-cp312-win_amd64.whl", hash = "sha256:6befeab5fb2b51c958ca4ac6c5d141a1e8240f4f76e46350f1911963deda49cd", size = 225135, upload-time = "2026-08-06T13:47:57.52Z" }, + { url = "https://files.pythonhosted.org/packages/47/e4/2a4561f89ff6bf7c925c287d0f2cce8bdf139c3a33735c87e3203401cf94/coverage-7.15.4-cp312-cp312-win_arm64.whl", hash = "sha256:67bc345491ab55b837277d76f5775d057e8c7f1ac44d890d8c2c82adde258c6f", size = 224515, upload-time = "2026-08-06T13:47:58.977Z" }, + { url = "https://files.pythonhosted.org/packages/f1/84/651a9310859673aaa3b3203f1aa1641ca60fcf2494683e1c9474c7172780/coverage-7.15.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c705b28feb2775dc82a25f1d473a370bc37ff93f5177f4e29ce2425f560f6921", size = 222565, upload-time = "2026-08-06T13:48:00.796Z" }, + { url = "https://files.pythonhosted.org/packages/82/f9/4dcf700137e8af550670f4d74d1b63828ce93e1e2b05e5f10710eb2ea987/coverage-7.15.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ff205ab5e3ecc670f6a4dd19d9cbf12ede53dd41cfc1e15716ec961ea6d314e", size = 222936, upload-time = "2026-08-06T13:48:02.391Z" }, + { url = "https://files.pythonhosted.org/packages/07/4a/612ff1e780b3fbfd637486f542f84adc5503873d8b5d279dec1ffeef9414/coverage-7.15.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5172326e861a38b48b48befca15e0f477a26b283337a33a739c8fed229934e36", size = 253926, upload-time = "2026-08-06T13:48:04.382Z" }, + { url = "https://files.pythonhosted.org/packages/b0/04/d1cff1c2ead4708a6a79c01d3736b6a25bd38a36678398f72a8dd33dfad9/coverage-7.15.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:12b59c90084e3234fb11184886bf4a40f4f16a8c8f867be2e087b81f8e8868d4", size = 256523, upload-time = "2026-08-06T13:48:05.996Z" }, + { url = "https://files.pythonhosted.org/packages/b9/80/d34e13fb4b293cbdb9665838cf5522077b8ad14ef947550631a4bced36a5/coverage-7.15.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:349062d66f00b40fa2c1c222438bad25fabf755631b5d82937fe985c8008615c", size = 257759, upload-time = "2026-08-06T13:48:08.036Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e7/2c5fe7636fdb0732fe0f09f308a5b066864078b7fc61f6678e8478554f2e/coverage-7.15.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4256ced708e598e05209bc1a8ab4074e04a51dba4c62fb45926a229af675ace7", size = 259890, upload-time = "2026-08-06T13:48:09.834Z" }, + { url = "https://files.pythonhosted.org/packages/92/28/9689f0858dfff59c2ea688938ab9fa2925631235df67126a42b6c5c70ae1/coverage-7.15.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d80f974b20782d9612c8b4c9beeca867074c7cf4079d1419843fa25a26428b25", size = 254121, upload-time = "2026-08-06T13:48:11.459Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e2/785077c230c157243eb5aa9a26c3be260ecd02001bead54a3cada3df8e03/coverage-7.15.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2e179f19bfe1d31f8eeeaa12990194d761c4f62f0759661000bca6cd8729f40b", size = 255891, upload-time = "2026-08-06T13:48:13.209Z" }, + { url = "https://files.pythonhosted.org/packages/d4/90/e20371b17b40f912f21305c2db2f30efa3de306f7320fc916804872c85a4/coverage-7.15.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8bc16bb47b7679670eceff71d78bfb7d6e5b143f6c2cd117487ec7c75e0d4b78", size = 253859, upload-time = "2026-08-06T13:48:14.736Z" }, + { url = "https://files.pythonhosted.org/packages/05/49/25371987ee459a5f67c0427fb75c74f9358e65f2c71fe75bf41c1b6c5fcb/coverage-7.15.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1cd685005cd2c4200adfc14cf39a603b9320efab3f18a8f7f156d20c9cc3345f", size = 258011, upload-time = "2026-08-06T13:48:16.464Z" }, + { url = "https://files.pythonhosted.org/packages/30/6e/32e67467f6154bf4f1c4f63b05acc5097cba4237d45bbeeea446b52e8ac1/coverage-7.15.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:337399ad2c93b3acd2a937627dae8b3e86b66707cd3d3e856347999aadf1ef8d", size = 253676, upload-time = "2026-08-06T13:48:18.493Z" }, + { url = "https://files.pythonhosted.org/packages/03/c1/8b24192e89286399765155251f99ee9f070a9d637109018ac23d99b99f6f/coverage-7.15.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:96e257121228ec5cd2bb919276e94ac11074471bc37d68dbae0e8308cce15fff", size = 255453, upload-time = "2026-08-06T13:48:20.057Z" }, + { url = "https://files.pythonhosted.org/packages/16/6f/8b41ebdf67c87854e17c035336a90f1cfbad0c14c2a584301be6ff148718/coverage-7.15.4-cp313-cp313-win32.whl", hash = "sha256:c65a9e0dfc6143491879da4e13b5e30f8be192055de508d737fb14601edbd22c", size = 224605, upload-time = "2026-08-06T13:48:21.655Z" }, + { url = "https://files.pythonhosted.org/packages/e0/e2/2946c7f0b42b152ecb21ff1bdad72e3d301e790c0c487e4a86e8c9f69347/coverage-7.15.4-cp313-cp313-win_amd64.whl", hash = "sha256:2ff8f5e9b8f7a94f0c11c45631eee103dbcb7d63274edd12c56efe1be690b3b4", size = 225148, upload-time = "2026-08-06T13:48:23.376Z" }, + { url = "https://files.pythonhosted.org/packages/9e/83/3f4a69957f48ae7a0aba76c34743f88963d607b19e03f3f8e66f91cae0f9/coverage-7.15.4-cp313-cp313-win_arm64.whl", hash = "sha256:6e0a8a5083b096487d6cfced94cdd514d8f5db6f113610fb36c0620edb1028cf", size = 224536, upload-time = "2026-08-06T13:48:25.117Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ac/748cf29eeb2d6be34a3176ce26a4f49e38085ee08e8935f05f6f26ed7e0f/coverage-7.15.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:770e9325ab5ea6d56f77e59b29ecfe0ac20b57a82a601876f90494a4dda0386f", size = 222608, upload-time = "2026-08-06T13:48:26.806Z" }, + { url = "https://files.pythonhosted.org/packages/0b/02/1abbf5c984677b0aa439cdacaccbf38d248939d8ef8fe1cc7a50d73edb77/coverage-7.15.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d12b33a3a50a1676b7784dc8d00a0c6d66a9f2add4b85a041c19b6a7e53ef23c", size = 222940, upload-time = "2026-08-06T13:48:28.432Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e1/ff8f9f53d9fcf586125b55d0b1f04ec1c14955fee41e83d5814bee141bb5/coverage-7.15.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5669c8378ebde86f5def7a25d29586631b58acc27ffde04399f678f3dfc6e082", size = 253985, upload-time = "2026-08-06T13:48:29.995Z" }, + { url = "https://files.pythonhosted.org/packages/a1/26/595759762e514e81be1d7d01ed03444303bcd152226a6529998d253f9201/coverage-7.15.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ff97a14362eef486483ed44042ca2027ea257df6ff768e62358ee0c9776925ac", size = 256492, upload-time = "2026-08-06T13:48:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/b79aabac54d482be23b5fcdd4f4662bff24a78edc4ee29201726929936d5/coverage-7.15.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a325e815318638aed1655d9c06e6d7c2d3d46c09231ce988070428a8762d734", size = 257837, upload-time = "2026-08-06T13:48:33.186Z" }, + { url = "https://files.pythonhosted.org/packages/09/0f/bf7f297885a5bf6fd71e5782404e0ff059ca09e8711ceb3a08544abde45a/coverage-7.15.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:474223409d88eb20d2d6a0d37ea60e8647a65a90cc008dc1f0410af5f64f1e0d", size = 260152, upload-time = "2026-08-06T13:48:34.75Z" }, + { url = "https://files.pythonhosted.org/packages/fd/f1/296744e854ff8368542343457414380465e9ceefb9192342feb9d3bc461d/coverage-7.15.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7f2f62ae3cd189dd2e13aece758c57b3eecbd27be070dbd4cbd10936049e5dbf", size = 253978, upload-time = "2026-08-06T13:48:36.434Z" }, + { url = "https://files.pythonhosted.org/packages/55/b0/bbdb2e9057493e66220a2e149ca2d301ba0e3a58a83bd6b90de9826d16f3/coverage-7.15.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:39ece820e29e0a2ba34b3ecb3be83c27e997eed8926f2ba6fe7ce7a0bda5843b", size = 255846, upload-time = "2026-08-06T13:48:38.317Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/38015b2b6d21258713bd17e76b59d033b191efb5703589cffd037dfbca20/coverage-7.15.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:f21b56dcace11dfe013014201f577dcd592b2a9b72182d930361b47cf6f73f25", size = 253808, upload-time = "2026-08-06T13:48:39.993Z" }, + { url = "https://files.pythonhosted.org/packages/0b/64/0d515c1e60ee6fbfd1a0e79c07cd87d388a233b7adc37758735677203808/coverage-7.15.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:93a3a0b662abcc10c73a47cbc72cd60f63618d6989fb2d1286e50eacd974f303", size = 258081, upload-time = "2026-08-06T13:48:41.971Z" }, + { url = "https://files.pythonhosted.org/packages/91/71/04d9e7a3642146c6351338aef4ef85ab11dbbb54744c13245caba1aad1c0/coverage-7.15.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:141fae2cabf5569b782c10afc4c850ce10f618c13f8db54765cba99cc839da1f", size = 253624, upload-time = "2026-08-06T13:48:43.731Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a7/6c28b74c81ebff66987b0e2522ba5cffa3e90b0c33cb6a2eb264d4ee8cf1/coverage-7.15.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:81294c7e6ab30c5f74c0353b11b2fd6320e72d9bee6ac73b357caa8b916323a5", size = 255280, upload-time = "2026-08-06T13:48:45.58Z" }, + { url = "https://files.pythonhosted.org/packages/52/af/bc19996a7014b98d7bbb0f0939453c67074af65784a3aa16a789a07381fa/coverage-7.15.4-cp314-cp314-win32.whl", hash = "sha256:7bbd7d6418e0dab31a206af5203bd43ae36edb8e7fba1940b055d3e9249290d7", size = 224768, upload-time = "2026-08-06T13:48:47.525Z" }, + { url = "https://files.pythonhosted.org/packages/ee/90/219484e476d6e101ba0a444852579e05f5b75c37c611a42ed1190f73ef62/coverage-7.15.4-cp314-cp314-win_amd64.whl", hash = "sha256:f0204ed122758782970526057093f448051a39db9d810d4e344bb87a3546f425", size = 225259, upload-time = "2026-08-06T13:48:49.513Z" }, + { url = "https://files.pythonhosted.org/packages/b7/66/fa77daf4e383e5f776dac62c2409b6af81910ae6fe326bd5170dba74cc63/coverage-7.15.4-cp314-cp314-win_arm64.whl", hash = "sha256:9e71e7bc71c686a123347ae47a0de33a175e797a85bb57b791492adf4eec8ed8", size = 224684, upload-time = "2026-08-06T13:48:51.235Z" }, + { url = "https://files.pythonhosted.org/packages/58/5b/f03bf0ce362bbf3f785fa5219620d00778d4ac6fc9e407734828e9c672f6/coverage-7.15.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7c922735321eef3f87c280a3d39afff6b646723a2880b862cda4ac7a093b8aa8", size = 223338, upload-time = "2026-08-06T13:48:52.896Z" }, + { url = "https://files.pythonhosted.org/packages/0f/76/e77d0ae22501831cc9f92193e8a957a5caa1dd177f90a6d1d9b106242d92/coverage-7.15.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f41c17c4668a655ce96d090d8d5ffdc24ef64b5a02f9753884d08483e8a4a41a", size = 223609, upload-time = "2026-08-06T13:48:54.688Z" }, + { url = "https://files.pythonhosted.org/packages/82/1a/b1f089da8d38ac612fa2dd6dc7f4a1a7657d12f3e261d2996edd3a838d0b/coverage-7.15.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:46822e9b6ff1c6a72b518c162c44a8f45a61a1d609c51084bf5b16c023c5037b", size = 264970, upload-time = "2026-08-06T13:48:56.403Z" }, + { url = "https://files.pythonhosted.org/packages/bf/31/e66d98d6e9c7fcc88470f1e234eaf6b1950dc0dfbf797f7282c1c861da24/coverage-7.15.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d6f4955b73b5445271379a59e3792b0d978f42d4a01e0cf7a67d9c33a3bb0a5", size = 267088, upload-time = "2026-08-06T13:48:58.41Z" }, + { url = "https://files.pythonhosted.org/packages/59/a1/ae94eb2c541add426378408379f233591e069040b1e2cdb33df9498a0682/coverage-7.15.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3fc9e047706fb4a9abb54f719d3aa643e80e5bb3818182c40aee01ac0f0247ba", size = 269508, upload-time = "2026-08-06T13:49:00.42Z" }, + { url = "https://files.pythonhosted.org/packages/9c/c7/88a10694a1c6a213569766aba9f25847b28155d4ac731b13226db216356d/coverage-7.15.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05e491d4f3165d62d4f5c8fd48dfeabf2ae8f42cbbd484319af33ea851b78982", size = 270629, upload-time = "2026-08-06T13:49:02.234Z" }, + { url = "https://files.pythonhosted.org/packages/b3/34/d8b8232e5e55169933b59aabcef2fedfa4b9d8897361bb80fcbda146505f/coverage-7.15.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:226c66e80ec0598d3b9b4874123df167ccca342aca8714f77cac6829688ee09c", size = 264043, upload-time = "2026-08-06T13:49:04.102Z" }, + { url = "https://files.pythonhosted.org/packages/7e/35/58b009dbf8c471c7224716478b9fed4a7e1af15320e1ed41660978504663/coverage-7.15.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ac41cc14bebda0dbfb0628036b7f75706935c95bcc07fefe9a0f93614aa60a57", size = 266963, upload-time = "2026-08-06T13:49:05.821Z" }, + { url = "https://files.pythonhosted.org/packages/62/aa/57fbda1b42c892968273c56b6ee9dc0f1310850859230a507bc7873b1f65/coverage-7.15.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:8af623e5cd92080acddd02b38f2f406a2c3a0893c38950b211890361448fbf26", size = 264569, upload-time = "2026-08-06T13:49:07.706Z" }, + { url = "https://files.pythonhosted.org/packages/98/8a/360e6e7f24d477b7e889703af0afa878d15b6d4d8d2a822b2835c169a879/coverage-7.15.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:07545711d4f0f32852a18f18ad11f76f0109909d09e78b9008b4cfc67e829429", size = 268299, upload-time = "2026-08-06T13:49:09.587Z" }, + { url = "https://files.pythonhosted.org/packages/4e/89/6f701261aee21b6b5fa8f7872229406dc917e125069448292223bf213606/coverage-7.15.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a0865421cfdc53654b342d515e5a233187590882d20b95752150e53f65460017", size = 263413, upload-time = "2026-08-06T13:49:11.604Z" }, + { url = "https://files.pythonhosted.org/packages/3f/0f/6f04036edc260ed425af83e834f627fad48941ce97b50bfe6edd8b6fa623/coverage-7.15.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:460115e32ee40566476db5048f9bec1e842c127ad8e6f8be745aad3ac9cbc839", size = 265725, upload-time = "2026-08-06T13:49:13.38Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ce/d19b5d4d5c49a7bfb925fd74310fee7d28bc99520ac3367ccbc54e662518/coverage-7.15.4-cp314-cp314t-win32.whl", hash = "sha256:cbde877ef9dd7baf272b9bfef2b8a25edd45d9170fc326951dd20eb480335e85", size = 225079, upload-time = "2026-08-06T13:49:15.265Z" }, + { url = "https://files.pythonhosted.org/packages/26/bb/7aa1b3b173faee0679037ca950bbbe1247273656697994d8d13f80f8d4b4/coverage-7.15.4-cp314-cp314t-win_amd64.whl", hash = "sha256:3da9e92d1c551fd7563833e9ade686efb0c4b7363ab7681a94283958c950bf5e", size = 225911, upload-time = "2026-08-06T13:49:17.279Z" }, + { url = "https://files.pythonhosted.org/packages/81/1c/4ea9e47426d80038d9222db3c4534cb6021a74b237d3ff97ffd33b6600dd/coverage-7.15.4-cp314-cp314t-win_arm64.whl", hash = "sha256:3a54f5a0d85050c73a38f6793090ee83974531e67fe5e57a1da9bee11398aa5e", size = 225219, upload-time = "2026-08-06T13:49:19.293Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c4/dc5d2ac8f9142e7ec7de66e7bf0591db29d78955a040bd915870d9c0e657/coverage-7.15.4-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:2c9872e4d9dc5d3cf616bf4b382f5a00359305a5be666a3dd0b5cdb4e49597f9", size = 222604, upload-time = "2026-08-06T13:49:21.279Z" }, + { url = "https://files.pythonhosted.org/packages/70/39/33e63df81fe2ee100897451841c821467635923e58e37c6bd4b46dd8106c/coverage-7.15.4-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:e101dbb4b9b72f0cddd8cdc8c9c5b47f456766f5e0ac82dbfb75e5c55409b78a", size = 222944, upload-time = "2026-08-06T13:49:23.187Z" }, + { url = "https://files.pythonhosted.org/packages/99/1f/ef3ffb5557febc75a0d97aa459d0266d7d741110265121cc6d8539343d44/coverage-7.15.4-cp315-cp315-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7d1abebdb047729e852b9c77a00497dfbeb11eb3a117e037d7dbc3ac8e5f5c54", size = 254050, upload-time = "2026-08-06T13:49:25.008Z" }, + { url = "https://files.pythonhosted.org/packages/6f/f5/1f0f6f77698c3601ca0ae7431e34b24c62ca2f06fecb23b73ed1f651d2be/coverage-7.15.4-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d28a4a899354d0ea6214cc59b4fa19eefbce1b9ff1688ab579acf49e894bd3fb", size = 256967, upload-time = "2026-08-06T13:49:26.896Z" }, + { url = "https://files.pythonhosted.org/packages/03/7a/2ed9bed79925f4367c83c77f66a89e5ca7229c288d2d19ad5f36d1ca0070/coverage-7.15.4-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffb3c2aacea411cc7e1d27712490c11108e2de1d39019ae32915493a59a8b9ed", size = 258587, upload-time = "2026-08-06T13:49:28.692Z" }, + { url = "https://files.pythonhosted.org/packages/45/8c/fa34044f71b7cc4ecb6da9c2408770959b0591fa9b5fb6fb6bca38f94298/coverage-7.15.4-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a9447978a92f405d301123cfd39ff49895490efb769a758fe2734c7f631bf8ce", size = 260785, upload-time = "2026-08-06T13:49:30.472Z" }, + { url = "https://files.pythonhosted.org/packages/4f/54/d5727ce36b4524a7394ab9f5f1df378e1f23affcdab01037dc8655185cc7/coverage-7.15.4-cp315-cp315-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:050467a7983b8e2fe7dd41a78bb30c3e7f8c0b8cafda14b1c46f8b5e3cf2dd3c", size = 254545, upload-time = "2026-08-06T13:49:32.271Z" }, + { url = "https://files.pythonhosted.org/packages/dc/e6/6e3783e576719590194bdffb6dd6d85490801785b7c331e35a245d8cb8b5/coverage-7.15.4-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:d003b7a5708ddad5c206c79607a6b92abb6fc13c57d99d8a4468cc03a2941ced", size = 256682, upload-time = "2026-08-06T13:49:34.089Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f2/bacdbde18b69ed2de424fcf64d9fb0a4913753d4f0eca8bae9daad69f4bd/coverage-7.15.4-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:c38efe30fd74e5c19e9433f11fb1f5dc9c6522770971b7c6145bbaa413dc8800", size = 254560, upload-time = "2026-08-06T13:49:36.052Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a3/1fb927196e3477c1b48831169ab58ba08f451ba87ae311ff1de68b26a616/coverage-7.15.4-cp315-cp315-musllinux_1_2_ppc64le.whl", hash = "sha256:1f4f826d70f772ab8b0c052329580d7fe8b8abd191e4ce0c8f81aec6614665d3", size = 258792, upload-time = "2026-08-06T13:49:38.01Z" }, + { url = "https://files.pythonhosted.org/packages/41/58/30d4c149c69053de0edfe325614c1d28d508f62b1783e0e4a234d2e49136/coverage-7.15.4-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:4a4bf917c9953f57c957be31c1cd504e3bd2f34d4a352b9d391a3025336f6768", size = 253968, upload-time = "2026-08-06T13:49:39.934Z" }, + { url = "https://files.pythonhosted.org/packages/89/e4/77f639371b918aad30dda4051f95404b43578f7f2e2f87ba73e02ed1ff37/coverage-7.15.4-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:1c9bf40ebef178a45192c75c4964760bb261b0e6ad725da5fc4c93f674f19753", size = 255893, upload-time = "2026-08-06T13:49:41.825Z" }, + { url = "https://files.pythonhosted.org/packages/5c/62/13be29b3ddab35f14c87967a4820a05106d2a3eccb4fa4ff550bf30b75e0/coverage-7.15.4-cp315-cp315-win32.whl", hash = "sha256:43619d04c3671792d2c4706ae8bf45e265dc87bbd4078189ef8b847ea1e74be2", size = 224768, upload-time = "2026-08-06T13:49:44.08Z" }, + { url = "https://files.pythonhosted.org/packages/a1/70/af0c6be0f964af6954f6b74bc109b0dbca02824696d2520fb17fe1ab06e3/coverage-7.15.4-cp315-cp315-win_amd64.whl", hash = "sha256:be619439dbcd31a2eab10b32de9fff62c26ed4bab69dc32b8363fdaaa0882809", size = 225242, upload-time = "2026-08-06T13:49:45.899Z" }, + { url = "https://files.pythonhosted.org/packages/4f/2d/f3bd3aab899fc9efc18b53133ee68f5f98574ef480649b23e12962226387/coverage-7.15.4-cp315-cp315-win_arm64.whl", hash = "sha256:def597967dafc2e8d97c9097ea453c464e0bb8ed38f193a43070f10dc623bb6d", size = 224674, upload-time = "2026-08-06T13:49:48.322Z" }, + { url = "https://files.pythonhosted.org/packages/f5/ca/f69251cd63eabc6438321aea22148754cce758a26bde07dd490e3fe7cfc5/coverage-7.15.4-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:c7dbc748ac8a1e3e59a2b28bea47675e6e778081dbbf081bde0d75def2fcbe1d", size = 223333, upload-time = "2026-08-06T13:49:50.293Z" }, + { url = "https://files.pythonhosted.org/packages/a7/a7/037b53b2885b0d8447064432491a4d5a1014cd9f97a594d53acd0c04541a/coverage-7.15.4-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:2413074a5ecbb61a01a7888fc72db0ca324d13588c5b38bc0dd8564cdcdfea26", size = 223630, upload-time = "2026-08-06T13:49:52.637Z" }, + { url = "https://files.pythonhosted.org/packages/80/4f/152b8a4779ae90da11bb24f7467df8a59f0be48a5c52acb856325ca48289/coverage-7.15.4-cp315-cp315t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4e6f6f632b7b2f714bf7a1346e8f97b650ee71f3c298aaad42a2ab60f0f07645", size = 264489, upload-time = "2026-08-06T13:49:54.52Z" }, + { url = "https://files.pythonhosted.org/packages/10/2d/84b4b9e0e1dd6528a51920ff7031f35b789382e467a28ec6a5a578cb8812/coverage-7.15.4-cp315-cp315t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8df457da2249d3c75ca2e5e835d59c725abfe92d27fdff6cd99eed85b51d5e9a", size = 267567, upload-time = "2026-08-06T13:49:56.721Z" }, + { url = "https://files.pythonhosted.org/packages/53/fc/ba01cc25299f9f8a2c8b02d3b28c53f3543d9fbfbe4e74fa2760b48f163e/coverage-7.15.4-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:050f66a08805acb5b8a23c6d4a517b1ecf82c08e81ed0e4bd727df065e5c6624", size = 270123, upload-time = "2026-08-06T13:49:58.736Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d0/db2647cbf40b14f8c308f94ff7bf89c06d564e59f396906edf50086ec788/coverage-7.15.4-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1587fb771d1ccceef708fdde1e5af8c7ed24b486b61d13a321acb7d8145390aa", size = 271107, upload-time = "2026-08-06T13:50:00.811Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4d2d17924552c458bb4f77dd631f0e3bc92fbbdf2d2d916cd4b33bbfd5b1/coverage-7.15.4-cp315-cp315t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8b4f1c3a69ca580f3fbd6b2046915f536d7f586874f25c1bb23add2a3c88d50f", size = 264955, upload-time = "2026-08-06T13:50:03.023Z" }, + { url = "https://files.pythonhosted.org/packages/ee/de/dc010c7a3691f396d93bbc26bfcafa1c2a3a351cd520470f15faf5795bd5/coverage-7.15.4-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:ffb58d7eff5b7f6ecc6fa21d6288ab7f968a212cb67d682c269c09b9eba3b66f", size = 267949, upload-time = "2026-08-06T13:50:05.557Z" }, + { url = "https://files.pythonhosted.org/packages/78/ea/dc96a11375e83c045c2f7c61fb6918277cfe9401db7c0f7b1d111a84b2e5/coverage-7.15.4-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:d9df165544774574ee004b953023d1bebada1894a80b1052a43d798b0f676e67", size = 264421, upload-time = "2026-08-06T13:50:07.612Z" }, + { url = "https://files.pythonhosted.org/packages/c8/86/b77131a0f9503ce461cd577076147d7a9040f0c5dda772686f729e2cc9cb/coverage-7.15.4-cp315-cp315t-musllinux_1_2_ppc64le.whl", hash = "sha256:f9de0a24a4079b53e523b5c5e2c5945ec251ab486652659955187cf255a259bc", size = 269121, upload-time = "2026-08-06T13:50:09.58Z" }, + { url = "https://files.pythonhosted.org/packages/24/24/944bc35007862955e7ebf05754e645419dcf5d7526c52735cfa2715e8ebf/coverage-7.15.4-cp315-cp315t-musllinux_1_2_riscv64.whl", hash = "sha256:150089274bdc9f940628552cb92844e0223c987f1902ab8efe9f45a2ec758d88", size = 264565, upload-time = "2026-08-06T13:50:11.722Z" }, + { url = "https://files.pythonhosted.org/packages/c7/cc/a3bb9f93e7e740659163e2ea584f8196ddcd2c456a5dbe15f6c50105fec1/coverage-7.15.4-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:a58a94fed5da6997d258e8f7668c1e195fbd04a691d781b7558f1e468f9e68bc", size = 266522, upload-time = "2026-08-06T13:50:13.786Z" }, + { url = "https://files.pythonhosted.org/packages/49/dd/e0e40f3560d878d888c580698ff5ad1179f5e1c3ac949684ef66b41a3817/coverage-7.15.4-cp315-cp315t-win32.whl", hash = "sha256:ebd5a6d8466ff30836572f3ba2cae8a5e8f85029b1c6d5e2ed338dc472a5166a", size = 225068, upload-time = "2026-08-06T13:50:15.825Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7e/37732ea80eebc30e976e4cdab15c190bc42d96959a42e38ddf6f8c60468f/coverage-7.15.4-cp315-cp315t-win_amd64.whl", hash = "sha256:288bde2a2d7ab6b6c2d7252fcde8b524387f2d970bdba9658fc6f8bbcaef0f9b", size = 225895, upload-time = "2026-08-06T13:50:17.928Z" }, + { url = "https://files.pythonhosted.org/packages/c6/08/1e00f7923eaaba45fb3d51dd794125fc766304b1df264f3a9c6557bfb30e/coverage-7.15.4-cp315-cp315t-win_arm64.whl", hash = "sha256:68be5e1de60ff13c9095bbec0e5a7fa45b33b101752215b91345ea1f61c4a278", size = 225213, upload-time = "2026-08-06T13:50:19.981Z" }, + { url = "https://files.pythonhosted.org/packages/b4/d9/e70c286c979378f061d8266e279b686ab0b0b688e1fe0af864684f23a77d/coverage-7.15.4-py3-none-any.whl", hash = "sha256:964730a1e9de9c0cf11be6a1a3c79ce419c34882842abd256086ba4698705e84", size = 214332, upload-time = "2026-08-06T13:50:22.192Z" }, ] [package.optional-dependencies] toml = [ - { name = "tomli", marker = "python_full_version <= '3.11'" }, + { name = "tomli", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] [[package]] name = "cryptography" -version = "49.0.0" +version = "50.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, - { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" }, - { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" }, - { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" }, - { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" }, - { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" }, - { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" }, - { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" }, - { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" }, - { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" }, - { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" }, - { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" }, - { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" }, - { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892, upload-time = "2026-06-12T20:02:10.735Z" }, - { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835, upload-time = "2026-06-12T20:02:48.743Z" }, - { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239, upload-time = "2026-06-12T20:02:56.03Z" }, - { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593, upload-time = "2026-06-12T20:02:50.666Z" }, - { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961, upload-time = "2026-06-12T20:01:46.468Z" }, - { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145, upload-time = "2026-06-12T20:02:16.832Z" }, - { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719, upload-time = "2026-06-12T20:02:52.611Z" }, - { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209, upload-time = "2026-06-12T20:02:07.282Z" }, - { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285, upload-time = "2026-06-12T20:01:32.439Z" }, - { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441, upload-time = "2026-06-12T20:02:01.469Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869, upload-time = "2026-06-12T20:01:36.574Z" }, - { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948, upload-time = "2026-06-12T20:02:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153, upload-time = "2026-06-12T20:01:39.059Z" }, - { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, - { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" }, - { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" }, - { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" }, - { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" }, - { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" }, - { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" }, - { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" }, - { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" }, - { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" }, - { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" }, - { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" }, - { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" }, - { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, - { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" }, - { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" }, - { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" }, - { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" }, - { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/de/41/6cbdcf9142d00fe82836fbb51e503e58088575cf7a0fe1dbff6695bf0840/cryptography-50.0.0.tar.gz", hash = "sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9", size = 880201, upload-time = "2026-07-31T14:25:10.11Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/5c/59086b4aac5e879d38ddbcf74e4be7ade89cebc3eb199a55da998c3bb46a/cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03", size = 4001252, upload-time = "2026-07-31T14:23:33.331Z" }, + { url = "https://files.pythonhosted.org/packages/57/ef/8f2df13c7216bcad3e1c74e07f6e193d93e998e114f524a53877c9af27ad/cryptography-50.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645", size = 4719554, upload-time = "2026-07-31T14:23:35.611Z" }, + { url = "https://files.pythonhosted.org/packages/d9/41/029086c34d91052fc3b88bcc8056f709a7c915c7a23b235a54eb800b1c97/cryptography-50.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7", size = 4702130, upload-time = "2026-07-31T14:23:37.635Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ff/b6ce0954962e7f7b969f850a883744197bb3910bdfd7b6da162eab7d9f68/cryptography-50.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3", size = 4725244, upload-time = "2026-07-31T14:23:39.471Z" }, + { url = "https://files.pythonhosted.org/packages/06/1e/63a1027cb7fec360a182208e1b7767d5aa1fe57be3d6aa856e69a321edc0/cryptography-50.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f", size = 5342265, upload-time = "2026-07-31T14:23:41.286Z" }, + { url = "https://files.pythonhosted.org/packages/6b/72/a1116d683a6d7ece94590013882515de087edf9ef0e6292aae615a44df73/cryptography-50.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae", size = 4734609, upload-time = "2026-07-31T14:23:43.139Z" }, + { url = "https://files.pythonhosted.org/packages/15/37/36a9c479bbe49acea2636c7fd3360d20f7b7e079c300352011c44850b181/cryptography-50.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a", size = 4356517, upload-time = "2026-07-31T14:23:44.939Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/8a151d64367204cbc63ec65d37502f1d9c53cf4bfc6ec3c532614dbec60d/cryptography-50.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987", size = 4724529, upload-time = "2026-07-31T14:23:46.93Z" }, + { url = "https://files.pythonhosted.org/packages/22/f6/ec13b470172126464a86bf54d2294a46d29837fc51ba3e45d4047946fb5e/cryptography-50.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169", size = 5299852, upload-time = "2026-07-31T14:23:48.851Z" }, + { url = "https://files.pythonhosted.org/packages/da/3a/f05e32c99d440c9bb891ea0e36c9091891e36be5a9a87ab2ee6ea20729f6/cryptography-50.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f", size = 4734462, upload-time = "2026-07-31T14:23:50.861Z" }, + { url = "https://files.pythonhosted.org/packages/ca/dc/bd72b26be8953f80625f63151efd38eee71c76ca6cf591c08ff34615a79e/cryptography-50.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105", size = 4852708, upload-time = "2026-07-31T14:23:52.715Z" }, + { url = "https://files.pythonhosted.org/packages/27/20/c930314a2ab476d15dec966ec87e2e9637bb02b06106b12c0396c57bb603/cryptography-50.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef", size = 5004179, upload-time = "2026-07-31T14:23:54.887Z" }, + { url = "https://files.pythonhosted.org/packages/32/2e/c9db68a0c4bfa28e310707527c0ee3a2bd254104d2e02e68f368e197aa4c/cryptography-50.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30", size = 3840395, upload-time = "2026-07-31T14:23:56.677Z" }, + { url = "https://files.pythonhosted.org/packages/c3/fb/951032a3bf22a5697c83183fb6294a4843772947a70e616c57b3ff5f522e/cryptography-50.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:49e7d93abdbd2990caced757e5fade25302f719c3c8fb6e6fff2dde98999fc41", size = 3989258, upload-time = "2026-07-31T14:23:58.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/67/91eb047e69c5e845f2f14b8a2e4a1aab0f283cb885531e9e22c8adb176bc/cryptography-50.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:19736989797678c6af1e55cd49055cdbcb55d8f6b5583ac5335f933aba9101dc", size = 4700648, upload-time = "2026-07-31T14:24:00.702Z" }, + { url = "https://files.pythonhosted.org/packages/30/82/85f0f7425c856b9f96459411eb12e74ef72df9caf6f8f15bf23a33ff131f/cryptography-50.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80b63928fa35083b33966ce1efb70e5b9607181e49dcd1c22c8c005e319f667f", size = 4682442, upload-time = "2026-07-31T14:24:02.538Z" }, + { url = "https://files.pythonhosted.org/packages/1a/28/b555a365adff1cca2fbe7b9e487d68a40de6bc67ff2cb587473eb43de0e7/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:d58c3db7cd6eed54e6c06744db55456b65ebd7492ddeae9c1e93cfca7aa857d3", size = 4707596, upload-time = "2026-07-31T14:24:04.394Z" }, + { url = "https://files.pythonhosted.org/packages/72/d8/f52538140cc719df62a01cf87d1c7142318d235817109d6f4054d7c352d6/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:df2a58a472f332225671c35b0a830208b86d004f82baa8530fa3782c85646533", size = 5314552, upload-time = "2026-07-31T14:24:06.31Z" }, + { url = "https://files.pythonhosted.org/packages/38/14/6120e5bd7c5aa022ad15424ba4d5c5269d0d9448ed4d55e492ea91e3c1c4/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:11b74db56cdbe3cdee6e3f6982ecb70334fa10dce99ed58bf7894aaaa3b2a037", size = 4717113, upload-time = "2026-07-31T14:24:08.349Z" }, + { url = "https://files.pythonhosted.org/packages/fa/71/190bf38c3ee2e0f8efc9860ae100c9df4169742eef274b91e7aa1cb133b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f59e38625469987d7ef6d495323c55e7db6c212eaf6112267e0d3b565a2e9c9f", size = 4338580, upload-time = "2026-07-31T14:24:10.227Z" }, + { url = "https://files.pythonhosted.org/packages/3a/63/504ccfbbe61fd8aa983f7f146399cdf034c72c2fc55f5b2dfdcdcdb20c99/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ecfed7367f965a0328cfbdd70da860f15441f002f613185668c6e6ebf5a0ac11", size = 4707038, upload-time = "2026-07-31T14:24:12.169Z" }, + { url = "https://files.pythonhosted.org/packages/01/77/2cf79bbfc4d12ca106437a6e170d6aaa01a373e93093118aaaef0e801bd4/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:9aa87839c383bdbab6ef865787a1fb877af8dd03464c4400322726feaaadfc6d", size = 5273110, upload-time = "2026-07-31T14:24:14.38Z" }, + { url = "https://files.pythonhosted.org/packages/e5/45/8aae2972c520145377ea3559a605a899bebe227bf070b33cdb445929a9b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:6ba6a53445bd3cfa809ef3ef5f1589aa6ba08784a1d962bf47d0940e871dab1c", size = 4716439, upload-time = "2026-07-31T14:24:16.415Z" }, + { url = "https://files.pythonhosted.org/packages/7b/20/4fe50b619a48c2525cc46e2dbc1ac490708d704be5d467bdaac6dc955682/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3f5735ffe4996d28b809371756219f5354864902a3b9e7c0b9ee87041209fc9c", size = 4837383, upload-time = "2026-07-31T14:24:18.553Z" }, + { url = "https://files.pythonhosted.org/packages/92/91/3a31366e183343d3703f8995c095f5734676bd6938118047e50fcf279eb4/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1b4a266766514614f8aa60416e71f2fc6e575d36e7bdc90f644fadb2f4b75b95", size = 4985772, upload-time = "2026-07-31T14:24:20.385Z" }, + { url = "https://files.pythonhosted.org/packages/74/9a/02ffe35b2853d121689871eb5dce862092562b3a1ed5cc98f1aaed441506/cryptography-50.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:12b9c6996425c76ea6c457ace4f3073e715b8c545add07cd1a8f3a4f90691269", size = 3816291, upload-time = "2026-07-31T14:24:22.125Z" }, + { url = "https://files.pythonhosted.org/packages/03/37/73d005be173aff344af30e9fd2a576575cb2391a7101d9cd3842e1fa8cce/cryptography-50.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07", size = 4036009, upload-time = "2026-07-31T14:24:24.122Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c6/7a6202a534e32103a285b7834a120869557fe198d51d7cfe59754c8bda9c/cryptography-50.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3", size = 4745252, upload-time = "2026-07-31T14:24:26.118Z" }, + { url = "https://files.pythonhosted.org/packages/85/4f/0fa8c2f4428198f15d9ff8d63400e27afbf94ce833f6108da1eb3753f945/cryptography-50.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f", size = 4728939, upload-time = "2026-07-31T14:24:27.994Z" }, + { url = "https://files.pythonhosted.org/packages/d1/63/54dd723490ba2dc09b299682c10b38db38f159728bcaae8c591b8af2f22d/cryptography-50.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5", size = 4748483, upload-time = "2026-07-31T14:24:30.254Z" }, + { url = "https://files.pythonhosted.org/packages/1d/dd/7c77d26285cc7f6991efce64a0f5b4f9383bfa5dd8c5033003eaf7db4cdb/cryptography-50.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f", size = 5367599, upload-time = "2026-07-31T14:24:32.457Z" }, + { url = "https://files.pythonhosted.org/packages/46/c9/f60aed34c013f317f92817b6c171c2d22a78270fa41109bd4b08af26b194/cryptography-50.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025", size = 4762647, upload-time = "2026-07-31T14:24:34.599Z" }, + { url = "https://files.pythonhosted.org/packages/be/f3/f9a0173b139372c3a48ed98154b45cc6b9de17c789d5ab552e621c293609/cryptography-50.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a", size = 4385197, upload-time = "2026-07-31T14:24:36.647Z" }, + { url = "https://files.pythonhosted.org/packages/d8/36/83bb81f6e569bc38e1e4a7bc80f29b46bb9601920bc455fc8e888f5d5742/cryptography-50.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b", size = 4748095, upload-time = "2026-07-31T14:24:39.493Z" }, + { url = "https://files.pythonhosted.org/packages/6b/16/d3008eff98c764979865834c3d386d4fd041b5f52e7f34fc29ac1a5eb515/cryptography-50.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708", size = 5325948, upload-time = "2026-07-31T14:24:41.556Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f8/d97f9603efda3888187bfdb893f26c41be4735c10631d05d284ee6b047c4/cryptography-50.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47", size = 4762400, upload-time = "2026-07-31T14:24:43.636Z" }, + { url = "https://files.pythonhosted.org/packages/64/a2/4615c8f7d81a00b1d6e6afe19f694e1543582349fb5f4076f6cb5dc36485/cryptography-50.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9", size = 4878208, upload-time = "2026-07-31T14:24:45.522Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1a/efcfb02f91407149a0dacffffab791f7e19bf6385f63b3666dc8b5e5c9c8/cryptography-50.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7", size = 5037050, upload-time = "2026-07-31T14:24:47.697Z" }, + { url = "https://files.pythonhosted.org/packages/57/30/4a22984d4f1bdfb8c054f07a92bc176b97a3134cc1d6c4b3bffb1f3688b4/cryptography-50.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba", size = 3874135, upload-time = "2026-07-31T14:24:50.085Z" }, + { url = "https://files.pythonhosted.org/packages/9d/3e/e54cde8c01631a5a8226ccd617eab9e57fd5cfdad90f1a9e6bb570794631/cryptography-50.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:5e34edd123674534acd70147f0ca331eaa2c74e6325fb2028c886aa26ba0b68c", size = 3963170, upload-time = "2026-07-31T14:24:51.968Z" }, + { url = "https://files.pythonhosted.org/packages/01/b6/0b9e125e90f3d2dcf599a218a899cda7326a3158cfa258723f0b398b08f6/cryptography-50.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8eb5e1172eb569ea8a872796576e6a67c276351728b6455d5beb01242b027c6a", size = 4692441, upload-time = "2026-07-31T14:24:53.743Z" }, + { url = "https://files.pythonhosted.org/packages/53/c9/a5151588710785a96d7bc4de27d4cd62f263bbbcb203cfe29df537eb6505/cryptography-50.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:910d11e1a385c654bf738bf3e6b8e6ed5de0f5610fcae2be9e5b398d8081d20e", size = 4699810, upload-time = "2026-07-31T14:24:55.746Z" }, + { url = "https://files.pythonhosted.org/packages/c7/1a/15b92b25eb6ce3089cd49377ae990a0f3ad485a510f968aed1f19dbdcdf2/cryptography-50.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:62598a8a57f815db4c6259a4e97d857dab56697e7de8e8ab02352ab74da1995d", size = 4691924, upload-time = "2026-07-31T14:24:58.082Z" }, + { url = "https://files.pythonhosted.org/packages/62/15/219075012ab13e8905f3cd572204f4acb4b111df787104346b9bc0cea789/cryptography-50.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:07479a1cb08219ab719147e742e76090c9c773321959bb94946fffdd397a6437", size = 4699593, upload-time = "2026-07-31T14:24:59.951Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b5/c2c5fce26f0ee40d21bafe7f191d29a34b35a65ac4fe8a1191d1983612e9/cryptography-50.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c99c003e088647b8a5b7c145d6f78c335f6348332b62e142d411c4b63d1460b9", size = 3813796, upload-time = "2026-07-31T14:25:02.298Z" }, ] [[package]] name = "curies" -version = "0.12.3" +version = "0.14.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, + { name = "pystow" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/2d/09009f24ee7e9f948d0aa3b4499b6c30d47d46ad0ef209dbb20b05c4d979/curies-0.12.3.tar.gz", hash = "sha256:b55e266c3f92f0ad8ce13727c3d4e81d622b2422f5df230a6ff2f9e98733f2a2", size = 280958, upload-time = "2025-10-26T23:22:06.633Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/b2/aa2f21c1ef42b046600538aa3221d84b1f5ee4199e383f2014624fc8e047/curies-0.14.6.tar.gz", hash = "sha256:17cde129aba90c151f38aae762b6c26fa2dceda8ed51103c829e805ee11d231c", size = 73340, upload-time = "2026-08-05T08:11:46.482Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/48/8850e53fe803d01f65adaf349ee9a9e3d7ad57ea0bc9777b8045acb956e4/curies-0.12.3-py3-none-any.whl", hash = "sha256:d336dfa738743f388ce53dc275d7101e9e12f9568d1b347396c29de2385123df", size = 68030, upload-time = "2025-10-26T23:22:05.019Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e9/bfa4d4a47c03180422343be8c69df75f5942276e815a367ae377f32db2d5/curies-0.14.6-py3-none-any.whl", hash = "sha256:a3653afa27576029c491e6ef97d2bc7d9c388afbbf44973e993b8d24fbb0c99c", size = 82629, upload-time = "2026-08-05T08:11:45.123Z" }, ] [[package]] @@ -941,13 +1065,14 @@ wheels = [ [[package]] name = "deprecated" -version = "1.3.0" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wrapt" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/9c/2665cc17662aacbd948ecc5d685afad60b60b80bcf4a93dd706197d11a4f/deprecated-1.3.0-py2.py3-none-any.whl", hash = "sha256:0efaf13de8bd3f3f86d88f6e1001d3982dae6e64b85302b60230de4d047387bd", size = 11294, upload-time = "2025-10-29T15:39:50.94Z" }, + { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, ] [[package]] @@ -996,44 +1121,44 @@ wheels = [ [[package]] name = "duckdb" -version = "1.5.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0c/66/744b4931b799a42f8cb9bc7a6f169e7b8e51195b62b246db407fd90bf15f/duckdb-1.5.2.tar.gz", hash = "sha256:638da0d5102b6cb6f7d47f83d0600708ac1d3cb46c5e9aaabc845f9ba4d69246", size = 18017166, upload-time = "2026-04-13T11:30:09.065Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/00/03b96203d9bf4ff8637de4d42adeca5b43342a5050f656eccce1e69d6879/duckdb-1.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:63bf8687feefeed51adf45fa3b062ab8b1b1c350492b7518491b86bae68b1da1", size = 30017339, upload-time = "2026-04-13T11:28:36.134Z" }, - { url = "https://files.pythonhosted.org/packages/01/f4/2f4af0233489fc92822ff6021a2a4e05f7cd75fa1a352a163967fbeeab22/duckdb-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84b193aca20565dedb3172de15f843c659c3a6c773bf14843a9bd781c850e7db", size = 15945057, upload-time = "2026-04-13T11:28:39.21Z" }, - { url = "https://files.pythonhosted.org/packages/34/0a/d41ee8cdeb63cf12f2ee9e6c8e17cc8bacff6468013be703e44fd2a22efa/duckdb-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5596bbfc31b1b259db69c8d847b42d036ce2c4804f9ccb28f9fc46a16de7bc53", size = 14199133, upload-time = "2026-04-13T11:28:41.791Z" }, - { url = "https://files.pythonhosted.org/packages/11/39/4da08139b109d7f84b12ecca202a5adfff5b1b20970c01bd82dc09d86a59/duckdb-1.5.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8dbd7e31e5dc157bfe8803fa7d2652336265c6c19926c5a4a9b40f8222868d08", size = 19285501, upload-time = "2026-04-13T11:28:44.208Z" }, - { url = "https://files.pythonhosted.org/packages/3c/cc/10a542561634408cbae951a836e645dda784ddc48eaa2ee72701a2992a8e/duckdb-1.5.2-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9cd5e71702d446613750405cde03f66ed268f4c321da071b0472759dad19536", size = 21392488, upload-time = "2026-04-13T11:28:46.923Z" }, - { url = "https://files.pythonhosted.org/packages/1b/61/e9015ee2117f86c2e8396ad66b85c8338b2ecdc9a20eb5b099a537cf3c6a/duckdb-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:ce17670bb392ea1b3650537db02bd720908776b5b95f6d2472d31a7de59d1dc1", size = 13096311, upload-time = "2026-04-13T11:28:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/9a/b0/d13e7e396d86c245290b3e93f692a2d27c2fe99f857aaf9205003c00c978/duckdb-1.5.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f69164b048e498b9e9140a24343108a5ae5f17bfb3485185f55fdf9b1aa924d", size = 30020978, upload-time = "2026-04-13T11:28:52.486Z" }, - { url = "https://files.pythonhosted.org/packages/70/7b/ae1ec7f516394aa55501d1949af1f731be8d9d7433f0acc3f4632a0ba484/duckdb-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:81fc4fbf0b5e25840b39ba2a10b78c6953c0314d5d0434191e7898f34ab1bba3", size = 15947821, upload-time = "2026-04-13T11:28:55.981Z" }, - { url = "https://files.pythonhosted.org/packages/8a/a5/cae0105e01a85f85ead61723bb42dab14c2f8ec49f91e67a2372c02574a4/duckdb-1.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56d38b3c4e0ef2abb58898d0fd423933999ed535c45e75e9d9f72e1d5fed69b8", size = 14201656, upload-time = "2026-04-13T11:28:58.316Z" }, - { url = "https://files.pythonhosted.org/packages/50/db/46c57e8813ac33762bddc9545610ed648751c5b6a379abf2dc6035505ce4/duckdb-1.5.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:376856066c65ccd55fcb3a380bbe33a71ce089fc4623d229ffc6e82251afdb6d", size = 19285181, upload-time = "2026-04-13T11:29:01.041Z" }, - { url = "https://files.pythonhosted.org/packages/dc/a2/67694010693ec8c8c975e6991f48ef886d35ecbdaa2f287234882a403c21/duckdb-1.5.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c69907354ffee94ba8cf782daf0480dab7557f21ce27fffa6c0ea8f74ed4b8e2", size = 21394852, upload-time = "2026-04-13T11:29:03.814Z" }, - { url = "https://files.pythonhosted.org/packages/52/9f/2b1618c5a93949a70dcf105293db7e27bb2b2cc4aeb1ff46b806f430ec81/duckdb-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:d9b4f5430bf4f05d4c0dc4c55c75def3a5af4be0343be20fa2bfc577343fbfc9", size = 13095526, upload-time = "2026-04-13T11:29:06.265Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e9/cb39e0d94a32f5333e819112fd01439a31f541f9c56a31b66f9bd209704b/duckdb-1.5.2-cp311-cp311-win_arm64.whl", hash = "sha256:2323c1195c10fb2bb982fc0218c730b43d1b92a355d61e68e3c5f3ac9d44c34f", size = 13946215, upload-time = "2026-04-13T11:29:08.672Z" }, - { url = "https://files.pythonhosted.org/packages/41/de/ebe66bbe78125fc610f4fd415447a65349d94245950f3b3dfb31d028af02/duckdb-1.5.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e6495b00cad16888384119842797c49316a96ae1cb132bb03856d980d95afee1", size = 30064950, upload-time = "2026-04-13T11:29:11.468Z" }, - { url = "https://files.pythonhosted.org/packages/2d/8a/3e25b5d03bcf1fb99d189912f8ce92b1db4f9c8778e1b1f55745973a855a/duckdb-1.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d72b8856b1839d35648f38301b058f6232f4d36b463fe4dc8f4d3fdff2df1a2e", size = 15969113, upload-time = "2026-04-13T11:29:14.139Z" }, - { url = "https://files.pythonhosted.org/packages/19/bb/58001f0815002b1a93431bf907f77854085c7d049b83d521814a07b9db0b/duckdb-1.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a1de4f4d454b8c97aec546c82003fc834d3422ce4bc6a19902f3462ef293bed", size = 14224774, upload-time = "2026-04-13T11:29:16.758Z" }, - { url = "https://files.pythonhosted.org/packages/d3/2f/a7f0de9509d1cef35608aeb382919041cdd70f58c173865c3da6a0d87979/duckdb-1.5.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce0b8141a10d37ecef729c45bc41d334854013f4389f1488bd6035c5579aaac1", size = 19313510, upload-time = "2026-04-13T11:29:19.574Z" }, - { url = "https://files.pythonhosted.org/packages/26/78/eb1e064ea8b9df3b87b167bfd7a407b2f615a4291e06cba756727adfa06c/duckdb-1.5.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c99ef73a277c8921bc0a1f16dee38d924484251d9cfd20951748c20fcd5ed855", size = 21429692, upload-time = "2026-04-13T11:29:22.575Z" }, - { url = "https://files.pythonhosted.org/packages/5b/12/05b0c47d14839925c5e35b79081d918ca82e3f236bb724a6f58409dd5291/duckdb-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:8d599758b4e48bf12e18c9b960cf491d219f0c4972d19a45489c05cc5ab36f83", size = 13107594, upload-time = "2026-04-13T11:29:25.43Z" }, - { url = "https://files.pythonhosted.org/packages/0b/2c/80558a82b236e044330e84a154b96aacddb343316b479f3d49be03ea11cb/duckdb-1.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:fc85a5dbcbe6eccac1113c72370d1d3aacfdd49198d63950bdf7d8638a307f00", size = 13927537, upload-time = "2026-04-13T11:29:27.842Z" }, - { url = "https://files.pythonhosted.org/packages/98/f2/e3d742808f138d374be4bb516fade3d1f33749b813650810ab7885cdc363/duckdb-1.5.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:4420b3f47027a7849d0e1815532007f377fa95ee5810b47ea717d35525c12f79", size = 30064879, upload-time = "2026-04-13T11:29:30.763Z" }, - { url = "https://files.pythonhosted.org/packages/72/0d/f3dc1cf97e1267ca15e4307d456f96ce583961f0703fd75e62b2ad8d64fa/duckdb-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bb42e6ed543902e14eae647850da24103a89f0bc2587dec5601b1c1f213bd2ed", size = 15969327, upload-time = "2026-04-13T11:29:33.481Z" }, - { url = "https://files.pythonhosted.org/packages/b1/e0/d5418def53ae4e05a63075705ff44ed5af5a1a5932627eb2b600c5df1c93/duckdb-1.5.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:98c0535cd6d901f61a5ea3c2e26a1fd28482953d794deb183daf568e3aa5dda6", size = 14225107, upload-time = "2026-04-13T11:29:35.882Z" }, - { url = "https://files.pythonhosted.org/packages/16/a7/15aaa59dbecc35e9711980fcdbf525b32a52470b32d18ef678193a146213/duckdb-1.5.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:486c862bf7f163c0110b6d85b3e5c031d224a671cca468f12ebb1d3a348f6b39", size = 19313433, upload-time = "2026-04-13T11:29:38.367Z" }, - { url = "https://files.pythonhosted.org/packages/bd/21/d903cc63a5140c822b7b62b373a87dc557e60c29b321dfb435061c5e67cf/duckdb-1.5.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:70631c847ca918ee710ec874241b00cf9d2e5be90762cbb2a0389f17823c08f7", size = 21429837, upload-time = "2026-04-13T11:29:41.135Z" }, - { url = "https://files.pythonhosted.org/packages/e3/0a/b770d1f60c70597302130d6247f418549b7094251a02348fbaf1c7e147ae/duckdb-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:52a21823f3fbb52f0f0e5425e20b07391ad882464b955879499b5ff0b45a376b", size = 13107699, upload-time = "2026-04-13T11:29:43.905Z" }, - { url = "https://files.pythonhosted.org/packages/d9/cf/e200fe431d700962d1a908d2ce89f53ccee1cc8db260174ae663ba09686b/duckdb-1.5.2-cp313-cp313-win_arm64.whl", hash = "sha256:411ad438bd4140f189a10e7f515781335962c5d18bd07837dc6d202e3985253d", size = 13927646, upload-time = "2026-04-13T11:29:46.598Z" }, - { url = "https://files.pythonhosted.org/packages/83/a1/f6286c67726cc1ea60a6e3c0d9fbc66527dde24ae089a51bbe298b13ca78/duckdb-1.5.2-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6b0fe75c148000f060aa1a27b293cacc0ea08cc1cad724fbf2143d56070a3785", size = 30078598, upload-time = "2026-04-13T11:29:49.828Z" }, - { url = "https://files.pythonhosted.org/packages/de/6a/59febb02f21a4a5c6b0b0099ef7c965fdd5e61e4904cf813809bb792e35f/duckdb-1.5.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:35579b8e3a064b5eaf15b0eafc558056a13f79a0a62e34cc4baf57119daecfec", size = 15975120, upload-time = "2026-04-13T11:29:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/09/70/ce750854d37bb5a45cccbb2c3cb04df4af56aea8fc30a2499bb643b4a9c0/duckdb-1.5.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea58ff5b0880593a280cf5511734b17711b32ee1f58b47d726e8600848358160", size = 14227762, upload-time = "2026-04-13T11:29:55.564Z" }, - { url = "https://files.pythonhosted.org/packages/28/dc/ad45ac3c0b6c4687dc649e8f6cf01af1c8b0443932a39b2abb4ebcb3babd/duckdb-1.5.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef461bca07313412dc09961c4a4757a851f56b95ac01c58fac6007632b7b94f2", size = 19315668, upload-time = "2026-04-13T11:29:58.427Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b1/1464f468d2e5813f5808de95df9d3113a645a5bfa2ffcaecbc542ddae272/duckdb-1.5.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be37680ddb380015cb37318e378c53511c45c4f0d8fac5599d22b7d092b9217a", size = 21434056, upload-time = "2026-04-13T11:30:01.238Z" }, - { url = "https://files.pythonhosted.org/packages/ce/32/6673607e024722473fa7aafdd29c0e3dd231dd528f6cd8b5797fbeeb229d/duckdb-1.5.2-cp314-cp314-win_amd64.whl", hash = "sha256:0b291786014df1133f8f18b9df4d004484613146e858d71a21791e0fcca16cf4", size = 13633667, upload-time = "2026-04-13T11:30:04.05Z" }, - { url = "https://files.pythonhosted.org/packages/7a/e3/9d34173ec068631faea3ea6e73050700729363e7e33306a9a3218e5cdc61/duckdb-1.5.2-cp314-cp314-win_arm64.whl", hash = "sha256:c9f3e0b71b8a50fccfb42794899285d9d318ce2503782b9dd54868e5ecd0ad31", size = 14402513, upload-time = "2026-04-13T11:30:06.609Z" }, +version = "1.5.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/19/e57151753576373c6696a12022648546cca6038e8833fda2908ee2342d9b/duckdb-1.5.5.tar.gz", hash = "sha256:72f33ee57ca7595b23957671a2cc7f7fe2be0ecc2d68f63abedcfcaa3a5c1238", size = 18066741, upload-time = "2026-07-22T10:55:17.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/d4/298acf9331a80b3ce6ac64dd940e7e13f4058fb69d18914445f02e3c7bfe/duckdb-1.5.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b805507f88171b428b21c966c30e9a3d54e30b24528918a44ed0032542bc26f", size = 32702934, upload-time = "2026-07-22T10:53:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/d5/90/c489fb63d64b2e7ee109ce8460bdede003a0f256e5b41a03a2a1c4764058/duckdb-1.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b08e19cc856220d8a26fa62abc2264b349aff67255e9373c6a3f607addd56dc6", size = 17343604, upload-time = "2026-07-22T10:53:22.767Z" }, + { url = "https://files.pythonhosted.org/packages/0b/27/effa80a15b1f0c61c235622f797868485359e8c9ad6a8e358e7a0c479151/duckdb-1.5.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a17e6a922e42a5c06ed2353fe78c5dff2610f6632d603836f9606ad0bf754079", size = 15488179, upload-time = "2026-07-22T10:53:25.945Z" }, + { url = "https://files.pythonhosted.org/packages/5d/07/21212345c8d24ba62dceaa20be3b21f5c46f1510b1b42ce93bb058afe0c4/duckdb-1.5.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bdc38922c365c37720149f90d90b1e9823eb82dad6830855b5f87537fa6fc0c", size = 19367323, upload-time = "2026-07-22T10:53:30.23Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d0/10371ae875fb4b5ef61bb892743b4b2e90c512b371fdf29317deb744857d/duckdb-1.5.5-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e238060db5ca59879882a6e9b015e2c65d5c64ddf281ba1d7a9a2033764152cf", size = 21476568, upload-time = "2026-07-22T10:53:33.486Z" }, + { url = "https://files.pythonhosted.org/packages/b2/35/09568ce617dd7bc0757b3d7b6a981660b9e4f0b7594de8ed776755eae740/duckdb-1.5.5-cp310-cp310-win_amd64.whl", hash = "sha256:4acc72798ba1885a9c17d1242903d2cd502f13b1271c7677f7cab25d8578eceb", size = 13156129, upload-time = "2026-07-22T10:53:37.55Z" }, + { url = "https://files.pythonhosted.org/packages/9c/c2/b62ec24d57bb8df4e24b0b58f7f8facb32f5fdb9f1895aed9e9fcdded168/duckdb-1.5.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b543841b0ae18a9c982345cfa3987e9c065d3a4b0f067daa473d92d1e65f528", size = 32708371, upload-time = "2026-07-22T10:53:41.642Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ce/769171ba45f0b73632dc3bc3108d891e81dd6c6bbfba630a34a75b4dcc0f/duckdb-1.5.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a925d06c2a4c3b64553d6cc1aced5028d376d4479bed689a7d47e9b1dccd80a", size = 17343979, upload-time = "2026-07-22T10:53:44.951Z" }, + { url = "https://files.pythonhosted.org/packages/46/59/a8e3384ee916e00d5dcf985194c1511d61978540778a1e96fa47f9fb3e0d/duckdb-1.5.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0c42757cb34722144bd4dfb94b6f336339e7b2468f6813fa7fa9a319ba07bab4", size = 15493704, upload-time = "2026-07-22T10:53:47.912Z" }, + { url = "https://files.pythonhosted.org/packages/6f/1d/9840179c2607b90523a2884a129c4d4e6dbdc1178ba62a976c1043beba88/duckdb-1.5.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e72f9e1a4f90a5c8483ad4d540e495bf0834ba61c360b52499a573d7ed62a3f", size = 19366574, upload-time = "2026-07-22T10:53:51.876Z" }, + { url = "https://files.pythonhosted.org/packages/b5/55/f9641a4eebcc2f4df631287d6c3b9ed2eea3b92644f93acbad825e3972b6/duckdb-1.5.5-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9b6f86ed85d4ef5e0211eaebf75d057bd8bb520bba438a95dd0f4e42234bbfe", size = 21477952, upload-time = "2026-07-22T10:53:55.575Z" }, + { url = "https://files.pythonhosted.org/packages/3c/3a/07c3556e37a5c97b95917b029c8fdde4a25fbd76a660bacdac195cf20dcb/duckdb-1.5.5-cp311-cp311-win_amd64.whl", hash = "sha256:9f4287f97ccf0c1f3d471e7115be2b067cbf99627e2d34bffd462dd64703cddc", size = 13156986, upload-time = "2026-07-22T10:53:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ff/07b48eef2078ca033847e9caa46cc7633b714c5f91ad1ce091c8ca89d792/duckdb-1.5.5-cp311-cp311-win_arm64.whl", hash = "sha256:179633a3fc6296c75d57c69c1e239fa9e5cdcb670fd1dbff88a02663f932905c", size = 14001317, upload-time = "2026-07-22T10:54:01.724Z" }, + { url = "https://files.pythonhosted.org/packages/d6/40/2e05d324400fdaa5656c9f48d6298da421cb034d85e509fa0e6e325cf04b/duckdb-1.5.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d4dd65f8941a604b947e0b9b4b4f7165988e29a23ec0b69b4038520956d9933e", size = 32753858, upload-time = "2026-07-22T10:54:05.514Z" }, + { url = "https://files.pythonhosted.org/packages/79/15/5ceb58ffb5bb8a62b3fd7abb39c41467cdf94850ece02e6d88664dfc75ce/duckdb-1.5.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33db46679b071f108d57139493dee2d37e1f5efcf5c5c039c2969eed11a6c8a7", size = 17368293, upload-time = "2026-07-22T10:54:09.139Z" }, + { url = "https://files.pythonhosted.org/packages/bf/5c/bf02da0b354fe83cca4f95a4fbf762181af466f7d551ab2a093f7698882a/duckdb-1.5.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f0b88535a5d86fdd63dba6ea02ab68c003dfb9e4892b11256ef24c4da208baae", size = 15509131, upload-time = "2026-07-22T10:54:12.228Z" }, + { url = "https://files.pythonhosted.org/packages/ea/a9/5f1f09da421d8e930e0b063d11c1b3f90363f40ede74438cd188afdd13a2/duckdb-1.5.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f316eae2323d9a851883fdf2dee91c1f9efe251ab33e14a2272f82a913422ed6", size = 19391959, upload-time = "2026-07-22T10:54:15.551Z" }, + { url = "https://files.pythonhosted.org/packages/4f/98/6549769f158126fa64fd6c1ac2eb59a18282146c939867a3eb31b7c1db07/duckdb-1.5.5-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7a6d2d11859d82a936ebdcb30ce3d8a1cbb3e990bff05c12abb9b54c44fa7bd1", size = 21510909, upload-time = "2026-07-22T10:54:19.681Z" }, + { url = "https://files.pythonhosted.org/packages/af/b7/5753b41d3124838f868f9f523362812d9fc45409e9e4dd70dcbb0a25826e/duckdb-1.5.5-cp312-cp312-win_amd64.whl", hash = "sha256:ddfbdb096c11d51ee22492397d342c90a82e62c5d09961477895934d0a25372f", size = 13168544, upload-time = "2026-07-22T10:54:22.789Z" }, + { url = "https://files.pythonhosted.org/packages/5c/28/44b679c7d46245f8398feae7edac959d1b83d4eb143e25b3fce0630b78bd/duckdb-1.5.5-cp312-cp312-win_arm64.whl", hash = "sha256:2725d2b9ace3a4e75d72fc5a239f6a44b502c580edadb8fb2676db772c5f9282", size = 13988684, upload-time = "2026-07-22T10:54:26.003Z" }, + { url = "https://files.pythonhosted.org/packages/47/37/4a38116e7700720fd152c666292214fd3abdf916496991296d8d1f66efbf/duckdb-1.5.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd98829b67788609017e65c761bd42a5dd0f9129441bed8bda4d6881ccf819f0", size = 32754294, upload-time = "2026-07-22T10:54:29.822Z" }, + { url = "https://files.pythonhosted.org/packages/66/42/7d392f1ba1eee0eaf4ab4c8c7a604bfe3536cd63f979cf5c98798664f807/duckdb-1.5.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:feead93c56679b79592d437c62975d39cb67adedffa7592c763baf8160ac7366", size = 17368211, upload-time = "2026-07-22T10:54:33.359Z" }, + { url = "https://files.pythonhosted.org/packages/9f/a5/0a6f4fa60562faa615e55e15bd1953a2f2b17a8edd8105e5cda215e43457/duckdb-1.5.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:49c963d9469373d7aba8d750d9ea565ab823e94166efed953f184dd9b169b98c", size = 15509136, upload-time = "2026-07-22T10:54:36.369Z" }, + { url = "https://files.pythonhosted.org/packages/e4/cb/023c89f51978545b9fab318581bba0c457a58e7530d2d933e54ae7d8647c/duckdb-1.5.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a736217825461732b5442d05a220f3da2e23a0dae114efbf08c9bf171b53098a", size = 19392147, upload-time = "2026-07-22T10:54:39.551Z" }, + { url = "https://files.pythonhosted.org/packages/3e/c5/41bef391fb8b23dbc133c9f2ba016e7a7a8124513d2cc1b430f1897d87e4/duckdb-1.5.5-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:078e6a60dd8eedde5832f45422ca5c4a6b8c837aeabd8a56ca0b7d933f588053", size = 21511060, upload-time = "2026-07-22T10:54:42.788Z" }, + { url = "https://files.pythonhosted.org/packages/07/9f/c44dfc1f924ac29b3252dc1b91393c01d009dbfe9f8ed33f10b986151bd1/duckdb-1.5.5-cp313-cp313-win_amd64.whl", hash = "sha256:6826504277dba513c0c5d71d828456c94d729c9d2482f94b2e289f90a9167e28", size = 13168028, upload-time = "2026-07-22T10:54:46.127Z" }, + { url = "https://files.pythonhosted.org/packages/ca/88/591384b2cd59abddd6f5dc175e60374f9abae6064429f0c4402854c10f44/duckdb-1.5.5-cp313-cp313-win_arm64.whl", hash = "sha256:baa9c5702002fabb559ded2a39008f9f421fcbc7237d388b8213eff1e08858de", size = 13989955, upload-time = "2026-07-22T10:54:49.262Z" }, + { url = "https://files.pythonhosted.org/packages/3e/56/12c65bfa2d2605b81981b264788891bcf11ec72227889554cead5d8d13b9/duckdb-1.5.5-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8e6413dd40facb7b8ab21bd844450cd8f549b29e138635be9cf090ef4d2049e2", size = 32761946, upload-time = "2026-07-22T10:54:53.412Z" }, + { url = "https://files.pythonhosted.org/packages/b9/46/682ce155f17e0d2822d4f13ee3db9ca4b5b7c2da61b841b2629035e1f4bc/duckdb-1.5.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:64078acfd16541132ac6e191eb81b2845554444a0305cc1aa581ba107e514aa8", size = 17375069, upload-time = "2026-07-22T10:54:57.269Z" }, + { url = "https://files.pythonhosted.org/packages/39/ce/a24bcbd3289c8f305a430759c5fc12242740b4af3e17f7593f3a34e333d2/duckdb-1.5.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8c11775cc99a447618d5f1840126db17f2652f3eae05529df4f81f40e2df7151", size = 15519791, upload-time = "2026-07-22T10:55:00.681Z" }, + { url = "https://files.pythonhosted.org/packages/d9/76/3a01afbc615c1d418c0de58a6b68ac5ce2a8563232c0464bfbc2ce552398/duckdb-1.5.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77bbc1e6ba12e1e06f9020117bdf848627ecfdf36f907550e62e008e6109dece", size = 19398251, upload-time = "2026-07-22T10:55:04.168Z" }, + { url = "https://files.pythonhosted.org/packages/a1/43/3a5e81d1728f4d234c79bfe385808ee7c04834f7c37a4b5c257459c25614/duckdb-1.5.5-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fbf0f2d48b43c6c304d00463b463c27ead6c4b01c3c1816b750f728decf71afe", size = 21513851, upload-time = "2026-07-22T10:55:07.864Z" }, + { url = "https://files.pythonhosted.org/packages/91/41/fc7c829172c60ca22485251eab285f4f1a0d87b486a024c726f21471d86e/duckdb-1.5.5-cp314-cp314-win_amd64.whl", hash = "sha256:9dc826c4b50e64f6c4e4d07a3a9cb075ef70ba3899dc43ec5493dc3d7b04b353", size = 13691858, upload-time = "2026-07-22T10:55:11.181Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2c/95d9216b79e9273689d7ebce125a54503ed0c9bd7da931f0265888e99779/duckdb-1.5.5-cp314-cp314-win_arm64.whl", hash = "sha256:63e48d4b74b15aeacd688976432a7225163df8c226eddeb8536bba2d4d4ff433", size = 14470180, upload-time = "2026-07-22T10:55:14.445Z" }, ] [[package]] @@ -1050,7 +1175,7 @@ name = "exceptiongroup" version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } wheels = [ @@ -1161,7 +1286,7 @@ wheels = [ [[package]] name = "furo" -version = "2025.9.25" +version = "2025.12.19" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "accessible-pygments" }, @@ -1171,9 +1296,9 @@ dependencies = [ { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sphinx-basic-ng" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4e/29/ff3b83a1ffce74676043ab3e7540d398e0b1ce7660917a00d7c4958b93da/furo-2025.9.25.tar.gz", hash = "sha256:3eac05582768fdbbc2bdfa1cdbcdd5d33cfc8b4bd2051729ff4e026a1d7e0a98", size = 1662007, upload-time = "2025-09-25T21:37:19.221Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/20/5f5ad4da6a5a27c80f2ed2ee9aee3f9e36c66e56e21c00fde467b2f8f88f/furo-2025.12.19.tar.gz", hash = "sha256:188d1f942037d8b37cd3985b955839fea62baa1730087dc29d157677c857e2a7", size = 1661473, upload-time = "2025-12-19T17:34:40.889Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/69/964b55f389c289e16ba2a5dfe587c3c462aac09e24123f09ddf703889584/furo-2025.9.25-py3-none-any.whl", hash = "sha256:2937f68e823b8e37b410c972c371bc2b1d88026709534927158e0cb3fac95afe", size = 340409, upload-time = "2025-09-25T21:37:17.244Z" }, + { url = "https://files.pythonhosted.org/packages/f4/b2/50e9b292b5cac13e9e81272c7171301abc753a60460d21505b606e15cf21/furo-2025.12.19-py3-none-any.whl", hash = "sha256:bb0ead5309f9500130665a26bee87693c41ce4dbdff864dbfb6b0dae4673d24f", size = 339262, upload-time = "2025-12-19T17:34:38.905Z" }, ] [[package]] @@ -1561,7 +1686,7 @@ wheels = [ [[package]] name = "ipykernel" -version = "7.1.0" +version = "7.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, @@ -1572,16 +1697,16 @@ dependencies = [ { name = "jupyter-client" }, { name = "jupyter-core" }, { name = "matplotlib-inline" }, - { name = "nest-asyncio" }, + { name = "nest-asyncio2" }, { name = "packaging" }, { name = "psutil" }, { name = "pyzmq" }, { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/a4/4948be6eb88628505b83a1f2f40d90254cab66abf2043b3c40fa07dfce0f/ipykernel-7.1.0.tar.gz", hash = "sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db", size = 174579, upload-time = "2025-10-27T09:46:39.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/c4/e4a38f579de4225a561305666f7541cdabb30075def2aa1ac17bd73c1fb5/ipykernel-7.3.0.tar.gz", hash = "sha256:9acaaaf97d16355166e4085afe9d225bfbdf2b7ef520f9df3be8f2b248275e09", size = 184899, upload-time = "2026-06-10T08:41:25.481Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl", hash = "sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c", size = 117968, upload-time = "2025-10-27T09:46:37.805Z" }, + { url = "https://files.pythonhosted.org/packages/3d/02/77b271f5dc58bfbc0b577c877b2365d1ffea2afe66a80c13f2312820348c/ipykernel-7.3.0-py3-none-any.whl", hash = "sha256:897eb64da762549ef610698fca5e9675195ec6ac8ec7f19d81ce1ca20c876057", size = 120583, upload-time = "2026-06-10T08:41:23.648Z" }, ] [[package]] @@ -1592,17 +1717,17 @@ resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ - { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, - { name = "decorator", marker = "python_full_version < '3.11'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, - { name = "jedi", marker = "python_full_version < '3.11'" }, - { name = "matplotlib-inline", marker = "python_full_version < '3.11'" }, - { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prompt-toolkit", marker = "python_full_version < '3.11'" }, - { name = "pygments", marker = "python_full_version < '3.11'" }, - { name = "stack-data", marker = "python_full_version < '3.11'" }, - { name = "traitlets", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "exceptiongroup" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/85/31/10ac88f3357fc276dc8a64e8880c82e80e7459326ae1d0a211b40abf6665/ipython-8.37.0.tar.gz", hash = "sha256:ca815841e1a41a1e6b73a0b08f3038af9b2252564d01fc405356d34033012216", size = 5606088, upload-time = "2025-05-31T16:39:09.613Z" } wheels = [ @@ -1620,17 +1745,17 @@ resolution-markers = [ "python_full_version == '3.11.*'", ] dependencies = [ - { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, - { name = "decorator", marker = "python_full_version >= '3.11'" }, - { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" }, - { name = "jedi", marker = "python_full_version >= '3.11'" }, - { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" }, - { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, - { name = "pygments", marker = "python_full_version >= '3.11'" }, - { name = "stack-data", marker = "python_full_version >= '3.11'" }, - { name = "traitlets", marker = "python_full_version >= '3.11'" }, - { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/2a/34/29b18c62e39ee2f7a6a3bba7efd952729d8aadd45ca17efc34453b717665/ipython-9.6.0.tar.gz", hash = "sha256:5603d6d5d356378be5043e69441a072b50a5b33b4503428c77b04cb8ce7bc731", size = 4396932, upload-time = "2025-09-29T10:55:53.948Z" } wheels = [ @@ -1651,7 +1776,7 @@ name = "ipython-pygments-lexers" version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } wheels = [ @@ -1786,7 +1911,7 @@ wheels = [ [[package]] name = "jsonschema" -version = "4.24.1" +version = "4.26.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -1794,9 +1919,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f1/6e/35174c1d3f30560848c82d3c233c01420e047d70925c897a4d6e932b4898/jsonschema-4.24.1.tar.gz", hash = "sha256:fe45a130cc7f67cd0d67640b4e7e3e2e666919462ae355eda238296eafeb4b5d", size = 356635, upload-time = "2025-07-17T14:40:01.05Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/7f/ea48ffb58f9791f9d97ccb35e42fea1ebc81c67ce36dc4b8b2eee60e8661/jsonschema-4.24.1-py3-none-any.whl", hash = "sha256:6b916866aa0b61437785f1277aa2cbd63512e8d4b47151072ef13292049b4627", size = 89060, upload-time = "2025-07-17T14:39:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, ] [package.optional-dependencies] @@ -1817,22 +1942,24 @@ format-nongpl = [ { name = "jsonpointer" }, { name = "rfc3339-validator" }, { name = "rfc3986-validator" }, + { name = "rfc3987-syntax" }, { name = "uri-template" }, { name = "webcolors" }, ] [[package]] name = "jsonschema-path" -version = "0.4.5" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "attrs" }, { name = "pathable" }, { name = "pyyaml" }, { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5b/8a/7e6102f2b8bdc6705a9eb5294f8f6f9ccd3a8420e8e8e19671d1dd773251/jsonschema_path-0.4.5.tar.gz", hash = "sha256:c6cd7d577ae290c7defd4f4029e86fdb248ca1bd41a07557795b3c95e5144918", size = 15113, upload-time = "2026-03-03T09:56:46.87Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/79/cd02a4df6d9270efdc7d3feefe6edd730b0820c39eeaa107a2faee8322d5/jsonschema_path-0.5.0.tar.gz", hash = "sha256:493b156ba895c97602655b620a8456caa2ce08c1aa389f5a7addec065e6e855c", size = 19597, upload-time = "2026-05-19T20:45:00.971Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/d5/4e96c44f6c1ea3d812cf5391d81a4f5abaa540abf8d04ecd7f66e0ed11df/jsonschema_path-0.4.5-py3-none-any.whl", hash = "sha256:7d77a2c3f3ec569a40efe5c5f942c44c1af2a6f96fe0866794c9ef5b8f87fd65", size = 19368, upload-time = "2026-03-03T09:56:45.39Z" }, + { url = "https://files.pythonhosted.org/packages/04/2c/9e69d73c4297508be9e3b64a970ea3971b3eb8db64ffc5802d40bd25981f/jsonschema_path-0.5.0-py3-none-any.whl", hash = "sha256:2790a070bc7abb08ea3dbe4d340ece4efadf639223001f020c7503229ba068e2", size = 24077, upload-time = "2026-05-19T20:44:59.225Z" }, ] [[package]] @@ -1870,7 +1997,7 @@ version = "1.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-core" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "traitlets" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fb/45/d0df8b43c10a61529c0f4a8af5e19ebe108f0c3af8f57e0fc358969907af/jupyter_builder-1.0.2.tar.gz", hash = "sha256:6155d78a5325010532a6419ffcba89eac643fd1aa56ea83115e661924d6f6aab", size = 968638, upload-time = "2026-06-12T02:33:25.767Z" } @@ -1899,7 +2026,7 @@ wheels = [ [[package]] name = "jupyter-client" -version = "8.6.3" +version = "8.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-core" }, @@ -1907,10 +2034,11 @@ dependencies = [ { name = "pyzmq" }, { name = "tornado" }, { name = "traitlets" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/dc/5512503b088997c2250b8bf18258fba9d9ce5ead641183700960d3c9d342/jupyter_client-8.9.1.tar.gz", hash = "sha256:a58f730dd9e728ba16ba1d62ebccf7ffe1ebbdbce4e95cfae941b7321ae1f4fa", size = 359256, upload-time = "2026-06-09T13:15:01.033Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl", hash = "sha256:0b7a295bc46e8751e9adae84781f726c851c1d911bd793edc4a3bde942e3da81", size = 109828, upload-time = "2026-06-09T13:14:58.835Z" }, ] [[package]] @@ -2022,7 +2150,7 @@ wheels = [ [[package]] name = "jupyterlab" -version = "4.6.0" +version = "4.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-lru" }, @@ -2036,13 +2164,14 @@ dependencies = [ { name = "jupyterlab-server" }, { name = "notebook-shim" }, { name = "packaging" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "tornado" }, { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/3c/1ebd737b860cdbe61eed71536d06aab4e1781fbdcf07ecd5a1afe05b8adf/jupyterlab-4.6.0.tar.gz", hash = "sha256:6a8b88f2aae7ed4d012c634fc957c1a27f3aa217c32f0ced0175fac9ee17f9e5", size = 28181861, upload-time = "2026-06-18T13:52:56.039Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/7f/51c0c856ab286bdaf5709cf61ed13584ed9d4bee906479707da45b11b353/jupyterlab-4.6.2.tar.gz", hash = "sha256:e18ce8b34f3de350e93cd5b2c4f3ae884cbe266eb76bf5d6825a4ed34c13bcff", size = 28183650, upload-time = "2026-07-21T12:05:24.051Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/eb/aa48075d0aa3d0188db34ba2704f53791757743c0bb02e18c4eef989b6de/jupyterlab-4.6.0-py3-none-any.whl", hash = "sha256:b6938cb8a1ef3d43860ff4745a680c62cc0a9385f9672295bb56cd2e7cfeebe2", size = 17143447, upload-time = "2026-06-18T13:52:51.42Z" }, + { url = "https://files.pythonhosted.org/packages/63/1f/e39b248c76bb3736bc05a9491a6aa1315414c32dea12f548ecc1b24c758e/jupyterlab-4.6.2-py3-none-any.whl", hash = "sha256:5964447036629adfcd3fc0969effc1da6f47d2cbd0a60b2c2eea7c31be0ec6a8", size = 17166703, upload-time = "2026-07-21T12:05:19.818Z" }, ] [[package]] @@ -2189,6 +2318,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, ] +[[package]] +name = "lark" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload-time = "2025-10-27T18:25:56.653Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload-time = "2025-10-27T18:25:54.882Z" }, +] + [[package]] name = "lazy-object-proxy" version = "1.12.0" @@ -2366,7 +2504,7 @@ requires-dist = [ { name = "isodate", specifier = ">=0.6.0" }, { name = "jinja2", specifier = ">=3.1.0" }, { name = "jsonasobj2", specifier = ">=1.0.3,<2.0.0" }, - { name = "jsonschema", extras = ["format"], specifier = ">=4.0.0" }, + { name = "jsonschema", extras = ["format"], specifier = ">=4.26.0" }, { name = "linkml-runtime", editable = "packages/linkml_runtime" }, { name = "openapi-spec-validator", specifier = ">=0.8.4" }, { name = "openpyxl" }, @@ -2379,10 +2517,10 @@ requires-dist = [ { name = "pyshexc", specifier = ">=0.10.3" }, { name = "python-dateutil" }, { name = "pyyaml" }, - { name = "rdflib", specifier = ">=6.0.0" }, + { name = "rdflib", specifier = ">=7.6.0" }, { name = "requests", specifier = ">=2.22" }, { name = "sphinx-click", specifier = ">=6.0.0" }, - { name = "sqlalchemy", specifier = ">=1.4.31" }, + { name = "sqlalchemy", specifier = ">=2.0.51" }, { name = "typing-extensions", marker = "python_full_version < '3.12'", specifier = ">=4.6.0" }, { name = "watchdog", specifier = ">=0.9.0" }, ] @@ -2392,8 +2530,8 @@ bigquery = [{ name = "sqlalchemy-bigquery", specifier = ">=1.9.0" }] dev = [ { name = "black", specifier = ">=24.0.0" }, { name = "chardet" }, - { name = "coverage", specifier = ">=6.4.1" }, - { name = "duckdb", specifier = ">=1.5.2" }, + { name = "coverage", specifier = ">=7.15.4" }, + { name = "duckdb", specifier = ">=1.5.5" }, { name = "gql", specifier = ">=4.0.0" }, { name = "ipykernel" }, { name = "ipython-genutils" }, @@ -2405,48 +2543,48 @@ dev = [ { name = "nbformat" }, { name = "numpy", marker = "python_full_version < '3.12'", specifier = ">=1.24.3" }, { name = "numpy", marker = "python_full_version >= '3.12'", specifier = ">=1.25.2" }, - { name = "numpydantic", specifier = ">=1.6.1" }, + { name = "numpydantic", specifier = ">=1.10.0" }, { name = "openapi-spec-validator", specifier = ">=0.8.4" }, { name = "pandas" }, - { name = "pandera", specifier = ">=0.19.0" }, + { name = "pandera", specifier = ">=0.32.1" }, { name = "polars-lts-cpu", specifier = ">=1.0.0" }, { name = "pyshacl", specifier = ">=0.25.0" }, - { name = "pytest", specifier = ">=7.4.0,<9" }, - { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-cov", specifier = ">=7.1.0" }, { name = "pytest-subtests", specifier = ">=0.11.0" }, { name = "pytest-xdist", specifier = ">=3.6.1" }, { name = "requests-cache", specifier = ">=1.3.2" }, { name = "rich", specifier = ">=13.7.1" }, { name = "sphinx-design", specifier = ">=0.5.0" }, - { name = "sqlalchemy-bigquery", specifier = ">=1.9.0" }, + { name = "sqlalchemy-bigquery", specifier = ">=1.17.2" }, { name = "testcontainers", specifier = "==3.7.1" }, { name = "tox", specifier = ">=4" }, { name = "tox-uv" }, ] docs = [ - { name = "furo", specifier = ">=2023.3.27" }, + { name = "furo", specifier = ">=2025.12.19" }, { name = "matplotlib", specifier = ">=3.7" }, { name = "myst-parser" }, { name = "sphinx" }, { name = "sphinx-click" }, { name = "sphinx-jinja", specifier = ">=2.0.2" }, { name = "sphinx-rtd-theme" }, - { name = "sphinxcontrib-mermaid", specifier = ">=0.7.1" }, - { name = "sphinxcontrib-programoutput", specifier = ">=0.17" }, + { name = "sphinxcontrib-mermaid", specifier = ">=2.1.0" }, + { name = "sphinxcontrib-programoutput", specifier = ">=0.20" }, ] lint = [{ name = "black", specifier = ">=24.0.0" }] pandera = [ { name = "pandas" }, - { name = "pandera", specifier = ">=0.19.0" }, + { name = "pandera", specifier = ">=0.32.1" }, { name = "polars-lts-cpu", specifier = ">=1.0.0" }, ] shacl = [{ name = "pyshacl", specifier = ">=0.25.0" }] tests = [ { name = "black", specifier = ">=24.0.0" }, - { name = "duckdb", specifier = ">=1.5.2" }, - { name = "numpydantic", specifier = ">=1.6.1" }, + { name = "duckdb", specifier = ">=1.5.5" }, + { name = "numpydantic", specifier = ">=1.10.0" }, { name = "pyshacl", specifier = ">=0.25.0" }, - { name = "sqlalchemy-bigquery", specifier = ">=1.9.0" }, + { name = "sqlalchemy-bigquery", specifier = ">=1.17.2" }, ] tests-extra = [ { name = "jsonpatch", specifier = ">=1.33" }, @@ -2454,16 +2592,16 @@ tests-extra = [ { name = "numpy", marker = "python_full_version < '3.12'", specifier = ">=1.24.3" }, { name = "numpy", marker = "python_full_version >= '3.12'", specifier = ">=1.25.2" }, { name = "openapi-spec-validator", specifier = ">=0.8.4" }, - { name = "pytest", specifier = ">=7.4.0,<9" }, - { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-cov", specifier = ">=7.1.0" }, { name = "pytest-subtests", specifier = ">=0.11.0" }, { name = "pytest-xdist", specifier = ">=3.6.1" }, { name = "requests-cache", specifier = ">=1.3.2" }, { name = "testcontainers", specifier = "==3.7.1" }, ] tests-rustgen = [{ name = "maturin", specifier = ">=1.14.1" }] -typedb = [{ name = "typedb-driver", specifier = ">=3.0,<4.0" }] -typing = [{ name = "numpydantic", specifier = ">=1.6.1" }] +typedb = [{ name = "typedb-driver", specifier = ">=3.12.1,<4.0" }] +typing = [{ name = "numpydantic", specifier = ">=1.10.0" }] [[package]] name = "linkml-runtime" @@ -2502,28 +2640,28 @@ dev = [ requires-dist = [ { name = "click", specifier = ">=8.2" }, { name = "coverage", marker = "extra == 'dev'" }, - { name = "curies", specifier = ">=0.5.4" }, + { name = "curies", specifier = ">=0.14.6" }, { name = "deprecated" }, { name = "hbreader" }, { name = "isodate", marker = "python_full_version < '3.11'", specifier = ">=0.7.2,<1.0.0" }, { name = "json-flattener", specifier = ">=0.1.9" }, { name = "jsonasobj2", specifier = "==1.*,>=1.0.0,>=1.0.4" }, - { name = "jsonschema", specifier = ">=3.2.0" }, + { name = "jsonschema", specifier = ">=4.26.0" }, { name = "prefixcommons", specifier = ">=0.1.12" }, { name = "prefixmaps", specifier = ">=0.1.4" }, { name = "pydantic", specifier = ">=1.10.2,<3.0.0" }, - { name = "pyoxigraph", specifier = ">=0.5.6" }, + { name = "pyoxigraph", specifier = ">=0.5.9" }, { name = "pyyaml" }, - { name = "rdflib", specifier = ">=6.0.0" }, + { name = "rdflib", specifier = ">=7.6.0" }, { name = "requests" }, - { name = "requests-cache", marker = "extra == 'dev'", specifier = ">=1.3.2" }, + { name = "requests-cache", marker = "extra == 'dev'", specifier = ">=1.3.3" }, ] provides-extras = ["dev"] [package.metadata.requires-dev] dev = [ - { name = "coverage", specifier = ">=6.2" }, - { name = "requests-cache", specifier = ">=1.3.2" }, + { name = "coverage", specifier = ">=7.15.4" }, + { name = "requests-cache", specifier = ">=1.3.3" }, ] [[package]] @@ -2715,7 +2853,7 @@ name = "maturin" version = "1.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e7/b3/addd877f871fb1860d46d3a4f206ecb10b946c85846805e6367631926fd3/maturin-1.14.1.tar.gz", hash = "sha256:9d6577a62cd08e0ceba7a0db06fb098e0c9b1b3429bad747a4f3a18215a1b3df", size = 369637, upload-time = "2026-06-19T05:19:49.774Z" } wheels = [ @@ -3020,12 +3158,12 @@ wheels = [ ] [[package]] -name = "nest-asyncio" -version = "1.6.0" +name = "nest-asyncio2" +version = "1.7.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/73/731debf26e27e0a0323d7bda270dc2f634b398e38f040a09da1f4351d0aa/nest_asyncio2-1.7.2.tar.gz", hash = "sha256:1921d70b92cc4612c374928d081552efb59b83d91b2b789d935c665fa01729a8", size = 14743, upload-time = "2026-02-13T00:34:04.386Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3c/3179b85b0e1c3659f0369940200cd6d0fa900e6cefcc7ea0bc6dd0e29ffb/nest_asyncio2-1.7.2-py3-none-any.whl", hash = "sha256:f5dfa702f3f81f6a03857e9a19e2ba578c0946a4ad417b4c50a24d7ba641fe01", size = 7843, upload-time = "2026-02-13T00:34:02.691Z" }, ] [[package]] @@ -3211,7 +3349,7 @@ wheels = [ [[package]] name = "numpydantic" -version = "1.7.0" +version = "1.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, @@ -3219,14 +3357,14 @@ dependencies = [ { name = "pydantic" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/59/ba/6bf5e0a7cc3fbfbb02a7824926cad73c58df374322eb7728b378023a76dc/numpydantic-1.7.0.tar.gz", hash = "sha256:268285bee026d9dfdf23efeee13f60c3b75d47de2ffdf2e58b4f0c17a6824e3b", size = 80412, upload-time = "2025-10-11T05:23:56.654Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/5c/0cfed22c6483338c73d2faf182d863c47836e5f8f34e65b70aea345e7b72/numpydantic-1.10.0.tar.gz", hash = "sha256:a17d5ccc3b893c4a2e539c81c2f18960d70884ad7fcaa09c9eb56a95e8daf4a3", size = 98771, upload-time = "2026-06-22T22:04:46.251Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/e0/42f0ea229a8b5ada24a1eae4f5522b80ab65b4083f5cea4c7372bc894af3/numpydantic-1.7.0-py3-none-any.whl", hash = "sha256:81314ed00423efa954a711a48003dba5382156e899f677f405ce043f5296b090", size = 86734, upload-time = "2025-10-11T05:23:55.003Z" }, + { url = "https://files.pythonhosted.org/packages/69/15/0dd8e1ff306f97bee18a3ef024bb694f9043ee57474c57f7330f90804cae/numpydantic-1.10.0-py3-none-any.whl", hash = "sha256:1c62a445d305da69a5fa4510f7e7e1c25218f58fe462e5d59548042f1f769e66", size = 101858, upload-time = "2026-06-22T22:04:44.918Z" }, ] [[package]] name = "openapi-schema-validator" -version = "0.8.1" +version = "0.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonschema" }, @@ -3236,14 +3374,14 @@ dependencies = [ { name = "referencing" }, { name = "rfc3339-validator" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/21/4b/67b24b2b23d96ea862be2cca3632a546f67a22461200831213e80c3c6011/openapi_schema_validator-0.8.1.tar.gz", hash = "sha256:4c57266ce8cbfa37bb4eb4d62cdb7d19356c3a468e3535743c4562863e1790da", size = 23134, upload-time = "2026-03-02T08:46:29.807Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/e8/ab3f27dbca54ec645f7fab714b640907d5d36c2ebb07e87eebd30bd5c81b/openapi_schema_validator-0.9.0.tar.gz", hash = "sha256:b72db64315b89d21834cd3ffef37e3e6893bc876327be2d366e8424b1029afd3", size = 24686, upload-time = "2026-04-27T17:31:27.606Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/87/e9f29f463b230d4b47d65e17858c595153a8ca8c1775f16e406aa82d455d/openapi_schema_validator-0.8.1-py3-none-any.whl", hash = "sha256:0f5859794c5bfa433d478dc5ac5e5768d50adc56b14380c8a6fd3a8113e89c9b", size = 19211, upload-time = "2026-03-02T08:46:28.154Z" }, + { url = "https://files.pythonhosted.org/packages/90/c0/5467967d95378b2cfce312e09cbd0c9ab64354a0922379b734f793edd04f/openapi_schema_validator-0.9.0-py3-none-any.whl", hash = "sha256:faa3bbe7c3aa8ca2087ad83f709dc3b7d920283153a570c03e24ea182558aa25", size = 19980, upload-time = "2026-04-27T17:31:25.965Z" }, ] [[package]] name = "openapi-spec-validator" -version = "0.8.4" +version = "0.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonschema" }, @@ -3253,9 +3391,9 @@ dependencies = [ { name = "pydantic" }, { name = "pydantic-settings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/de/0199b15f5dde3ca61df6e6b3987420bfd424db077998f0162e8ffe12e4f5/openapi_spec_validator-0.8.4.tar.gz", hash = "sha256:8bb324b9b08b9b368b1359dec14610c60a8f3a3dd63237184eb04456d4546f49", size = 1756847, upload-time = "2026-03-01T15:48:19.499Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/d2/640b5149cd5688bc0ad1fdbb4df6a2f7b84a093c8d787c27d566132f8b8b/openapi_spec_validator-0.9.0.tar.gz", hash = "sha256:6d648cff6490ebb799dcfe273792f2941c050158854c721f086599d845da78b8", size = 1756839, upload-time = "2026-05-20T09:23:18.871Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/70/52310f9ece5f4eb02e0b31d538b51f729169517767a8d0100a25db31d67f/openapi_spec_validator-0.8.4-py3-none-any.whl", hash = "sha256:cf905117063d7c4d495c8a5a167a1f2a8006da6ffa8ba234a7ed0d0f11454d51", size = 50330, upload-time = "2026-03-01T15:48:17.668Z" }, + { url = "https://files.pythonhosted.org/packages/95/d8/321ff889330acca2e3097f3d4f80a40bcc41b6d34d302978ab32c449520b/openapi_spec_validator-0.9.0-py3-none-any.whl", hash = "sha256:222fecffc7714f6d0a6ad62c0e4b66cc2b7dbfafb7b93acfc6c308abbdb51af8", size = 50328, upload-time = "2026-05-20T09:23:17.017Z" }, ] [[package]] @@ -3293,11 +3431,11 @@ wheels = [ [[package]] name = "packaging" -version = "25.0" +version = "26.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, ] [[package]] @@ -3364,7 +3502,7 @@ wheels = [ [[package]] name = "pandera" -version = "0.26.1" +version = "0.32.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, @@ -3373,9 +3511,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspect" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ff/0b/bb312b98a92b00ff48e869e2769ce5ca6c7bc4ec793a429d450dc3c9bba2/pandera-0.26.1.tar.gz", hash = "sha256:81a55a6429770d31b3bf4c3e8e1096a38296bd3009f9eca5780fad3c3c17fd82", size = 560263, upload-time = "2025-08-26T17:06:30.907Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/74/7ef34611e49990b7e630dcf02c2225d76c2e328ec2804186c2b9c52e916b/pandera-0.32.1.tar.gz", hash = "sha256:72ecd74226847abf0f0437c05f7f10cc8368e306d88a2acc78fa93762c5a0a02", size = 875349, upload-time = "2026-06-29T16:01:48.72Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/3b/91622e08086a6be44d2c0f34947d94c5282b53d217003d3ba390ee2d174b/pandera-0.26.1-py3-none-any.whl", hash = "sha256:1ff5b70556ce2f85c6b27e8fbe835a1761972f4d05f6548b4686b0db26ecb73b", size = 292907, upload-time = "2025-08-26T17:06:29.193Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d0/411c82285a7586e97326020f6b5ecbc2f2ffcbef72aa108c897de1b0a540/pandera-0.32.1-py3-none-any.whl", hash = "sha256:1a17a3ffa906174d19207715f4f082ec3db3709647927ad8c095c147d74d8454", size = 447840, upload-time = "2026-06-29T16:01:46.877Z" }, ] [[package]] @@ -3404,11 +3542,11 @@ wheels = [ [[package]] name = "pathable" -version = "0.5.0" +version = "0.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/55/b748445cb4ea6b125626f15379be7c96d1035d4fa3e8fee362fa92298abf/pathable-0.5.0.tar.gz", hash = "sha256:d81938348a1cacb525e7c75166270644782c0fb9c8cecc16be033e71427e0ef1", size = 16655, upload-time = "2026-02-20T08:47:00.748Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/f3/5a20387de9bcd0607871bfc2198ee0e15836da7baa4592ccd7f24c27c986/pathable-0.6.0.tar.gz", hash = "sha256:6404b8b82aef5ff0fd478934137128b99b12212ba35afdde5525ca4f8388ea58", size = 18970, upload-time = "2026-05-19T18:15:11.911Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/52/96/5a770e5c461462575474468e5af931cff9de036e7c2b4fea23c1c58d2cbe/pathable-0.5.0-py3-none-any.whl", hash = "sha256:646e3d09491a6351a0c82632a09c02cdf70a252e73196b36d8a15ba0a114f0a6", size = 16867, upload-time = "2026-02-20T08:46:59.536Z" }, + { url = "https://files.pythonhosted.org/packages/a2/e8/6d75ffd9784bce2e93d1ae4415649427e39a53bb172d4672b2b59c6f0a7b/pathable-0.6.0-py3-none-any.whl", hash = "sha256:82c4ca6c98c502ad12e0d4e9779b6210afee93c38990988c8c5d1b49bdcdf566", size = 18983, upload-time = "2026-05-19T18:15:10.728Z" }, ] [[package]] @@ -3528,11 +3666,11 @@ wheels = [ [[package]] name = "platformdirs" -version = "4.5.0" +version = "4.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/9b/560e4be8e26f6fd133a03630a8df0c663b9e8d61b4ade152b72005aec83b/platformdirs-4.11.0.tar.gz", hash = "sha256:0555d18370482847566ffabcaa53ad7c6c1c29f195989ae1ed634a05f76ea1e0", size = 31953, upload-time = "2026-07-21T13:09:36.565Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" }, + { url = "https://files.pythonhosted.org/packages/7d/68/d8d58938dfb1370b266a1a729e6d77a985be23689a0496498ee17b2cbf90/platformdirs-4.11.0-py3-none-any.whl", hash = "sha256:360ccded2b7fce0af0ff80cc8f5942a1c5d99b0e856033acb030bfc634709e74", size = 23247, upload-time = "2026-07-21T13:09:35.422Z" }, ] [[package]] @@ -3806,11 +3944,11 @@ wheels = [ [[package]] name = "pyasn1" -version = "0.6.3" +version = "0.6.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5c/5f/6583902b6f79b399c9c40674ac384fd9cd77805f9e6205075f828ef11fb2/pyasn1-0.6.3.tar.gz", hash = "sha256:697a8ecd6d98891189184ca1fa05d1bb00e2f84b5977c481452050549c8a72cf", size = 148685, upload-time = "2026-03-17T01:06:53.382Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/9a/23310166d960def5897e91fe20e5b724601b02a22e84ba1f94232c0b7f67/pyasn1-0.6.4.tar.gz", hash = "sha256:9c447d8431c947fe4c8febc4ed9e760bc29011a5b01e5c74b67025bd9fb8ce81", size = 151262, upload-time = "2026-07-09T01:12:33.988Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/a0/7d793dce3fa811fe047d6ae2431c672364b462850c6235ae306c0efd025f/pyasn1-0.6.3-py3-none-any.whl", hash = "sha256:a80184d120f0864a52a073acc6fc642847d0be408e7c7252f31390c0f4eadcde", size = 83997, upload-time = "2026-03-17T01:06:52.036Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3b/6163796d69c3977d1e4287bea4a6979161cbbdd170ebb430511e8e1999ce/pyasn1-0.6.4-py3-none-any.whl", hash = "sha256:deda9277cfd454080ec40b207fb6df82206a3a2688735233cdcd8d3d565f088b", size = 84410, upload-time = "2026-07-09T01:12:32.92Z" }, ] [[package]] @@ -4002,42 +4140,42 @@ wheels = [ [[package]] name = "pyoxigraph" -version = "0.5.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ce/fd/21f10f55194b527348005c54ea87612d1af795be63db19e0abe6530d9920/pyoxigraph-0.5.8.tar.gz", hash = "sha256:c9fd2e3537fdd96d3895af259aefdc6f40b86a3f969d68fd3fe3cbf9f707f462", size = 5305516, upload-time = "2026-04-28T20:43:18.665Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/14/6c/422277e8d788e0b706928f1b25aa582fd3581b7f1f052ef258d10f5099e0/pyoxigraph-0.5.8-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:a14fce7014892b2b85b0350903197cccdab9d4c8b889c77c6e748426a7cd5c5b", size = 7702836, upload-time = "2026-04-28T20:42:13.216Z" }, - { url = "https://files.pythonhosted.org/packages/59/d8/fad202f86e9bcd7ea2512d0d086405f5b77b47b634640a61e99ad5e755ad/pyoxigraph-0.5.8-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3aecd4f5bde22c4cae03b398b0144411745940787e174e0d2690abbb486c4688", size = 8220927, upload-time = "2026-04-28T20:42:15.744Z" }, - { url = "https://files.pythonhosted.org/packages/e0/49/1cfb1cbbd60164b543547a5c538fe7ab46bce461764a2a19daeae33f404a/pyoxigraph-0.5.8-cp310-cp310-win_amd64.whl", hash = "sha256:14e34a8d83b2b3f1abb99de322bd31f158d1a59f690317201e7cf43b297523c3", size = 5446377, upload-time = "2026-04-28T20:42:17.329Z" }, - { url = "https://files.pythonhosted.org/packages/17/9f/b5eb3254b63661b9f7f7d12bded5e70148fb5d56bac0fae3b529ce2cdb16/pyoxigraph-0.5.8-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:164b9b41769cdc5ac93ff37f1dd418fe2970a839e6bb283a5f095224a10bae3f", size = 7702679, upload-time = "2026-04-28T20:42:19.24Z" }, - { url = "https://files.pythonhosted.org/packages/41/dd/8ad52b1ae147c948bd2f217fc9c71cd02211a5570dc9e43ecb04b19cf3fa/pyoxigraph-0.5.8-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d7aa10a7c3e00cfccae819bbf040cef396db5304d5ea9890317fd8031e844684", size = 8220803, upload-time = "2026-04-28T20:42:21.13Z" }, - { url = "https://files.pythonhosted.org/packages/1b/3e/1c2e36999ac1884fd4a335c6c6c7aa68e3cb0038599386f7acb75dd0374c/pyoxigraph-0.5.8-cp311-cp311-win_amd64.whl", hash = "sha256:b43865ffdbc86bf8a48d3184272a5e3b1097c5105d9a4f444a6dda1e76763f88", size = 5446937, upload-time = "2026-04-28T20:42:23.056Z" }, - { url = "https://files.pythonhosted.org/packages/f8/58/3bd1419d9264b6027dc758340007951a7b3842dcb7f420c53da62ded33af/pyoxigraph-0.5.8-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fa823ed87c34d21331f17c3ff6cd62b2ef188b945b70d741f0a7429d671aa3c9", size = 7704079, upload-time = "2026-04-28T20:42:25.362Z" }, - { url = "https://files.pythonhosted.org/packages/0d/d0/8ef9a7582373e106a4159a7ac59f908a92f6fa1ea776b8bd2289fdebd764/pyoxigraph-0.5.8-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:567618c3595c27caa64dff479a679592bc455af6b4afc3b24ca120fb2eed8327", size = 8224731, upload-time = "2026-04-28T20:42:27.323Z" }, - { url = "https://files.pythonhosted.org/packages/61/88/68ae76c58171bde3c66b6c019e5b6367f83783a9a44fc5a95bf6b2928f58/pyoxigraph-0.5.8-cp312-cp312-win_amd64.whl", hash = "sha256:7903f0168f6313cacbf0815221dbedbb54606f172a6a3c4623caba42ae64702c", size = 5449186, upload-time = "2026-04-28T20:42:29.498Z" }, - { url = "https://files.pythonhosted.org/packages/b9/02/1759261c7b20c4671a6837083de9ded8122ee6a4cd9b3e9efdbf2ce3dbab/pyoxigraph-0.5.8-cp312-cp312-win_arm64.whl", hash = "sha256:07153608e35514368a157f7427aef6d9be4fcb3b32a0b2edc0c849d85627d981", size = 5073598, upload-time = "2026-04-28T20:42:31.32Z" }, - { url = "https://files.pythonhosted.org/packages/11/90/6bc32bc00d49b86047cc42b0afbdd804da2e0f8d512c14c35d3eef1095c0/pyoxigraph-0.5.8-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:0bcaa1b7a4c5a2521f5f0fe4d837f29ddd40d3be1ad26e4220ac839eea657a52", size = 7705136, upload-time = "2026-04-28T20:42:32.893Z" }, - { url = "https://files.pythonhosted.org/packages/82/b2/98dc78bbe6c9fe407c04dcf92281eaa58e5b3a9d5a5d31a62b09d004d6b4/pyoxigraph-0.5.8-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bd1cfedd6bc7ea0502bb86449881afa4b9b89015aae6608cedcb4e1fd0749924", size = 8225560, upload-time = "2026-04-28T20:42:34.856Z" }, - { url = "https://files.pythonhosted.org/packages/b6/23/562c411d1c55a1e08a645b569980c97f24b8b8effbbaec56a94702e08056/pyoxigraph-0.5.8-cp313-cp313-win_amd64.whl", hash = "sha256:5236e59f26ff1606eb05941df24b9d470a183d11bc904a5722aac23aa8dd1b01", size = 5449722, upload-time = "2026-04-28T20:42:37.186Z" }, - { url = "https://files.pythonhosted.org/packages/0a/18/50e3793b65965a8006f45b8c01839b6f280e3dbcc82098b62108a6d3510f/pyoxigraph-0.5.8-cp313-cp313-win_arm64.whl", hash = "sha256:d324d334379b361646952da7d82cfc0bfb1e411f0e8a1f25f78a301c3bf41137", size = 5074183, upload-time = "2026-04-28T20:42:38.722Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c7/c13220b5e9e12dbcbb8f8c221ae892854e28e600658db7c69d1cfd5bdf1e/pyoxigraph-0.5.8-cp313-cp313t-win_amd64.whl", hash = "sha256:a40b7449d5406aa1c0f6a3511191c484b333f7debaac48e3fcfc804b529dcb84", size = 5447293, upload-time = "2026-04-28T20:42:40.675Z" }, - { url = "https://files.pythonhosted.org/packages/ba/19/640f52f219eda8fa7d40498eaad2b7392e913cea37c31d4389b74037509f/pyoxigraph-0.5.8-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:914355bdd92455e5538938aeeb15dedfe80ceb2bf7d576e67e00abc3c7a23ce1", size = 7701324, upload-time = "2026-04-28T20:42:42.329Z" }, - { url = "https://files.pythonhosted.org/packages/b1/80/9fa0bd17d17a73e2a14359ba9135fd1721d4d64fe3b38d8625e78a02a484/pyoxigraph-0.5.8-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:97f9589fdf8b02acd9342b71f118352740012ae97f559eed65c3452d2555ca26", size = 8220766, upload-time = "2026-04-28T20:42:44.07Z" }, - { url = "https://files.pythonhosted.org/packages/b7/f1/e865421c48252992105fda37b78ba82be50abeeee89096b1fb87f56325d0/pyoxigraph-0.5.8-cp314-cp314-win_amd64.whl", hash = "sha256:23d89e6aa3810084b3d9e405a13440e8196d55c3df5d747d4f0307331ee61f11", size = 5447875, upload-time = "2026-04-28T20:42:46.095Z" }, - { url = "https://files.pythonhosted.org/packages/cd/61/d21ed60790aa0a373d8e7761edb042cd494527a7f9ad9d9ff05a276fe8ed/pyoxigraph-0.5.8-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:598e409ddf0440734259ff5d30a9d20eb1867c635031188c1cc923e8773289ae", size = 7694353, upload-time = "2026-04-28T20:42:48.288Z" }, - { url = "https://files.pythonhosted.org/packages/83/3e/f41c3fda4b67d1edd534cbc75529071f7e64359404f54e70cb99f4591f1d/pyoxigraph-0.5.8-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:8a76d9473ccf0a866443ce2be384ac83b97113345a2929a520c7aab583ce7364", size = 8218478, upload-time = "2026-04-28T20:42:50.147Z" }, - { url = "https://files.pythonhosted.org/packages/57/dd/53be335381c373816e290f445325a7d444f1dbb1d98a00b15b5c93775128/pyoxigraph-0.5.8-cp314-cp314t-win_amd64.whl", hash = "sha256:9e81f6afebcc115c9f43d8b86869f5167f0d52eccb8ca3e5d359905e9a989fad", size = 5441788, upload-time = "2026-04-28T20:42:52.137Z" }, - { url = "https://files.pythonhosted.org/packages/ca/32/9e2dacd0ee4a88e6fb190ac97d7f4832829451e48f993027359fe32f3078/pyoxigraph-0.5.8-cp38-abi3-macosx_10_14_x86_64.whl", hash = "sha256:b925ab74ad7cecab359896964278448d45f777fde94b22df99808f2c52e18376", size = 6328777, upload-time = "2026-04-28T20:42:54.039Z" }, - { url = "https://files.pythonhosted.org/packages/3f/ec/14ec2530f6b96df3199afc0cf67fd79492106530d740d65517fb81d80ec8/pyoxigraph-0.5.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:88dac8561fbe1bcfe3c2193f5526bc297a3fd03545cd94da6581f7d12d788628", size = 5805509, upload-time = "2026-04-28T20:42:56.206Z" }, - { url = "https://files.pythonhosted.org/packages/83/fa/eab9c5729e31f5e64b7bc54f2be3a6581a446f01690c7c66e9bb9c5f598c/pyoxigraph-0.5.8-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:af7e42484d8e636ea9dfd12e39862b84067624b62be59f21c16c7e36fff74dfc", size = 7706347, upload-time = "2026-04-28T20:42:57.91Z" }, - { url = "https://files.pythonhosted.org/packages/12/71/7be1d3cfe9fa4e31eb5bea0286e099d24ded457bd2b63da192fe3af72ab8/pyoxigraph-0.5.8-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:108f6a8c7129ed678bdf12906328e9fea38a88c604b55677b5cb32a3f68daede", size = 8226169, upload-time = "2026-04-28T20:42:59.46Z" }, - { url = "https://files.pythonhosted.org/packages/74/5f/a7165e1d8b9d3797a51a78d190da0a6d3933eccb58f5b502e412ef4ed5ad/pyoxigraph-0.5.8-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:bc943aebf424e1cd4b00b46f732078d028c365edcb3fc097e802ace8a612fb75", size = 8889357, upload-time = "2026-04-28T20:43:01.206Z" }, - { url = "https://files.pythonhosted.org/packages/7a/46/782e87e77f1a41cba553823f3fb39c2ed77bfb4ae4a39ed68f946a373c48/pyoxigraph-0.5.8-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a6d1bc051ea2676495efc25931bd309efb830199150d72948c1c14e94624af8a", size = 9433564, upload-time = "2026-04-28T20:43:04.103Z" }, - { url = "https://files.pythonhosted.org/packages/40/79/3704d8b2013d8de7cc30ee3b12ad142d23e9c779523b0f821114e684aa04/pyoxigraph-0.5.8-cp38-abi3-win_amd64.whl", hash = "sha256:901e711f590945295214868c9ad01118ae89da610fabd4deeef2665e0ecda256", size = 5448135, upload-time = "2026-04-28T20:43:06.188Z" }, - { url = "https://files.pythonhosted.org/packages/c2/88/b881b7a8dc92ae6fb302bcb18f18b15c1782a3c86557a9c0e55bcdb9a146/pyoxigraph-0.5.8-cp38-abi3-win_arm64.whl", hash = "sha256:eb39a617dd0573f2e3a37a86614eaeac974caf77db1243d3fe7148841d0329c9", size = 5072423, upload-time = "2026-04-28T20:43:08.116Z" }, - { url = "https://files.pythonhosted.org/packages/60/f7/748e1229f933012905114cec4d484b1d799f374b6b94e06c209cd103aab1/pyoxigraph-0.5.8-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ede43c55336fe8bae1607cb2d1586ac3fe29dcf63761616d3aee45cb42395b22", size = 7703814, upload-time = "2026-04-28T20:43:13.253Z" }, - { url = "https://files.pythonhosted.org/packages/ad/0f/6e1bfb7c642c3d0a81e57cbc8b1b539cc7d2fb451eccd975705f5a0978ab/pyoxigraph-0.5.8-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d42dfd064be0a3f66c2301a0c8501d2079b570625d279e4aabba0e10a9102151", size = 8220892, upload-time = "2026-04-28T20:43:14.881Z" }, - { url = "https://files.pythonhosted.org/packages/fd/d6/69b9e9a9a1bd7124391cae5f71bf3063c30708ea563dad3674dfecb9db98/pyoxigraph-0.5.8-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9676f2adad8468cdceb05a72a7b2bcc37683af3ddb37f595c370946f7d9f1543", size = 5446016, upload-time = "2026-04-28T20:43:17.016Z" }, +version = "0.5.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/a8/a06280358352a5fddf8c0753af7ec679a223008448e0602671209db0a390/pyoxigraph-0.5.9.tar.gz", hash = "sha256:fe2bea0f41f5284b6dad99ea718d7ff03600068cdf8736b63a9e6cd05f056b19", size = 5302359, upload-time = "2026-06-18T17:09:13.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/e8/858832a3dbe70c93a542693138cf72b0be72df402094562466c477bdf606/pyoxigraph-0.5.9-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c711156407663e2182e4ea07c959f8e471f1b6ecaee1f00ce3accca7a53d9917", size = 7682544, upload-time = "2026-06-18T17:08:05.713Z" }, + { url = "https://files.pythonhosted.org/packages/f0/56/fb02b856e62854523ec60f2b79a21a7d647cbfd29be4bfb9323c167df7f0/pyoxigraph-0.5.9-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:70ac4792acee8c86f795b0db785b467afbb02daf58e2beb6e6ef3c3f43f4c222", size = 8200904, upload-time = "2026-06-18T17:08:08.041Z" }, + { url = "https://files.pythonhosted.org/packages/7c/66/b2921defaf7f157573bdff1ab708056b95e360ad955ff73608ad7093a9c8/pyoxigraph-0.5.9-cp310-cp310-win_amd64.whl", hash = "sha256:95347d64417299f91128ccfee486dcb14d2c6674a9b9a62e5c6978b651a2ccf2", size = 5384879, upload-time = "2026-06-18T17:08:10.132Z" }, + { url = "https://files.pythonhosted.org/packages/0a/17/dcf159e871c80d42c8a757e0a16850faf16b87c375d94c2623c2928b0df4/pyoxigraph-0.5.9-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:baffb41d914b761b06cde61eeb0a35dd5f0fa4808f71ae9902fdd1179e70e553", size = 7682234, upload-time = "2026-06-18T17:08:12.118Z" }, + { url = "https://files.pythonhosted.org/packages/ec/cd/441573ae6b5e7bb347ddf1889e137c99192ea19ea698320650295967802b/pyoxigraph-0.5.9-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:56b78aab5a5688ede88404372574785ba74e8d82b2cd1c0b0623a03b7069967f", size = 8200446, upload-time = "2026-06-18T17:08:14.102Z" }, + { url = "https://files.pythonhosted.org/packages/8e/cb/4d9122dc13626994197a1afa1620551b40e316e391bcf816d73d73673576/pyoxigraph-0.5.9-cp311-cp311-win_amd64.whl", hash = "sha256:eee3db30ecb6836fdc05ddcbc6aa79ed521afcbfa707a8561b7e5891c4fb4ff8", size = 5385125, upload-time = "2026-06-18T17:08:16.068Z" }, + { url = "https://files.pythonhosted.org/packages/d2/0f/3ae7a5cf9d4a2fab482ebe807316e18d55fea32cd52f0fff88fa6ece3f58/pyoxigraph-0.5.9-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:6ab699861035163e89bc512ce20aa6e91b654e4d33114c9f5facab08f0fe3d7e", size = 7684369, upload-time = "2026-06-18T17:08:17.867Z" }, + { url = "https://files.pythonhosted.org/packages/bf/08/ea04c09eb740bee7eeb57ea1769ec4088bfd55b24fc6f931bea317a65512/pyoxigraph-0.5.9-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:5a8a1b2debadb5fe79f8b89cbe1193e9c0e6fc1cf0c9431b6be706234beeabbe", size = 8202216, upload-time = "2026-06-18T17:08:19.95Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c1/f03ecc4fb5a09b4e6632218dece98073f3c4f0cdfc4823aedaea0186aa82/pyoxigraph-0.5.9-cp312-cp312-win_amd64.whl", hash = "sha256:d04806073905f448a48811b217115e71224be7f1d4075d1f5f5ec07a016f42ae", size = 5388427, upload-time = "2026-06-18T17:08:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/cc/1e/497bd58a038ca83ec289a56d35fcad2183f4a180c787aa04268d2a88d4fd/pyoxigraph-0.5.9-cp312-cp312-win_arm64.whl", hash = "sha256:379bef7f8fc38f638f358b1e12bc5bdc908a0e7d47157f4399bf103c727a66da", size = 5044584, upload-time = "2026-06-18T17:08:23.644Z" }, + { url = "https://files.pythonhosted.org/packages/cd/05/ac08fccf52372f4a91bb97d07c0dba8e3644616aa6907a5864a6a26bb3ae/pyoxigraph-0.5.9-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:bcac65148bddcd0ae24ee1bf20a2e89cc225a926b9e9996eb64dcce60400d1a3", size = 7684737, upload-time = "2026-06-18T17:08:25.463Z" }, + { url = "https://files.pythonhosted.org/packages/65/b4/7493acbbbe18c9649782f1942d3877ab3f7ad08b5746153f2b4f4d62d2f7/pyoxigraph-0.5.9-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:57f3619c7860f4c95ddab077e4a3dedb7ca4cf191bd81096db835264d414ec5b", size = 8202316, upload-time = "2026-06-18T17:08:27.467Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b4/55368af8a83e7811d25155cf2fc62a814b77594aadb98d3906086b203e1c/pyoxigraph-0.5.9-cp313-cp313-win_amd64.whl", hash = "sha256:4f8ff48b873157ab38e2595a56d6d2008471a45853f5fffc645658c6f69c07db", size = 5390781, upload-time = "2026-06-18T17:08:29.277Z" }, + { url = "https://files.pythonhosted.org/packages/47/0e/ef38dc2ee3b6f89f356f3016c7dd3cf9b4b5153f934a841aa32bfcc594ac/pyoxigraph-0.5.9-cp313-cp313-win_arm64.whl", hash = "sha256:b829233ea4445ccd1032d02e9189432a77e16888a79313498aa501b8731dc925", size = 5046172, upload-time = "2026-06-18T17:08:31.25Z" }, + { url = "https://files.pythonhosted.org/packages/51/f5/7a97cf8fc761d55057a029725dcffef561390ed565a5504f895a409034f7/pyoxigraph-0.5.9-cp313-cp313t-win_amd64.whl", hash = "sha256:e9ca7cd7666336fcbafd9a2ec7d598dd859b7bd2ca7b0838a0f7b92dd3828c28", size = 5387927, upload-time = "2026-06-18T17:08:33.075Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c3/c9a7dfb5fc6f60488f67214e79696a6b5312d612ed4dcc57a62363632f49/pyoxigraph-0.5.9-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:f9154bea122c0bab11eda7604b27ceb424ab8ba1637250503008b8c6632ea405", size = 7682217, upload-time = "2026-06-18T17:08:34.851Z" }, + { url = "https://files.pythonhosted.org/packages/cb/23/f83d0af4504ac0f80bfe938eea04713c8801bf135f7b91bc52fff55b3e06/pyoxigraph-0.5.9-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:4558d430bbad6e6b4ba98e0e89a2e28402211069d38e6e9b00083ae2d9d2d175", size = 8200691, upload-time = "2026-06-18T17:08:36.649Z" }, + { url = "https://files.pythonhosted.org/packages/12/36/b82fa34b525c27a0262ff1007af014706be4485158c9d7bd49fec14b84e3/pyoxigraph-0.5.9-cp314-cp314-win_amd64.whl", hash = "sha256:79caf78136a8312e506beb607910cc5a93662a05a173aa9b560ce9d08801384f", size = 5386008, upload-time = "2026-06-18T17:08:38.345Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ca/3c1a7fc7fa5641173d6f91dc58e3cea47e7571716a9aafb909039e1f885b/pyoxigraph-0.5.9-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:917d976dcb813d613d0ddd7da1c9dec6ad02ee815015f393c703cf0804946653", size = 7675486, upload-time = "2026-06-18T17:08:40.171Z" }, + { url = "https://files.pythonhosted.org/packages/89/aa/0c7e0c2c07e29676f78bfc38a5712b0c4e087d0dbde72b4c6b54b47f231d/pyoxigraph-0.5.9-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:68f8daf082ea4bf9583abd10b64e23cd2c4a3285338a5ec24254181d45e63083", size = 8197760, upload-time = "2026-06-18T17:08:42.069Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c5/c37b33219897bd1e016181644efc22f15abfa16fbf9ba6e3db7c7f55dc09/pyoxigraph-0.5.9-cp314-cp314t-win_amd64.whl", hash = "sha256:b8884b0ce3ccbac99ebc2c995614a13dc5f5d86b0adb847f36aeb1c713d12946", size = 5382226, upload-time = "2026-06-18T17:08:43.836Z" }, + { url = "https://files.pythonhosted.org/packages/27/d4/543c3a613f9b39ce06f0c052f36a0c5933157724176c04508e407e73fb98/pyoxigraph-0.5.9-cp38-abi3-macosx_10_14_x86_64.whl", hash = "sha256:8b998bc479a54a8905cdeaad621d0f7fed212abf9f1cbededfde4c51fc8e3bb8", size = 6306670, upload-time = "2026-06-18T17:08:45.616Z" }, + { url = "https://files.pythonhosted.org/packages/7e/28/080334bc7a4540a2102460f55557c04aadf9f2282c15896f4e9d998982d8/pyoxigraph-0.5.9-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:5c9f93db5e14a03ac1e3934cece3fb6f7c0a9f4bde33082c72c788c12bf65ba4", size = 5786471, upload-time = "2026-06-18T17:08:48.314Z" }, + { url = "https://files.pythonhosted.org/packages/76/4f/50fd2f11b733eeea8f0c6c7804fc22d1bcf7a43ef8d61a1ad8f18a1f9ce4/pyoxigraph-0.5.9-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe19bd1835a7245caad06cc9bb1a5c861882dc074fdfa24ba2626e3bbf9866a", size = 7683430, upload-time = "2026-06-18T17:08:50.397Z" }, + { url = "https://files.pythonhosted.org/packages/12/d7/80f6d4dd5aa7f02b6020e75216213460b84edd7e32d32155507523a04b2b/pyoxigraph-0.5.9-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3bd1925a8185320bcb8c549cccafbb423cc3957513890e6f420b8e355055052a", size = 8204009, upload-time = "2026-06-18T17:08:52.493Z" }, + { url = "https://files.pythonhosted.org/packages/82/94/da29a7d85340f119be878136507a8cbf4640ed5fe2b0dbc68fd67a1f807c/pyoxigraph-0.5.9-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f619aac7199b2ba91cade2fe69f64b4c73abb1e6b33735b0ff7205a753e609cd", size = 8865946, upload-time = "2026-06-18T17:08:54.477Z" }, + { url = "https://files.pythonhosted.org/packages/7a/42/222017d65d411f1993585d51b977b65680ecc0edbc28609f702a65107e65/pyoxigraph-0.5.9-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:09071f6c08b9489723dec96e2d96f64a15b9be2d165d3bbf67d40712884ba7a3", size = 9414073, upload-time = "2026-06-18T17:08:57.435Z" }, + { url = "https://files.pythonhosted.org/packages/f2/8a/7ba44c596afa3377a9c75f6ff76de91e8e45a18df72d17cb74efbb02db92/pyoxigraph-0.5.9-cp38-abi3-win_amd64.whl", hash = "sha256:efd3d03bd2a36f9b0bdf3ce70d76ce5278c481fe961d14c2bb6efcac10f57ae2", size = 5391422, upload-time = "2026-06-18T17:08:59.508Z" }, + { url = "https://files.pythonhosted.org/packages/c5/46/b092a22596c7ed11b0b26b3dade2dede638fc6a3e61ee7e5168aa3481948/pyoxigraph-0.5.9-cp38-abi3-win_arm64.whl", hash = "sha256:94c2a8b52c1ed6e445a235a4f89cd460eea936f399d28df5e9927826bf52f032", size = 5048182, upload-time = "2026-06-18T17:09:01.419Z" }, + { url = "https://files.pythonhosted.org/packages/ac/1e/99b6d12597f3dd59ac17b88925bde71b1b7667139b5c55d4376e1db3e409/pyoxigraph-0.5.9-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f39a6175a80a55c837981d4d68f42380071bb1d45af124de488fcc8a61a81af3", size = 7682650, upload-time = "2026-06-18T17:09:07.653Z" }, + { url = "https://files.pythonhosted.org/packages/87/61/a51a916969d75d5ccb7d1476fbbb9f67cca369fbc2bdf46575a7a399590b/pyoxigraph-0.5.9-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:71dba053e5efc0002fbd4ace3119b9d3aec8a6c5b164ed7409a2429bf71171b8", size = 8200433, upload-time = "2026-06-18T17:09:09.683Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0f/800013ea344187b8cd98d34af827f2ac56ef02fb66c2026c525a8015261e/pyoxigraph-0.5.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:70ffb46ae49f52b18a49c3fb63d906ae9c189de4fe4dbf5453279bda4d27af4e", size = 5386457, upload-time = "2026-06-18T17:09:11.769Z" }, ] [[package]] @@ -4055,7 +4193,7 @@ version = "1.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/45/7b/c0e1333b61d41c69e59e5366e727b18c4992688caf0de1be10b3e5265f6b/pyproject_api-1.10.0.tar.gz", hash = "sha256:40c6f2d82eebdc4afee61c773ed208c04c19db4c4a60d97f8d7be3ebc0bbb330", size = 22785, upload-time = "2025-10-09T19:12:27.21Z" } wheels = [ @@ -4115,9 +4253,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5e/1d/d8d5be9e72e518b42f544e196de9c07161b0933143c9d0e4e2e33de60d79/pyshexc-0.10.3.post1-py3-none-any.whl", hash = "sha256:5d247f2822ef9864152545935d93a07dce66640608ea9414c96f69da7fe7a168", size = 71730, upload-time = "2026-05-01T11:34:17.836Z" }, ] +[[package]] +name = "pystow" +version = "0.8.21" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-zstd", marker = "python_full_version < '3.14'" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/08/e572a7b66ba91b5335bca61afa2250d6419dc391ebf3cb5ac8795748dee0/pystow-0.8.21.tar.gz", hash = "sha256:460c299093d3e6f45433141ba0c5bc5d99c7fe98b042a6f578040d5103db7aab", size = 54881, upload-time = "2026-07-04T10:25:21.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/ac/991733a89b74f62d05d3ad6da773e2d36e26a3a71b6ee6b9ef82b450b486/pystow-0.8.21-py3-none-any.whl", hash = "sha256:7b14f77f0395b93a3a94d85526972c98d526d86a8efa5036363b9da3e2d34003", size = 62430, upload-time = "2026-07-04T10:25:20.274Z" }, +] + [[package]] name = "pytest" -version = "8.4.2" +version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -4126,25 +4278,25 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, + { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] [[package]] name = "pytest-cov" -version = "7.0.0" +version = "7.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/51/a849f96e117386044471c8ec2bd6cfebacda285da9525c9106aeb28da671/pytest_cov-7.1.0.tar.gz", hash = "sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2", size = 55592, upload-time = "2026-03-21T20:11:16.284Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, + { url = "https://files.pythonhosted.org/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", hash = "sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678", size = 22876, upload-time = "2026-03-21T20:11:14.438Z" }, ] [[package]] @@ -4196,15 +4348,15 @@ wheels = [ [[package]] name = "python-discovery" -version = "1.4.2" +version = "1.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0b/1a/cbbaf13b730abb0a16b964d984e19f2fe520c21a4dc664051359a3f5a9e7/python_discovery-1.4.2.tar.gz", hash = "sha256:8f3746c4b4968d22afbb97d36e1a0e5b66e6c0f297290f2e95f05b9b8bf18690", size = 70277, upload-time = "2026-06-11T16:10:42.383Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/51/276f964496a5714ab9f320896195639086881c2b39c03b5ad13de84acbb8/python_discovery-1.5.0.tar.gz", hash = "sha256:3e014c6327154d3dda27939a9a0dc9c5c000439f1906d3f303b48f984bd2ecef", size = 72483, upload-time = "2026-07-21T13:14:14.641Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/82/a70006589557f267f15bd384c0642ad49f0d97b690c3a05b166b9dcbad3b/python_discovery-1.4.2-py3-none-any.whl", hash = "sha256:475803f53b7b2ed6e490e27373f9d8340f7d2eebf9acdaf645d7d714c97bb500", size = 33886, upload-time = "2026-06-11T16:10:41.192Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7b/14882602ddee241d7984a742fcb423cb4a30fb0d6efc546ac3129fba475a/python_discovery-1.5.0-py3-none-any.whl", hash = "sha256:70c4fc61b4e7404e44f01d6fc44a715c4d685ca6cea83d295922f05891877c98", size = 34205, upload-time = "2026-07-21T13:14:13.398Z" }, ] [[package]] @@ -4449,15 +4601,15 @@ wheels = [ [[package]] name = "rdflib" -version = "7.2.1" +version = "7.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "isodate", marker = "python_full_version < '3.11'" }, { name = "pyparsing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8d/99/d2fec85e5f6bdfe4367dea143119cb4469bf48710487939df0abf7e22003/rdflib-7.2.1.tar.gz", hash = "sha256:cf9b7fa25234e8925da8b1fb09700f8349b5f0f100e785fb4260e737308292ac", size = 4873802, upload-time = "2025-09-19T02:33:36.492Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/18bb77b7af9526add0c727a3b2048959847dc5fb030913e2918bf384fec3/rdflib-7.6.0.tar.gz", hash = "sha256:6c831288d5e4a5a7ece85d0ccde9877d512a3d0f02d7c06455d00d6d0ea379df", size = 4943826, upload-time = "2026-02-13T07:15:55.938Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/98/7fa830bb4b9da21905683a5352aa0a01a1f3082328ae976aad341e980c23/rdflib-7.2.1-py3-none-any.whl", hash = "sha256:1a175bc1386a167a42fbfaba003bfa05c164a2a3ca3cb9c0c97f9c9638ca6ac2", size = 565423, upload-time = "2025-09-19T02:33:30.889Z" }, + { url = "https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl", hash = "sha256:30c0a3ebf4c0e09215f066be7246794b6492e054e782d7ac2a34c9f70a15e0dd", size = 615416, upload-time = "2026-02-13T07:15:46.487Z" }, ] [package.optional-dependencies] @@ -4521,7 +4673,7 @@ wheels = [ [[package]] name = "requests-cache" -version = "1.3.2" +version = "1.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -4531,9 +4683,9 @@ dependencies = [ { name = "url-normalize" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c3/ae/90a0f931c7f6b5a674b98c25ecb2593a173bcee14f0d8c148471df3d7b26/requests_cache-1.3.2.tar.gz", hash = "sha256:bdc3680931f98a1dea509d339ea6b45cea526945b47b250ce63ffd2744ee0b14", size = 100167, upload-time = "2026-05-11T04:09:53.233Z" } +sdist = { url = "https://files.pythonhosted.org/packages/32/ab/a340c7f529646f16e5656a8ba1424ed0de406203e4554868491786628730/requests_cache-1.3.3.tar.gz", hash = "sha256:79b72d5ac5143992d1836ad78f4d8e65666061dd44e220548caab3723089826b", size = 101179, upload-time = "2026-07-03T19:48:57.963Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/ff/d87d1a7700463afc5440bec80cfbcb56ef929f05fbfdc946ce031b13d040/requests_cache-1.3.2-py3-none-any.whl", hash = "sha256:c52666c76b08daa94d05a99327dd24afc46f405abc044e8c2267b540f90673d0", size = 70633, upload-time = "2026-05-11T04:09:51.554Z" }, + { url = "https://files.pythonhosted.org/packages/a5/bf/c1775e49b350225bd851576ba75263bc728d8f05c0e31439a45f3429cc7b/requests_cache-1.3.3-py3-none-any.whl", hash = "sha256:c8df20ff874ebfc026959e3874e6c12bd6724934cdb10925915908453d4b17e4", size = 70788, upload-time = "2026-07-03T19:48:56.693Z" }, ] [[package]] @@ -4566,6 +4718,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/65/d4/f7407c3d15d5ac779c3dd34fbbc6ea2090f77bd7dd12f207ccf881551208/rfc3987-1.3.8-py2.py3-none-any.whl", hash = "sha256:10702b1e51e5658843460b189b185c0366d2cf4cff716f13111b0ea9fd2dce53", size = 13377, upload-time = "2018-07-29T17:23:45.313Z" }, ] +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload-time = "2025-07-18T01:05:05.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload-time = "2025-07-18T01:05:03.843Z" }, +] + [[package]] name = "rich" version = "14.2.0" @@ -4801,23 +4965,23 @@ resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ - { name = "alabaster", marker = "python_full_version < '3.11'" }, - { name = "babel", marker = "python_full_version < '3.11'" }, - { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, - { name = "docutils", marker = "python_full_version < '3.11'" }, - { name = "imagesize", marker = "python_full_version < '3.11'" }, - { name = "jinja2", marker = "python_full_version < '3.11'" }, - { name = "packaging", marker = "python_full_version < '3.11'" }, - { name = "pygments", marker = "python_full_version < '3.11'" }, - { name = "requests", marker = "python_full_version < '3.11'" }, - { name = "snowballstemmer", marker = "python_full_version < '3.11'" }, - { name = "sphinxcontrib-applehelp", marker = "python_full_version < '3.11'" }, - { name = "sphinxcontrib-devhelp", marker = "python_full_version < '3.11'" }, - { name = "sphinxcontrib-htmlhelp", marker = "python_full_version < '3.11'" }, - { name = "sphinxcontrib-jsmath", marker = "python_full_version < '3.11'" }, - { name = "sphinxcontrib-qthelp", marker = "python_full_version < '3.11'" }, - { name = "sphinxcontrib-serializinghtml", marker = "python_full_version < '3.11'" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "docutils" }, + { name = "imagesize" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "requests" }, + { name = "snowballstemmer" }, + { name = "sphinxcontrib-applehelp" }, + { name = "sphinxcontrib-devhelp" }, + { name = "sphinxcontrib-htmlhelp" }, + { name = "sphinxcontrib-jsmath" }, + { name = "sphinxcontrib-qthelp" }, + { name = "sphinxcontrib-serializinghtml" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size = 8184611, upload-time = "2024-10-13T20:27:13.93Z" } wheels = [ @@ -4835,23 +4999,23 @@ resolution-markers = [ "python_full_version == '3.11.*'", ] dependencies = [ - { name = "alabaster", marker = "python_full_version >= '3.11'" }, - { name = "babel", marker = "python_full_version >= '3.11'" }, - { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, - { name = "docutils", marker = "python_full_version >= '3.11'" }, - { name = "imagesize", marker = "python_full_version >= '3.11'" }, - { name = "jinja2", marker = "python_full_version >= '3.11'" }, - { name = "packaging", marker = "python_full_version >= '3.11'" }, - { name = "pygments", marker = "python_full_version >= '3.11'" }, - { name = "requests", marker = "python_full_version >= '3.11'" }, - { name = "roman-numerals-py", marker = "python_full_version >= '3.11'" }, - { name = "snowballstemmer", marker = "python_full_version >= '3.11'" }, - { name = "sphinxcontrib-applehelp", marker = "python_full_version >= '3.11'" }, - { name = "sphinxcontrib-devhelp", marker = "python_full_version >= '3.11'" }, - { name = "sphinxcontrib-htmlhelp", marker = "python_full_version >= '3.11'" }, - { name = "sphinxcontrib-jsmath", marker = "python_full_version >= '3.11'" }, - { name = "sphinxcontrib-qthelp", marker = "python_full_version >= '3.11'" }, - { name = "sphinxcontrib-serializinghtml", marker = "python_full_version >= '3.11'" }, + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "docutils" }, + { name = "imagesize" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "requests" }, + { name = "roman-numerals-py" }, + { name = "snowballstemmer" }, + { name = "sphinxcontrib-applehelp" }, + { name = "sphinxcontrib-devhelp" }, + { name = "sphinxcontrib-htmlhelp" }, + { name = "sphinxcontrib-jsmath" }, + { name = "sphinxcontrib-qthelp" }, + { name = "sphinxcontrib-serializinghtml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/38/ad/4360e50ed56cb483667b8e6dadf2d3fda62359593faabbe749a27c4eaca6/sphinx-8.2.3.tar.gz", hash = "sha256:398ad29dee7f63a75888314e9424d40f52ce5a6a87ae88e7071e80af296ec348", size = 8321876, upload-time = "2025-03-02T22:31:59.658Z" } wheels = [ @@ -4916,7 +5080,7 @@ wheels = [ [[package]] name = "sphinx-rtd-theme" -version = "3.0.2" +version = "3.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docutils" }, @@ -4924,9 +5088,9 @@ dependencies = [ { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sphinxcontrib-jquery" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/44/c97faec644d29a5ceddd3020ae2edffa69e7d00054a8c7a6021e82f20335/sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85", size = 7620463, upload-time = "2024-11-13T11:06:04.545Z" } +sdist = { url = "https://files.pythonhosted.org/packages/84/68/a1bfbf38c0f7bccc9b10bbf76b94606f64acb1552ae394f0b8285bfaea25/sphinx_rtd_theme-3.1.0.tar.gz", hash = "sha256:b44276f2c276e909239a4f6c955aa667aaafeb78597923b1c60babc76db78e4c", size = 7620915, upload-time = "2026-01-12T16:03:31.17Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/77/46e3bac77b82b4df5bb5b61f2de98637724f246b4966cfc34bc5895d852a/sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13", size = 7655561, upload-time = "2024-11-13T11:06:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/87/c7/b5c8015d823bfda1a346adb2c634a2101d50bb75d421eb6dcb31acd25ebc/sphinx_rtd_theme-3.1.0-py2.py3-none-any.whl", hash = "sha256:1785824ae8e6632060490f67cf3a72d404a85d2d9fc26bce3619944de5682b89", size = 7655617, upload-time = "2026-01-12T16:03:28.101Z" }, ] [[package]] @@ -4980,29 +5144,31 @@ wheels = [ [[package]] name = "sphinxcontrib-mermaid" -version = "1.0.0" +version = "2.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "jinja2" }, { name = "pyyaml" }, { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/97/69/bf039237ad260073e8c02f820b3e00dc34f3a2de20aff7861e6b19d2f8c5/sphinxcontrib_mermaid-1.0.0.tar.gz", hash = "sha256:2e8ab67d3e1e2816663f9347d026a8dee4a858acdd4ad32dd1c808893db88146", size = 15153, upload-time = "2024-10-12T16:33:03.863Z" } +sdist = { url = "https://files.pythonhosted.org/packages/07/9d/bf3a48a657682c7e0445c71d916bca7ab8194454276cc22b16e7f974e502/sphinxcontrib_mermaid-2.1.0.tar.gz", hash = "sha256:13c5f9ac395cb6abf403eca34e228dc9fb3a30c9d960dbf3e40e9a8cef969549", size = 21695, upload-time = "2026-07-18T23:08:11.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/c8/784b9ac6ea08aa594c1a4becbd0dbe77186785362e31fd633b8c6ae0197a/sphinxcontrib_mermaid-1.0.0-py3-none-any.whl", hash = "sha256:60b72710ea02087f212028feb09711225fbc2e343a10d34822fe787510e1caa3", size = 9597, upload-time = "2024-10-12T16:33:02.303Z" }, + { url = "https://files.pythonhosted.org/packages/f3/bd/d3348d62296e73a91420f0edf671450c9003ecd8704da40b1e3d9b868459/sphinxcontrib_mermaid-2.1.0-py3-none-any.whl", hash = "sha256:417cd144ec4b28852f46ba653f02ce8e538881c812111671a4c30344e87f2112", size = 16190, upload-time = "2026-07-18T23:08:10.098Z" }, ] [[package]] name = "sphinxcontrib-programoutput" -version = "0.18" +version = "0.20" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "docutils" }, { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3f/c0/834af2290f8477213ec0dd60e90104f5644aa0c37b1a0d6f0a2b5efe03c4/sphinxcontrib_programoutput-0.18.tar.gz", hash = "sha256:09e68b6411d937a80b6085f4fdeaa42e0dc5555480385938465f410589d2eed8", size = 26333, upload-time = "2024-12-06T20:38:36.959Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/e5/0549d81b4144a1cc8464d368bd2d7a3482fd185399d9430c548978f13036/sphinxcontrib_programoutput-0.20.tar.gz", hash = "sha256:5c4282c1c7fc9b5a23febe16ae038b6392d7ce068d186ad4870ba22e74db0711", size = 28235, upload-time = "2026-06-16T15:55:52.243Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/2c/7aec6e0580f666d4f61474a50c4995a98abfff27d827f0e7bc8c4fa528f5/sphinxcontrib_programoutput-0.18-py3-none-any.whl", hash = "sha256:8a651bc85de69a808a064ff0e48d06c12b9347da4fe5fdb1e94914b01e1b0c36", size = 20346, upload-time = "2024-12-06T20:38:22.406Z" }, + { url = "https://files.pythonhosted.org/packages/aa/02/bb155d4a570d7ceaf48e81f1412093ecf066437bfcb56f34c1407bf14f50/sphinxcontrib_programoutput-0.20-py3-none-any.whl", hash = "sha256:f473f9e7992879358efdeb9962fbec2103f6ba1cb6a738eb7f81dae554bc5ec7", size = 20722, upload-time = "2026-06-16T15:55:51.353Z" }, ] [[package]] @@ -5025,52 +5191,62 @@ wheels = [ [[package]] name = "sqlalchemy" -version = "2.0.44" +version = "2.0.51" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/f2/840d7b9496825333f532d2e3976b8eadbf52034178aac53630d09fe6e1ef/sqlalchemy-2.0.44.tar.gz", hash = "sha256:0ae7454e1ab1d780aee69fd2aae7d6b8670a581d8847f2d1e0f7ddfbf47e5a22", size = 9819830, upload-time = "2025-10-10T14:39:12.935Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/a7/e9ccfa7eecaf34c6f57d8cb0bb7cbdeeff27017cc0f5d0ca90fdde7a7c0d/sqlalchemy-2.0.44-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c77f3080674fc529b1bd99489378c7f63fcb4ba7f8322b79732e0258f0ea3ce", size = 2137282, upload-time = "2025-10-10T15:36:10.965Z" }, - { url = "https://files.pythonhosted.org/packages/b1/e1/50bc121885bdf10833a4f65ecbe9fe229a3215f4d65a58da8a181734cae3/sqlalchemy-2.0.44-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c26ef74ba842d61635b0152763d057c8d48215d5be9bb8b7604116a059e9985", size = 2127322, upload-time = "2025-10-10T15:36:12.428Z" }, - { url = "https://files.pythonhosted.org/packages/46/f2/a8573b7230a3ce5ee4b961a2d510d71b43872513647398e595b744344664/sqlalchemy-2.0.44-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a172b31785e2f00780eccab00bc240ccdbfdb8345f1e6063175b3ff12ad1b0", size = 3214772, upload-time = "2025-10-10T15:34:15.09Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d8/c63d8adb6a7edaf8dcb6f75a2b1e9f8577960a1e489606859c4d73e7d32b/sqlalchemy-2.0.44-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9480c0740aabd8cb29c329b422fb65358049840b34aba0adf63162371d2a96e", size = 3214434, upload-time = "2025-10-10T15:47:00.473Z" }, - { url = "https://files.pythonhosted.org/packages/ee/a6/243d277a4b54fae74d4797957a7320a5c210c293487f931cbe036debb697/sqlalchemy-2.0.44-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:17835885016b9e4d0135720160db3095dc78c583e7b902b6be799fb21035e749", size = 3155365, upload-time = "2025-10-10T15:34:17.932Z" }, - { url = "https://files.pythonhosted.org/packages/5f/f8/6a39516ddd75429fd4ee5a0d72e4c80639fab329b2467c75f363c2ed9751/sqlalchemy-2.0.44-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cbe4f85f50c656d753890f39468fcd8190c5f08282caf19219f684225bfd5fd2", size = 3178910, upload-time = "2025-10-10T15:47:02.346Z" }, - { url = "https://files.pythonhosted.org/packages/43/f0/118355d4ad3c39d9a2f5ee4c7304a9665b3571482777357fa9920cd7a6b4/sqlalchemy-2.0.44-cp310-cp310-win32.whl", hash = "sha256:2fcc4901a86ed81dc76703f3b93ff881e08761c63263c46991081fd7f034b165", size = 2105624, upload-time = "2025-10-10T15:38:15.552Z" }, - { url = "https://files.pythonhosted.org/packages/61/83/6ae5f9466f8aa5d0dcebfff8c9c33b98b27ce23292df3b990454b3d434fd/sqlalchemy-2.0.44-cp310-cp310-win_amd64.whl", hash = "sha256:9919e77403a483ab81e3423151e8ffc9dd992c20d2603bf17e4a8161111e55f5", size = 2129240, upload-time = "2025-10-10T15:38:17.175Z" }, - { url = "https://files.pythonhosted.org/packages/e3/81/15d7c161c9ddf0900b076b55345872ed04ff1ed6a0666e5e94ab44b0163c/sqlalchemy-2.0.44-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fe3917059c7ab2ee3f35e77757062b1bea10a0b6ca633c58391e3f3c6c488dd", size = 2140517, upload-time = "2025-10-10T15:36:15.64Z" }, - { url = "https://files.pythonhosted.org/packages/d4/d5/4abd13b245c7d91bdf131d4916fd9e96a584dac74215f8b5bc945206a974/sqlalchemy-2.0.44-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:de4387a354ff230bc979b46b2207af841dc8bf29847b6c7dbe60af186d97aefa", size = 2130738, upload-time = "2025-10-10T15:36:16.91Z" }, - { url = "https://files.pythonhosted.org/packages/cb/3c/8418969879c26522019c1025171cefbb2a8586b6789ea13254ac602986c0/sqlalchemy-2.0.44-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3678a0fb72c8a6a29422b2732fe423db3ce119c34421b5f9955873eb9b62c1e", size = 3304145, upload-time = "2025-10-10T15:34:19.569Z" }, - { url = "https://files.pythonhosted.org/packages/94/2d/fdb9246d9d32518bda5d90f4b65030b9bf403a935cfe4c36a474846517cb/sqlalchemy-2.0.44-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cf6872a23601672d61a68f390e44703442639a12ee9dd5a88bbce52a695e46e", size = 3304511, upload-time = "2025-10-10T15:47:05.088Z" }, - { url = "https://files.pythonhosted.org/packages/7d/fb/40f2ad1da97d5c83f6c1269664678293d3fe28e90ad17a1093b735420549/sqlalchemy-2.0.44-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:329aa42d1be9929603f406186630135be1e7a42569540577ba2c69952b7cf399", size = 3235161, upload-time = "2025-10-10T15:34:21.193Z" }, - { url = "https://files.pythonhosted.org/packages/95/cb/7cf4078b46752dca917d18cf31910d4eff6076e5b513c2d66100c4293d83/sqlalchemy-2.0.44-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:70e03833faca7166e6a9927fbee7c27e6ecde436774cd0b24bbcc96353bce06b", size = 3261426, upload-time = "2025-10-10T15:47:07.196Z" }, - { url = "https://files.pythonhosted.org/packages/f8/3b/55c09b285cb2d55bdfa711e778bdffdd0dc3ffa052b0af41f1c5d6e582fa/sqlalchemy-2.0.44-cp311-cp311-win32.whl", hash = "sha256:253e2f29843fb303eca6b2fc645aca91fa7aa0aa70b38b6950da92d44ff267f3", size = 2105392, upload-time = "2025-10-10T15:38:20.051Z" }, - { url = "https://files.pythonhosted.org/packages/c7/23/907193c2f4d680aedbfbdf7bf24c13925e3c7c292e813326c1b84a0b878e/sqlalchemy-2.0.44-cp311-cp311-win_amd64.whl", hash = "sha256:7a8694107eb4308a13b425ca8c0e67112f8134c846b6e1f722698708741215d5", size = 2130293, upload-time = "2025-10-10T15:38:21.601Z" }, - { url = "https://files.pythonhosted.org/packages/62/c4/59c7c9b068e6813c898b771204aad36683c96318ed12d4233e1b18762164/sqlalchemy-2.0.44-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72fea91746b5890f9e5e0997f16cbf3d53550580d76355ba2d998311b17b2250", size = 2139675, upload-time = "2025-10-10T16:03:31.064Z" }, - { url = "https://files.pythonhosted.org/packages/d6/ae/eeb0920537a6f9c5a3708e4a5fc55af25900216bdb4847ec29cfddf3bf3a/sqlalchemy-2.0.44-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:585c0c852a891450edbb1eaca8648408a3cc125f18cf433941fa6babcc359e29", size = 2127726, upload-time = "2025-10-10T16:03:35.934Z" }, - { url = "https://files.pythonhosted.org/packages/d8/d5/2ebbabe0379418eda8041c06b0b551f213576bfe4c2f09d77c06c07c8cc5/sqlalchemy-2.0.44-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b94843a102efa9ac68a7a30cd46df3ff1ed9c658100d30a725d10d9c60a2f44", size = 3327603, upload-time = "2025-10-10T15:35:28.322Z" }, - { url = "https://files.pythonhosted.org/packages/45/e5/5aa65852dadc24b7d8ae75b7efb8d19303ed6ac93482e60c44a585930ea5/sqlalchemy-2.0.44-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:119dc41e7a7defcefc57189cfa0e61b1bf9c228211aba432b53fb71ef367fda1", size = 3337842, upload-time = "2025-10-10T15:43:45.431Z" }, - { url = "https://files.pythonhosted.org/packages/41/92/648f1afd3f20b71e880ca797a960f638d39d243e233a7082c93093c22378/sqlalchemy-2.0.44-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0765e318ee9179b3718c4fd7ba35c434f4dd20332fbc6857a5e8df17719c24d7", size = 3264558, upload-time = "2025-10-10T15:35:29.93Z" }, - { url = "https://files.pythonhosted.org/packages/40/cf/e27d7ee61a10f74b17740918e23cbc5bc62011b48282170dc4c66da8ec0f/sqlalchemy-2.0.44-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2e7b5b079055e02d06a4308d0481658e4f06bc7ef211567edc8f7d5dce52018d", size = 3301570, upload-time = "2025-10-10T15:43:48.407Z" }, - { url = "https://files.pythonhosted.org/packages/3b/3d/3116a9a7b63e780fb402799b6da227435be878b6846b192f076d2f838654/sqlalchemy-2.0.44-cp312-cp312-win32.whl", hash = "sha256:846541e58b9a81cce7dee8329f352c318de25aa2f2bbe1e31587eb1f057448b4", size = 2103447, upload-time = "2025-10-10T15:03:21.678Z" }, - { url = "https://files.pythonhosted.org/packages/25/83/24690e9dfc241e6ab062df82cc0df7f4231c79ba98b273fa496fb3dd78ed/sqlalchemy-2.0.44-cp312-cp312-win_amd64.whl", hash = "sha256:7cbcb47fd66ab294703e1644f78971f6f2f1126424d2b300678f419aa73c7b6e", size = 2130912, upload-time = "2025-10-10T15:03:24.656Z" }, - { url = "https://files.pythonhosted.org/packages/45/d3/c67077a2249fdb455246e6853166360054c331db4613cda3e31ab1cadbef/sqlalchemy-2.0.44-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ff486e183d151e51b1d694c7aa1695747599bb00b9f5f604092b54b74c64a8e1", size = 2135479, upload-time = "2025-10-10T16:03:37.671Z" }, - { url = "https://files.pythonhosted.org/packages/2b/91/eabd0688330d6fd114f5f12c4f89b0d02929f525e6bf7ff80aa17ca802af/sqlalchemy-2.0.44-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b1af8392eb27b372ddb783b317dea0f650241cea5bd29199b22235299ca2e45", size = 2123212, upload-time = "2025-10-10T16:03:41.755Z" }, - { url = "https://files.pythonhosted.org/packages/b0/bb/43e246cfe0e81c018076a16036d9b548c4cc649de241fa27d8d9ca6f85ab/sqlalchemy-2.0.44-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b61188657e3a2b9ac4e8f04d6cf8e51046e28175f79464c67f2fd35bceb0976", size = 3255353, upload-time = "2025-10-10T15:35:31.221Z" }, - { url = "https://files.pythonhosted.org/packages/b9/96/c6105ed9a880abe346b64d3b6ddef269ddfcab04f7f3d90a0bf3c5a88e82/sqlalchemy-2.0.44-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b87e7b91a5d5973dda5f00cd61ef72ad75a1db73a386b62877d4875a8840959c", size = 3260222, upload-time = "2025-10-10T15:43:50.124Z" }, - { url = "https://files.pythonhosted.org/packages/44/16/1857e35a47155b5ad927272fee81ae49d398959cb749edca6eaa399b582f/sqlalchemy-2.0.44-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:15f3326f7f0b2bfe406ee562e17f43f36e16167af99c4c0df61db668de20002d", size = 3189614, upload-time = "2025-10-10T15:35:32.578Z" }, - { url = "https://files.pythonhosted.org/packages/88/ee/4afb39a8ee4fc786e2d716c20ab87b5b1fb33d4ac4129a1aaa574ae8a585/sqlalchemy-2.0.44-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1e77faf6ff919aa8cd63f1c4e561cac1d9a454a191bb864d5dd5e545935e5a40", size = 3226248, upload-time = "2025-10-10T15:43:51.862Z" }, - { url = "https://files.pythonhosted.org/packages/32/d5/0e66097fc64fa266f29a7963296b40a80d6a997b7ac13806183700676f86/sqlalchemy-2.0.44-cp313-cp313-win32.whl", hash = "sha256:ee51625c2d51f8baadf2829fae817ad0b66b140573939dd69284d2ba3553ae73", size = 2101275, upload-time = "2025-10-10T15:03:26.096Z" }, - { url = "https://files.pythonhosted.org/packages/03/51/665617fe4f8c6450f42a6d8d69243f9420f5677395572c2fe9d21b493b7b/sqlalchemy-2.0.44-cp313-cp313-win_amd64.whl", hash = "sha256:c1c80faaee1a6c3428cecf40d16a2365bcf56c424c92c2b6f0f9ad204b899e9e", size = 2127901, upload-time = "2025-10-10T15:03:27.548Z" }, - { url = "https://files.pythonhosted.org/packages/9c/5e/6a29fa884d9fb7ddadf6b69490a9d45fded3b38541713010dad16b77d015/sqlalchemy-2.0.44-py3-none-any.whl", hash = "sha256:19de7ca1246fbef9f9d1bff8f1ab25641569df226364a0e40457dc5457c54b05", size = 1928718, upload-time = "2025-10-10T15:29:45.32Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/02/f1/a7a892f18d4d224e6b26f706531eafccc41e37594d37d304786969ee13cb/sqlalchemy-2.0.51.tar.gz", hash = "sha256:804dccd8a4a6242c4e30ad961e540e18a588f6527202f2d6791b01845d59fdc9", size = 9912201, upload-time = "2026-06-15T15:41:20.012Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/76/b3ea1d8842e7b62c718a88d302809003d65ed82011460ca48907dde658c4/sqlalchemy-2.0.51-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e8203d2fbd5c6254692ef0a72c740d75b2f3c7ca345404f4c1a4604813c77c0", size = 2162087, upload-time = "2026-06-15T16:05:15.795Z" }, + { url = "https://files.pythonhosted.org/packages/6c/22/f19552eb7876774d50cfd025337ef5d67acc10cd8f29adab7716cf47c352/sqlalchemy-2.0.51-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1af05726b3d0cdba1c55284bf408fd3b792e690fe2399bfb8304565551cda652", size = 3244579, upload-time = "2026-06-15T16:10:36.165Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e4a2eb5a8ec5cd3c2a0615a2f15f0afca89ac039229599b9ed0c0ed28e5e/sqlalchemy-2.0.51-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e54ff2dd657f2e3e0fbf2b097db1182f7bfea263eca4353f00065bae2a67c3d", size = 3243515, upload-time = "2026-06-15T16:12:22.627Z" }, + { url = "https://files.pythonhosted.org/packages/74/c6/5900ec624fab3360aa2ec59b99bb2046dd79799e310bb78a0514eaa4038e/sqlalchemy-2.0.51-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1e47b1199c2e832e325eacabc8d32d2487f58c9358f97e9a00f5eb93c5680d84", size = 3195492, upload-time = "2026-06-15T16:10:38.097Z" }, + { url = "https://files.pythonhosted.org/packages/8f/41/2ee3c4e1ac4fd22309349823fe13f33febeab1a71db1d7e9d60293a07dcb/sqlalchemy-2.0.51-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c68568f3facf8f66fa76c60e0ced69b67666ffa9941d1d0a3756fda196049080", size = 3215782, upload-time = "2026-06-15T16:12:24.051Z" }, + { url = "https://files.pythonhosted.org/packages/ce/1c/3bd72c341f1cb5faed5a7457ea840228a46be51cfbaf31a9db72fc963f11/sqlalchemy-2.0.51-cp310-cp310-win32.whl", hash = "sha256:0592bdadf86ddcabfd72d9ab66ea8a5d8d2cc6be1cc51fa7e66c03868ac5eac1", size = 2122119, upload-time = "2026-06-15T16:13:26.915Z" }, + { url = "https://files.pythonhosted.org/packages/2a/63/b6dfdd646abf91c3bedb13727226a5e765e5f8365e898d43818e6672fa46/sqlalchemy-2.0.51-cp310-cp310-win_amd64.whl", hash = "sha256:740cf6f35351b1ac3d82369152acf1d51d37e3dcf85d4dc0a22ca01410eabe2a", size = 2145158, upload-time = "2026-06-15T16:13:28.386Z" }, + { url = "https://files.pythonhosted.org/packages/3a/69/a67c69e5f28fc9c99d6f7bd60bd50e91f2fed2423e3b30fb228fa00e51f3/sqlalchemy-2.0.51-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1aa10c0daee6705294d181daadaa793221e1a59ed55000a3fab1d42b088ce4ba", size = 2161838, upload-time = "2026-06-15T16:05:17.144Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a4/c8c22b8438bddc0a030157c6ec0f6ef97b3c38effa444bdab2a27af04090/sqlalchemy-2.0.51-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5b2ed6d828f1f09bd812861f4f59ca3bc3803f9df871f4555187f0faf018604", size = 3319402, upload-time = "2026-06-15T16:10:40.002Z" }, + { url = "https://files.pythonhosted.org/packages/90/54/44012d32fd77d991256d2ff793ba3807c51d40cb27a85b4796224f6744df/sqlalchemy-2.0.51-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:436728ce18a80f6951a1e11cc6112c2ede9faf20766f1a26195a7c441ca12dbd", size = 3319675, upload-time = "2026-06-15T16:12:25.658Z" }, + { url = "https://files.pythonhosted.org/packages/29/a5/de0592acaf5906cd7430874392d6f7e8b4a7c8437610953ee2d1501c0b44/sqlalchemy-2.0.51-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc261707bf5739aea8a541593f3cc1d463c2701fb05fbcbba0ce031b69a21260", size = 3270777, upload-time = "2026-06-15T16:10:42.125Z" }, + { url = "https://files.pythonhosted.org/packages/cb/14/a44c90739c780b362238e4ac3cb19dd0ca40d13e6ddc5daa112166ddab4f/sqlalchemy-2.0.51-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a6d26094615306d116dd5e4a51b0304c99dd2356fc569eed6922a80a6bd3b265", size = 3293940, upload-time = "2026-06-15T16:12:27.156Z" }, + { url = "https://files.pythonhosted.org/packages/65/eb/fbd0f206a330e66f8c602a99c37c4e731f107faed62954b41b01f16dd9d9/sqlalchemy-2.0.51-cp311-cp311-win32.whl", hash = "sha256:ca8435d13829b92f4a97362d91975154a4015db3a2634154e1754e9a915e6b86", size = 2121183, upload-time = "2026-06-15T16:13:29.905Z" }, + { url = "https://files.pythonhosted.org/packages/ad/fd/005bf80f3cf6e5c62b5dd68616280f51cd012c60840fa74781b3ed7b1623/sqlalchemy-2.0.51-cp311-cp311-win_amd64.whl", hash = "sha256:4a011ea4510683319ce4ed274b56ee05194b39b6da9d09ca7a39388f0fa84dcc", size = 2145796, upload-time = "2026-06-15T16:13:31.283Z" }, + { url = "https://files.pythonhosted.org/packages/d5/70/e868bc5412acd101a8280f25c95f10eeae0771c4eb806b02491142810ee8/sqlalchemy-2.0.51-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d78702b26ba1c18b2d0fb2ea940ba7f17a9581b42e8361ff93920ebbee1235a", size = 2160291, upload-time = "2026-06-15T16:08:48.918Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1c/71ee0f8a6b9d7316a1ccd30430b4c62b6c2e36adc96017a4e3a72dce49d6/sqlalchemy-2.0.51-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581921d849d6e6f994d560389192955e80e2950e18fcdfe2ccea863e01158e6e", size = 3343835, upload-time = "2026-06-15T16:19:42.613Z" }, + { url = "https://files.pythonhosted.org/packages/2b/7c/7ab9f9aadc5944fdd06612484ed7918fe376ad871a5f50404dc1536e0194/sqlalchemy-2.0.51-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1d21ce524ab86c23046e992a5b81cb54c21079c6df6e78b8fc77d77cac70a6b9", size = 3358470, upload-time = "2026-06-15T16:26:38.011Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7d/ff77169fee6186de145a7f2b87006c39638391130abbab2b1f63ac6ea583/sqlalchemy-2.0.51-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c5d98a2709840027f5a347c3af0a7c3d5f6c1ff93af2ca1c54494e23cba8f389", size = 3289874, upload-time = "2026-06-15T16:19:45.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/3b/6c505903710d781b55bc3141ee34a062bf9745a6b5bc7333305b9ed63b33/sqlalchemy-2.0.51-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1181256e0f16479691b5616d36375dc2620ad8332b25978763c3d206ad3f3f1d", size = 3321692, upload-time = "2026-06-15T16:26:39.747Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b7/c5ffe50aa2f4d947c9250e1519d939260329a07fe6272edfccd784b3d007/sqlalchemy-2.0.51-cp312-cp312-win32.whl", hash = "sha256:9f380393be5abeb6815f68fd39271b95127173511b6706b0a630a9995d53f8f5", size = 2119674, upload-time = "2026-06-15T16:23:09.543Z" }, + { url = "https://files.pythonhosted.org/packages/25/dc/46a65916af68a06ef6b972c6050ba4c8f97070fe3fb33097d34229d9bef6/sqlalchemy-2.0.51-cp312-cp312-win_amd64.whl", hash = "sha256:2cf39aabdf48e87c1c2c2ed6d20d33ffa0733b3071ce9c5f66357947dd009080", size = 2146670, upload-time = "2026-06-15T16:23:11.048Z" }, + { url = "https://files.pythonhosted.org/packages/54/fe/a210d52fd1a90ecfae8a78e9d8b27e18d733d60818a8bf250ff690b75120/sqlalchemy-2.0.51-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7c2056838b6685b72fdb36c99996cf862753461a62f2e84f4196371d3b2d6a07", size = 2157184, upload-time = "2026-06-15T16:08:50.374Z" }, + { url = "https://files.pythonhosted.org/packages/17/6b/2dce8369b199cb855110e056032f94a9f66dacc2237d3d39c115a86eac56/sqlalchemy-2.0.51-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:483b11bd46bf35fc14c52faf338b04300c9e6ce554bce9b11be85bfec3bc3195", size = 3284735, upload-time = "2026-06-15T16:19:46.934Z" }, + { url = "https://files.pythonhosted.org/packages/53/ff/dbc495b8a14da840faffb353857a72d4190113cac33727906fb997047f0f/sqlalchemy-2.0.51-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1bed1ee8b01da6088210aa9412023326fb98a599ba502e6118308601dcbef77f", size = 3302756, upload-time = "2026-06-15T16:26:41.336Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d5/fde8f4dddcf518ee15ab35a7c6a28acc32c8ba548d1d2aa451f96e6dbb0b/sqlalchemy-2.0.51-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:72ca54c952107ba5cd58854b67a5a6268631289d21651a1235396f3b98b47400", size = 3232055, upload-time = "2026-06-15T16:19:49.286Z" }, + { url = "https://files.pythonhosted.org/packages/67/d1/43d3a0ac955a58601c24fa23038b1c55ee3a1ec02c0f96ebb1eae2bcf614/sqlalchemy-2.0.51-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b3e693d15533a45cd5906f0589f9c35090bef6ef45bf1e8195c424aa0ae06a8d", size = 3269850, upload-time = "2026-06-15T16:26:43.017Z" }, + { url = "https://files.pythonhosted.org/packages/94/df/de669c7054cd47c4439ac34b1b2ee8b804a794791fbb10720e997a2c87c7/sqlalchemy-2.0.51-cp313-cp313-win32.whl", hash = "sha256:b93ab07b5292dbe7e6b8da89475275e7042744283921344b56105f3eeb0f828b", size = 2117721, upload-time = "2026-06-15T16:23:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/d0/8a/403c51d064196bae20a0bc2476577f83a3f8dd299719a97417086b7f2ec5/sqlalchemy-2.0.51-cp313-cp313-win_amd64.whl", hash = "sha256:0f053118c30e53161857a953e4de667d90e274980dccbe5dd3829bbbeece72a5", size = 2143615, upload-time = "2026-06-15T16:23:13.906Z" }, + { url = "https://files.pythonhosted.org/packages/b1/49/a739be2e1d02a96a658eb71ab45d921c874249252358ad24a5bffdd02525/sqlalchemy-2.0.51-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:6ea306caaae6bd5afd0a46050003c88f6bf33227377a49298c498c3cb88ff491", size = 2158999, upload-time = "2026-06-15T16:08:51.759Z" }, + { url = "https://files.pythonhosted.org/packages/23/6b/2e0e38cf75c8780eca78d9b2e78164f8bcfd70125e5caa588ff5cbb9c9f4/sqlalchemy-2.0.51-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c45a496d6bc05dec41dcd4c3a2b183723f47473255c159cd80b503c8f246424d", size = 3282539, upload-time = "2026-06-15T16:19:51.065Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a1/e77854cb5336fd37dc3c6ae3b71de242c98caac5725120be0b526b31cbd0/sqlalchemy-2.0.51-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4004ada0aafe8ae1991b2cd1d99c6d9146126e123bd6f883c260d974aa012e54", size = 3287545, upload-time = "2026-06-15T16:26:44.735Z" }, + { url = "https://files.pythonhosted.org/packages/f6/ab/9e17272fd4dac8df3b83c4fbe52b998a1c9d89a843c8c35ff29b74ff7364/sqlalchemy-2.0.51-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0f6bcad487aee1c638d707235682fc96f741de00663619881ab235400d03289e", size = 3230929, upload-time = "2026-06-15T16:19:52.625Z" }, + { url = "https://files.pythonhosted.org/packages/02/3c/52f408ea701781caee975606beccc48845f2aee8711ac29843d612c0306c/sqlalchemy-2.0.51-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:39a76529db6305693d8d4affa58ad5b5e2e18edd62daea628b29b97930b3513d", size = 3252888, upload-time = "2026-06-15T16:26:46.454Z" }, + { url = "https://files.pythonhosted.org/packages/24/16/3efd2ee6bc4ca4693a30a1dd17a91b606cae15d517d2a4746611d9b73ce8/sqlalchemy-2.0.51-cp314-cp314-win32.whl", hash = "sha256:08a204d8b5638717c26a24df18fcf40af45a6b22e35b70b1d62f0113c2e278e8", size = 2120551, upload-time = "2026-06-15T16:23:15.629Z" }, + { url = "https://files.pythonhosted.org/packages/7b/78/55b12e70f45bccc40d9e483925c065027b3b98ea4cbbdf6f8c2546feaf6c/sqlalchemy-2.0.51-cp314-cp314-win_amd64.whl", hash = "sha256:96747bfbadb055466e5b46d572618170046b45ce5a4879167f50d70a5319a499", size = 2146318, upload-time = "2026-06-15T16:23:17.108Z" }, + { url = "https://files.pythonhosted.org/packages/21/db/a9574ed40fed418924b1b1a3e54f47ee3963053b3d3d325a0d36b41f2c08/sqlalchemy-2.0.51-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e5ea1a213be1fcd5e49d9904c3b9939211ded90bc2a64e93f4c01963474285de", size = 2178920, upload-time = "2026-06-15T15:59:56.285Z" }, + { url = "https://files.pythonhosted.org/packages/bf/90/a1bb5c7cbba76b7bc1fbd586d0a5479a7bc9c27b4a8298f22ec9423b2bb3/sqlalchemy-2.0.51-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c6b36ed71f41942bdcd2ad2522be46bfce09d5705be5640ecf19bbc7660e4b7", size = 3566534, upload-time = "2026-06-15T15:58:35.024Z" }, + { url = "https://files.pythonhosted.org/packages/15/4b/481f1fed30e0e9e8dd24aecbb49f29eb57fe7657ece5cf06ee9b84bb97d8/sqlalchemy-2.0.51-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0c2c62877097e1a0db401fba5cb4debee33265e5b2a55c4ccb489c02c53b4f72", size = 3535844, upload-time = "2026-06-15T16:02:43.973Z" }, + { url = "https://files.pythonhosted.org/packages/02/71/0aa64aeda645510af0a43f7d9ee70932f0d1dc4263aed34c50ee891d9df3/sqlalchemy-2.0.51-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0378d055e9e8cd6ce4d8dff683bdd3d7d413533c4ee51d67a2b1e0f9eacc0f23", size = 3475355, upload-time = "2026-06-15T15:58:36.592Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/6061db32316446135a3abae5f308d144ab988a34234726042da3e58b1c63/sqlalchemy-2.0.51-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6e46fc36029eff666391e0531e5387b62ce6c4f1d8e50b3fb3099eaca1b42522", size = 3486591, upload-time = "2026-06-15T16:02:45.346Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c9/f14fdf71bb8957e0c7e39db69bbdf12b5c80f4ef775fdfa127bf4e0d6760/sqlalchemy-2.0.51-cp314-cp314t-win32.whl", hash = "sha256:9161cfc9efce70d1715f47d6ff40f79c6778c00d53be4fbc09d70301e4b83ba7", size = 2151313, upload-time = "2026-06-15T16:03:39.127Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c6/673e618e6f4f297e126d9b56ea2f6478708f6c1af4e3223835c22e2c3697/sqlalchemy-2.0.51-cp314-cp314t-win_amd64.whl", hash = "sha256:159bb6ba32059f57ad7375a8f50d844dd2f19d14954ecf820cd33e20debd46b2", size = 2186280, upload-time = "2026-06-15T16:03:40.569Z" }, + { url = "https://files.pythonhosted.org/packages/e2/22/dbf013a12ec759e54a34a119e9e217435b3f71b2dd5c61a7ade0a25dae87/sqlalchemy-2.0.51-py3-none-any.whl", hash = "sha256:bb024d8b621d0be75f4f44ecc7c950450026e76d66dc8f791bb5331d7fed59d5", size = 1944334, upload-time = "2026-06-15T16:09:22.418Z" }, ] [[package]] name = "sqlalchemy-bigquery" -version = "1.17.0" +version = "1.17.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core" }, @@ -5079,9 +5255,9 @@ dependencies = [ { name = "packaging" }, { name = "sqlalchemy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1d/94/6fd01b23a92a2372a71cd1670302a6c11b138ad80906914433e6ddbc1e1a/sqlalchemy_bigquery-1.17.0.tar.gz", hash = "sha256:472284546a0c79cbf99b1bb0f5f99c5131fa888ea25d2d53208e6863e5094e2f", size = 119746, upload-time = "2026-05-07T08:04:51.805Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/14/e0dc54b28640cc771a46038926f0c9334496d2799118e5bfd191c2e2c251/sqlalchemy_bigquery-1.17.2.tar.gz", hash = "sha256:32f7893c16546d5cc5dc939fb7cf74f51505766a16422f21dd2e7e78ea8ec849", size = 119920, upload-time = "2026-08-06T06:24:56.558Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/bf/64ae26c6b58665b76abee9f7e536cef0e886c37e1da0b18f75133ff2fa4d/sqlalchemy_bigquery-1.17.0-py3-none-any.whl", hash = "sha256:89c1d4fc9f045ce762c93bf4b73a6c51a203dcf0dbe2d9ade540c7c5e3ed01dd", size = 39802, upload-time = "2026-05-07T08:03:33.787Z" }, + { url = "https://files.pythonhosted.org/packages/b8/86/a8b324e078c3aec11f345ceab5346d39ff1819efde1199d9fbd5c3f49892/sqlalchemy_bigquery-1.17.2-py3-none-any.whl", hash = "sha256:3b5034178a594cb84b89a2ee4818eb472162fa95c98461d809616eb148b8e46c", size = 39762, upload-time = "2026-08-06T06:23:51.925Z" }, ] [[package]] @@ -5150,6 +5326,9 @@ wheels = [ name = "tomli" version = "2.3.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*'", +] sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, @@ -5195,6 +5374,72 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, ] +[[package]] +name = "tomli" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, + { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, + { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, + { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, + { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size = 155726, upload-time = "2026-03-25T20:21:42.23Z" }, + { url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size = 149859, upload-time = "2026-03-25T20:21:43.386Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size = 244713, upload-time = "2026-03-25T20:21:44.474Z" }, + { url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size = 252084, upload-time = "2026-03-25T20:21:45.62Z" }, + { url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size = 247973, upload-time = "2026-03-25T20:21:46.937Z" }, + { url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size = 256223, upload-time = "2026-03-25T20:21:48.467Z" }, + { url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = 98973, upload-time = "2026-03-25T20:21:49.526Z" }, + { url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size = 109082, upload-time = "2026-03-25T20:21:50.506Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size = 96490, upload-time = "2026-03-25T20:21:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size = 164263, upload-time = "2026-03-25T20:21:52.543Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size = 160736, upload-time = "2026-03-25T20:21:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size = 270717, upload-time = "2026-03-25T20:21:55.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size = 278461, upload-time = "2026-03-25T20:21:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size = 274855, upload-time = "2026-03-25T20:21:57.653Z" }, + { url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size = 283144, upload-time = "2026-03-25T20:21:59.089Z" }, + { url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size = 108683, upload-time = "2026-03-25T20:22:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size = 121196, upload-time = "2026-03-25T20:22:01.169Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size = 100393, upload-time = "2026-03-25T20:22:02.137Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, +] + +[[package]] +name = "tomli-w" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/75/241269d1da26b624c0d5e110e8149093c759b7a286138f4efd61a60e75fe/tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021", size = 7184, upload-time = "2025-01-15T12:07:24.262Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90", size = 6675, upload-time = "2025-01-15T12:07:22.074Z" }, +] + [[package]] name = "tornado" version = "6.5.7" @@ -5214,39 +5459,63 @@ wheels = [ [[package]] name = "tox" -version = "4.32.0" +version = "4.58.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, - { name = "chardet" }, { name = "colorama" }, { name = "filelock" }, { name = "packaging" }, { name = "platformdirs" }, { name = "pluggy" }, { name = "pyproject-api" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "python-discovery" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "tomli-w" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/59/bf/0e4dbd42724cbae25959f0e34c95d0c730df03ab03f54d52accd9abfc614/tox-4.32.0.tar.gz", hash = "sha256:1ad476b5f4d3679455b89a992849ffc3367560bbc7e9495ee8a3963542e7c8ff", size = 203330, upload-time = "2025-10-24T18:03:38.132Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/8e/4d2b1b2a81f4de1cd4e54fa40df1ab5f9bb88fe2e37461fc44aba8f9d302/tox-4.58.0.tar.gz", hash = "sha256:ab0b126a04dd56bc18e6d216386db09335247f2289b54cf534deb5c4ae3a8d2e", size = 296926, upload-time = "2026-07-21T13:10:36.622Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/cc/e09c0d663a004945f82beecd4f147053567910479314e8d01ba71e5d5dea/tox-4.32.0-py3-none-any.whl", hash = "sha256:451e81dc02ba8d1ed20efd52ee409641ae4b5d5830e008af10fe8823ef1bd551", size = 175905, upload-time = "2025-10-24T18:03:36.337Z" }, + { url = "https://files.pythonhosted.org/packages/6b/3d/7ba55871e9d794d40b6c8424f2e5d1b267ea5d9a4bd2175e08b57960ba13/tox-4.58.0-py3-none-any.whl", hash = "sha256:dcae21f5f015f3a67658e35644cce0d1aa0dedcd06f3927f95d84e1717f6cea5", size = 223298, upload-time = "2026-07-21T13:10:34.731Z" }, ] [[package]] name = "tox-uv" -version = "1.29.0" +version = "1.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tox-uv-bare" }, + { name = "uv" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/d7/3fce976b9e295218a2d7e541e0f1e9b1259cb893de7a8d277952a66a798d/tox_uv-1.36.0-py3-none-any.whl", hash = "sha256:5f81b39be3fe4e14c6b9bb7ba637ed97d34efa6214efd5f525d95ee9559a99ac", size = 6564, upload-time = "2026-07-21T13:09:54.316Z" }, +] + +[[package]] +name = "tox-uv-bare" +version = "1.36.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "tox" }, - { name = "uv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4f/90/06752775b8cfadba8856190f5beae9f552547e0f287e0246677972107375/tox_uv-1.29.0.tar.gz", hash = "sha256:30fa9e6ad507df49d3c6a2f88894256bcf90f18e240a00764da6ecab1db24895", size = 23427, upload-time = "2025-10-09T20:40:27.384Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/df/9f90a59de8c87cece6e691eee53dc1cb0a824d73aea8f380ae2f6ecb71de/tox_uv_bare-1.36.0.tar.gz", hash = "sha256:d9b0a2fd0f74fa65d9597108f8a0ef7abb08651c9196a998a6073b781b45cfd0", size = 32548, upload-time = "2026-07-21T13:09:56.435Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/0a/6dc462e4fb543305283a6157c80f43e3d12ca4702da6ae6521d541c6b55c/tox_uv_bare-1.36.0-py3-none-any.whl", hash = "sha256:ba397dd0396df95a75744d4e42a50ee27207c0ffcf277b62ffba9c3de455a939", size = 22489, upload-time = "2026-07-21T13:09:55.389Z" }, +] + +[[package]] +name = "tqdm" +version = "4.70.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/3b/6c24bec5be5e743ffd99576daa5cc077722fc7d5bbc00bd133fa0c698dc6/tqdm-4.70.0.tar.gz", hash = "sha256:55b0b0dbd97462d06ebee91e4dac24ed4d4702be82b24f07e6c1d27e08cea220", size = 795438, upload-time = "2026-07-27T11:33:15.271Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/17/221d62937c4130b044bb437caac4181e7e13d5536bbede65264db1f0ac9f/tox_uv-1.29.0-py3-none-any.whl", hash = "sha256:b1d251286edeeb4bc4af1e24c8acfdd9404700143c2199ccdbb4ea195f7de6cc", size = 17254, upload-time = "2025-10-09T20:40:25.885Z" }, + { url = "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl", hash = "sha256:7f585706bfddbdebf89daac705b2dfcc16890130727d3197ca62c732b4310953", size = 80184, upload-time = "2026-07-27T11:33:13.167Z" }, ] [[package]] @@ -5260,37 +5529,42 @@ wheels = [ [[package]] name = "typedb-driver" -version = "3.8.1" +version = "3.12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parse" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/52/d5/49535e1b3f164365cf21c1992bea462c4d0dfca714570a018d1256bc46c7/typedb_driver-3.8.1-py310-none-macosx_11_0_arm64.whl", hash = "sha256:ec7aa39a1ec6aad6dd67fea485f583b2ccd4a4450879f7fe9fbe63acad8f4818", size = 6274596, upload-time = "2026-02-27T22:05:55.974Z" }, - { url = "https://files.pythonhosted.org/packages/09/c6/26c506644537e3e559d8928cd6f1f73439f324a1ea73a3b2e18b0e312bd0/typedb_driver-3.8.1-py310-none-macosx_11_0_x86_64.whl", hash = "sha256:b278273a08b87f64212d8a9da69c5c53fb8655c771599d689ced23b82e8128a3", size = 6394177, upload-time = "2026-02-27T22:13:07.342Z" }, - { url = "https://files.pythonhosted.org/packages/1d/d5/d433362bb67002178dd8172045286587ec4b8f7cb3f8fd278e5495265bd5/typedb_driver-3.8.1-py310-none-manylinux_2_17_aarch64.whl", hash = "sha256:59a17461c3e9d4562dab833a398a05ae4d695d9f9ac2361846864c2955e29531", size = 7386774, upload-time = "2026-02-27T22:16:54.504Z" }, - { url = "https://files.pythonhosted.org/packages/ac/5b/85a67657256794005faeb221ef94920ba4f56430893c2562786bd882eb2a/typedb_driver-3.8.1-py310-none-manylinux_2_17_x86_64.whl", hash = "sha256:4c23beb8ad9aa2dc4796100ff77c5cb5efe38bd52c5dff5772722e9719a9b756", size = 7440767, upload-time = "2026-02-27T22:13:14.059Z" }, - { url = "https://files.pythonhosted.org/packages/65/e1/c201320558cfa39fa440bda18b444fa65ead8de890b54bc207fde1c251e8/typedb_driver-3.8.1-py310-none-win_amd64.whl", hash = "sha256:a5f4f4972011a668e4bbc9c901cee34f2a328a66c64bbc1451f6c76c2bd4b20d", size = 3734788, upload-time = "2026-02-27T22:15:15.851Z" }, - { url = "https://files.pythonhosted.org/packages/98/0c/2f863df46358baf8102a267a4b4d006952454338c7b59d83e1ecd0cadbb5/typedb_driver-3.8.1-py311-none-macosx_11_0_arm64.whl", hash = "sha256:42cdea68cf5c5405c950b42f0896ff7572295891b2eba746918b839e5f6f67dd", size = 6274590, upload-time = "2026-02-27T22:06:04.565Z" }, - { url = "https://files.pythonhosted.org/packages/68/2f/c8dd2b7157fca854e340e7bd755e58bfa75c9ca03ee42c668e49c6f5dc64/typedb_driver-3.8.1-py311-none-macosx_11_0_x86_64.whl", hash = "sha256:58c531616718975104174d06f89f065791a38c1aa15208d562f00483977f577a", size = 6394178, upload-time = "2026-02-27T22:13:26.129Z" }, - { url = "https://files.pythonhosted.org/packages/58/b7/269ada0da967c51f17e83c1d1d96ed9ff8cf89974476417c033f148072ae/typedb_driver-3.8.1-py311-none-manylinux_2_17_aarch64.whl", hash = "sha256:a054ab37610a917a9b27d6b547a7935509788b10aeb7f0ddab785383c55973e7", size = 7386731, upload-time = "2026-02-27T22:17:18.374Z" }, - { url = "https://files.pythonhosted.org/packages/5b/5a/0b882814f6fc9e821bf7d036d5433a536f8d667b68f31bf543b0db688a25/typedb_driver-3.8.1-py311-none-manylinux_2_17_x86_64.whl", hash = "sha256:c4180ea202ebe50c1ddb9a14590bd8f5b95573a0dd33357ebb4833ede3f406cc", size = 7440662, upload-time = "2026-02-27T22:13:43.135Z" }, - { url = "https://files.pythonhosted.org/packages/d0/78/e3137027bc0a36abf7f32905f224fb53c61b1a56a71cdbb611c043b64ded/typedb_driver-3.8.1-py311-none-win_amd64.whl", hash = "sha256:3a69e2329cea315fb234f70bd72af2455b9eb6cae9d9552e95a57287df631c59", size = 3734515, upload-time = "2026-02-27T22:16:29.078Z" }, - { url = "https://files.pythonhosted.org/packages/59/b7/bc018c47b4c781c23bb2c508d9ecf97154610616e5a9cc6de3c81d8b7fa2/typedb_driver-3.8.1-py312-none-macosx_11_0_arm64.whl", hash = "sha256:d5dfdb8dcb220bdd498038969118494244bf8840a4f4f9dc19afed6225e62d07", size = 6274708, upload-time = "2026-02-27T22:06:13.027Z" }, - { url = "https://files.pythonhosted.org/packages/8e/b5/61365038dee0a14ef1c9d7c914cb5a1154e9aa2e6bfb024647e0fdc85592/typedb_driver-3.8.1-py312-none-macosx_11_0_x86_64.whl", hash = "sha256:c27a81fcdb4c868df459989ebf9e2ca1010da04717af02f011eaf2a96fffc757", size = 6394840, upload-time = "2026-02-27T22:13:44.278Z" }, - { url = "https://files.pythonhosted.org/packages/9f/97/7fe40f1faeac0f9051886509e1f32bb27d5081077cfe96430f25351f9aeb/typedb_driver-3.8.1-py312-none-manylinux_2_17_aarch64.whl", hash = "sha256:83d1df301ab7a3b1187582db75ad7d75c23a97bd05e1bb4e818d0a18d2cf88a1", size = 7388346, upload-time = "2026-02-27T22:17:42.552Z" }, - { url = "https://files.pythonhosted.org/packages/38/90/6001a72c7c840fd4a4f89f4f8dab59f0a23656226b5798cc1f9b3c869451/typedb_driver-3.8.1-py312-none-manylinux_2_17_x86_64.whl", hash = "sha256:d55759ef6196bdb101044a691201e67057d0a037b9d28d40057a8b23c2b2ffe5", size = 7440489, upload-time = "2026-02-27T22:14:13.86Z" }, - { url = "https://files.pythonhosted.org/packages/97/91/63fed1498d28a075cdb4222767ab314ce3f51da1eba197f4ba8249d5ca97/typedb_driver-3.8.1-py312-none-win_amd64.whl", hash = "sha256:77e6bf767243f571b2f2d1235da1938562332ec348266180d3f2945034c6ecb8", size = 3734624, upload-time = "2026-02-27T22:17:17.677Z" }, - { url = "https://files.pythonhosted.org/packages/ae/dd/b6c329dc6159efeefcde43cffc5cabbf911999843ac02f2205cd0b4ce01c/typedb_driver-3.8.1-py313-none-macosx_11_0_arm64.whl", hash = "sha256:4e0ea48bbdaf0f12693f219093ddc9b7a036d640f49779926249981ddd54f981", size = 6274717, upload-time = "2026-02-27T22:06:21.374Z" }, - { url = "https://files.pythonhosted.org/packages/a2/c6/8dbb16c13ee4f4e2a6b7b655af3e5b6fd7c469f67c4435d33d46d778867b/typedb_driver-3.8.1-py313-none-macosx_11_0_x86_64.whl", hash = "sha256:e58ecd1cac55b023824baec9a3d0d3b3adcf9ba74345beacfd40b705653acb9e", size = 6394841, upload-time = "2026-02-27T22:14:05.319Z" }, - { url = "https://files.pythonhosted.org/packages/57/7c/25a6d615ebaf8f629f8b3c1c5a873f5a2f62d1d33b1963eb580e78e816d1/typedb_driver-3.8.1-py313-none-manylinux_2_17_aarch64.whl", hash = "sha256:a4714c147c277705aa44d26fbc508fd9d275f54edbd688d351cffd15c1fcb83b", size = 7388354, upload-time = "2026-02-27T22:18:06.542Z" }, - { url = "https://files.pythonhosted.org/packages/b5/40/3ec874276812afa0b1d8df3b1ad3a474db227db8b1ade4a299fbd0b0ba48/typedb_driver-3.8.1-py313-none-manylinux_2_17_x86_64.whl", hash = "sha256:60e1f534ef2320e7134c2d859fdd3a05ee98c12ce80490deb546f42eca6a2c6b", size = 7440392, upload-time = "2026-02-27T22:14:44.365Z" }, - { url = "https://files.pythonhosted.org/packages/36/00/2f21bc1a37e1dd3cf2b312edd26c5b308d5bacc5e705916f3c3c5b11bbbb/typedb_driver-3.8.1-py313-none-win_amd64.whl", hash = "sha256:c83bd43619c1cc59d47bbd37d90ccd08225ed2d033def53f4975ceb38425dcb5", size = 3734774, upload-time = "2026-02-27T22:17:59.916Z" }, - { url = "https://files.pythonhosted.org/packages/d1/ea/35e8f39df944c46fcdb324e5631b630b73c0a30755735b2ec4bf00c2c7e2/typedb_driver-3.8.1-py39-none-macosx_11_0_arm64.whl", hash = "sha256:4bbf93ccc772679e730fe24852227ed0d2e45c6251f2305e14e7067feccaa4f5", size = 6274201, upload-time = "2026-02-27T22:05:46.548Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c1/7334ddd7959ebb2a2d33290beeb87b81335a21691d481437d0827edf78e5/typedb_driver-3.8.1-py39-none-macosx_11_0_x86_64.whl", hash = "sha256:ca6916bb7d316b0dfe3041f2da466a76ebe66d0f3c1ffb474ed6ea705331bc47", size = 6394515, upload-time = "2026-02-27T22:12:40.381Z" }, - { url = "https://files.pythonhosted.org/packages/1e/68/53a40c1158506b75cae1120ef38e69e7f7adc16ab9f5e9c87dfda99c3c99/typedb_driver-3.8.1-py39-none-manylinux_2_17_aarch64.whl", hash = "sha256:17e65f285a2303481b406ca67b8039a64f202f02a7537b0d9ed39aa654cdc9aa", size = 7386955, upload-time = "2026-02-27T22:16:28.028Z" }, - { url = "https://files.pythonhosted.org/packages/a3/b4/1712cd11a334cd53e351e29e57449db179e9dffda526571c3c54c694d625/typedb_driver-3.8.1-py39-none-manylinux_2_17_x86_64.whl", hash = "sha256:3bcfc849ce7f32281e12f7be3a85f5013afcd8aa4d4e44dc7e0d148a7952416e", size = 7441026, upload-time = "2026-02-27T22:12:43.742Z" }, - { url = "https://files.pythonhosted.org/packages/a1/7c/ffc9821f8775f7b9f91ae182519500bb5177cacfede4308604837b79305d/typedb_driver-3.8.1-py39-none-win_amd64.whl", hash = "sha256:89650fab49d0749008a1b8a5c1f41c30842f9f9456ccfa4342aecaa820308828", size = 3734424, upload-time = "2026-02-27T22:13:42.989Z" }, + { url = "https://files.pythonhosted.org/packages/22/1a/1ed66a450c91e1596d580c2202d8e04823e256043f4318e65ac65842b9d8/typedb_driver-3.12.1-py310-none-macosx_11_0_arm64.whl", hash = "sha256:50f81d42c5d3f4f8ab5c79831d25f827d3f282cd399ec8614a3af0903ee3966f", size = 5601837, upload-time = "2026-07-21T23:20:12.191Z" }, + { url = "https://files.pythonhosted.org/packages/51/b1/0545e3b73d34059fde8ef8875adce1dac56ddde148c6babcf2ab77bc9247/typedb_driver-3.12.1-py310-none-macosx_11_0_x86_64.whl", hash = "sha256:19d80e3c31ac92bcccd54390ce832240ddb974d3389a017b612c65f1b970b774", size = 5729488, upload-time = "2026-07-21T23:30:44.866Z" }, + { url = "https://files.pythonhosted.org/packages/86/d7/e0bd65a5e3747766aca018563297d7082a9505de1f0ff2dc786f92650c3f/typedb_driver-3.12.1-py310-none-manylinux_2_17_aarch64.whl", hash = "sha256:df47112adf445a0d50abb233d3d7b909b5a9d9c8e3e48f3fac1f290d01d81938", size = 6968844, upload-time = "2026-07-21T23:31:27.376Z" }, + { url = "https://files.pythonhosted.org/packages/6c/42/6b04984daa0319eeb89b711ab810cf742d7b1e7fb478aa3037cb9ddc1626/typedb_driver-3.12.1-py310-none-manylinux_2_17_x86_64.whl", hash = "sha256:7261bd792d0f391727fd2fab3dca17c972f363c4bbaa860dadb59d151c1700ca", size = 7119906, upload-time = "2026-07-21T23:27:31.34Z" }, + { url = "https://files.pythonhosted.org/packages/92/a9/a72806a178d641830abd07b7b038e3e290506624364499aef33af9d48977/typedb_driver-3.12.1-py310-none-win_amd64.whl", hash = "sha256:cd646f3b5f9fb98a6be061e5cba7a561dc1f241a7a7146f6c3df0d4d427ac61c", size = 3350372, upload-time = "2026-07-21T23:26:58.907Z" }, + { url = "https://files.pythonhosted.org/packages/48/0b/4f00f7b8e3687dfdb48d0e13f06cbf0c6b17a44a6978d1e0314e72a1a36b/typedb_driver-3.12.1-py311-none-macosx_11_0_arm64.whl", hash = "sha256:e9dfbfabed0b091022a403246978f607490216ddc71035b7980f459bc575165c", size = 5601834, upload-time = "2026-07-21T23:20:19.182Z" }, + { url = "https://files.pythonhosted.org/packages/fa/77/bd2b8c23ddaa540b9ed33d23de9deb06f978f941e68d84c6c2ab85f7367b/typedb_driver-3.12.1-py311-none-macosx_11_0_x86_64.whl", hash = "sha256:7ebb569ed5ba6bc556a48c035fffe8ec1bb152ab571e20a2ad82e06cdd4888a1", size = 5729483, upload-time = "2026-07-21T23:31:05.055Z" }, + { url = "https://files.pythonhosted.org/packages/94/0d/ac0ae7d6120bc118cfb1c06f9afebba448e5ffaedeb3454cc01eccee6ef6/typedb_driver-3.12.1-py311-none-manylinux_2_17_aarch64.whl", hash = "sha256:58abebc319df8ce391a81c9d013b23d32ff749066d2579de8e68ba72c4c91825", size = 6969084, upload-time = "2026-07-21T23:31:57.167Z" }, + { url = "https://files.pythonhosted.org/packages/7f/55/486f76022dfbcdde787bd912f31d46ddffb0588c1deb3d5d1651003626de/typedb_driver-3.12.1-py311-none-manylinux_2_17_x86_64.whl", hash = "sha256:aca291eb699e28714e6bce8a5b9a8be08564348dc12334ebcb0a360cc84e80bc", size = 7120033, upload-time = "2026-07-21T23:27:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/f7/c4/a888264d2dde2b53d6f29575cebb1273f4d9d76be281710098b3aab795ae/typedb_driver-3.12.1-py311-none-win_amd64.whl", hash = "sha256:4cc3e5a75ef5ab1752d009930b9374b0fd38ed06544a8eae301b1f5d6d80524f", size = 3350594, upload-time = "2026-07-21T23:27:20.584Z" }, + { url = "https://files.pythonhosted.org/packages/58/72/4c3087c8fb6df55751948ec733a6aa223ce9e76c79d91067d3fc26d9e409/typedb_driver-3.12.1-py312-none-macosx_11_0_arm64.whl", hash = "sha256:2073f29326052483c90d01e9517bf6850845ea50be294329c9022c908439b656", size = 5602030, upload-time = "2026-07-21T23:20:26.272Z" }, + { url = "https://files.pythonhosted.org/packages/34/a8/bebb8395641605912e80fb5439ee323ada1a81977ba7466f0b21c30da44a/typedb_driver-3.12.1-py312-none-macosx_11_0_x86_64.whl", hash = "sha256:80133fe6a7597b95225dcc0ae5c9793cad442c1900622ea18e12fd698bfea564", size = 5730504, upload-time = "2026-07-21T23:31:23.069Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1c/aa3c333bc10d8d586d2cabc92b25bb42cbf51bb0008257cc38fac5ea042e/typedb_driver-3.12.1-py312-none-manylinux_2_17_aarch64.whl", hash = "sha256:4a78940d846fb58cb74fa18b368da1add672d7825028262d2023e0c874bd1c09", size = 6970150, upload-time = "2026-07-21T23:32:26.69Z" }, + { url = "https://files.pythonhosted.org/packages/3a/2b/953bbc36d89c8baf64f0dbcfb2126e9b19dd3b051aa57b29121d09a5e3d9/typedb_driver-3.12.1-py312-none-manylinux_2_17_x86_64.whl", hash = "sha256:b7cbd7272aca4a82917c7da2558c6cbe9d47d0620898e87cb9c6ab3795f24cd4", size = 7120199, upload-time = "2026-07-21T23:28:24.981Z" }, + { url = "https://files.pythonhosted.org/packages/07/a0/ef157572d31cee0d461e8a133e46e64e6bd88f63b70ffc01333a3f7dc636/typedb_driver-3.12.1-py312-none-win_amd64.whl", hash = "sha256:20845930dbafc64b5a6ae9f21cc54e8dd40808bd7d1427edfd6dbbb6ecd1b012", size = 3350895, upload-time = "2026-07-21T23:27:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b4/01b4c48f44980b15d50866c6917be651290b41ef8272883f872683b31130/typedb_driver-3.12.1-py313-none-macosx_11_0_arm64.whl", hash = "sha256:d9c1140ef869571d6020dbdb4b46eee5fead847302c84378883e8fdc5234edab", size = 5602035, upload-time = "2026-07-21T23:20:32.984Z" }, + { url = "https://files.pythonhosted.org/packages/76/e3/d772c190cad7da42b958cb98b86d69b8910d9dab2bfc67e422522b0fbbcd/typedb_driver-3.12.1-py313-none-macosx_11_0_x86_64.whl", hash = "sha256:574349a6eb6e957fd5e3f46e8d7af815766999d34b1ec150581d87bb9600a256", size = 5730508, upload-time = "2026-07-21T23:31:40.676Z" }, + { url = "https://files.pythonhosted.org/packages/8d/58/f81b1ed5f4ba9070810e0d642e7f214fd9b9f083f125bddc45ccb5c791ab/typedb_driver-3.12.1-py313-none-manylinux_2_17_aarch64.whl", hash = "sha256:5dee935ce6473d271b7ec20851cdf8f4a8854e9722983dc2132b51486cdfd5d7", size = 6970016, upload-time = "2026-07-21T23:32:56.095Z" }, + { url = "https://files.pythonhosted.org/packages/a4/69/24f5f8aa395f491a6f31fe6139b226b853bf84c1fafe66325e989b48733d/typedb_driver-3.12.1-py313-none-manylinux_2_17_x86_64.whl", hash = "sha256:834f0c98e7e0e31ce35eb3dddbdecb7c8c023534f61afdd093582ee8c0dfff42", size = 7120200, upload-time = "2026-07-21T23:28:52.842Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c5/22c07260f307897e7baf55ada88beb5b86714deb3c15abad085bf018ad27/typedb_driver-3.12.1-py313-none-win_amd64.whl", hash = "sha256:6225db4024e614aa299372113e61657cb7170bed15f2506e8e1ba9f758556a57", size = 3350225, upload-time = "2026-07-21T23:28:19.817Z" }, + { url = "https://files.pythonhosted.org/packages/55/7f/b28cdd0f44e7b0e7da1480d9c4662049e0a344a9ce24391e518238a47095/typedb_driver-3.12.1-py314-none-macosx_11_0_arm64.whl", hash = "sha256:5de7fe3bb5534634e0fa67d2ed9ee47f0f5e2b4d6b6e3bc73704a34ba3b2e2ce", size = 5603546, upload-time = "2026-07-21T23:20:39.872Z" }, + { url = "https://files.pythonhosted.org/packages/e8/b5/faa0618924a34852f67c0ba1ea9d7852af309e88412451a04a3dfe2d453a/typedb_driver-3.12.1-py314-none-macosx_11_0_x86_64.whl", hash = "sha256:48a999910da74ddcc04609c6d2b29ba47482f9930243dd43b5b167907ada086e", size = 5731520, upload-time = "2026-07-21T23:31:58.767Z" }, + { url = "https://files.pythonhosted.org/packages/28/12/7f645c3059cdd6fbd2646328882c65a183197133bf609173b6aca78d6b69/typedb_driver-3.12.1-py314-none-manylinux_2_17_aarch64.whl", hash = "sha256:1d02aabced59a7f0595c466019bd042d1442adb26222f382fdbcf467852ae1fe", size = 6969827, upload-time = "2026-07-21T23:33:25.439Z" }, + { url = "https://files.pythonhosted.org/packages/14/07/0c37c37ea042f0da6e7ef627f60d9c87fa8a0f0599750963a50f5fd1032a/typedb_driver-3.12.1-py314-none-manylinux_2_17_x86_64.whl", hash = "sha256:f5d3a65b678b91cb4805b231f4f8d879feb1ef65424184c805829533d55f910b", size = 7120040, upload-time = "2026-07-21T23:29:18.786Z" }, + { url = "https://files.pythonhosted.org/packages/b9/59/48ce4fcafc3a37674d22f277a04b40b017a07ba50c38b45507221f42e919/typedb_driver-3.12.1-py314-none-win_amd64.whl", hash = "sha256:c9360c6da756a0bbb1ba179b2ac3f87dc5a1f6e9f47816a8c34a2a394467f143", size = 3350414, upload-time = "2026-07-21T23:29:20.763Z" }, + { url = "https://files.pythonhosted.org/packages/cd/a4/a7f49aca83480e4427be8e05d0252c32acc6d7050dfcd6d1bf0d6f98c1c8/typedb_driver-3.12.1-py39-none-macosx_11_0_arm64.whl", hash = "sha256:c8ffe78ecd841f807c0a98d6cd10de00bcdf236e74f0e9cba05177d5876f1678", size = 5602213, upload-time = "2026-07-21T23:20:04.051Z" }, + { url = "https://files.pythonhosted.org/packages/37/1c/c62982187fb43a04e38b961e567c4f398806c74b4a393a099cd18db3a306/typedb_driver-3.12.1-py39-none-macosx_11_0_x86_64.whl", hash = "sha256:960da098bd2cf825c05fafd4887f0f2cfa441312c3e257f5ad413fcaaf0f4ecf", size = 5729611, upload-time = "2026-07-21T23:30:24.267Z" }, + { url = "https://files.pythonhosted.org/packages/80/2e/c56a6c764c9f51d8c5c3a408e628bd35c7d9c6795c9679d4f50ead0e8cd1/typedb_driver-3.12.1-py39-none-manylinux_2_17_aarch64.whl", hash = "sha256:61487659b776ef3d29f49b72bacb41ff32d7911a3fcd61c6f475907c49623b55", size = 6969262, upload-time = "2026-07-21T23:30:56.956Z" }, + { url = "https://files.pythonhosted.org/packages/67/8f/8cb2545bfdce1f5a784d1c4de25988fc5d3c734a6610acf30ab8e616ac68/typedb_driver-3.12.1-py39-none-manylinux_2_17_x86_64.whl", hash = "sha256:7b8e9f87be9412cc513bc0eadb9427339213d2be1ce6cf172a04ea5961751cdd", size = 7119453, upload-time = "2026-07-21T23:27:04.556Z" }, + { url = "https://files.pythonhosted.org/packages/a6/05/65442e89805848cfbd39e9a746c82c25b97885d4a5757c8055aa982c98f9/typedb_driver-3.12.1-py39-none-win_amd64.whl", hash = "sha256:6b0790fa2daf2d27c95edead7adbe0e45ca1655d42b971433a3ad59b0276f467", size = 3350174, upload-time = "2026-07-21T23:26:26.861Z" }, ] [[package]]