model entry (v1)

model-entry.v1.schema.json

Overview

The common entry core (entry-core.v1.schema.json) plus a required pointer to a full GA4GH Genomic AI Model Card and a small index projection mirrored from the Model Card and from Hugging Face's own listing conventions (internal project documentation Section 3.5.1). Models are referenced, never embedded: the Model Card remains the single authoritative document. hosting_location + access_uri are the fields that let this entry point at a model hosted anywhere: Hugging Face, GitHub, a container registry, a self-hosted endpoint, or a gated-request-only source.

Full specification: spec/model-card.md

This schema extends entry-core.v1.schema.json via allOf: every entry-core field is also required or available on this entry type, in addition to the fields below. This entry type additionally requires: model_card_uri. No properties beyond entry-core's and those listed below are permitted on this entry type.

Properties

  • typestringoptional

    Always "model" for entries of this type.

    • Fixed value: "model"
  • model_card_uristringrequired

    Required. URI to a full GA4GH Genomic AI Model Card (internal project documentation Section 3.5.1, targeting Model Card v0.6.0). This is the deep-dive link the detail page renders prominently; no other Model Card content is duplicated into this entry.

    • Format: uri
  • pipeline_tagstringoptional

    Mirrored from Hugging Face / Model Card Section 5's pipeline tag vocabulary, e.g. "text-generation", "variant-effect-prediction".

  • tagsarray of stringoptional

    Mirrored from Hugging Face / Model Card Section 5.

    • Items must be unique
  • library_namestringoptional

    Mirrored from Hugging Face / Model Card Section 5, e.g. "transformers", "pytorch".

  • base_modelstringoptional

    Mirrored from Hugging Face / Model Card Section 5: the base or foundation model this model was fine-tuned or derived from, if any.

  • openness_classstringoptional

    Optional, non-normative, submitter-asserted: the model's classification under the Model Openness Framework (MOF, Generative AI Commons at the LF AI & Data Foundation, confirmed live and actively maintained at https://isitopen.ai/ and https://lfaidata.foundation/resources/whitepapers/), an orthogonal-to-safety transparency classification of which lifecycle components (data, code, weights, documentation) are publicly released and under what licences. This field points to MOF's own class rather than the registry re-deriving or re-defining it; see the Model Openness Tool (MOT) at the same site for the authoritative per-class component checklist. Not cross-checked against safety_classification[] or certification_tier -- openness and safety/trust are deliberately independent axes.

    • Allowed values: "I", "II", "III"
  • intended_domainstringoptional

    Model Card Section 5.3 fallback for genomic tasks with no accepted Hugging Face pipeline_tag.

  • developed_bystringoptional

    Mirrored from Model Card Section 6.1.

  • release_datestringoptional

    Mirrored from Model Card Section 6.1.

    • Format: date
  • hosting_locationstringoptional

    Where the model itself (weights, container, or gated-access endpoint) is hosted, distinct from where its source repository lives. This is what makes an externally hosted model addressable: a Hugging Face Hub model, a model published only as a GitHub release artefact, a container image, a self-hosted inference endpoint, or a gated-request-only model with no public download.

    • Allowed values: "huggingface", "github", "docker", "self-hosted", "gated-request", "other"
  • access_uristringoptional

    Where to access or request the model, appropriate to hosting_location, e.g. a Hugging Face Hub URL (https://huggingface.co/<org>/<model>), a GitHub Releases URL, a container registry reference, or a gated-access request form URL.

    • Format: uri
  • install_commandstringoptional

    Copy-paste string to install or load the model, Ollama-style, e.g. a Hugging Face `pip install` and load snippet. Omitted where no meaningful install action exists (internal project documentation Section 5.3).

  • last_syncedstringoptional

    Timestamp of the last mirror refresh of any fields on this entry sourced from an external listing (e.g. Hugging Face Hub metadata).

    • Format: date-time
  • model_detailsobjectoptional

    Optional (added in schema revision 1.1). Size, reference precision, weights availability and licence of the model artefact itself, plus known quantised variants.

    • parametersnumber or stringoptional

      Parameter count: a number (e.g. 345000000) or a short string with a K, M, B or T suffix, as the upstream states it (e.g. "7B", "2.5B").

      • Pattern: ^[0-9]+(?:\.[0-9]+)?[KMBT]$
      • Range: 0–unbounded
    • reference_precisionstringoptional

      Numeric precision of the reference (unquantised) weights as published.

      • Allowed values: "fp64", "fp32", "tf32", "fp16", "bf16", "fp8", "int8", "int4", "mixed", "other"
    • weights_availabilitystringoptional

      open: downloadable without approval; gated: downloadable after an access request or licence acceptance; api-only: usable only through a hosted service; unreleased: not available.

      • Allowed values: "open", "gated", "api-only", "unreleased"
    • licencestringoptional

      Licence of the weights, when it differs from or refines the entry's license field: an SPDX identifier from schemas/vocab/licenses.json, or "other".

      • Length: 1–unbounded characters
    • quantisationsarray of objectoptional

      Known quantised variants of the model.

      • formatstringrequired
        • Allowed values: "gguf", "gptq", "awq", "bnb-8bit", "bnb-4bit", "onnx-int8", "mlx", "other"
      • bitsnumberrequired

        Bits per weight (may be fractional for mixed schemes, e.g. 4.5).

        • Range: unbounded–32
      • publisherstringrequired

        "official" when released by the model's own publisher, otherwise the third-party publisher's name or account.

        • Length: 1–unbounded characters
      • urlstringrequired
        • Format: uri
      • size_bytesintegeroptional
        • Range: 0–unbounded
  • registry_enrichmentobjectoptional

    Mirrored verbatim from Model Card Section 6.8b. Documentation-completeness oriented; MUST NOT be merged with an agent entry's trust-and-behaviour-oriented agent_info_snapshot.enrichment (internal project documentation Section 3.5.1).

    • completeness_scorenumberoptional
      • Range: 0–1
    • genomic_quality_scorenumberoptional
      • Range: 0–1
    • compliance_indicatorsarray of stringoptional
    • last_validatedstringoptional
      • Format: date-time

Raw schema

View raw schema JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://registry.biocommons.ai/schemas/model-entry.v1.schema.json",
  "x-ga4gh-schema-revision": "1.1.1",
  "title": "GA4GH AI Registry: model entry (v1)",
  "description": "The common entry core (entry-core.v1.schema.json) plus a required pointer to a full GA4GH Genomic AI Model Card and a small index projection mirrored from the Model Card and from Hugging Face's own listing conventions (internal project documentation Section 3.5.1). Models are referenced, never embedded: the Model Card remains the single authoritative document. hosting_location + access_uri are the fields that let this entry point at a model hosted anywhere: Hugging Face, GitHub, a container registry, a self-hosted endpoint, or a gated-request-only source.",
  "allOf": [
    {
      "$ref": "entry-core.v1.schema.json"
    },
    {
      "type": "object",
      "properties": {
        "type": {
          "const": "model"
        },
        "model_card_uri": {
          "type": "string",
          "format": "uri",
          "description": "Required. URI to a full GA4GH Genomic AI Model Card (internal project documentation Section 3.5.1, targeting Model Card v0.6.0). This is the deep-dive link the detail page renders prominently; no other Model Card content is duplicated into this entry."
        },
        "pipeline_tag": {
          "type": "string",
          "description": "Mirrored from Hugging Face / Model Card Section 5's pipeline tag vocabulary, e.g. \"text-generation\", \"variant-effect-prediction\"."
        },
        "tags": {
          "type": "array",
          "description": "Mirrored from Hugging Face / Model Card Section 5.",
          "items": {
            "type": "string"
          },
          "uniqueItems": true
        },
        "library_name": {
          "type": "string",
          "description": "Mirrored from Hugging Face / Model Card Section 5, e.g. \"transformers\", \"pytorch\"."
        },
        "base_model": {
          "type": "string",
          "description": "Mirrored from Hugging Face / Model Card Section 5: the base or foundation model this model was fine-tuned or derived from, if any."
        },
        "openness_class": {
          "type": "string",
          "enum": [
            "I",
            "II",
            "III"
          ],
          "description": "Optional, non-normative, submitter-asserted: the model's classification under the Model Openness Framework (MOF, Generative AI Commons at the LF AI & Data Foundation, confirmed live and actively maintained at https://isitopen.ai/ and https://lfaidata.foundation/resources/whitepapers/), an orthogonal-to-safety transparency classification of which lifecycle components (data, code, weights, documentation) are publicly released and under what licences. This field points to MOF's own class rather than the registry re-deriving or re-defining it; see the Model Openness Tool (MOT) at the same site for the authoritative per-class component checklist. Not cross-checked against safety_classification[] or certification_tier -- openness and safety/trust are deliberately independent axes."
        },
        "intended_domain": {
          "type": "string",
          "description": "Model Card Section 5.3 fallback for genomic tasks with no accepted Hugging Face pipeline_tag."
        },
        "developed_by": {
          "type": "string",
          "description": "Mirrored from Model Card Section 6.1."
        },
        "release_date": {
          "type": "string",
          "format": "date",
          "description": "Mirrored from Model Card Section 6.1."
        },
        "hosting_location": {
          "type": "string",
          "description": "Where the model itself (weights, container, or gated-access endpoint) is hosted, distinct from where its source repository lives. This is what makes an externally hosted model addressable: a Hugging Face Hub model, a model published only as a GitHub release artefact, a container image, a self-hosted inference endpoint, or a gated-request-only model with no public download.",
          "enum": [
            "huggingface",
            "github",
            "docker",
            "self-hosted",
            "gated-request",
            "other"
          ]
        },
        "access_uri": {
          "type": "string",
          "format": "uri",
          "description": "Where to access or request the model, appropriate to hosting_location, e.g. a Hugging Face Hub URL (https://huggingface.co/<org>/<model>), a GitHub Releases URL, a container registry reference, or a gated-access request form URL."
        },
        "install_command": {
          "type": "string",
          "description": "Copy-paste string to install or load the model, Ollama-style, e.g. a Hugging Face `pip install` and load snippet. Omitted where no meaningful install action exists (internal project documentation Section 5.3)."
        },
        "recommended_version": {
          "type": "string",
          "description": "MLflow-alias-shaped pointer to the version a visitor should use by default, when this entry tracks more than one published version."
        },
        "last_synced": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last mirror refresh of any fields on this entry sourced from an external listing (e.g. Hugging Face Hub metadata)."
        },
        "model_details": {
          "$ref": "#/$defs/ModelDetails",
          "description": "Optional (added in schema revision 1.1). Size, reference precision, weights availability and licence of the model artefact itself, plus known quantised variants."
        },
        "registry_enrichment": {
          "type": "object",
          "description": "Mirrored verbatim from Model Card Section 6.8b. Documentation-completeness oriented; MUST NOT be merged with an agent entry's trust-and-behaviour-oriented agent_info_snapshot.enrichment (internal project documentation Section 3.5.1).",
          "properties": {
            "completeness_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "genomic_quality_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "compliance_indicators": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "last_validated": {
              "type": "string",
              "format": "date-time"
            }
          },
          "unevaluatedProperties": false
        }
      },
      "required": [
        "model_card_uri"
      ]
    }
  ],
  "$defs": {
    "ModelDetails": {
      "type": "object",
      "properties": {
        "parameters": {
          "type": [
            "number",
            "string"
          ],
          "description": "Parameter count: a number (e.g. 345000000) or a short string with a K, M, B or T suffix, as the upstream states it (e.g. \"7B\", \"2.5B\").",
          "minimum": 0,
          "pattern": "^[0-9]+(?:\\.[0-9]+)?[KMBT]$"
        },
        "reference_precision": {
          "type": "string",
          "description": "Numeric precision of the reference (unquantised) weights as published.",
          "enum": [
            "fp64",
            "fp32",
            "tf32",
            "fp16",
            "bf16",
            "fp8",
            "int8",
            "int4",
            "mixed",
            "other"
          ]
        },
        "weights_availability": {
          "type": "string",
          "description": "open: downloadable without approval; gated: downloadable after an access request or licence acceptance; api-only: usable only through a hosted service; unreleased: not available.",
          "enum": [
            "open",
            "gated",
            "api-only",
            "unreleased"
          ]
        },
        "licence": {
          "type": "string",
          "description": "Licence of the weights, when it differs from or refines the entry's license field: an SPDX identifier from schemas/vocab/licenses.json, or \"other\".",
          "minLength": 1
        },
        "quantisations": {
          "type": "array",
          "description": "Known quantised variants of the model.",
          "items": {
            "$ref": "#/$defs/Quantisation"
          }
        }
      },
      "unevaluatedProperties": false
    },
    "Quantisation": {
      "type": "object",
      "required": [
        "format",
        "bits",
        "publisher",
        "url"
      ],
      "properties": {
        "format": {
          "type": "string",
          "enum": [
            "gguf",
            "gptq",
            "awq",
            "bnb-8bit",
            "bnb-4bit",
            "onnx-int8",
            "mlx",
            "other"
          ]
        },
        "bits": {
          "type": "number",
          "description": "Bits per weight (may be fractional for mixed schemes, e.g. 4.5).",
          "exclusiveMinimum": 0,
          "maximum": 32
        },
        "publisher": {
          "type": "string",
          "description": "\"official\" when released by the model's own publisher, otherwise the third-party publisher's name or account.",
          "minLength": 1
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "size_bytes": {
          "type": "integer",
          "minimum": 0
        }
      },
      "unevaluatedProperties": false
    }
  },
  "unevaluatedProperties": false
}