Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-31 07:48 UTC

linkml / linkml

Linked Open Data Modeling Language

Python · Jupyter NotebookApache-2.0★ 581 Sterne⑂ 186 Forksseit März 2021Auf GitHub ansehen ↗

linkml/linkml erreicht einen Gesundheitsindex von 88 von 100 und liegt damit im Bereich Exzellent. Am stärksten schneidet es bei Engineering Quality (100/100) ab, am schwächsten bei Security (67/100). Zuletzt heute aktualisiert. 6 Mitwirkende tragen den Großteil der jüngsten Arbeit.

88
gesamt / 100
Exzellent

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

88
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

222 Follower68 öffentliche Reposseit Feb. 2021

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
PyPIlinkml1.11.1428.533161vor 71 Tagenbiolinkdata-modelinglinked-dataowlrdfschema
PyPIlinkml-runtime1.11.1447.633156vor 71 Tagenlinkmlmetamodelowlrdfschema-visualizationyaml

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

99Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
35.3/36Commit-Rhythmus — 51/52 Wochen mit Commits
18/18Commit-Volumen — 1.225 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year1.225
human_commit_share0,99
days_since_last_push0
active_weeks_last_year51

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 100 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 71 Tagen
27/27Release-Rhythmus — ein Release etwa alle 18 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count100
latest_release_tagv1.11.1
releases_from_tagsnein
days_since_latest_release71
mean_days_between_releases18
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

85Exzellent · 18 % des Gesamtindex
Wie die Bewertung erfolgt
44.8/60Stars — 581 Stars
18.9/25Forks — 186 Forks
7/15Watcher — 19 Watcher
Verwendete Eingangsdaten
forks186
stars581
watchers19
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
18/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductja
has_pull_request_templateja
Wie die Bewertung erfolgt
79.2/80Downloads pro Monat — 876.166 Downloads/Monat über pypi
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packageslinkml, linkml-runtime
dependents
ecosystemspypi
total_downloads
monthly_downloads876.166
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

84Gut · 24 % des Gesamtindex
Wie die Bewertung erfolgt
48.6/54Bus-Faktor — 6 Beitragende decken die Hälfte aller Commits ab
19/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 15 % der Commits
13.5/13.5Breite der Beitragenden — 96 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 62 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor6
contributors_sampled96
top_contributor_share0,154
Wie die Bewertung erfolgt
30.1/46.8Issue-Lösungsquote — 64 % der Issues geschlossen
31.9/38.3PR-Annahme — 1.293/1.552 entschiedene PRs gemergt
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Verwendete Eingangsdaten
merged_prs1.293
open_issues714
closed_issues1.294
issue_closed_ratio0,644
closed_unmerged_prs259
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
16.9/25Reichweite des Inhabers — 222 Follower von linkml
23.9/25Kontohistorie — 68 öffentliche Repos, Kontoalter ca. 5 Jahre
Verwendete Eingangsdaten
followers222
owner_typeOrganization
is_verified
owner_loginlinkml
public_repos68
account_age_days1.987

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 2 Paket(e) auf pypi
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 71 Tagen
20/20Versionshistorie — 161 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packageslinkml, linkml-runtime
ecosystemspypi
any_deprecatednein
min_days_since_publish71

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

100Exzellent · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 12 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration
9.6/9.6Pre-Commit-Hooks
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 14 out of 14 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfigja
has_linter_configja
has_precommit_configja

Dokumentation

100Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://linkml.io/linkml
10/10Repository-Beschreibung
10/10Topics — 16 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsrdf, modeling, linkml, json-schema, linkml-schema, semantic-web, schema, data-modeling, json-ld-context, owl, data-dictionaries, linked-data, hacktoberfest, standards, shex, shacl
has_wikija
homepagehttps://linkml.io/linkml
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

67Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
2.5/2.5CI-Tests — 14 out of 14 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 62 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0.8/7.5Vulnerabilities — 9 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate5,9
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
25/25Indirekte Abhängigkeiten ohne bekannte Advisories — keine indirekte Abhängigkeit trägt ein bekanntes Advisory
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages80
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von pypi:linkml@1.11.1 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 80 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

76Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md, CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
37.2/40Lesbare Commit-Historie — 69 von 99 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,697
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes1.666
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — Makefile, docs/Makefile, examples/PersonSchema/Makefile, packages/linkml_runtime/Makefile
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
10/10Belegte Agentenpraxis — 5 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
8/8Automatisierte Wartung — 1 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesuv.lock
has_dockerfileja
typed_languagenein
bootstrap_filesMakefile, docs/Makefile, examples/PersonSchema/Makefile, packages/linkml_runtime/Makefile
has_devcontainernein
has_linter_configja
typecheck_configs
agent_commit_share0,05
toolchain_manifestsexamples/PersonSchema/rust/Cargo.toml
dependency_bot_commit_share0,01
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Python ohne Typprüfungs-Konfiguration
53.7/55Handhabbare Dateigrößen — 17/703 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes859.669
source_files_sampled703
oversized_source_files17
Wie die Bewertung erfolgt
40/40API-Schema (OpenAPI/GraphQL/proto) — examples/PersonSchema/personinfo/graphql/personinfo.graphql, examples/PersonSchema/personinfo/protobuf/personinfo.proto, examples/organization.graphql, examples/organization.proto, packages/linkml_runtime/src/linkml_runtime/linkml_model/graphql/meta.graphql, packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto, tests/linkml/test_biolink_model/__snapshots__/biolink.graphql, tests/linkml/test_biolink_model/__snapshots__/biolink.proto, tests/linkml/test_generators/__snapshots__/kitchen_sink.graphql, tests/linkml/test_scripts/__snapshots__/gengraphql/meta.graphql, tests/linkml/test_scripts/__snapshots__/genproto/meta.proto
0/20MCP-Server
40/40Lauffähige Beispiele — examples, notebooks
Verwendete Eingangsdaten
example_dirsexamples, notebooks
has_mcp_signalnein
api_schema_filesexamples/PersonSchema/personinfo/graphql/personinfo.graphql, examples/PersonSchema/personinfo/protobuf/personinfo.proto, examples/organization.graphql, examples/organization.proto, packages/linkml_runtime/src/linkml_runtime/linkml_model/graphql/meta.graphql, packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto, tests/linkml/test_biolink_model/__snapshots__/biolink.graphql, tests/linkml/test_biolink_model/__snapshots__/biolink.proto, tests/linkml/test_generators/__snapshots__/kitchen_sink.graphql, tests/linkml/test_scripts/__snapshots__/gengraphql/meta.graphql, tests/linkml/test_scripts/__snapshots__/genproto/meta.proto

Eckdaten

581GitHub-Sterne
96Mitwirkende
1.225Commits, letzte 12 Monate
0Tage seit letztem Push
100Releases
6Bus-Faktor
714offene Issues
PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 186 ⇿
0Sterne
186Forks
100Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

0408012016020018142021-032023-112026-07
Major 0Minor 7Patch 63

Jeder Punkt umfasst 5 Tage.

OpenSSF Scorecard 5.9 / 10
5.9Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-31 07:48 UTC

