moonbit-gffkit

    MoonBit GFF3/GTF genome annotation parser, query library, and CLI.

    gff3
    gtf
    genomics
    bioinformatics
    annotation
    Download zip
    Version
    0.1.0
    License
    MIT
    Last updated
    3 months ago
    Downloads
    30

    #moonbit-gffkit

    moonbit-gffkit is a MoonBit toolkit for GFF3 and GTF genome annotation files. It parses annotation rows, keeps attributes queryable, builds a gene-transcript-exon model, and exports compact JSON or BED output for downstream scripts.

    The project is intentionally small at the edges and solid in the middle: pure MoonBit library code, a native CLI, fixture-driven tests, and no runtime service requirement.

    #Features

    • Parse GFF3 and GTF records with checked coordinate validation.
    • Preserve GFF3 key=value attributes, flags, and common percent escapes.
    • Preserve GTF quoted attributes, including values with spaces.
    • Query features by type, attribute, and genomic interval.
    • Build gene -> transcript -> exon/CDS/UTR hierarchies.
    • Export annotations as BED6, deterministic JSON, and tabular summary counts.
    • Run as a library or through the gffkit CLI.

    #Install

    This repository targets the current MoonBit toolchain used during development:

    moon version --all

    Build and test:

    moon check --target all --deny-warn moon test --target all --deny-warn moon fmt --check moon info

    #CLI Usage

    moon run cmd/gffkit -- validate testdata/basic.gff3 moon run cmd/gffkit -- stats testdata/basic.gtf moon run cmd/gffkit -- filter exon testdata/basic.gff3 moon run cmd/gffkit -- to-bed testdata/basic.gff3 moon run cmd/gffkit -- to-json testdata/basic.gtf

    Example output:

    features 5 genes 1 transcripts 1 exons 2 cds 1

    #Library Example

    let text =
    #|chr1 RefSeq gene 1000 5000 . + . ID=gene:BRCA1;Name=BRCA1
    #|
    let annotation = parse_gff3(text)
    let genes = annotation.to_gene_models()
    println(genes[0].id)

    #API Overview

    • parse_gff3(text) parses GFF3 text.
    • parse_gtf(text) parses GTF text.
    • parse_auto(text) detects GFF3/GTF from headers and attribute style.
    • Annotation::filter_by_type(type) returns features of a type.
    • Annotation::find_by_attribute(key, value) returns matching features.
    • Annotation::overlapping(seqid=..., start=..., end=...) returns interval overlaps.
    • Annotation::to_gene_models() builds gene-centric models.
    • Annotation::to_bed() exports BED6.
    • Annotation::to_json() exports stable JSON.
    • Annotation::summary() returns count totals.
    • Reference catalogs expose common feature terms, attributes, biotypes, validation rules, evidence labels, and sequence region labels.

    #Scope

    The first release focuses on annotation text processing. It does not implement tabix indexing, BGZF compression, FASTA sequence extraction, or a genome browser. The public model is shaped so those pieces can be added later without replacing the parser.

    #Repository Notes

    The repository is prepared for hackathon review with source files, tests, CI, license, examples, and submission notes. The current MoonBit source scale is about 5.4k lines including generated interface information. See docs/source-notes.md and docs/competition-checklist.md.

    #License

    MIT.

    Annotation

    pub(all) struct Annotation {
    format : Format
    features : Array[Feature]
    diagnostics : Array[Diagnostic]
    } derive(Eq,
    Debug
    )

    Annotation::attribute_frequencies

    fn Annotation::attribute_frequencies(self : Annotation) -> Array[AttributeFrequency]

    Annotation::attribute_frequency_tsv

    fn Annotation::attribute_frequency_tsv(self : Annotation) -> String

    Annotation::build_interval_index

    fn Annotation::build_interval_index(self : Annotation) -> IntervalIndex

    Annotation::coding_features

    fn Annotation::coding_features(self : Annotation) -> Array[Feature]

    Annotation::count_by_type

    fn Annotation::count_by_type(self : Annotation) -> Array[FeatureCount]

    Annotation::exon_features

    fn Annotation::exon_features(self : Annotation) -> Array[Feature]

    Annotation::feature_table_tsv

    fn Annotation::feature_table_tsv(self : Annotation) -> String

    Annotation::features_by_class

    fn Annotation::features_by_class(self : Annotation, class : FeatureClass) -> Array[Feature]

    Annotation::filter_by_type

    fn Annotation::filter_by_type(self : Annotation, feature_type : String) -> Array[Feature]

    Annotation::find_by_attribute

    fn Annotation::find_by_attribute(self : Annotation, key : String, value : String) -> Array[Feature]

    Annotation::gene_features

    fn Annotation::gene_features(self : Annotation) -> Array[Feature]

    Annotation::gene_metrics_tsv

    fn Annotation::gene_metrics_tsv(self : Annotation) -> String

    Annotation::gene_table_tsv

    fn Annotation::gene_table_tsv(self : Annotation) -> String

    Annotation::infer_attribute_schema

    fn Annotation::infer_attribute_schema(self : Annotation) -> AttributeSchema

    Annotation::metrics

    fn Annotation::metrics(self : Annotation) -> AnnotationMetrics

    Annotation::overlapping

    fn Annotation::overlapping(self : Annotation, seqid~ : String, start~ : Int, end~ : Int) -> Array[Feature]

    Annotation::quality_report

    fn Annotation::quality_report(self : Annotation) -> QualityReport

    Annotation::sequence_summaries

    fn Annotation::sequence_summaries(self : Annotation) -> Array[SequenceSummary]

    Annotation::sequence_summary_tsv

    fn Annotation::sequence_summary_tsv(self : Annotation) -> String

    Annotation::summary

    fn Annotation::summary(self : Annotation) -> Summary

    Annotation::to_bed

    fn Annotation::to_bed(self : Annotation) -> String

    Annotation::to_bed12

    fn Annotation::to_bed12(self : Annotation) -> String

    Annotation::to_gene_models

    fn Annotation::to_gene_models(self : Annotation) -> Array[GeneModel]

    Annotation::to_gff3

    fn Annotation::to_gff3(self : Annotation) -> String

    Annotation::to_gtf

    fn Annotation::to_gtf(self : Annotation) -> String

    Annotation::to_json

    fn Annotation::to_json(self : Annotation) -> String

    Annotation::transcript_features

    fn Annotation::transcript_features(self : Annotation) -> Array[Feature]

    Annotation::transcript_metrics_tsv

    fn Annotation::transcript_metrics_tsv(self : Annotation) -> String

    Annotation::transcript_table_tsv

    fn Annotation::transcript_table_tsv(self : Annotation) -> String

    Annotation::type_report

    fn Annotation::type_report(self : Annotation) -> Array[TypeReportRow]

    Annotation::type_report_tsv

    fn Annotation::type_report_tsv(self : Annotation) -> String

    Annotation::unknown_reference_terms

    fn Annotation::unknown_reference_terms(self : Annotation) -> Array[String]

    Annotation::utr_features

    fn Annotation::utr_features(self : Annotation) -> Array[Feature]

    Annotation::validate

    fn Annotation::validate(self : Annotation) -> ValidationReport

    AnnotationMetrics

    pub(all) struct AnnotationMetrics {
    feature_count : Int
    gene_count : Int
    transcript_count : Int
    exon_count : Int
    cds_count : Int
    seqid_count : Int
    total_feature_bases : Int
    } derive(Eq,
    Debug
    )

    AnnotationMetrics::is_empty

    fn AnnotationMetrics::is_empty(self : AnnotationMetrics) -> Bool

    AnnotationMetrics::mean_feature_length

    fn AnnotationMetrics::mean_feature_length(self : AnnotationMetrics) -> Double

    AnnotationMetrics::to_text

    fn AnnotationMetrics::to_text(self : AnnotationMetrics) -> String

    Attribute

    pub(all) struct Attribute {
    key : String
    value : String
    } derive(Eq,
    Debug
    )

    AttributeFrequency

    pub(all) struct AttributeFrequency {
    key : String
    count : Int
    } derive(Eq,
    Debug
    )

    AttributeFrequency::to_tsv_row

    fn AttributeFrequency::to_tsv_row(self : AttributeFrequency) -> String

    AttributePresence

    pub(all) enum AttributePresence {
    Required
    Optional
    Rare
    } derive(Eq,
    Debug
    )

    AttributePresence::to_string

    fn AttributePresence::to_string(self : AttributePresence) -> String

    AttributeReference

    pub(all) struct AttributeReference {
    key : String
    format : String
    category : String
    description : String
    typical_scope : String
    } derive(Eq,
    Debug
    )

    AttributeReference::to_tsv_row

    fn AttributeReference::to_tsv_row(self : AttributeReference) -> String

    AttributeSchema

    pub(all) struct AttributeSchema {
    rows : Array[AttributeSchemaRow]
    } derive(Eq,
    Debug
    )

    AttributeSchema::optional_keys

    fn AttributeSchema::optional_keys(self : AttributeSchema) -> Array[String]

    AttributeSchema::rare_keys

    fn AttributeSchema::rare_keys(self : AttributeSchema) -> Array[String]

    AttributeSchema::required_keys

    fn AttributeSchema::required_keys(self : AttributeSchema) -> Array[String]

    AttributeSchema::to_tsv

    fn AttributeSchema::to_tsv(self : AttributeSchema) -> String

    AttributeSchemaRow

    pub(all) struct AttributeSchemaRow {
    key : String
    count : Int
    feature_count : Int
    presence : AttributePresence
    example_value : String
    } derive(Eq,
    Debug
    )

    Bed12Record

    pub(all) struct Bed12Record {
    chrom : String
    chrom_start : Int
    chrom_end : Int
    name : String
    score : String
    strand : String
    thick_start : Int
    thick_end : Int
    item_rgb : String
    block_count : Int
    block_sizes : Array[String]
    block_starts : Array[String]
    } derive(Eq,
    Debug
    )

    Bed12Record::to_line

    fn Bed12Record::to_line(self : Bed12Record) -> String

    BiotypeReference

    pub(all) struct BiotypeReference {
    name : String
    family : String
    coding : Bool
    description : String
    } derive(Eq,
    Debug
    )

    BiotypeReference::to_tsv_row

    fn BiotypeReference::to_tsv_row(self : BiotypeReference) -> String

    Diagnostic

    pub(all) struct Diagnostic {
    line : Int
    message : String
    } derive(Eq,
    Debug
    )

    EvidenceReference

    pub(all) struct EvidenceReference {
    code : String
    category : String
    source : String
    description : String
    typical_scope : String
    } derive(Eq,
    Debug
    )

    EvidenceReference::to_tsv_row

    fn EvidenceReference::to_tsv_row(self : EvidenceReference) -> String

    Feature

    pub(all) struct Feature {
    seqid : String
    source : String
    feature_type : String
    start : Int
    end : Int
    score : String?
    strand : Strand
    phase : String?
    attributes : Array[Attribute]
    } derive(Eq,
    Debug
    )

    Feature::attribute

    fn Feature::attribute(self : Feature, key : String) -> String?

    Feature::bed_start

    fn Feature::bed_start(self : Feature) -> Int

    Feature::display_name

    fn Feature::display_name(self : Feature) -> String

    Feature::feature_class

    fn Feature::feature_class(self : Feature) -> FeatureClass

    Feature::has_parent

    fn Feature::has_parent(self : Feature) -> Bool

    Feature::is_coding_feature

    fn Feature::is_coding_feature(self : Feature) -> Bool

    Feature::is_exon_feature

    fn Feature::is_exon_feature(self : Feature) -> Bool

    Feature::is_gene_feature

    fn Feature::is_gene_feature(self : Feature) -> Bool

    Feature::is_regulatory_feature

    fn Feature::is_regulatory_feature(self : Feature) -> Bool

    Feature::is_repeat_feature

    fn Feature::is_repeat_feature(self : Feature) -> Bool

    Feature::is_transcript_feature_public

    fn Feature::is_transcript_feature_public(self : Feature) -> Bool

    Feature::is_utr_feature

    fn Feature::is_utr_feature(self : Feature) -> Bool

    Feature::length

    fn Feature::length(self : Feature) -> Int

    Feature::overlaps

    fn Feature::overlaps(self : Feature, seqid~ : String, start~ : Int, end~ : Int) -> Bool

    Feature::reference_term

    fn Feature::reference_term(self : Feature) -> ReferenceTerm

    Feature::region_string

    fn Feature::region_string(self : Feature) -> String

    Feature::span

    fn Feature::span(self : Feature) -> Span

    Feature::stable_id

    fn Feature::stable_id(self : Feature) -> String

    Feature::to_bed_line

    fn Feature::to_bed_line(self : Feature) -> String

    Feature::to_debug_tsv

    fn Feature::to_debug_tsv(self : Feature) -> String

    Feature::to_gff3_line

    fn Feature::to_gff3_line(self : Feature) -> String

    Feature::to_gtf_line

    fn Feature::to_gtf_line(self : Feature) -> String

    Feature::to_half_open_end

    fn Feature::to_half_open_end(self : Feature) -> Int

    Feature::to_zero_based_start

    fn Feature::to_zero_based_start(self : Feature) -> Int

    FeatureClass

    pub(all) enum FeatureClass {
    GeneClass
    TranscriptClass
    ExonClass
    CdsClass
    UtrClass
    RegulatoryClass
    RepeatClass
    OtherClass(String)
    } derive(Eq,
    Debug
    )

    FeatureClass::to_string

    fn FeatureClass::to_string(self : FeatureClass) -> String

    FeatureCount

    pub(all) struct FeatureCount {
    feature_type : String
    count : Int
    } derive(Eq,
    Debug
    )

    FeatureTermReference

    pub(all) struct FeatureTermReference {
    name : String
    category : String
    parent : String
    description : String
    typical_attribute : String
    } derive(Eq,
    Debug
    )

    FeatureTermReference::to_tsv_row

    fn FeatureTermReference::to_tsv_row(self : FeatureTermReference) -> String

    Format

    pub(all) enum Format {
    GFF3
    GTF
    } derive(Eq,
    Debug
    )

    Format::to_string

    fn Format::to_string(self : Format) -> String

    GeneMetrics

    pub(all) struct GeneMetrics {
    gene_id : String
    transcript_count : Int
    total_exon_bases : Int
    total_cds_bases : Int
    longest_transcript_id : String
    longest_transcript_bases : Int
    gene_span_bases : Int
    } derive(Eq,
    Debug
    )

    GeneMetrics::is_multi_transcript

    fn GeneMetrics::is_multi_transcript(self : GeneMetrics) -> Bool

    GeneMetrics::to_tsv_row

    fn GeneMetrics::to_tsv_row(self : GeneMetrics) -> String

    GeneModel

    pub(all) struct GeneModel {
    id : String
    name : String?
    feature : Feature
    transcripts : Array[TranscriptModel]
    others : Array[Feature]
    } derive(Eq,
    Debug
    )

    GeneModel::metrics

    fn GeneModel::metrics(self : GeneModel) -> GeneMetrics

    IntervalHit

    pub(all) struct IntervalHit {
    feature : Feature
    index : Int
    } derive(Eq,
    Debug
    )

    IntervalIndex

    pub(all) struct IntervalIndex {
    features : Array[Feature]
    } derive(Eq,
    Debug
    )

    IntervalIndex::count_seqid

    fn IntervalIndex::count_seqid(self : IntervalIndex, seqid : String) -> Int

    IntervalIndex::features_on

    fn IntervalIndex::features_on(self : IntervalIndex, seqid : String) -> Array[Feature]

    IntervalIndex::query

    fn IntervalIndex::query(self : IntervalIndex, seqid~ : String, start~ : Int, end~ : Int) -> Array[IntervalHit]

    IntervalIndex::query_span

    fn IntervalIndex::query_span(self : IntervalIndex, span : Span) -> Array[IntervalHit]

    IntervalIndex::seqids

    fn IntervalIndex::seqids(self : IntervalIndex) -> Array[String]

    QualityReport

    pub(all) struct QualityReport {
    score : Int
    feature_count : Int
    gene_count : Int
    transcript_count : Int
    exon_count : Int
    validation_errors : Int
    validation_warnings : Int
    has_required_hierarchy : Bool
    has_attributes : Bool
    has_multiple_seqids : Bool
    } derive(Eq,
    Debug
    )

    QualityReport::grade

    fn QualityReport::grade(self : QualityReport) -> String

    QualityReport::to_text

    fn QualityReport::to_text(self : QualityReport) -> String

    ReferenceTerm

    pub(all) struct ReferenceTerm {
    name : String
    category : String
    description : String
    } derive(Eq,
    Debug
    )

    SequenceRegionReference

    pub(all) struct SequenceRegionReference {
    name : String
    category : String
    topology : String
    description : String
    typical_scope : String
    } derive(Eq,
    Debug
    )

    SequenceRegionReference::to_tsv_row

    fn SequenceRegionReference::to_tsv_row(self : SequenceRegionReference) -> String

    SequenceSummary

    pub(all) struct SequenceSummary {
    seqid : String
    feature_count : Int
    min_start : Int
    max_end : Int
    strand_plus_count : Int
    strand_minus_count : Int
    strand_unknown_count : Int
    } derive(Eq,
    Debug
    )

    SequenceSummary::span_bases

    fn SequenceSummary::span_bases(self : SequenceSummary) -> Int

    SequenceSummary::to_tsv_row

    fn SequenceSummary::to_tsv_row(self : SequenceSummary) -> String

    Severity

    pub(all) enum Severity {
    Info
    Warning
    Error
    } derive(Eq,
    Debug
    )

    Severity::to_string

    fn Severity::to_string(self : Severity) -> String

    Span

    pub(all) struct Span {
    seqid : String
    start : Int
    end : Int
    } derive(Eq,
    Debug
    )

    Span::contains

    fn Span::contains(self : Span, position~ : Int) -> Bool

    Span::distance_to

    fn Span::distance_to(self : Span, other : Span) -> Int?

    Span::expand

    fn Span::expand(self : Span, bases : Int) -> Span

    Span::length

    fn Span::length(self : Span) -> Int

    Span::overlap_length

    fn Span::overlap_length(self : Span, other : Span) -> Int

    Span::overlaps

    fn Span::overlaps(self : Span, other : Span) -> Bool

    Span::shift

    fn Span::shift(self : Span, offset : Int) -> Span

    Span::to_bed_end

    fn Span::to_bed_end(self : Span) -> Int

    Span::to_bed_start

    fn Span::to_bed_start(self : Span) -> Int

    Span::to_region_string

    fn Span::to_region_string(self : Span) -> String

    Strand

    pub(all) enum Strand {
    Plus
    Minus
    Unknown
    NotApplicable
    } derive(Eq,
    Debug
    )

    Strand::to_string

    fn Strand::to_string(self : Strand) -> String

    Summary

    pub(all) struct Summary {
    feature_count : Int
    gene_count : Int
    transcript_count : Int
    exon_count : Int
    cds_count : Int
    } derive(Eq,
    Debug
    )

    TranscriptMetrics

    pub(all) struct TranscriptMetrics {
    transcript_id : String
    exon_count : Int
    cds_count : Int
    utr_count : Int
    exon_bases : Int
    cds_bases : Int
    utr_bases : Int
    intron_count : Int
    intron_bases : Int
    span_bases : Int
    } derive(Eq,
    Debug
    )

    TranscriptMetrics::coding_ratio

    fn TranscriptMetrics::coding_ratio(self : TranscriptMetrics) -> Double

    TranscriptMetrics::has_cds

    fn TranscriptMetrics::has_cds(self : TranscriptMetrics) -> Bool

    TranscriptMetrics::has_introns

    fn TranscriptMetrics::has_introns(self : TranscriptMetrics) -> Bool

    TranscriptMetrics::to_tsv_row

    fn TranscriptMetrics::to_tsv_row(self : TranscriptMetrics) -> String

    TranscriptModel

    pub(all) struct TranscriptModel {
    id : String
    name : String?
    feature : Feature
    exons : Array[Feature]
    cds : Array[Feature]
    utrs : Array[Feature]
    others : Array[Feature]
    } derive(Eq,
    Debug
    )

    TranscriptModel::metrics

    TranscriptModel::to_bed12

    TypeReportRow

    pub(all) struct TypeReportRow {
    feature_type : String
    count : Int
    total_bases : Int
    } derive(Eq,
    Debug
    )

    TypeReportRow::to_tsv_row

    fn TypeReportRow::to_tsv_row(self : TypeReportRow) -> String

    ValidationIssue

    pub(all) struct ValidationIssue {
    severity : Severity
    code : String
    line : Int
    feature_type : String
    message : String
    } derive(Eq,
    Debug
    )

    ValidationIssue::is_error

    fn ValidationIssue::is_error(self : ValidationIssue) -> Bool

    ValidationIssue::is_info

    fn ValidationIssue::is_info(self : ValidationIssue) -> Bool

    ValidationIssue::is_warning

    fn ValidationIssue::is_warning(self : ValidationIssue) -> Bool

    ValidationIssue::rule_reference

    ValidationIssue::summary

    fn ValidationIssue::summary(self : ValidationIssue) -> String

    ValidationReport

    pub(all) struct ValidationReport {
    issues : Array[ValidationIssue]
    } derive(Eq,
    Debug
    )

    ValidationReport::codes

    fn ValidationReport::codes(self : ValidationReport) -> Array[String]

    ValidationReport::count_by_severity

    fn ValidationReport::count_by_severity(self : ValidationReport, severity : Severity) -> Int

    ValidationReport::error_count

    fn ValidationReport::error_count(self : ValidationReport) -> Int

    ValidationReport::filter_by_code

    fn ValidationReport::filter_by_code(self : ValidationReport, code : String) -> Array[ValidationIssue]

    ValidationReport::filter_by_feature_type

    fn ValidationReport::filter_by_feature_type(self : ValidationReport, feature_type : String) -> Array[ValidationIssue]

    ValidationReport::has_errors

    fn ValidationReport::has_errors(self : ValidationReport) -> Bool

    ValidationReport::info_count

    fn ValidationReport::info_count(self : ValidationReport) -> Int

    ValidationReport::issue_count

    fn ValidationReport::issue_count(self : ValidationReport) -> Int

    ValidationReport::summary_tsv

    fn ValidationReport::summary_tsv(self : ValidationReport) -> String

    ValidationReport::to_text

    fn ValidationReport::to_text(self : ValidationReport) -> String

    ValidationReport::warning_count

    fn ValidationReport::warning_count(self : ValidationReport) -> Int

    ValidationRuleReference

    pub(all) struct ValidationRuleReference {
    code : String
    severity : Severity
    format : String
    description : String
    repair_hint : String
    } derive(Eq,
    Debug
    )

    ValidationRuleReference::to_tsv_row

    fn ValidationRuleReference::to_tsv_row(self : ValidationRuleReference) -> String

    coding_reference_biotypes

    fn coding_reference_biotypes() -> Array[BiotypeReference]

    evidence_references

    fn evidence_references() -> Array[EvidenceReference]

    evidence_references_by_category

    fn evidence_references_by_category(category : String) -> Array[EvidenceReference]

    evidence_references_by_source

    fn evidence_references_by_source(source : String) -> Array[EvidenceReference]

    example_complex_gff3

    fn example_complex_gff3() -> String

    example_complex_gtf

    fn example_complex_gtf() -> String

    feature_term_references

    fn feature_term_references() -> Array[FeatureTermReference]

    feature_term_references_by_category

    fn feature_term_references_by_category(category : String) -> Array[FeatureTermReference]

    find_evidence_reference

    fn find_evidence_reference(code : String) -> EvidenceReference

    find_feature_term_reference

    fn find_feature_term_reference(name : String) -> FeatureTermReference

    find_reference_attribute

    fn find_reference_attribute(key : String) -> AttributeReference

    find_reference_biotype

    fn find_reference_biotype(name : String) -> BiotypeReference

    find_reference_term

    fn find_reference_term(name : String) -> ReferenceTerm

    find_sequence_region_reference

    fn find_sequence_region_reference(name : String) -> SequenceRegionReference

    find_validation_rule_reference

    fn find_validation_rule_reference(code : String) -> ValidationRuleReference

    noncoding_reference_biotypes

    fn noncoding_reference_biotypes() -> Array[BiotypeReference]

    parse_auto

    fn parse_auto(text : String) -> Annotation raise

    parse_gff3

    fn parse_gff3(text : String) -> Annotation raise

    parse_gtf

    fn parse_gtf(text : String) -> Annotation raise

    reference_attributes

    fn reference_attributes() -> Array[AttributeReference]

    reference_attributes_by_category

    fn reference_attributes_by_category(category : String) -> Array[AttributeReference]

    reference_attributes_by_format

    fn reference_attributes_by_format(format : String) -> Array[AttributeReference]

    reference_attributes_tsv

    fn reference_attributes_tsv() -> String

    reference_biotypes

    fn reference_biotypes() -> Array[BiotypeReference]

    reference_biotypes_by_family

    fn reference_biotypes_by_family(family : String) -> Array[BiotypeReference]

    reference_term_categories

    fn reference_term_categories() -> Array[String]

    reference_terms

    fn reference_terms() -> Array[ReferenceTerm]

    reference_terms_by_category

    fn reference_terms_by_category(category : String) -> Array[ReferenceTerm]

    sequence_region_references

    fn sequence_region_references() -> Array[SequenceRegionReference]

    sequence_region_references_by_category

    fn sequence_region_references_by_category(category : String) -> Array[SequenceRegionReference]

    sequence_region_references_by_topology

    fn sequence_region_references_by_topology(topology : String) -> Array[SequenceRegionReference]

    validation_rule_references

    fn validation_rule_references() -> Array[ValidationRuleReference]

    validation_rule_references_by_format

    fn validation_rule_references_by_format(format : String) -> Array[ValidationRuleReference]