Biolink Model

repository·master·Indexed 42 days ago

https://github.com/biolink/biolink-model

A high-level, open-source data model designed to standardize types and relationships in biological knowledge graphs. It provides a consistent framework for representing biological entities (such as genes, diseases, and chemical substances) and their associations to facilitate interoperability across life science knowledge bases and translational science.

Tokens
16.5K
Snippets
31
Records
69
Agent score
48%

What's inside Biolink Model

  1. What is the Biolink Model?

    master

    The Biolink Model is an open-source, high-level data model designed to standardize types and relationships within biological knowledge graphs. It provides a consistent framework for representing biological knowledge across diverse databases and formats, specifically targeting translational science.

    Key features include:

    • Standardized Entities: Covers a wide range of biological categories such as genes, diseases, chemical substances, organisms, genomics, and phenotypes.
    • Hierarchical Structure: Uses object-oriented classification through a set of hierarchical, interconnected classes (categories).
    • Graph-Oriented Relationships: Defines relationships between entities using predicates (edges).
    • Schema Guidance: Provides class and edge attributes and associations that dictate how entities should relate to one another.
  2. Define node types and categories in RDF

    master

    To specify the type of a Biolink node in RDF, use the rdf:type predicate to link to a specific node type. Additionally, you MAY use the biolink:category predicate to represent extra categories for that node.

    For organizational purposes, rdf:type triples can be partitioned into separate Named Graphs (e.g., placing direct assertions in a main graph and inferred types in an 'inferred' graph).

  3. How the Biolink Model is structured

    master

    The Biolink Model is a high-level schema for representing biological and biomedical knowledge. It is agnostic to the underlying graph formalism, meaning it can be used for both labelled property graphs (like Neo4j) and edge-labelled graphs (like RDF).

    The model is built using LinkML, an open data modeling framework. The model organizes information into a hierarchy of Classes, Slots, and Types.

    Core Hierarchy

    • Classes: Represent entities or associations.
    • Slots: Represent properties (predicates, node properties, or edge properties).
    • Types: Represent data types (e.g., string, integer, IRI).

    Naming Conventions

    While the source YAML (biolink_model.yaml) uses sentence case for definitions, compiled outputs follow these conventions:

    • Classes: CamelCase (e.g., ChemicalEntity)
    • Slots: snake_case (e.g., related_to)
    • Types: snake_case (e.g., iri_type)
  4. Understanding Named Things and Associations

    master

    Biolink Model classes are divided into two primary, disjoint hierarchies that share a common ancestor: biolink:entity.

    Named Things

    Named Things represent real-world entities (e.g., genes, diseases, chemical substances). In a graph, these are represented as nodes. The root of this hierarchy is the biolink:NamedThing class. Each Named Thing has one or more slots (properties) describing it.

    Associations

    Associations represent assertions or statements (e.g., "a gene is associated with a disease"). In a graph, these are represented as edges. The root of this hierarchy is the association class.

    Associations are defined by a "core triple" consisting of three main slots:

    1. subject: A NamedThing (the starting node).
    2. predicate: A Biolink property (the relationship, often descending from biolink:related_to).
    3. object: A NamedThing (the ending node).

    To add nuance, Associations use qualifiers (node qualifiers for subjects/objects or statement qualifiers for the whole triple) and metadata (for provenance and evidence). This combined structure is referred to as S-P-O-Q semantics (Subject, Predicate, Object, Qualifier).

  5. Annotate edges using the Biolink Model

    master

    Edges represent relationships between nodes. You can attach semantics to edges using three methods:

    1. predicate slot: Defines the relationship type. The value must be from the related to hierarchy. Note: Always use the CURIE form with the biolink: prefix (e.g., biolink:interacts_with).
    2. category slot: Defines the association type. The value must be from the association hierarchy. Note: Always use the CURIE form with the biolink: prefix (e.g., biolink:GeneToGeneAssociation).
    3. type slot: Provides additional semantic typing from external ontologies or taxonomies.
  6. Annotate nodes using the Biolink Model

    master

    In a graph representation, each entity is a node. To annotate nodes according to the Biolink Model, you can use three different semantic attachment methods:

    1. category slot: Use this to assign a primary entity class. The value must be a term from the named thing hierarchy. Note: Always use the CURIE form with the biolink: prefix (e.g., biolink:Protein).
    2. type slot: Use this to provide additional semantic typing from any external ontology, controlled vocabulary, or taxonomy (corresponds to rdf:type).
    3. subclass_of slot: Use this to define hierarchical relationships using values from external ontologies (corresponds to rdfs:subClassOf).
  7. Order of qualifier application for object concepts

    master

    When multiple qualifiers are applied to a single object, they follow a specific hierarchical order. Each new qualifier layer applies to the concept composed by all preceding qualifiers. This layering prevents ambiguity.

    The recommended order for composing an object concept is:

    1. object: The core concept (e.g., CDKN2A gene).
    2. object_part: A specific part of the core concept (e.g., promoter of the gene).
    3. object_form_or_variant: A specific form of that part (e.g., mutant_form of the promoter).
    4. object_aspect: A specific aspect of that form (e.g., methylation of the mutant promoter).
    5. object_direction: The direction of the aspect (e.g., increased methylation of the mutant promoter).
    6. object_context: The context of that direction (e.g., increased methylation of the mutant promoter in the nucleus).
  8. Document slot semantics with slot_usage

    master

    The slot_usage property allows you to provide detailed documentation for how a specific slot should be used within a particular class. This is useful for defining the expected range (the type of value) and providing a description for that slot in the context of the class.

    This is particularly helpful for complex classes where a generic slot (like subject) takes on specific semantic meaning.

      gene to gene association:
        is_a: association
        defining_slots:
          - subject
          - object
        slot_usage:
          subject:
            range: gene or gene product
            description: the subject gene in the association.
          object:
            range: gene or gene product
            description: the object gene in the association.
  9. How to read qualifier-based Association Statements

    master

    Biolink Association Statements use a two-level semantic structure. When qualifiers are present, you must interpret the statement at two different levels of granularity:

    1. Core Triple Reading: This is the high-level relationship. It considers only the subject, predicate, and object slots. This reading must be clear and true (e.g., "A affects B").
    2. Full Statement Reading: This provides the detailed context. It combines the core concepts with their respective qualifiers (subject/object qualifiers and statement qualifiers) and uses the qualified_predicate if provided. This reading must also be clear and true (e.g., "A metabolite causes increased B in context C").

    The Full Statement Reading should provide additional detail for the core triple claim, rather than representing an unrelated statement.

  10. Define symmetric and inverse relationships

    master

    Predicate slots can define the directionality and symmetry of relationships:

    • symmetric: A boolean indicating if the relationship is bidirectional (if A -[r]-> B, then B -[r]-> A). Note: This property is not inherited by descendants; it must be explicitly defined for every symmetric predicate.
    • inverse: Specifies the inverse predicate of a given relationship (e.g., if affects is the predicate, affected by is its inverse).
      affects:
        is_a: related to
        inverse: affected by
    
      interacts with:
        domain: named thing
        range: named thing
        symmetric: true
  11. Understand Knowledge Source Retrieval Provenance

    master

    Knowledge source retrieval provenance describes the chain of Information Resources through which knowledge expressed in a Biolink Edge was retrieved and transformed before reaching its current serialized form (e.g., a TRAPI message).

    Key Distinctions:

    • Scope: It tracks the mechanical retrieval and transformation of data between web-accessible systems.
    • Exclusions: It does not trace knowledge back to specific publications/datasets, nor does it cover the reasoning, inference, or analysis activities used to generate knowledge from evidence.

    Example Chain: ARAGORN (ARA) $\rightarrow$ MolePro (KP) $\rightarrow$ ChEMBL (Aggregator) $\rightarrow$ ClinicalTrials.gov (Original Resource)