10Binary-Artifactsno binaries found in the repo
k. A.Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests14 out of 14 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 62 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
1Vulnerabilities9 existing vulnerabilities detected
Direkte Abhängigkeiten 41
RegistryPaketVersionsvorgabeManifest
PyPIantlr4-python3-runtime>= 4.9.0, < 4.10packages/linkml/pyproject.toml
PyPIclick>= 8.2packages/linkml/pyproject.toml
PyPIgraphviz>= 0.10.1packages/linkml/pyproject.toml
PyPIhbreaderpackages/linkml/pyproject.toml
PyPIisodate>= 0.6.0packages/linkml/pyproject.toml
PyPIjinja2>= 3.1.0packages/linkml/pyproject.toml
PyPIjsonasobj2>= 1.0.3, < 2.0.0packages/linkml/pyproject.toml
PyPIjsonschema>= 4.0.0packages/linkml/pyproject.toml
PyPIlinkml-runtime>= 1.10.0, < 2.0.0packages/linkml/pyproject.toml
PyPIopenpyxlpackages/linkml/pyproject.toml
PyPIparsepackages/linkml/pyproject.toml
PyPIprefixcommons>= 0.1.7packages/linkml/pyproject.toml
PyPIprefixmaps>= 0.2.2packages/linkml/pyproject.toml
PyPIpydantic>= 2.0.0, < 3.0.0packages/linkml/pyproject.toml
PyPIpyjsg>= 0.12.3packages/linkml/pyproject.toml
PyPIpyshex>= 0.9.0packages/linkml/pyproject.toml
PyPIpyshexc>= 0.10.3packages/linkml/pyproject.toml
PyPIpython-dateutilpackages/linkml/pyproject.toml
PyPIpyyamlpackages/linkml/pyproject.toml
PyPIrdflib>=6.0.0packages/linkml/pyproject.toml
PyPIrequests>= 2.22packages/linkml/pyproject.toml
PyPIsqlalchemy>= 1.4.31packages/linkml/pyproject.toml
PyPIwatchdog>= 0.9.0packages/linkml/pyproject.toml
PyPItyping-extensions>= 4.6.0packages/linkml/pyproject.toml
PyPIsphinx-click(>=6.0.0)packages/linkml/pyproject.toml
PyPIopenapi-spec-validator>= 0.8.4packages/linkml/pyproject.toml
PyPIclick>= 8.2packages/linkml_runtime/pyproject.toml
PyPIdeprecatedpackages/linkml_runtime/pyproject.toml
PyPIhbreaderpackages/linkml_runtime/pyproject.toml
PyPIjson-flattener>=0.1.9packages/linkml_runtime/pyproject.toml
PyPIjsonasobj2==1.*,>=1.0.0,>=1.0.4packages/linkml_runtime/pyproject.toml
PyPIjsonschema>=3.2.0packages/linkml_runtime/pyproject.toml
PyPIprefixcommons>=0.1.12packages/linkml_runtime/pyproject.toml
PyPIpyyamlpackages/linkml_runtime/pyproject.toml
PyPIrdflib>=6.0.0packages/linkml_runtime/pyproject.toml
PyPIrequestspackages/linkml_runtime/pyproject.toml
PyPIprefixmaps>=0.1.4packages/linkml_runtime/pyproject.toml
PyPIcuries>=0.5.4packages/linkml_runtime/pyproject.toml
PyPIpyoxigraph>=0.5.6packages/linkml_runtime/pyproject.toml
PyPIpydantic>=1.10.2, <3.0.0packages/linkml_runtime/pyproject.toml
PyPIisodate>=0.7.2, <1.0.0packages/linkml_runtime/pyproject.toml
Alle Abhängigkeiten 332

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 58 direkte und 274 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
PyPIantlr4-python3-runtimedirekt
PyPIantlr4-python3-runtime4.9.3direkt
PyPIclickdirekt
PyPIclick8.3.3direkt
PyPIcuriesdirekt
PyPIcuries0.12.3direkt
PyPIdeprecateddirekt
PyPIdeprecated1.3.0direkt
PyPIgraphvizdirekt
PyPIgraphviz0.21direkt
PyPIhbreaderdirekt
PyPIhbreader0.9.1direkt
PyPIisodatedirekt
PyPIisodate0.7.2direkt
PyPIjinja2direkt
PyPIjinja23.1.6direkt
PyPIjson-flattenerdirekt
PyPIjson-flattener0.1.9direkt
PyPIjsonasobj2direkt
PyPIjsonasobj21.0.4direkt
PyPIjsonschemadirekt
PyPIjsonschema4.24.1direkt
PyPIlinkml-runtimedirekt
PyPIopenapi-spec-validatordirekt
PyPIopenapi-spec-validator0.8.4direkt
PyPIopenpyxldirekt
PyPIopenpyxl3.1.5direkt
PyPIparsedirekt
PyPIparse1.18.0direkt
PyPIprefixcommonsdirekt
PyPIprefixcommons0.1.12direkt
PyPIprefixmapsdirekt
PyPIprefixmaps0.2.6direkt
PyPIpydanticdirekt
PyPIpydantic2.12.3direkt
PyPIpyjsgdirekt
PyPIpyjsg0.12.4direkt
PyPIpyoxigraphdirekt
PyPIpyoxigraph0.5.8direkt
PyPIpyshexdirekt
PyPIpyshex0.9.0direkt
PyPIpyshexcdirekt
PyPIpyshexc0.10.3.post1direkt
PyPIpython-dateutildirekt
PyPIpython-dateutil2.9.0.post0direkt
PyPIpyyamldirekt
PyPIpyyaml6.0.3direkt
PyPIrdflibdirekt
PyPIrdflib7.2.1direkt
PyPIrequestsdirekt
PyPIrequests2.34.2direkt
PyPIsphinx-clickdirekt
PyPIsphinx-click6.1.0direkt
PyPIsqlalchemydirekt
PyPIsqlalchemy2.0.44direkt
PyPItyping-extensions4.15.0direkt
PyPIwatchdogdirekt
PyPIwatchdog6.0.0direkt
crates.iochronoindirekt
crates.iopyo3indirekt
crates.ioserdeindirekt
crates.ioserde-valueindirekt
crates.ioserde_path_to_errorindirekt
crates.ioserde_ymlindirekt
PyPIaccessible-pygments0.0.5indirekt
PyPIalabaster1.0.0indirekt
PyPIannotated-types0.7.0indirekt
PyPIanyio4.11.0indirekt
PyPIappnope0.1.4indirekt
PyPIargon2-cffi25.1.0indirekt
PyPIargon2-cffi-bindings25.1.0indirekt
PyPIarrow1.4.0indirekt
PyPIasttokens3.0.0indirekt
PyPIasync-lru2.0.5indirekt
PyPIattrs25.4.0indirekt
PyPIbabel2.17.0indirekt
PyPIbackoff2.2.1indirekt
PyPIbeautifulsoup44.14.2indirekt
PyPIblackindirekt
PyPIblack26.5.1indirekt
PyPIbleach6.4.0indirekt
PyPIcachetools6.2.1indirekt
PyPIcattrs25.3.0indirekt
PyPIcertifi2025.10.5indirekt
PyPIcffi2.0.0indirekt
PyPIcfgraph0.2.1indirekt
PyPIchardetindirekt
PyPIchardet7.4.3indirekt
PyPIcharset-normalizer3.4.4indirekt
PyPIcolorama0.4.6indirekt
PyPIcomm0.2.3indirekt
PyPIcontourpy1.3.2indirekt
PyPIcontourpy1.3.3indirekt
PyPIcoverageindirekt
PyPIcoverage7.11.0indirekt
PyPIcryptography49.0.0indirekt
PyPIcycler0.12.1indirekt
PyPIdebugpy1.8.17indirekt
PyPIdecorator5.2.1indirekt
PyPIdefusedxml0.7.1indirekt
PyPIdeprecation2.1.0indirekt
PyPIdistlib0.4.0indirekt
PyPIdocker7.1.0indirekt
PyPIdocutils0.21.2indirekt
PyPIduckdbindirekt
PyPIduckdb1.5.2indirekt
PyPIet-xmlfile2.0.0indirekt
PyPIexceptiongroup1.3.0indirekt
PyPIexecnet2.1.1indirekt
PyPIexecuting2.2.1indirekt
PyPIfastjsonschema2.21.2indirekt
PyPIfilelock3.29.4indirekt
PyPIfonttools4.63.0indirekt
PyPIfqdn1.5.1indirekt
PyPIfuroindirekt
PyPIfuro2025.9.25indirekt
PyPIgoogle-api-core2.30.3indirekt
PyPIgoogle-auth2.53.0indirekt
PyPIgoogle-cloud-bigquery3.41.0indirekt
PyPIgoogle-cloud-core2.6.0indirekt
PyPIgoogle-crc32c1.8.0indirekt
PyPIgoogle-resumable-media2.9.0indirekt
PyPIgoogleapis-common-protos1.75.0indirekt
PyPIgqlindirekt
PyPIgql4.0.0indirekt
PyPIgraphql-core3.2.6indirekt
PyPIgreenlet3.2.4indirekt
PyPIgrpcio1.80.0indirekt
PyPIgrpcio-status1.80.0indirekt
PyPIh110.16.0indirekt
PyPIhatchlingindirekt
PyPIhtml5rdf1.2.1indirekt
PyPIhttpcore1.0.9indirekt
PyPIhttpx0.28.1indirekt
PyPIidna3.17indirekt
PyPIimagesize1.4.1indirekt
PyPIimportlib-metadata8.7.0indirekt
PyPIiniconfig2.3.0indirekt
PyPIipykernelindirekt
PyPIipykernel7.1.0indirekt
PyPIipython8.37.0indirekt
PyPIipython9.6.0indirekt
PyPIipython-genutilsindirekt
PyPIipython-genutils0.2.0indirekt
PyPIipython-pygments-lexers1.1.1indirekt
PyPIipywidgets8.1.7indirekt
PyPIisoduration20.11.0indirekt
PyPIjedi0.19.2indirekt
PyPIjson50.12.1indirekt
PyPIjsonasobj1.3.1indirekt
PyPIjsonpatchindirekt
PyPIjsonpatch1.33indirekt
PyPIjsonpointer3.0.0indirekt
PyPIjsonschema-path0.4.5indirekt
PyPIjsonschema-specifications2025.9.1indirekt
PyPIjupyterindirekt
PyPIjupyter1.1.1indirekt
PyPIjupyter-builder1.0.2indirekt
PyPIjupyter-cache1.0.1indirekt
PyPIjupyter-client8.6.3indirekt
PyPIjupyter-console6.6.3indirekt
PyPIjupyter-core5.9.1indirekt
PyPIjupyter-events0.12.0indirekt
PyPIjupyter-lsp2.3.0indirekt
PyPIjupyter-server2.20.0indirekt
PyPIjupyter-server-terminals0.5.3indirekt
PyPIjupyterlab4.6.0indirekt
PyPIjupyterlab-pygments0.3.0indirekt
PyPIjupyterlab-server2.28.0indirekt
PyPIjupyterlab-widgets3.0.15indirekt
PyPIkiwisolver1.4.9indirekt
PyPIlazy-object-proxy1.12.0indirekt
PyPImarkdown-it-py3.0.0indirekt
PyPImarkupsafe3.0.3indirekt
PyPImatplotlibindirekt
PyPImatplotlib3.10.7indirekt
PyPImatplotlib-inline0.2.1indirekt
PyPImaturinindirekt
PyPImaturin1.14.1indirekt
PyPImdit-py-plugins0.5.0indirekt
PyPImdurl0.1.2indirekt
PyPImistune3.3.2indirekt
PyPImockindirekt
PyPImock5.2.0indirekt
PyPImultidict6.7.0indirekt
PyPImypy-extensions1.1.0indirekt
PyPImyst-nbindirekt
PyPImyst-nb1.3.0indirekt
PyPImyst-parserindirekt
PyPImyst-parser4.0.1indirekt
PyPInbclient0.10.2indirekt
PyPInbconvertindirekt
PyPInbconvert7.17.1indirekt
PyPInbformatindirekt
PyPInbformat5.10.4indirekt
PyPInest-asyncio1.6.0indirekt
PyPInotebook7.6.0indirekt
PyPInotebook-shim0.2.4indirekt
PyPInumpyindirekt
PyPInumpy2.2.6indirekt
PyPInumpy2.3.4indirekt
PyPInumpydanticindirekt
PyPInumpydantic1.7.0indirekt
PyPIopenapi-schema-validator0.8.1indirekt
PyPIoverrides7.7.0indirekt
PyPIowlrl7.1.4indirekt
PyPIpackaging25.0indirekt
PyPIpandasindirekt
PyPIpandas2.3.3indirekt
PyPIpanderaindirekt
PyPIpandera0.26.1indirekt
PyPIpandocfilters1.5.1indirekt
PyPIparso0.8.5indirekt
PyPIpathable0.5.0indirekt
PyPIpathspec1.1.1indirekt
PyPIpexpect4.9.0indirekt
PyPIpillow12.3.0indirekt
PyPIplatformdirs4.5.0indirekt
PyPIpluggy1.6.0indirekt
PyPIpolars-lts-cpuindirekt
PyPIpolars-lts-cpu1.33.1indirekt
PyPIprettytable3.16.0indirekt
PyPIprometheus-client0.23.1indirekt
PyPIprompt-toolkit3.0.52indirekt
PyPIpropcache0.4.1indirekt
PyPIproto-plus1.28.0indirekt
PyPIprotobuf6.33.6indirekt
PyPIpsutil7.1.2indirekt
PyPIptyprocess0.7.0indirekt
PyPIpure-eval0.2.3indirekt
PyPIpyasn10.6.3indirekt
PyPIpyasn1-modules0.4.2indirekt
PyPIpycparser2.23indirekt
PyPIpydantic-core2.41.4indirekt
PyPIpydantic-settings2.14.2indirekt
PyPIpygments2.20.0indirekt
PyPIpyparsing3.2.5indirekt
PyPIpyproject-api1.10.0indirekt
PyPIpyshaclindirekt
PyPIpyshacl0.30.1indirekt
PyPIpytestindirekt
PyPIpytest8.4.2indirekt
PyPIpytest-covindirekt
PyPIpytest-cov7.0.0indirekt
PyPIpytest-logging2015.11.4indirekt
PyPIpytest-subtestsindirekt
PyPIpytest-subtests0.15.0indirekt
PyPIpytest-xdistindirekt
PyPIpytest-xdist3.8.0indirekt
PyPIpython-discovery1.4.2indirekt
PyPIpython-dotenv1.2.2indirekt
PyPIpython-json-logger4.0.0indirekt
PyPIpytokens0.4.1indirekt
PyPIpytz2025.2indirekt
PyPIpywin32311indirekt
PyPIpywinpty3.0.2indirekt
PyPIpyzmq27.1.0indirekt
PyPIrdflib-jsonld0.6.1indirekt
PyPIrdflib-shim1.0.3indirekt
PyPIreferencing0.37.0indirekt
PyPIrequests-cacheindirekt
PyPIrequests-cache1.3.2indirekt
PyPIrfc3339-validator0.1.4indirekt
PyPIrfc3986-validator0.1.1indirekt
PyPIrfc39871.3.8indirekt
PyPIrichindirekt
PyPIrich14.2.0indirekt
PyPIroman-numerals-py3.1.0indirekt
PyPIrpds-py0.28.0indirekt
PyPIsend2trash1.8.3indirekt
PyPIshexjsg0.9.0indirekt
PyPIsix1.17.0indirekt
PyPIsniffio1.3.1indirekt
PyPIsnowballstemmer3.0.1indirekt
PyPIsoupsieve2.8.4indirekt
PyPIsparqlslurper0.5.1indirekt
PyPIsparqlwrapper2.0.0indirekt
PyPIsphinxindirekt
PyPIsphinx8.1.3indirekt
PyPIsphinx8.2.3indirekt
PyPIsphinx-basic-ng1.0.0b2indirekt
PyPIsphinx-designindirekt
PyPIsphinx-design0.6.1indirekt
PyPIsphinx-jinjaindirekt
PyPIsphinx-jinja2.0.2indirekt
PyPIsphinx-rtd-themeindirekt
PyPIsphinx-rtd-theme3.0.2indirekt
PyPIsphinxcontrib-applehelp2.0.0indirekt
PyPIsphinxcontrib-devhelp2.0.0indirekt
PyPIsphinxcontrib-htmlhelp2.1.0indirekt
PyPIsphinxcontrib-jquery4.1indirekt
PyPIsphinxcontrib-jsmath1.0.1indirekt
PyPIsphinxcontrib-mermaidindirekt
PyPIsphinxcontrib-mermaid1.0.0indirekt
PyPIsphinxcontrib-programoutputindirekt
PyPIsphinxcontrib-programoutput0.18indirekt
PyPIsphinxcontrib-qthelp2.0.0indirekt
PyPIsphinxcontrib-serializinghtml2.0.0indirekt
PyPIsqlalchemy-bigqueryindirekt
PyPIsqlalchemy-bigquery1.17.0indirekt
PyPIstack-data0.6.3indirekt
PyPItabulate0.9.0indirekt
PyPIterminado0.18.1indirekt
PyPItestcontainers3.7.1indirekt
PyPItinycss21.4.0indirekt
PyPItomli2.3.0indirekt
PyPItornado6.5.7indirekt
PyPItoxindirekt
PyPItox4.32.0indirekt
PyPItox-uvindirekt
PyPItox-uv1.29.0indirekt
PyPItraitlets5.14.3indirekt
PyPItypedb-driverindirekt
PyPItypedb-driver3.8.1indirekt
PyPItypeguard4.4.4indirekt
PyPItyping-inspect0.9.0indirekt
PyPItyping-inspection0.4.2indirekt
PyPItzdata2025.2indirekt
PyPIuri-template1.3.0indirekt
PyPIurl-normalize2.2.1indirekt
PyPIurllib32.7.0indirekt
PyPIuv0.11.23indirekt
PyPIuv-dynamic-versioningindirekt
PyPIvirtualenv21.5.1indirekt
PyPIwcwidth0.2.14indirekt
PyPIwebcolors24.11.1indirekt
PyPIwebencodings0.5.1indirekt
PyPIwebsocket-client1.9.0indirekt
PyPIwidgetsnbextension4.0.14indirekt
PyPIwrapt2.0.0indirekt
PyPIyarl1.22.0indirekt
PyPIzipp3.23.0indirekt
Abhängigkeits-Advisories 0

Die Installation von pypi:linkml@1.11.1 zieht 80 Pakete nach sich, direkt und transitiv: 0 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "rdf",
        "modeling",
        "linkml",
        "json-schema",
        "linkml-schema",
        "semantic-web",
        "schema",
        "data-modeling",
        "json-ld-context",
        "owl",
        "data-dictionaries",
        "linked-data",
        "hacktoberfest",
        "standards",
        "shex",
        "shacl"
      ],
      "is_fork": false,
      "size_kb": 154942,
      "has_wiki": true,
      "homepage": "https://linkml.io/linkml",
      "languages": {
        "Jinja": 150937,
        "Shell": 1320,
        "Python": 7262623,
        "Makefile": 5497,
        "Dockerfile": 1515,
        "Jupyter Notebook": 1443949
      },
      "pushed_at": "2026-07-30T17:52:49Z",
      "created_at": "2021-03-16T16:34:43Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-30T04:18:53Z",
      "description": "Linked Open Data Modeling Language",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python",
        "Jupyter Notebook"
      ]
    },
    "owner": {
      "blog": "https://linkml.github.io/",
      "name": "Linked data Modeling Language",
      "type": "Organization",
      "login": "linkml",
      "company": null,
      "location": null,
      "followers": 222,
      "avatar_url": "https://avatars.githubusercontent.com/u/79337873?v=4",
      "created_at": "2021-02-19T21:21:38Z",
      "is_verified": null,
      "public_repos": 68,
      "account_age_days": 1987
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.11.1",
          "kind": "patch",
          "published_at": "2026-05-20T17:03:58Z"
        },
        {
          "tag": "v1.11.0",
          "kind": "minor",
          "published_at": "2026-05-13T19:04:27Z"
        },
        {
          "tag": "v1.11.0-rc3",
          "kind": "prerelease",
          "published_at": "2026-05-07T19:38:25Z"
        },
        {
          "tag": "v1.11.0-rc2",
          "kind": "prerelease",
          "published_at": "2026-04-28T14:51:24Z"
        },
        {
          "tag": "v1.11.0-rc1",
          "kind": "prerelease",
          "published_at": "2026-04-02T13:19:50Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-02-25T17:12:23Z"
        },
        {
          "tag": "v1.10.0-rc5",
          "kind": "prerelease",
          "published_at": "2026-02-18T21:36:31Z"
        },
        {
          "tag": "v1.10.0-rc4",
          "kind": "prerelease",
          "published_at": "2026-02-03T06:42:28Z"
        },
        {
          "tag": "v1.10.0-rc3",
          "kind": "prerelease",
          "published_at": "2026-01-15T02:51:25Z"
        },
        {
          "tag": "v1.10.0-rc2",
          "kind": "prerelease",
          "published_at": "2025-12-09T22:04:13Z"
        },
        {
          "tag": "v1.10.0-rc1",
          "kind": "prerelease",
          "published_at": "2025-11-21T21:37:47Z"
        },
        {
          "tag": "v1.9.6",
          "kind": "patch",
          "published_at": "2025-12-01T22:13:50Z"
        },
        {
          "tag": "v1.9.6-rc1",
          "kind": "prerelease",
          "published_at": "2025-11-20T02:15:09Z"
        },
        {
          "tag": "v1.9.5",
          "kind": "patch",
          "published_at": "2025-10-27T16:08:48Z"
        },
        {
          "tag": "v1.9.5-rc2",
          "kind": "prerelease",
          "published_at": "2025-10-21T23:03:36Z"
        },
        {
          "tag": "v1.9.5-rc1",
          "kind": "prerelease",
          "published_at": "2025-10-16T04:28:36Z"
        },
        {
          "tag": "v1.9.4",
          "kind": "patch",
          "published_at": "2025-08-26T18:06:42Z"
        },
        {
          "tag": "v1.9.4-rc2",
          "kind": "prerelease",
          "published_at": "2025-08-15T23:57:31Z"
        },
        {
          "tag": "v1.9.4-rc1",
          "kind": "prerelease",
          "published_at": "2025-08-15T23:19:24Z"
        },
        {
          "tag": "v1.9.3",
          "kind": "patch",
          "published_at": "2025-07-30T19:57:39Z"
        },
        {
          "tag": "v1.9.3-rc3",
          "kind": "prerelease",
          "published_at": "2025-07-25T16:05:39Z"
        },
        {
          "tag": "v1.9.3-rc2",
          "kind": "prerelease",
          "published_at": "2025-07-25T00:00:14Z"
        },
        {
          "tag": "v1.9.3-rc1",
          "kind": "prerelease",
          "published_at": "2025-06-03T21:25:15Z"
        },
        {
          "tag": "v1.9.2",
          "kind": "patch",
          "published_at": "2025-05-15T22:20:56Z"
        },
        {
          "tag": "v1.9.2-rc1",
          "kind": "prerelease",
          "published_at": "2025-05-15T00:14:25Z"
        },
        {
          "tag": "v1.9.1",
          "kind": "patch",
          "published_at": "2025-04-21T15:49:57Z"
        },
        {
          "tag": "v1.9.1-rc3",
          "kind": "prerelease",
          "published_at": "2025-04-18T18:08:32Z"
        },
        {
          "tag": "v1.9.1-rc2",
          "kind": "prerelease",
          "published_at": "2025-04-15T18:08:45Z"
        },
        {
          "tag": "v1.9.1-rc1",
          "kind": "prerelease",
          "published_at": "2025-04-10T23:09:09Z"
        },
        {
          "tag": "v1.9.0-rc1",
          "kind": "prerelease",
          "published_at": "2025-03-31T01:58:23Z"
        },
        {
          "tag": "v1.8.7",
          "kind": "patch",
          "published_at": "2025-02-19T20:00:07Z"
        },
        {
          "tag": "v1.8.6",
          "kind": "patch",
          "published_at": "2025-01-10T21:16:29Z"
        },
        {
          "tag": "v1.8.5",
          "kind": "patch",
          "published_at": "2024-10-24T20:17:28Z"
        },
        {
          "tag": "v1.8.4",
          "kind": "patch",
          "published_at": "2024-10-01T16:21:14Z"
        },
        {
          "tag": "v1.8.3",
          "kind": "patch",
          "published_at": "2024-08-22T21:16:06Z"
        },
        {
          "tag": "v1.8.2",
          "kind": "patch",
          "published_at": "2024-08-10T01:25:54Z"
        },
        {
          "tag": "v1.8.1",
          "kind": "patch",
          "published_at": "2024-07-03T23:25:03Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2024-07-03T16:13:52Z"
        },
        {
          "tag": "v1.8.0rc2",
          "kind": "other",
          "published_at": "2024-06-29T03:12:45Z"
        },
        {
          "tag": "v1.7.11rc1",
          "kind": "other",
          "published_at": "2024-05-11T02:26:19Z"
        },
        {
          "tag": "v1.7.10",
          "kind": "patch",
          "published_at": "2024-05-11T02:20:11Z"
        },
        {
          "tag": "v1.7.9",
          "kind": "patch",
          "published_at": "2024-05-04T00:39:08Z"
        },
        {
          "tag": "v1.7.8",
          "kind": "patch",
          "published_at": "2024-04-05T19:32:59Z"
        },
        {
          "tag": "v1.7.7",
          "kind": "patch",
          "published_at": "2024-03-27T02:10:46Z"
        },
        {
          "tag": "v1.7.6",
          "kind": "patch",
          "published_at": "2024-03-21T02:25:17Z"
        },
        {
          "tag": "v1.7.5",
          "kind": "patch",
          "published_at": "2024-02-27T01:06:13Z"
        },
        {
          "tag": "v1.7.4",
          "kind": "patch",
          "published_at": "2024-02-15T15:38:00Z"
        },
        {
          "tag": "v1.7.3",
          "kind": "patch",
          "published_at": "2024-02-12T19:34:12Z"
        },
        {
          "tag": "v1.7.2",
          "kind": "patch",
          "published_at": "2024-02-08T20:35:41Z"
        },
        {
          "tag": "v1.7.1",
          "kind": "patch",
          "published_at": "2024-02-08T20:27:29Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2024-02-08T20:21:36Z"
        },
        {
          "tag": "v1.6.11",
          "kind": "patch",
          "published_at": "2024-02-06T00:08:12Z"
        },
        {
          "tag": "v1.7.0rc2",
          "kind": "other",
          "published_at": "2024-02-02T20:28:13Z"
        },
        {
          "tag": "v1.7.0rc1",
          "kind": "other",
          "published_at": "2024-02-02T20:26:16Z"
        },
        {
          "tag": "v1.6.10",
          "kind": "patch",
          "published_at": "2024-01-30T00:05:14Z"
        },
        {
          "tag": "v1.6.9",
          "kind": "patch",
          "published_at": "2024-01-20T01:58:42Z"
        },
        {
          "tag": "v1.6.8",
          "kind": "patch",
          "published_at": "2024-01-11T00:59:14Z"
        },
        {
          "tag": "v1.6.7",
          "kind": "patch",
          "published_at": "2023-12-22T05:48:34Z"
        },
        {
          "tag": "v1.6.6",
          "kind": "patch",
          "published_at": "2023-12-15T01:46:42Z"
        },
        {
          "tag": "v1.6.5",
          "kind": "patch",
          "published_at": "2023-12-12T01:32:55Z"
        },
        {
          "tag": "v1.6.4",
          "kind": "patch",
          "published_at": "2023-12-07T20:31:58Z"
        },
        {
          "tag": "v1.6.3",
          "kind": "patch",
          "published_at": "2023-11-17T22:07:34Z"
        },
        {
          "tag": "v1.6.2",
          "kind": "patch",
          "published_at": "2023-11-03T23:50:19Z"
        },
        {
          "tag": "v1.6.1",
          "kind": "patch",
          "published_at": "2023-09-29T22:56:09Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2023-09-29T03:29:45Z"
        },
        {
          "tag": "v1.5.8",
          "kind": "patch",
          "published_at": "2023-09-27T19:54:53Z"
        },
        {
          "tag": "v1.5.8rc1",
          "kind": "other",
          "published_at": "2023-09-14T14:38:37Z"
        },
        {
          "tag": "v1.5.7",
          "kind": "patch",
          "published_at": "2023-08-16T17:25:28Z"
        },
        {
          "tag": "v1.5.6",
          "kind": "patch",
          "published_at": "2023-06-26T20:53:08Z"
        },
        {
          "tag": "v1.5.5",
          "kind": "patch",
          "published_at": "2023-05-27T01:44:27Z"
        },
        {
          "tag": "v1.5.4",
          "kind": "patch",
          "published_at": "2023-05-26T19:59:28Z"
        },
        {
          "tag": "v1.5.3",
          "kind": "patch",
          "published_at": "2023-05-23T20:25:14Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2023-05-05T00:39:12Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2023-04-25T21:29:12Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2023-03-24T23:26:55Z"
        },
        {
          "tag": "v1.5.0rc2",
          "kind": "other",
          "published_at": "2023-03-23T02:28:43Z"
        },
        {
          "tag": "v1.5.0rc1",
          "kind": "other",
          "published_at": "2023-03-22T20:38:42Z"
        },
        {
          "tag": "v1.4.11",
          "kind": "patch",
          "published_at": "2023-03-22T20:45:59Z"
        },
        {
          "tag": "v1.4.10",
          "kind": "patch",
          "published_at": "2023-03-16T17:15:13Z"
        },
        {
          "tag": "v1.4.9",
          "kind": "patch",
          "published_at": "2023-03-15T23:58:35Z"
        },
        {
          "tag": "v1.4.8",
          "kind": "patch",
          "published_at": "2023-03-14T02:39:38Z"
        },
        {
          "tag": "v1.4.7",
          "kind": "patch",
          "published_at": "2023-03-07T00:30:15Z"
        },
        {
          "tag": "v1.4.6",
          "kind": "patch",
          "published_at": "2023-03-01T05:07:26Z"
        },
        {
          "tag": "v1.4.5",
          "kind": "patch",
          "published_at": "2023-02-23T00:59:49Z"
        },
        {
          "tag": "v1.4.4",
          "kind": "patch",
          "published_at": "2023-02-04T00:23:47Z"
        },
        {
          "tag": "v1.4.3",
          "kind": "patch",
          "published_at": "2023-01-28T02:58:40Z"
        },
        {
          "tag": "v1.4.2",
          "kind": "patch",
          "published_at": "2023-01-14T00:26:11Z"
        },
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2023-01-04T23:45:09Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2022-12-23T00:21:01Z"
        },
        {
          "tag": "v1.3.17",
          "kind": "patch",
          "published_at": "2022-12-23T00:15:20Z"
        },
        {
          "tag": "v1.3.16",
          "kind": "patch",
          "published_at": "2022-12-08T18:08:44Z"
        },
        {
          "tag": "v1.3.15",
          "kind": "patch",
          "published_at": "2022-12-05T20:51:59Z"
        },
        {
          "tag": "v1.3.14",
          "kind": "patch",
          "published_at": "2022-11-18T17:27:56Z"
        },
        {
          "tag": "v1.3.13",
          "kind": "patch",
          "published_at": "2022-11-07T22:42:53Z"
        },
        {
          "tag": "v1.3.12",
          "kind": "patch",
          "published_at": "2022-11-01T18:52:22Z"
        },
        {
          "tag": "v1.3.12rc2",
          "kind": "other",
          "published_at": "2022-10-29T16:32:31Z"
        },
        {
          "tag": "v1.3.12rc1",
          "kind": "other",
          "published_at": "2022-10-28T21:20:19Z"
        },
        {
          "tag": "v1.3.11",
          "kind": "patch",
          "published_at": "2022-10-28T14:49:14Z"
        },
        {
          "tag": "v1.3.10",
          "kind": "patch",
          "published_at": "2022-10-21T19:45:10Z"
        },
        {
          "tag": "v1.3.9",
          "kind": "patch",
          "published_at": "2022-10-20T17:58:47Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "e5d97c45a6b84e0cb5fbb9665a965c4b0c70194f",
          "body": "Co-authored-by: Kevin Schaper <kevinschaper@gmail.com>",
          "is_bot": false,
          "headline": "Add @gouttegd as \"code owner\" for the Java generator. (#3817)",
          "author_name": "Damien Goutte-Gattat",
          "author_login": "gouttegd",
          "committed_at": "2026-07-29T18:00:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20a146587af59fbd4143144ec0bf1f626464fbe7",
          "body": "* Add initial version of rule validations #3262\n\n* Add standardized function for select query #3262\n\n* Reuse standardized select function #3262\n\n* Remove usage of literal_column #3262\n\n* Improve logs and docstrings #3262\n\n* Reuse standardized select function (again) #3262\n\n* Raise warning for empty \n[…]\nier nor a key slot, instead of\nhardcoding a phantom \"id\" column that does not exist in the\nDDL. A warning is logged when this occurs.\n\n---------\n\nCo-authored-by: Kevin Schaper <kevinschaper@gmail.com>",
          "is_bot": false,
          "headline": "Extend sqlvalidation generator to process rules from schema (#3325)",
          "author_name": "Florian Kotthoff",
          "author_login": "FlorianK13",
          "committed_at": "2026-07-29T17:42:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ad2024fb07a535495c3465f171e0027dbb5f2a72",
          "body": "test: update dangling 'biolink modeling langage' strings",
          "is_bot": false,
          "headline": "Merge pull request #3810 from noelmcloughlin/quick",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-28T13:42:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ad0f7cd030aeeba822d167dfbf97e146cf5c873",
          "body": "Co-authored-by: Nico Matentzoglu <nicolas.matentzoglu@gmail.com>",
          "is_bot": false,
          "headline": "Update tests/input/ImportMaps.md",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-28T12:54:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acd1e7786080a69ab34b023fba2fb5c5943abf78",
          "body": null,
          "is_bot": false,
          "headline": "test: update 'biolink modeling langage' strings",
          "author_name": "noelmcloughlin",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-27T23:06:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e443f15faa4673acc3345923ea84199f73e7f50",
          "body": "…ses when generating inlined type unions (#3344)\n\n* Update get_class_slot_range() in pydanticgen to exclude abstract classes when generating inlined type unions\n\n* Fix formatting of packages/linkml/src/linkml/generators/pydanticgen/pydanticgen.py after resolving merge conflict\n\n* PydanticGenerator r\n[…]\nn Schaper <kevinschaper@gmail.com>\n\n* Ruff reformat for test_linkml_issue_3196.py\n\n---------\n\nCo-authored-by: Colin Small <colinrsmall@gmail.com>\nCo-authored-by: Kevin Schaper <kevinschaper@gmail.com>",
          "is_bot": false,
          "headline": "Update get_class_slot_range() in pydanticgen to exclude abstract clas…",
          "author_name": "colinrsmall",
          "author_login": "colinrsmall",
          "committed_at": "2026-07-23T22:26:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58e206b329e5018602f2989550c3254aa6cc5660",
          "body": "Update Community-Meetings.md with July prez title",
          "is_bot": false,
          "headline": "Merge pull request #3766 from linkml/sagehrke-patch-4",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-22T21:43:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe67902d169b3e02499ef1e9d946b943919007fc",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into sagehrke-patch-4",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-22T16:06:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3472491e25b9ba2b30f47546b4e23e4110793c1",
          "body": "ci: scope CVE audit to PRs that change dependencies",
          "is_bot": false,
          "headline": "Merge pull request #3769 from linkml/ci-scope-dep-audit",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-22T16:06:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79187b46b647560ad532888453e41ab65ca0d634",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into ci-scope-dep-audit",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-22T15:38:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db4359234396a6aa78c560ca3e2457e2179ae1aa",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into sagehrke-patch-4",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-22T15:31:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "40c68bf3d9c0e401d121283355a802367821afbd",
          "body": "fix(jsonschema): ignore default_schema if boolean constraint",
          "is_bot": false,
          "headline": "Merge pull request #3619 from linkml/fix-3618",
          "author_name": "Patrick Kalita",
          "author_login": "pkalita-lbl",
          "committed_at": "2026-07-21T17:37:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "860586b448dc0e6510af8df6f188026d9d8dabbd",
          "body": "A slot with [boolean constraints][1] in a schema with default_range is\ngetting `type` information in two different ways (a `type` array and an\n`anyOf` list of `type`s). The dupplication is not needed, additionally\nthey are not even compatible, since the `type` array does not include\nnullable slots.\n\n[…]\nion of\nJSON-Schema `type` constraint in the slot.\n\n[1]: https://linkml.io/linkml/schemas/advanced.html#boolean-constraints\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "fix(jsonschema): ignore default_schema if boolean constraint",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-21T06:17:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e2d78994efd22a2617b762099ae5791157f7dc80",
          "body": "Update metamodel test fixtures from linkml-model",
          "is_bot": false,
          "headline": "Merge pull request #3720 from linkml/update-metamodel-fixtures",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-20T14:41:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9a164f36e0adf2b3385293ea2b901b32035a1ae",
          "body": null,
          "is_bot": false,
          "headline": "Update metamodel test fixtures from linkml-model",
          "author_name": "amc-corey-cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-20T11:47:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1288dbb6e9a6df8d1f04e250a1fb48af635bd530",
          "body": "Fix 3749 (raw CURIEs for predicate URIs for schemas with subschemas)",
          "is_bot": false,
          "headline": "Merge pull request #3750 from linkml/fix-3749",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-17T17:41:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31676d80ab25b3cdd30558d474af8e3add8bdf6d",
          "body": "rdflib_loader had the same issue as rdflib_dumper. Fixing only the\ndumper creates RDF that cannot be loaded by the loader. This patch fixes\nthe loader.\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "fix(rdflib_loader): fix symmetric to previous dumper fix",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-17T16:53:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "977890bc3f97a6dbe2a00fbf5b585c63d8367389",
          "body": "rdflib_loader had the same issue as rdflib_dumper. Fixing only the\ndumper creates RDF that cannot be loaded by the loader. This test\nreproduces the issue.\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "test(rdflib_loader): add dump-load round-trip test",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-17T16:51:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c85d8f14c51ae92a0ef106fa0b268822d906db25",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into fix-3749",
          "author_name": "Corey Cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-17T13:26:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a60df7e2b1c324a4f3aee9afdc31b2c9e91b3f3",
          "body": "* feat(javagen): add javabundle, render, then serialize\n\n* chore(javagen): tidyup generator.serialize -> none contract",
          "is_bot": false,
          "headline": "feat(javagen): add javabundle dataclass, serialize and render (#3756)",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-17T11:22:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6f87a5afeef2a7780755f647bb016e80dfa3d10",
          "body": null,
          "is_bot": false,
          "headline": "fix(oogen): update abstract signature (#3775)",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-17T11:06:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "573e1c3b572b34703a69ce29408876b7f1bd2f8e",
          "body": null,
          "is_bot": false,
          "headline": "Mark non-required enum slots as nullable in JSON Schema output",
          "author_name": "Kevin Schaper",
          "author_login": "kevinschaper",
          "committed_at": "2026-07-16T20:15:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f29ae95f66bd2fd213ac7eaf458649b5ad939733",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into ci-scope-dep-audit",
          "author_name": "Corey Cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-16T18:45:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7a9eeb18ef4e6b38aaefab9e9367e199f56d939",
          "body": "…d all sub-schema prefixes\n\nSchemaView.namespaces() is lru_cache'd. When as_rdf_graph() called\nnamespaces() before walking the import closure, imported sub-schemas\n(e.g. phenopackets/base with its 'base:' prefix) were absent from\nschema_map, so the cached Namespaces object was incomplete.\n\nSubsequen\n[…]\n'base:OntologyClass',\nsilently emitting malformed URIRef('base:label') triples into the graph.\n\nFix: call imports_closure() first so schema_map is fully populated\nbefore the namespace cache is seeded.",
          "is_bot": false,
          "headline": "fix(rdflib_dumper): call imports_closure() before namespaces() to loa…",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-16T13:28:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1f4ba8e05554a142c5456764ef9db36b98e0b173",
          "body": "…d sub-schema prefixes\n\nAdd assertions to test_phenopackets that all predicate and rdf:type object\nURIs in the dumped graph are fully expanded (contain '://').\n\nBefore this fix, sub-schema prefixes (e.g. 'base:' declared in\nphenopackets/base) were absent from the namespace cache when namespaces()\nwa\n[…]\nthe RDF\ngraph instead of being expanded to their full https:// equivalents.\n\nThis test fails on the unfixed code and will pass once imports_closure()\nis called before the namespace cache is populated.",
          "is_bot": false,
          "headline": "test(rdflib_dumper): detect premature namespace cache bug for importe…",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-16T13:28:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4e4a3649bd19a9fa7fb7498397b421b04f9a59a",
          "body": "…ons with graph-level checks\n\nReplace the four residual turtle string assertions ('prefix ORCID:',\n'prefix personinfo:', 'personinfo:age', 'ORCID:1234') with graph-level\nassertions using the namespace manager and triple membership, consistent\nwith how test_rdf_output already works.\n\nAlso extend coverage to ORCID:4567 (Lois Lane), which was not asserted at\nall in test_output_prefixes.",
          "is_bot": false,
          "headline": "refactor(test_rdflib_dumper): replace remaining turtle string asserti…",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-16T13:28:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20b3bfaa2398d5d19926d2fd63ce6d1929dff6a8",
          "body": "…chema1 brittleness\n\nTwo bugs in test_output_prefixes:\n\n1. No fixture dependency on issue_429_graph: the test read OUT_429 from disk,\n   which only exists if a prior test had already run the fixture. Running the\n   test in isolation (or after a clean checkout) would fail or read a stale\n   file. Fix\n[…]\n   always failed on a freshly generated graph. Replaced with a namespace-manager\n   URI check and a graph-level triple assertion, which are independent of the\n   prefix label chosen by the serialiser.",
          "is_bot": false,
          "headline": "fix(test_rdflib_dumper): fix test_output_prefixes isolation and sdo/s…",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-16T13:28:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7585adae0c58dd9a981624c9a9c8d167134a56c4",
          "body": "build(deps-dev): bump maturin from 1.9.6 to 1.14.1",
          "is_bot": false,
          "headline": "Merge pull request #3743 from linkml/dependabot/uv/maturin-1.14.1",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-16T12:27:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41fed9e4857f474e730e999d2ab7f0b97b532c48",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into dependabot/uv/maturin-1.14.1",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-16T12:16:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7802700a9214a9631b690b025024a69aa0fa8b14",
          "body": "fix(gen-jsonld): handle multiple contexts",
          "is_bot": false,
          "headline": "Merge pull request #2602 from linkml/fix-json-ld-context-typing",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-16T06:47:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f7cafa7628faa219bfd74be8af132c0f33dff9d",
          "body": "Validate that appending multiple files on JSON-LD generation works as\nexpected.\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "tests(genjsonld): validate append multiple context files",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-16T06:30:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad9e0360af075b35171b23a50a1baeb737a9981f",
          "body": "CLI supports multiple context files (what returns a tuple), but code\nmostly expecting a single context (and therefore only a string). IDEs\nand linters recognize the inconsistency thanks to typing.\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "fix(gen-jsonld): handle multiple contexts",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-16T06:30:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15f19e82cd389143f46e1f2a4a885232675b4aad",
          "body": "fix(generators): forward importmap+base_dir to SchemaView constructions",
          "is_bot": false,
          "headline": "Merge pull request #3645 from noelmcloughlin/pr6",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-15T21:47:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5af787916991567e739cf4a3b8b81c20edafaca5",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into pr6",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-15T21:35:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af6368bb2bcb0e2e8b67d572bc98d3ee77919966",
          "body": null,
          "is_bot": false,
          "headline": "style: ruff import grouping in uv_lock_deps_changed.py",
          "author_name": "amc-corey-cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-15T21:00:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db380aefe87d393dff9824848f4b9423c07663b9",
          "body": "Dependabot alerts are enabled on the repo and already cover CVEs on\ndependencies no PR touched. A self-hosted rolling-issue audit duplicates\nthat native detection (and running both double-reports each CVE), so it\nisn't worth the standing complexity. Notification noise is better handled\nat the Dependabot notification-routing layer than by rebuilding detection.\n\nReverts the audit-issue job; keeps the per-change scoping and malware gate.",
          "is_bot": false,
          "headline": "ci: drop scheduled tracking-issue job",
          "author_name": "amc-corey-cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-15T20:55:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fb9fdcb0fbc60e41521dbedd1deb8d13e091ad7",
          "body": "…-scope-dep-audit",
          "is_bot": false,
          "headline": "Merge branch 'ci-scope-dep-audit' of github.com:linkml/linkml into ci…",
          "author_name": "amc-corey-cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-15T20:41:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "043f677b6d961190ed62bdd196be05e0bece21dc",
          "body": "The per-change gate deliberately ignores advisories published against\ndependencies no PR touched. Cover that case without blocking CI: a weekly\nscheduled job audits main's lockfile and keeps a single labelled tracking\nissue in sync — opened when vulnerabilities appear, refreshed while they\npersist, closed automatically once clean. It never assigns or mentions\nanyone, so it stays quiet and stays under the project's control.",
          "is_bot": false,
          "headline": "ci: report unowned-CVE audit findings via a rolling tracking issue",
          "author_name": "amc-corey-cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-15T20:40:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c60cfe666bf8b8239977f7f9c9ed72941a8ca621",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into ci-scope-dep-audit",
          "author_name": "Corey Cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-15T20:15:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f8e3c6070ca097c36d99407c897385408bc47ff",
          "body": "Bumps [maturin](https://github.com/pyo3/maturin) from 1.9.6 to 1.14.1.\n- [Release notes](https://github.com/pyo3/maturin/releases)\n- [Changelog](https://github.com/PyO3/maturin/blob/main/Changelog.md)\n- [Commits](https://github.com/pyo3/maturin/compare/v1.9.6...v1.14.1)\n\n---\nupdated-dependencies:\n- dependency-name: maturin\n  dependency-version: 1.14.1\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps-dev): bump maturin from 1.9.6 to 1.14.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-15T20:13:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69c790f36aa30a0784416f4fcba5b87c2b14e8e8",
          "body": null,
          "is_bot": false,
          "headline": "fix pyproject parsing error (exclude_newer) / bump click/pillow",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-15T20:10:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eddafa3e2ecd2c285496b115563b5426ec346f4a",
          "body": "Compare the change under test against each event's natural base (PR base,\npush's before-sha, merge_group base) and only run the CVE audit when\ndependencies actually changed. A pyproject.toml edit always counts; uv.lock\nis compared by its resolved (name, version) set via a small tomllib helper,\nso no\n[…]\nurn with an unchanged resolution is skipped.\n\nThis keeps a newly-published upstream advisory from turning unrelated PRs —\nand the next innocent merge to main — red. The malware sync gate is unchanged.",
          "is_bot": false,
          "headline": "ci: scope CVE audit to real dependency changes on every event",
          "author_name": "amc-corey-cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-15T20:04:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9bfd9339a1351d244329e5c7706bcee2f4010af",
          "body": "The \"Audit lockfile for CVEs\" step reflects the upstream advisory\ndatabase, not the PR diff. When a new advisory lands for an\nalready-pinned package, every open PR goes red regardless of whether it\ntouches dependencies.\n\nGuard the audit step with a base-diff check so it only runs on PRs that\nchange \n[…]\n pyproject.toml. The job still always runs and reports\n(no stuck-pending required check), and non-PR events keep auditing so\ntrunk's signal is intact. The malware sync gate is unchanged.\n\nCloses #3767",
          "is_bot": false,
          "headline": "ci: scope CVE audit to PRs that change dependencies",
          "author_name": "amc-corey-cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-15T18:26:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "17aa0e073b878f8802052243d72a937919753e25",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into pr6",
          "author_name": "Kevin Schaper",
          "author_login": "kevinschaper",
          "committed_at": "2026-07-15T16:28:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f55739958871e879cc7ffc5631eabe734b648de",
          "body": "Added the July 2026 presentation title and link to the project.",
          "is_bot": false,
          "headline": "Update Community-Meetings.md with July prez title",
          "author_name": "Sarah Gehrke",
          "author_login": "sagehrke",
          "committed_at": "2026-07-14T22:17:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "668a0b1083da605946ba0b8435897051473725f4",
          "body": "…ass security audit, bumped several package dependencies.  Needs careful review. (#3650)\n\n* add notes about cooldown\n\n* add cooldown to both uv and dependebot\n\n* fix dependebot syntax\n\n* add dependebot checking\n\n* Potential fix for pull request finding\n\nCo-authored-by: Copilot Autofix powered by AI \n[…]\nch changes)\n\n* updpate uv.lock to fix audit issues\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "add uv audit test and cooldown, as well as dependebot cooldown.  to p…",
          "author_name": "Sierra Moxon",
          "author_login": "sierra-moxon",
          "committed_at": "2026-07-10T20:57:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "baf79562c288d9edd929358be747e3ee79e82f4e",
          "body": "…-standard graphs",
          "is_bot": false,
          "headline": "fix(rdf): make pyoxigraph fallback deterministic for relative-IRI/non…",
          "author_name": "Corey Cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-07-09T19:19:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc7151bc2831cea9fc6828a7a1f89b7f269f2933",
          "body": null,
          "is_bot": false,
          "headline": "fix(typedbgen): use class_induced_slots for slot iteration",
          "author_name": "Kevin Schaper",
          "author_login": "kevinschaper",
          "committed_at": "2026-07-09T18:15:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a8dce3e235072498a1697ea39d073d8d52f3988",
          "body": "fix(owlgen): declare metamodel grouping classes referenced by add_root_classes",
          "is_bot": false,
          "headline": "Merge pull request #3681 from turbomam/owl-declare-grouping-classes",
          "author_name": "Mark Andrew Miller",
          "author_login": "turbomam",
          "committed_at": "2026-07-08T16:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5746c812dce42582a6f915172c36672758e2c626",
          "body": "…lasses\n\nAdds a regression test for the mixins_as_expressions branch that declares\nthe synthetic ClassDefinition#Mixin grouping class. The existing grouping\ntests only exercised the class/enum/permissible-value paths, so the mixin\nbranch was untested (review nit on PR #3681).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(owlgen): cover mixin grouping-class declaration under add_root_c…",
          "author_name": "Mark Andrew Miller",
          "author_login": "turbomam",
          "committed_at": "2026-07-08T14:27:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "246b62203c15cc9f5712cd74175257681b0c3586",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into owl-declare-grouping-classes",
          "author_name": "Mark Andrew Miller",
          "author_login": "turbomam",
          "committed_at": "2026-07-08T14:08:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7414ab98c078a14c4d91f530f8c682ad8db4c4db",
          "body": "Signed-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "Openapi generator minor improvements (#3511)",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-06T14:05:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "307ba55c5d5ff84ee81f750ca0b7a3e7d04842d2",
          "body": "Update Community-Meetings.md",
          "is_bot": false,
          "headline": "Merge pull request #3718 from linkml/sagehrke-patch-3",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-05T06:00:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04c59f74fcaa158b003b210fa699162fed476766",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into sagehrke-patch-3",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-07-05T05:48:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96eeaf15cebe2cc741f863915031087f30518a5a",
          "body": "keep environments in a classvar for panderagen",
          "is_bot": false,
          "headline": "Merge pull request #3222 from sneakers-the-rat/panderagen-environment",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-04T20:21:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c8eb83e56ad06f470685b3e7ccb3939665a61e6",
          "body": null,
          "is_bot": false,
          "headline": "keep environments in a classvar for panderagen",
          "author_name": "sneakers-the-rat",
          "author_login": "sneakers-the-rat",
          "committed_at": "2026-07-04T00:12:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "902ac5caada70f7ca88cf9bf8bbf15902cb8fcae",
          "body": "Fixes nitpicks from review of PR #3378",
          "is_bot": false,
          "headline": "Merge pull request #3500 from sveinugu/json-schema-examples-nitpicks",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-03T21:09:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1303d91e3656e0653c3993d0df302892fd41b5f1",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into json-schema-examples-nitpicks",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-03T20:55:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f4acec550d4d82199e964cb5a2674262fc8870e",
          "body": "Add Stephan Heunis to the July 16th slot.",
          "is_bot": false,
          "headline": "Update Community-Meetings.md",
          "author_name": "Sarah Gehrke",
          "author_login": "sagehrke",
          "committed_at": "2026-07-03T17:42:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "993736fa73e64dd9a957e879ecc9bb67b754fcb6",
          "body": "fix(schemaview): resolve inlined through is_a and mixin chains",
          "is_bot": false,
          "headline": "Merge pull request #3694 from linkml/fix-schemaview-resolve-inlined",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-03T15:31:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4f4aec79482e26f4323b7dbc6649d8db79ef723",
          "body": "…_inlined()\n\n- Replace manual while-loop over is_a chain with slot_ancestors(), which\n  handles both is_a and mixins inheritance and is @lru_cache backed.\n- Call all_slots() once outside the ancestor loop (also @lru_cache).\n- Add test cases for mixin-inherited inlined/inlined_as_list.\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "fix(schemaview): use slot_ancestors() for is_a+mixins traversal in is…",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-03T11:04:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94452f5d1679cf00cbacee7b2ec9b0ea69f01474",
          "body": "Signed-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "tests(schemaview): resolution of inlined through is_a chains",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-03T11:04:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a0367a6804d89e3f95017350f8d9c8a61bc58dd",
          "body": "Signed-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "fix(schemaview): resolve inlined through is_a chains",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-03T11:04:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a746139485ac711e7c1b9b7ea584b4e43a92a00a",
          "body": null,
          "is_bot": false,
          "headline": "fix(protobuf): fix broken generator",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-02T21:32:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d9f913d9812e34bcc0158a2906abc9e4ce57092",
          "body": "…apes (#3450)\n\nSigned-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de>",
          "is_bot": false,
          "headline": "feat(gen-shacl): add --message-template for sh:message on property sh…",
          "author_name": "Carlo van Driesten",
          "author_login": "jdsika",
          "committed_at": "2026-07-02T19:12:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "035f380f655a6c452001b9b6b71543f1818872de",
          "body": "Fix SchemaView get_uri",
          "is_bot": false,
          "headline": "Merge pull request #3691 from linkml/fix-schemaview-get_uri",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-02T16:43:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "096c607e1e107bfd929783bcd020435de5e2f78c",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into fix-schemaview-get_uri",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-02T16:08:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1279ca3b353bfd7f2e01fb714182ea24dfb3b74f",
          "body": "Signed-off-by: Sai Asish Y <say.apm35@gmail.com>",
          "is_bot": false,
          "headline": "Make EnumDefinitionImpl instances hashable",
          "author_name": "Sai Asish Y",
          "author_login": "SAY-5",
          "committed_at": "2026-07-02T15:55:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ca89da5d7b80bcdd0ba596fa6bee574401b4484",
          "body": "Previous snapshots were wrong when involving Enum and Type\ncapitalization. Due to a bug in SchemaView get_uri, Enums and Types that\nshould be camelcased weren't.\n\nThis patch fixes it, applying camelcase for all Enums and Types (except\nthose from the MetaModel). What appears to be a big change is only the\nresult of a change in serialization ordering.\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "tests: update according previous changes",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-02T15:39:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "850b3e3b43911b77e510273213abfcf3300f77f2",
          "body": "SchemaView get_uri should use CamelCase capitalization for types.\n\nSigned-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "fix(schemaview): correct get_uri capitalization",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-02T15:39:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "23cdcde6bafd49dff89c4c38065f8e9514c5fd85",
          "body": "The declared metamodel grouping classes (add_root_classes) were labelled with the\nraw snake_case metamodel name, e.g. rdfs:label \"enum_definition\". Prefer a\nmetamodel title if present, otherwise use the UpperCamelCase form (camelcase),\nmatching the class IRI local name and the LinkML model docs (e.g. \"EnumDefinition\").\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(owlgen): label grouping classes with UpperCamelCase metamodel name",
          "author_name": "Mark Andrew Miller",
          "author_login": "turbomam",
          "committed_at": "2026-07-02T15:02:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "00bb66b0bb899299eebee43f2b149a2024c178b1",
          "body": "Signed-off-by: Puneet Dixit <236133619+puneetdixit200@users.noreply.github.com>\nCo-authored-by: Puneet Dixit <236133619+puneetdixit200@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: clarify OO codegen document granularity (#3535)",
          "author_name": "Puneet Dixit",
          "author_login": "puneetdixit200",
          "committed_at": "2026-07-02T13:43:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e94d2b8368ae15b06a0fa7323df7c18a8bcaccd2",
          "body": null,
          "is_bot": false,
          "headline": "Add linter rules for slot_group and in_subset referential integrity",
          "author_name": "Mark Andrew Miller",
          "author_login": "turbomam",
          "committed_at": "2026-07-01T20:42:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "591eefa67b8997e5eec81b6044fe2aae88a3d896",
          "body": "Signed-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>",
          "is_bot": false,
          "headline": "fix(jsonschemagen): avoid duplicate subschemas",
          "author_name": "Silvano Cirujano Cuesta",
          "author_login": "Silvanoc",
          "committed_at": "2026-07-01T20:09:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82b98be387fac7af4f7107914e96819fd229f0be",
          "body": null,
          "is_bot": false,
          "headline": "fix(linter): don't flag None range on any_of/exactly_one_of slots",
          "author_name": "Vincent Gao",
          "author_login": "gaoflow",
          "committed_at": "2026-07-01T19:29:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd16360d71758feec725e796eaed1b9c6db7b74c",
          "body": "…blegen\n\nAdd CLI tests for sqltable generator",
          "is_bot": false,
          "headline": "Merge pull request #3656 from FlorianK13/2942-add-cli-tests-for-sqlta…",
          "author_name": "Patrick Kalita",
          "author_login": "pkalita-lbl",
          "committed_at": "2026-07-01T16:10:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "468de9961b8e650dea26d2c0b297b5d87cd5bbeb",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into 2942-add-cli-tests-for-sqltablegen",
          "author_name": "Patrick Kalita",
          "author_login": "pkalita-lbl",
          "committed_at": "2026-07-01T15:56:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "020c9a28028df84f193a4aebb275dc992232aeea",
          "body": null,
          "is_bot": false,
          "headline": "fix(enumerations): ensure enum constructor idempotency",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-01T15:29:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7f07a29a0c2ac34ee8bae21be404333960144b7",
          "body": "…(#3596)\n\n* fix(enumerations): address issues #1203 #3590 #3591 #3592\n\n* fix(enumerations): address issues #3590 #3591 #3592",
          "is_bot": false,
          "headline": "fix(enumerations): fix _hashable_, _eq_, and MRO contains_/_getitem_ …",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-07-01T15:08:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8fe8b7da89cf1332aece90bdccaa0a4243932dc",
          "body": "fix(owlgen): enum range slots with none_of/all_of/any_of - equals_string",
          "is_bot": false,
          "headline": "Merge pull request #3468 from noelmcloughlin/owlgen3",
          "author_name": "N",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-06-30T11:12:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c8699cbe3b482d5004cd0c31e56c2f4921ed0f9",
          "body": null,
          "is_bot": false,
          "headline": "fix(owlgen): address pr review comments",
          "author_name": "noelmcloughlin",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-06-30T10:59:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "565a1e0c24a66b4ffc90458a71d61bd2cbcd399b",
          "body": "…tring",
          "is_bot": false,
          "headline": "fix(owlgen): enum range slots with none_of/all_of/any_of and equals_s…",
          "author_name": "noelmcloughlin",
          "author_login": "noelmcloughlin",
          "committed_at": "2026-06-30T10:08:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c23ea7ca99e55c6cd0b2f0bb2c51ab5a374037e3",
          "body": "Update Community-Meetings.md",
          "is_bot": false,
          "headline": "Merge pull request #3687 from linkml/community-meeting-update",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-06-29T20:21:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73ac05f1ed4a61cc07ce3b566bae97fd411369a7",
          "body": "- Added speakers for July and August 2026 meetings\r\n- Added slides link for June meeting",
          "is_bot": false,
          "headline": "Update Community-Meetings.md",
          "author_name": "Sarah Gehrke",
          "author_login": "sagehrke",
          "committed_at": "2026-06-29T20:03:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afd279d0ac91c044cc1567d74b7c9f5af07b5e38",
          "body": "fix(mergeutils): merge structurally identical classes",
          "is_bot": false,
          "headline": "Merge pull request #3632 from noelmcloughlin/merge",
          "author_name": "Patrick Kalita",
          "author_login": "pkalita-lbl",
          "committed_at": "2026-06-29T17:58:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "060cb989827c37551c5d18b1a53a2c0de38b79d8",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into merge",
          "author_name": "Patrick Kalita",
          "author_login": "pkalita-lbl",
          "committed_at": "2026-06-29T17:40:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5e5e75f51e8025c0b329b413424a62eaa5a56c0",
          "body": "test(example-runner): add closed/not-closed support",
          "is_bot": false,
          "headline": "Merge pull request #3626 from noelmcloughlin/closed1",
          "author_name": "Patrick Kalita",
          "author_login": "pkalita-lbl",
          "committed_at": "2026-06-29T17:39:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d07da2fc1faaa93479f2f19de6074d2037bc5b6",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into closed1",
          "author_name": "Patrick Kalita",
          "author_login": "pkalita-lbl",
          "committed_at": "2026-06-29T17:14:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9af9eca09999b4bec08705c14ff3590a743b9e8",
          "body": "…minism",
          "is_bot": false,
          "headline": "fix(shaclgen): sort sh:ignoredProperties list for cross-process deter…",
          "author_name": "Corey Cox",
          "author_login": "amc-corey-cox",
          "committed_at": "2026-06-29T15:49:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3de07ab16b12b6edf5734de973465c2e5b715e03",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "style: apply ruff format to owlgen grouping-class declarations",
          "author_name": "Mark Andrew Miller",
          "author_login": "turbomam",
          "committed_at": "2026-06-26T17:40:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c4431a864a82531afb3ca7421ae8713a6f56f45c",
          "body": "…t_classes\n\nWith add_root_classes, enums/classes/permissible values are made rdfs:subClassOf\nlinkml:EnumDefinition / ClassDefinition / PermissibleValue, but those parents were never\ndeclared as owl:Class, so RDF-only consumers (e.g. OLS) drop the grouping. Declare each\nreferenced grouping class as o\n[…]\nth rdfs:label and skos:definition from the\nmetamodel. Idempotent; only emitted where add_root_classes already references the class.\n\nRefs #3605\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(owlgen): declare metamodel grouping classes referenced by add_roo…",
          "author_name": "Mark Andrew Miller",
          "author_login": "turbomam",
          "committed_at": "2026-06-26T17:25:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e29f2970b12d6d7c9aaee6a7406616c7f2897cf1",
          "body": "…-actions-501514dec4\n\nbuild(deps): bump the github-actions group across 1 directory with 7 updates",
          "is_bot": false,
          "headline": "Merge pull request #3607 from linkml/dependabot/github_actions/github…",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-06-23T12:18:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a6b7cd2e1c10935ec9013d7b672f06e0a6e9f68",
          "body": "…514dec4",
          "is_bot": false,
          "headline": "Merge branch 'main' into dependabot/github_actions/github-actions-501…",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-06-23T12:04:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af5adf25481ca287b8609a66bb9b68c4f6ccf4e4",
          "body": "Optional map-valued fields (Option<HashMap<K, V>>) were merged with\noverwrite_except_none, which replaces the whole inherited map when an\noverride is present. Map fields should merge per-key so that, e.g., a\nslot_usage override of annotations folds into the inherited annotations\ninstead of dropping \n[…]\non-map fields are unchanged.\n\nThis is the generator-side, global equivalent of the hand-patched\nmetamodel fix in Kapernikov/rust-linkml-core#98.\n\nCo-authored-by: Kevin Schaper <kevinschaper@gmail.com>",
          "is_bot": false,
          "headline": "fix(rustgen): per-key merge for optional map fields (#3588)",
          "author_name": "Frank Dekervel",
          "author_login": "kervel",
          "committed_at": "2026-06-21T09:24:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce33545c00b1316e2366e747fcf19097209fca5f",
          "body": null,
          "is_bot": false,
          "headline": "docs: Clarify the documentation about unique keys & identifiers.",
          "author_name": "Damien Goutte-Gattat",
          "author_login": "gouttegd",
          "committed_at": "2026-06-18T19:13:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c65254980da6df0aa9f1b38e9bb300a35dcf2e6",
          "body": null,
          "is_bot": false,
          "headline": "Clarify who can review PRs with links to teams",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-06-18T18:39:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a23d681ac0488ab4449a0f2e555f08c4f0671669",
          "body": "Signed-off-by: jdsika <carlo.van-driesten@bmw.de>",
          "is_bot": false,
          "headline": "fix(owlgen): warn on covering axiom edge cases for abstract classes",
          "author_name": "Carlo van Driesten",
          "author_login": "jdsika",
          "committed_at": "2026-06-18T17:32:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aeef7748b71e4d93abe7a16321329989791b5e33",
          "body": null,
          "is_bot": false,
          "headline": "Fix JSONSchemaGenerator’s setting of `additionalProperties`",
          "author_name": "Damien Goutte-Gattat",
          "author_login": "gouttegd",
          "committed_at": "2026-06-18T13:52:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a660a5342b6e5a44d1215a7a32e68dc1a840ceff",
          "body": "Update Community-Meetings.md",
          "is_bot": false,
          "headline": "Merge pull request #3651 from linkml/sagehrke-patch-2",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-06-17T15:09:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9878cfb93f681a6786296ecccc81468efb0b3cc2",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into sagehrke-patch-2",
          "author_name": "Nico Matentzoglu",
          "author_login": "matentzn",
          "committed_at": "2026-06-17T14:55:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 1225,
      "latest_release_at": "2026-05-20T17:03:58Z",
      "latest_release_tag": "v1.11.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 51,
      "days_since_latest_release": 71,
      "mean_days_between_releases": 18
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "linkml",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "biolink",
            "data modeling",
            "linked data",
            "owl",
            "rdf",
            "schema",
            "Development Status :: 5 - Production/Stable",
            "Environment :: Console",
            "Intended Audience :: Developers",
            "Intended Audience :: Healthcare Industry",
            "Intended Audience :: Science/Research",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries :: Python Modules"
          ],
          "ecosystem": "pypi",
          "matches_repo": null,
          "registry_url": "https://pypi.org/project/linkml/",
          "is_deprecated": false,
          "latest_version": "1.11.1",
          "repository_url": null,
          "versions_count": 161,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 428533,
          "first_published_at": "2021-03-24T16:02:49.473964Z",
          "latest_published_at": "2026-05-20T17:05:42.359245Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 71
        },
        {
          "name": "linkml-runtime",
          "exists": true,
          "license": "CC0-1.0",
          "keywords": [
            "linkml",
            "metamodel",
            "owl",
            "rdf",
            "schema visualization",
            "yaml",
            "Development Status :: 5 - Production/Stable",
            "Environment :: Console",
            "Intended Audience :: Developers",
            "Intended Audience :: Healthcare Industry",
            "Intended Audience :: Science/Research",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries :: Python Modules"
          ],
          "ecosystem": "pypi",
          "matches_repo": null,
          "registry_url": "https://pypi.org/project/linkml-runtime/",
          "is_deprecated": false,
          "latest_version": "1.11.1",
          "repository_url": null,
          "versions_count": 156,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 447633,
          "first_published_at": "2021-04-23T19:30:29.383616Z",
          "latest_published_at": "2026-05-20T17:05:43.633544Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 71
        }
      ]
    },
    "popularity": {
      "forks": 186,
      "stars": 581,
      "watchers": 19,
      "fork_history": {
        "days": [
          {
            "date": "2021-03-27",
            "count": 1
          },
          {
            "date": "2021-04-06",
            "count": 1
          },
          {
            "date": "2021-04-18",
            "count": 1
          },
          {
            "date": "2021-04-23",
            "count": 1
          },
          {
            "date": "2021-04-26",
            "count": 1
          },
          {
            "date": "2021-05-26",
            "count": 1
          },
          {
            "date": "2021-05-28",
            "count": 1
          },
          {
            "date": "2021-08-02",
            "count": 1
          },
          {
            "date": "2021-08-16",
            "count": 1
          },
          {
            "date": "2021-09-09",
            "count": 1
          },
          {
            "date": "2021-09-30",
            "count": 1
          },
          {
            "date": "2021-10-08",
            "count": 1
          },
          {
            "date": "2021-10-23",
            "count": 1
          },
          {
            "date": "2021-12-02",
            "count": 1
          },
          {
            "date": "2021-12-10",
            "count": 1
          },
          {
            "date": "2022-01-31",
            "count": 1
          },
          {
            "date": "2022-02-11",
            "count": 1
          },
          {
            "date": "2022-02-24",
            "count": 1
          },
          {
            "date": "2022-04-14",
            "count": 1
          },
          {
            "date": "2022-05-04",
            "count": 1
          },
          {
            "date": "2022-05-21",
            "count": 1
          },
          {
            "date": "2022-06-01",
            "count": 1
          },
          {
            "date": "2022-06-06",
            "count": 1
          },
          {
            "date": "2022-07-14",
            "count": 1
          },
          {
            "date": "2022-08-02",
            "count": 1
          },
          {
            "date": "2022-08-19",
            "count": 1
          },
          {
            "date": "2022-09-08",
            "count": 1
          },
          {
            "date": "2022-09-09",
            "count": 1
          },
          {
            "date": "2022-09-16",
            "count": 1
          },
          {
            "date": "2022-12-01",
            "count": 1
          },
          {
            "date": "2022-12-20",
            "count": 1
          },
          {
            "date": "2023-01-13",
            "count": 2
          },
          {
            "date": "2023-02-08",
            "count": 2
          },
          {
            "date": "2023-02-20",
            "count": 1
          },
          {
            "date": "2023-03-09",
            "count": 1
          },
          {
            "date": "2023-03-31",
            "count": 1
          },
          {
            "date": "2023-04-28",
            "count": 2
          },
          {
            "date": "2023-05-05",
            "count": 1
          },
          {
            "date": "2023-05-10",
            "count": 2
          },
          {
            "date": "2023-05-11",
            "count": 1
          },
          {
            "date": "2023-05-26",
            "count": 1
          },
          {
            "date": "2023-06-03",
            "count": 1
          },
          {
            "date": "2023-06-09",
            "count": 1
          },
          {
            "date": "2023-06-23",
            "count": 1
          },
          {
            "date": "2023-07-09",
            "count": 1
          },
          {
            "date": "2023-07-31",
            "count": 1
          },
          {
            "date": "2023-08-01",
            "count": 1
          },
          {
            "date": "2023-08-06",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-25",
            "count": 1
          },
          {
            "date": "2023-09-15",
            "count": 1
          },
          {
            "date": "2023-09-18",
            "count": 1
          },
          {
            "date": "2023-09-20",
            "count": 1
          },
          {
            "date": "2023-10-11",
            "count": 1
          },
          {
            "date": "2023-10-12",
            "count": 1
          },
          {
            "date": "2023-10-18",
            "count": 1
          },
          {
            "date": "2023-11-21",
            "count": 1
          },
          {
            "date": "2023-12-12",
            "count": 1
          },
          {
            "date": "2023-12-25",
            "count": 1
          },
          {
            "date": "2023-12-27",
            "count": 1
          },
          {
            "date": "2024-01-18",
            "count": 1
          },
          {
            "date": "2024-02-07",
            "count": 2
          },
          {
            "date": "2024-02-12",
            "count": 1
          },
          {
            "date": "2024-02-13",
            "count": 1
          },
          {
            "date": "2024-02-20",
            "count": 1
          },
          {
            "date": "2024-03-01",
            "count": 1
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-03-15",
            "count": 1
          },
          {
            "date": "2024-03-16",
            "count": 1
          },
          {
            "date": "2024-03-27",
            "count": 1
          },
          {
            "date": "2024-04-08",
            "count": 1
          },
          {
            "date": "2024-04-09",
            "count": 1
          },
          {
            "date": "2024-04-20",
            "count": 1
          },
          {
            "date": "2024-04-23",
            "count": 1
          },
          {
            "date": "2024-05-09",
            "count": 2
          },
          {
            "date": "2024-05-15",
            "count": 1
          },
          {
            "date": "2024-05-18",
            "count": 1
          },
          {
            "date": "2024-06-10",
            "count": 1
          },
          {
            "date": "2024-06-21",
            "count": 1
          },
          {
            "date": "2024-07-09",
            "count": 1
          },
          {
            "date": "2024-08-02",
            "count": 1
          },
          {
            "date": "2024-08-15",
            "count": 2
          },
          {
            "date": "2024-08-23",
            "count": 1
          },
          {
            "date": "2024-09-09",
            "count": 1
          },
          {
            "date": "2024-09-20",
            "count": 1
          },
          {
            "date": "2024-09-27",
            "count": 1
          },
          {
            "date": "2024-11-07",
            "count": 1
          },
          {
            "date": "2024-11-14",
            "count": 1
          },
          {
            "date": "2024-12-06",
            "count": 2
          },
          {
            "date": "2024-12-13",
            "count": 1
          },
          {
            "date": "2025-01-06",
            "count": 1
          },
          {
            "date": "2025-01-13",
            "count": 1
          },
          {
            "date": "2025-01-16",
            "count": 1
          },
          {
            "date": "2025-01-20",
            "count": 1
          },
          {
            "date": "2025-01-22",
            "count": 1
          },
          {
            "date": "2025-01-23",
            "count": 1
          },
          {
            "date": "2025-02-13",
            "count": 1
          },
          {
            "date": "2025-02-21",
            "count": 2
          },
          {
            "date": "2025-03-23",
            "count": 1
          },
          {
            "date": "2025-04-03",
            "count": 1
          },
          {
            "date": "2025-04-11",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 1
          },
          {
            "date": "2025-04-15",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-04-30",
            "count": 1
          },
          {
            "date": "2025-05-29",
            "count": 1
          },
          {
            "date": "2025-06-06",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-13",
            "count": 1
          },
          {
            "date": "2025-06-23",
            "count": 1
          },
          {
            "date": "2025-08-26",
            "count": 1
          },
          {
            "date": "2025-08-28",
            "count": 1
          },
          {
            "date": "2025-09-02",
            "count": 1
          },
          {
            "date": "2025-09-16",
            "count": 1
          },
          {
            "date": "2025-10-01",
            "count": 1
          },
          {
            "date": "2025-10-10",
            "count": 1
          },
          {
            "date": "2025-10-21",
            "count": 1
          },
          {
            "date": "2025-10-24",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-05",
            "count": 1
          },
          {
            "date": "2025-11-12",
            "count": 1
          },
          {
            "date": "2025-11-19",
            "count": 1
          },
          {
            "date": "2025-12-02",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2026-01-10",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-15",
            "count": 2
          },
          {
            "date": "2026-02-01",
            "count": 1
          },
          {
            "date": "2026-02-14",
            "count": 1
          },
          {
            "date": "2026-02-16",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-13",
            "count": 1
          },
          {
            "date": "2026-03-16",
            "count": 1
          },
          {
            "date": "2026-03-17",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 2
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 1
          },
          {
            "date": "2026-05-14",
            "count": 2
          },
          {
            "date": "2026-05-15",
            "count": 1
          },
          {
            "date": "2026-05-20",
            "count": 2
          },
          {
            "date": "2026-05-28",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-05-31",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-24",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-06-26",
            "count": 2
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 2
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 2
          },
          {
            "date": "2026-07-28",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 181,
        "total_forks": 186
      },
      "star_history": null,
      "open_issues_and_prs": 830
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples",
        "notebooks"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "docs/Makefile",
        "examples/PersonSchema/Makefile",
        "packages/linkml_runtime/Makefile"
      ],
      "api_schema_files": [
        "examples/PersonSchema/personinfo/graphql/personinfo.graphql",
        "examples/PersonSchema/personinfo/protobuf/personinfo.proto",
        "examples/organization.graphql",
        "examples/organization.proto",
        "packages/linkml_runtime/src/linkml_runtime/linkml_model/graphql/meta.graphql",
        "packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto",
        "tests/linkml/test_biolink_model/__snapshots__/biolink.graphql",
        "tests/linkml/test_biolink_model/__snapshots__/biolink.proto",
        "tests/linkml/test_generators/__snapshots__/kitchen_sink.graphql",
        "tests/linkml/test_scripts/__snapshots__/gengraphql/meta.graphql",
        "tests/linkml/test_scripts/__snapshots__/genproto/meta.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "examples/PersonSchema/rust/Cargo.toml"
      ],
      "largest_source_bytes": 859669,
      "source_files_sampled": 703,
      "oversized_source_files": 17,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 1666
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 80,
        "malicious_count": 0,
        "assessed_package": "pypi:linkml@1.11.1",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "antlr4-python3-runtime",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 4.9.0, < 4.10"
        },
        {
          "name": "click",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 8.2"
        },
        {
          "name": "graphviz",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.10.1"
        },
        {
          "name": "hbreader",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "isodate",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.6.0"
        },
        {
          "name": "jinja2",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 3.1.0"
        },
        {
          "name": "jsonasobj2",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 1.0.3, < 2.0.0"
        },
        {
          "name": "jsonschema",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 4.0.0"
        },
        {
          "name": "linkml-runtime",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 1.10.0, < 2.0.0"
        },
        {
          "name": "openpyxl",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "parse",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "prefixcommons",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.1.7"
        },
        {
          "name": "prefixmaps",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.2.2"
        },
        {
          "name": "pydantic",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 2.0.0, < 3.0.0"
        },
        {
          "name": "pyjsg",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.12.3"
        },
        {
          "name": "pyshex",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.9.0"
        },
        {
          "name": "pyshexc",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.10.3"
        },
        {
          "name": "python-dateutil",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pyyaml",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "rdflib",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0.0"
        },
        {
          "name": "requests",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 2.22"
        },
        {
          "name": "sqlalchemy",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 1.4.31"
        },
        {
          "name": "watchdog",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.9.0"
        },
        {
          "name": "typing-extensions",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 4.6.0"
        },
        {
          "name": "sphinx-click",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "(>=6.0.0)"
        },
        {
          "name": "openapi-spec-validator",
          "manifest": "packages/linkml/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 0.8.4"
        },
        {
          "name": "click",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 8.2"
        },
        {
          "name": "deprecated",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "hbreader",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "json-flattener",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.9"
        },
        {
          "name": "jsonasobj2",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.*,>=1.0.0,>=1.0.4"
        },
        {
          "name": "jsonschema",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.2.0"
        },
        {
          "name": "prefixcommons",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.12"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "rdflib",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0.0"
        },
        {
          "name": "requests",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "prefixmaps",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.4"
        },
        {
          "name": "curies",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.5.4"
        },
        {
          "name": "pyoxigraph",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.5.6"
        },
        {
          "name": "pydantic",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.10.2, <3.0.0"
        },
        {
          "name": "isodate",
          "manifest": "packages/linkml_runtime/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.7.2, <1.0.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "antlr4-python3-runtime",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "antlr4-python3-runtime",
            "direct": true,
            "version": "4.9.3",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": "8.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "curies",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "curies",
            "direct": true,
            "version": "0.12.3",
            "ecosystem": "pypi"
          },
          {
            "name": "deprecated",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "deprecated",
            "direct": true,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "graphviz",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "graphviz",
            "direct": true,
            "version": "0.21",
            "ecosystem": "pypi"
          },
          {
            "name": "hbreader",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "hbreader",
            "direct": true,
            "version": "0.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "isodate",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "isodate",
            "direct": true,
            "version": "0.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": true,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "json-flattener",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "json-flattener",
            "direct": true,
            "version": "0.1.9",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonasobj2",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jsonasobj2",
            "direct": true,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema",
            "direct": true,
            "version": "4.24.1",
            "ecosystem": "pypi"
          },
          {
            "name": "linkml-runtime",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "openapi-spec-validator",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "openapi-spec-validator",
            "direct": true,
            "version": "0.8.4",
            "ecosystem": "pypi"
          },
          {
            "name": "openpyxl",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "openpyxl",
            "direct": true,
            "version": "3.1.5",
            "ecosystem": "pypi"
          },
          {
            "name": "parse",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "parse",
            "direct": true,
            "version": "1.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prefixcommons",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "prefixcommons",
            "direct": true,
            "version": "0.1.12",
            "ecosystem": "pypi"
          },
          {
            "name": "prefixmaps",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "prefixmaps",
            "direct": true,
            "version": "0.2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": true,
            "version": "2.12.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyjsg",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyjsg",
            "direct": true,
            "version": "0.12.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pyoxigraph",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyoxigraph",
            "direct": true,
            "version": "0.5.8",
            "ecosystem": "pypi"
          },
          {
            "name": "pyshex",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyshex",
            "direct": true,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyshexc",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyshexc",
            "direct": true,
            "version": "0.10.3.post1",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": true,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": true,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "rdflib",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "rdflib",
            "direct": true,
            "version": "7.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.34.2",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-click",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-click",
            "direct": true,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": true,
            "version": "2.0.44",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": true,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": true,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "chrono",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "pyo3",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde-value",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde_path_to_error",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde_yml",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "accessible-pygments",
            "direct": false,
            "version": "0.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "alabaster",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-types",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": "4.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "appnope",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "argon2-cffi",
            "direct": false,
            "version": "25.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "argon2-cffi-bindings",
            "direct": false,
            "version": "25.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "arrow",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asttokens",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "async-lru",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "attrs",
            "direct": false,
            "version": "25.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "babel",
            "direct": false,
            "version": "2.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "backoff",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "beautifulsoup4",
            "direct": false,
            "version": "4.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": false,
            "version": "26.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "bleach",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cachetools",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cattrs",
            "direct": false,
            "version": "25.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2025.10.5",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cfgraph",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "7.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "comm",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "contourpy",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "contourpy",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "49.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cycler",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "debugpy",
            "direct": false,
            "version": "1.8.17",
            "ecosystem": "pypi"
          },
          {
            "name": "decorator",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "defusedxml",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "deprecation",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docker",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docutils",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "pypi"
          },
          {
            "name": "duckdb",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "duckdb",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "et-xmlfile",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "exceptiongroup",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "execnet",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fastjsonschema",
            "direct": false,
            "version": "2.21.2",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.29.4",
            "ecosystem": "pypi"
          },
          {
            "name": "fonttools",
            "direct": false,
            "version": "4.63.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fqdn",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "furo",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "furo",
            "direct": false,
            "version": "2025.9.25",
            "ecosystem": "pypi"
          },
          {
            "name": "google-api-core",
            "direct": false,
            "version": "2.30.3",
            "ecosystem": "pypi"
          },
          {
            "name": "google-auth",
            "direct": false,
            "version": "2.53.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-cloud-bigquery",
            "direct": false,
            "version": "3.41.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-cloud-core",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-crc32c",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-resumable-media",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "googleapis-common-protos",
            "direct": false,
            "version": "1.75.0",
            "ecosystem": "pypi"
          },
          {
            "name": "gql",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "gql",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "graphql-core",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "grpcio",
            "direct": false,
            "version": "1.80.0",
            "ecosystem": "pypi"
          },
          {
            "name": "grpcio-status",
            "direct": false,
            "version": "1.80.0",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "hatchling",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "html5rdf",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.17",
            "ecosystem": "pypi"
          },
          {
            "name": "imagesize",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "8.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipykernel",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "ipykernel",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "8.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "9.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython-genutils",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "ipython-genutils",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython-pygments-lexers",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ipywidgets",
            "direct": false,
            "version": "8.1.7",
            "ecosystem": "pypi"
          },
          {
            "name": "isoduration",
            "direct": false,
            "version": "20.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jedi",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonasobj",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpatch",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpatch",
            "direct": false,
            "version": "1.33",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpointer",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema-path",
            "direct": false,
            "version": "0.4.5",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema-specifications",
            "direct": false,
            "version": "2025.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-builder",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-cache",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-client",
            "direct": false,
            "version": "8.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-console",
            "direct": false,
            "version": "6.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-core",
            "direct": false,
            "version": "5.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-events",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-lsp",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-server",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-server-terminals",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab-pygments",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab-server",
            "direct": false,
            "version": "2.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab-widgets",
            "direct": false,
            "version": "3.0.15",
            "ecosystem": "pypi"
          },
          {
            "name": "kiwisolver",
            "direct": false,
            "version": "1.4.9",
            "ecosystem": "pypi"
          },
          {
            "name": "lazy-object-proxy",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib",
            "direct": false,
            "version": "3.10.7",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib-inline",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "maturin",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "maturin",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mdit-py-plugins",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mistune",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mock",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mock",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "multidict",
            "direct": false,
            "version": "6.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-extensions",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "myst-nb",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "myst-nb",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "myst-parser",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "myst-parser",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nbclient",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "nbconvert",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "nbconvert",
            "direct": false,
            "version": "7.17.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nbformat",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "nbformat",
            "direct": false,
            "version": "5.10.4",
            "ecosystem": "pypi"
          },
          {
            "name": "nest-asyncio",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "notebook",
            "direct": false,
            "version": "7.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "notebook-shim",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "2.2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "2.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "numpydantic",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "numpydantic",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openapi-schema-validator",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "overrides",
            "direct": false,
            "version": "7.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "owlrl",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pandera",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pandera",
            "direct": false,
            "version": "0.26.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pandocfilters",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "parso",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pathable",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pathspec",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pexpect",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": "12.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "polars-lts-cpu",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "polars-lts-cpu",
            "direct": false,
            "version": "1.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "prettytable",
            "direct": false,
            "version": "3.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prometheus-client",
            "direct": false,
            "version": "0.23.1",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.52",
            "ecosystem": "pypi"
          },
          {
            "name": "propcache",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "proto-plus",
            "direct": false,
            "version": "1.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "protobuf",
            "direct": false,
            "version": "6.33.6",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "ptyprocess",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pure-eval",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1-modules",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "2.23",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-core",
            "direct": false,
            "version": "2.41.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-settings",
            "direct": false,
            "version": "2.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyparsing",
            "direct": false,
            "version": "3.2.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-api",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyshacl",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyshacl",
            "direct": false,
            "version": "0.30.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-logging",
            "direct": false,
            "version": "2015.11.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-subtests",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-subtests",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-xdist",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-xdist",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-discovery",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-json-logger",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytokens",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": "2025.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pywin32",
            "direct": false,
            "version": "311",
            "ecosystem": "pypi"
          },
          {
            "name": "pywinpty",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyzmq",
            "direct": false,
            "version": "27.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rdflib-jsonld",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rdflib-shim",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "referencing",
            "direct": false,
            "version": "0.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-cache",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "requests-cache",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3339-validator",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3986-validator",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3987",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": "14.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "roman-numerals-py",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "send2trash",
            "direct": false,
            "version": "1.8.3",
            "ecosystem": "pypi"
          },
          {
            "name": "shexjsg",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "snowballstemmer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.8.4",
            "ecosystem": "pypi"
          },
          {
            "name": "sparqlslurper",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sparqlwrapper",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx",
            "direct": false,
            "version": "8.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx",
            "direct": false,
            "version": "8.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-basic-ng",
            "direct": false,
            "version": "1.0.0b2",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-design",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-design",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-jinja",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-jinja",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-rtd-theme",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-rtd-theme",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-applehelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-devhelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-htmlhelp",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-jquery",
            "direct": false,
            "version": "4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-jsmath",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-mermaid",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-mermaid",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-programoutput",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-programoutput",
            "direct": false,
            "version": "0.18",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-qthelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-serializinghtml",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy-bigquery",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy-bigquery",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "stack-data",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tabulate",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "terminado",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "pypi"
          },
          {
            "name": "testcontainers",
            "direct": false,
            "version": "3.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tinycss2",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tornado",
            "direct": false,
            "version": "6.5.7",
            "ecosystem": "pypi"
          },
          {
            "name": "tox",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "tox",
            "direct": false,
            "version": "4.32.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tox-uv",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "tox-uv",
            "direct": false,
            "version": "1.29.0",
            "ecosystem": "pypi"
          },
          {
            "name": "traitlets",
            "direct": false,
            "version": "5.14.3",
            "ecosystem": "pypi"
          },
          {
            "name": "typedb-driver",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "typedb-driver",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "typeguard",
            "direct": false,
            "version": "4.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-inspect",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-inspection",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tzdata",
            "direct": false,
            "version": "2025.2",
            "ecosystem": "pypi"
          },
          {
            "name": "uri-template",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "url-normalize",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "uv",
            "direct": false,
            "version": "0.11.23",
            "ecosystem": "pypi"
          },
          {
            "name": "uv-dynamic-versioning",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "21.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.2.14",
            "ecosystem": "pypi"
          },
          {
            "name": "webcolors",
            "direct": false,
            "version": "24.11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "webencodings",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "websocket-client",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "widgetsnbextension",
            "direct": false,
            "version": "4.0.14",
            "ecosystem": "pypi"
          },
          {
            "name": "wrapt",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "yarl",
            "direct": false,
            "version": "1.22.0",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "3.23.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 332,
        "direct_count": 58,
        "indirect_count": 274
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 116,
        "merged_prs": 1293,
        "open_issues": 714,
        "closed_ratio": 0.644,
        "closed_issues": 1294,
        "closed_unmerged_prs": 259
      },
      "bus_factor": 6,
      "bot_contributors": 4,
      "top_contributors": [
        {
          "type": "User",
          "login": "cmungall",
          "commits": 700,
          "avatar_url": "https://avatars.githubusercontent.com/u/50745?v=4"
        },
        {
          "type": "User",
          "login": "sujaypatil96",
          "commits": 466,
          "avatar_url": "https://avatars.githubusercontent.com/u/20239224?v=4"
        },
        {
          "type": "User",
          "login": "sierra-moxon",
          "commits": 403,
          "avatar_url": "https://avatars.githubusercontent.com/u/4561292?v=4"
        },
        {
          "type": "User",
          "login": "pkalita-lbl",
          "commits": 344,
          "avatar_url": "https://avatars.githubusercontent.com/u/102547565?v=4"
        },
        {
          "type": "User",
          "login": "sneakers-the-rat",
          "commits": 257,
          "avatar_url": "https://avatars.githubusercontent.com/u/12961499?v=4"
        },
        {
          "type": "User",
          "login": "actions-user",
          "commits": 243,
          "avatar_url": "https://avatars.githubusercontent.com/u/65916846?v=4"
        },
        {
          "type": "User",
          "login": "amc-corey-cox",
          "commits": 221,
          "avatar_url": "https://avatars.githubusercontent.com/u/69321580?v=4"
        },
        {
          "type": "User",
          "login": "matentzn",
          "commits": 170,
          "avatar_url": "https://avatars.githubusercontent.com/u/7070631?v=4"
        },
        {
          "type": "User",
          "login": "tfliss",
          "commits": 158,
          "avatar_url": "https://avatars.githubusercontent.com/u/911338?v=4"
        },
        {
          "type": "User",
          "login": "hsolbrig",
          "commits": 131,
          "avatar_url": "https://avatars.githubusercontent.com/u/415926?v=4"
        }
      ],
      "contributors_sampled": 96,
      "top_contributor_share": 0.154
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "check-external-links.yaml",
        "dependency-audit.yaml",
        "doc-pages.yaml",
        "docker-build.yaml",
        "docs-test.yaml",
        "main.yaml",
        "metamodel-compat.yaml",
        "pypi-publish.yaml",
        "rustgen.yaml",
        "stale.yaml",
        "typedb-integration.yaml",
        "update-feature-dashboard.yaml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 62 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 1,
            "reason": "9 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "e5d97c45a6b84e0cb5fbb9665a965c4b0c70194f",
        "ran_at": "2026-07-31T07:48:08Z",
        "aggregate_score": 5.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-31T01:48:41Z",
      "oldest_open_prs": [
        {
          "number": 2416,
          "created_at": "2024-11-14T15:15:38Z",
          "last_comment_at": "2026-07-13T14:40:56Z",
          "last_comment_author": "Silvanoc"
        },
        {
          "number": 2456,
          "created_at": "2024-12-13T22:37:12Z",
          "last_comment_at": "2026-07-04T23:13:29Z",
          "last_comment_author": "noelmcloughlin"
        },
        {
          "number": 2496,
          "created_at": "2025-01-13T17:08:29Z",
          "last_comment_at": "2026-04-08T15:53:27Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2515,
          "created_at": "2025-01-29T18:31:37Z",
          "last_comment_at": "2026-04-16T06:02:32Z",
          "last_comment_author": "matentzn"
        },
        {
          "number": 2550,
          "created_at": "2025-02-21T23:13:05Z",
          "last_comment_at": "2026-04-30T22:08:53Z",
          "last_comment_author": "sujaypatil96"
        },
        {
          "number": 2577,
          "created_at": "2025-03-24T03:12:55Z",
          "last_comment_at": "2026-07-28T15:55:56Z",
          "last_comment_author": "noelmcloughlin"
        },
        {
          "number": 2586,
          "created_at": "2025-03-26T22:39:59Z",
          "last_comment_at": "2025-04-01T20:56:25Z",
          "last_comment_author": "tfliss"
        },
        {
          "number": 2697,
          "created_at": "2025-05-15T18:28:01Z",
          "last_comment_at": "2025-05-15T18:42:21Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2725,
          "created_at": "2025-05-23T17:58:47Z",
          "last_comment_at": "2026-07-09T14:07:58Z",
          "last_comment_author": "Silvanoc"
        },
        {
          "number": 2833,
          "created_at": "2025-07-23T00:44:06Z",
          "last_comment_at": "2025-07-23T00:47:08Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2852,
          "created_at": "2025-07-31T21:32:12Z",
          "last_comment_at": "2025-07-31T21:35:25Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2854,
          "created_at": "2025-07-31T21:59:57Z",
          "last_comment_at": "2026-02-03T06:13:38Z",
          "last_comment_author": "matentzn"
        },
        {
          "number": 2883,
          "created_at": "2025-08-30T14:50:07Z",
          "last_comment_at": "2026-02-02T15:19:25Z",
          "last_comment_author": "matentzn"
        },
        {
          "number": 2893,
          "created_at": "2025-09-04T21:24:37Z",
          "last_comment_at": "2025-10-23T21:30:12Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2897,
          "created_at": "2025-09-08T07:47:04Z",
          "last_comment_at": "2025-09-08T16:48:42Z",
          "last_comment_author": "sneakers-the-rat"
        },
        {
          "number": 2927,
          "created_at": "2025-10-03T14:54:23Z",
          "last_comment_at": "2026-01-30T18:07:44Z",
          "last_comment_author": "matentzn"
        },
        {
          "number": 2995,
          "created_at": "2025-11-05T17:06:04Z",
          "last_comment_at": "2025-11-05T17:09:20Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 3038,
          "created_at": "2025-12-13T20:39:41Z",
          "last_comment_at": "2025-12-13T20:42:43Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 3048,
          "created_at": "2025-12-20T01:07:41Z",
          "last_comment_at": "2026-01-20T18:09:05Z",
          "last_comment_author": "kevinschaper"
        },
        {
          "number": 3078,
          "created_at": "2026-01-16T22:45:16Z",
          "last_comment_at": "2026-01-22T07:11:36Z",
          "last_comment_author": "matentzn"
        }
      ],
      "last_merged_pr_at": "2026-07-29T18:00:45Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 20,
          "created_at": "2019-11-29T15:56:05Z",
          "last_comment_at": "2025-10-10T00:15:02Z",
          "last_comment_author": "nlharris"
        },
        {
          "number": 86,
          "created_at": "2020-11-09T03:07:50Z",
          "last_comment_at": "2024-06-21T18:31:58Z",
          "last_comment_author": "cmungall"
        },
        {
          "number": 98,
          "created_at": "2021-01-09T01:06:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 105,
          "created_at": "2021-01-26T18:39:53Z",
          "last_comment_at": "2024-05-17T20:37:50Z",
          "last_comment_author": "turbomam"
        },
        {
          "number": 109,
          "created_at": "2021-02-02T17:25:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 124,
          "created_at": "2021-02-24T20:27:13Z",
          "last_comment_at": "2023-04-21T21:35:45Z",
          "last_comment_author": "sierra-moxon"
        },
        {
          "number": 127,
          "created_at": "2021-02-26T22:13:01Z",
          "last_comment_at": "2026-03-30T19:49:02Z",
          "last_comment_author": "noelmcloughlin"
        },
        {
          "number": 128,
          "created_at": "2021-02-26T22:22:08Z",
          "last_comment_at": "2023-04-20T22:11:13Z",
          "last_comment_author": "ialarmedalien"
        },
        {
          "number": 151,
          "created_at": "2021-04-02T17:16:37Z",
          "last_comment_at": "2021-04-02T17:54:55Z",
          "last_comment_author": "noelmcloughlin"
        },
        {
          "number": 163,
          "created_at": "2021-04-09T21:04:08Z",
          "last_comment_at": "2025-10-17T08:36:23Z",
          "last_comment_author": "Silvanoc"
        },
        {
          "number": 258,
          "created_at": "2021-04-22T16:30:02Z",
          "last_comment_at": "2025-12-06T17:17:08Z",
          "last_comment_author": "nlharris"
        },
        {
          "number": 178,
          "created_at": "2021-04-23T04:35:03Z",
          "last_comment_at": "2025-12-05T23:00:57Z",
          "last_comment_author": "nlharris"
        },
        {
          "number": 182,
          "created_at": "2021-04-23T17:15:53Z",
          "last_comment_at": "2024-06-15T00:02:52Z",
          "last_comment_author": "cmungall"
        },
        {
          "number": 194,
          "created_at": "2021-04-30T20:30:05Z",
          "last_comment_at": "2023-04-14T20:34:12Z",
          "last_comment_author": "cmungall"
        },
        {
          "number": 238,
          "created_at": "2021-06-18T22:15:07Z",
          "last_comment_at": "2026-07-31T01:48:36Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 256,
          "created_at": "2021-06-18T23:33:29Z",
          "last_comment_at": "2022-10-28T18:08:22Z",
          "last_comment_author": "nlharris"
        },
        {
          "number": 1447,
          "created_at": "2021-07-01T00:18:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 272,
          "created_at": "2021-07-12T17:11:15Z",
          "last_comment_at": "2023-01-12T16:07:50Z",
          "last_comment_author": "sierra-moxon"
        },
        {
          "number": 273,
          "created_at": "2021-07-13T17:58:51Z",
          "last_comment_at": "2024-06-19T11:10:15Z",
          "last_comment_author": "deepakunni3"
        },
        {
          "number": 290,
          "created_at": "2021-08-06T14:46:43Z",
          "last_comment_at": "2022-11-18T22:32:54Z",
          "last_comment_author": "sierra-moxon"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/linkml/linkml",
    "host": "github.com",
    "name": "linkml",
    "owner": "linkml"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "excellent",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 88,
      "inputs": {
        "security": 67,
        "vitality": 99,
        "community": 85,
        "governance": 84,
        "engineering": 100
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 99,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "commits_last_year": 1225,
              "human_commit_share": 0.99,
              "days_since_last_push": 0,
              "active_weeks_last_year": 51
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "51/52 weeks with commits",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 51
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1225 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1225
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v1.11.1",
              "releases_from_tags": false,
              "days_since_latest_release": 71,
              "mean_days_between_releases": 18
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 71 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 71
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~18 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 18
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "excellent",
        "name": "Community & Adoption",
        "value": 85,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "forks": 186,
              "stars": 581,
              "watchers": 19,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "581 stars",
                "points": 44.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 581
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "186 forks",
                "points": 18.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 186
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "19 watchers",
                "points": 7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 19
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 99,
            "inputs": {
              "packages": [
                "linkml",
                "linkml-runtime"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 876166
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "876,166 downloads/month across pypi",
                "points": 79.2,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 876166,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 84,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 91,
            "inputs": {
              "bus_factor": 6,
              "contributors_sampled": 96,
              "top_contributor_share": 0.154
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "6 contributor(s) cover half of all commits",
                "points": 48.6,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 15% of commits",
                "points": 19,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 15
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "96 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 96
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 62 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "merged_prs": 1293,
              "open_issues": 714,
              "closed_issues": 1294,
              "issue_closed_ratio": 0.644,
              "closed_unmerged_prs": 259
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "64% of issues closed",
                "points": 30.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 64
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1293/1552 decided PRs merged",
                "points": 31.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1293,
                      "decided": 1552
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "followers": 222,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "linkml",
              "public_repos": 68,
              "account_age_days": 1987
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "222 followers of linkml",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 222,
                      "login": "linkml"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "68 public repos, account ~5 yr old",
                "points": 23.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 68
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 5
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "linkml",
                "linkml-runtime"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 71
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 71 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 71
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "161 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 161
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 100,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "12 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 16,
                "status": "met",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "rdf",
                "modeling",
                "linkml",
                "json-schema",
                "linkml-schema",
                "semantic-web",
                "schema",
                "data-modeling",
                "json-ld-context",
                "owl",
                "data-dictionaries",
                "linked-data",
                "hacktoberfest",
                "standards",
                "shex",
                "shacl"
              ],
              "has_wiki": true,
              "homepage": "https://linkml.io/linkml",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://linkml.io/linkml",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "16 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 67,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 5.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 62 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "9 existing vulnerabilities detected",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:linkml@1.11.1 runtime dependency closure — what installing the published package pulls in — 80 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:linkml@1.11.1",
                  "assessed": 80
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 80,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 80,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 16
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 76,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.697,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 1666
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "69 of 99 human commits state their intent (structured subject or explanatory body)",
                "points": 37.2,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 69,
                      "sampled": 99
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile",
                "docs/Makefile",
                "examples/PersonSchema/Makefile",
                "packages/linkml_runtime/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.05,
              "toolchain_manifests": [
                "examples/PersonSchema/rust/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0.01
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, docs/Makefile, examples/PersonSchema/Makefile, packages/linkml_runtime/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, docs/Makefile, examples/PersonSchema/Makefile, packages/linkml_runtime/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 11,
                "status": "met",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "5 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 5,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "1 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 859669,
              "source_files_sampled": 703,
              "oversized_source_files": 17
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "17/703 source files over 60KB",
                "points": 53.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 703,
                      "oversized": 17
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "good",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "example_dirs": [
                "examples",
                "notebooks"
              ],
              "has_mcp_signal": false,
              "api_schema_files": [
                "examples/PersonSchema/personinfo/graphql/personinfo.graphql",
                "examples/PersonSchema/personinfo/protobuf/personinfo.proto",
                "examples/organization.graphql",
                "examples/organization.proto",
                "packages/linkml_runtime/src/linkml_runtime/linkml_model/graphql/meta.graphql",
                "packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto",
                "tests/linkml/test_biolink_model/__snapshots__/biolink.graphql",
                "tests/linkml/test_biolink_model/__snapshots__/biolink.proto",
                "tests/linkml/test_generators/__snapshots__/kitchen_sink.graphql",
                "tests/linkml/test_scripts/__snapshots__/gengraphql/meta.graphql",
                "tests/linkml/test_scripts/__snapshots__/genproto/meta.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "examples/PersonSchema/personinfo/graphql/personinfo.graphql, examples/PersonSchema/personinfo/protobuf/personinfo.proto, examples/organization.graphql, examples/organization.proto, packages/linkml_runtime/src/linkml_runtime/linkml_model/graphql/meta.graphql, packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto, tests/linkml/test_biolink_model/__snapshots__/biolink.graphql, tests/linkml/test_biolink_model/__snapshots__/biolink.proto, tests/linkml/test_generators/__snapshots__/kitchen_sink.graphql, tests/linkml/test_scripts/__snapshots__/gengraphql/meta.graphql, tests/linkml/test_scripts/__snapshots__/genproto/meta.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples/PersonSchema/personinfo/graphql/personinfo.graphql, examples/PersonSchema/personinfo/protobuf/personinfo.proto, examples/organization.graphql, examples/organization.proto, packages/linkml_runtime/src/linkml_runtime/linkml_model/graphql/meta.graphql, packages/linkml_runtime/src/linkml_runtime/linkml_model/protobuf/meta.proto, tests/linkml/test_biolink_model/__snapshots__/biolink.graphql, tests/linkml/test_biolink_model/__snapshots__/biolink.proto, tests/linkml/test_generators/__snapshots__/kitchen_sink.graphql, tests/linkml/test_scripts/__snapshots__/gengraphql/meta.graphql, tests/linkml/test_scripts/__snapshots__/genproto/meta.proto"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples, notebooks",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples, notebooks"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-31T07:48:47.527944Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/linkml/linkml.svg",
  "full_name": "linkml/linkml",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenPyPI.