Skip to main content

Transcript Ontology

Gene Expression Entities
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 15 October 2026
Audio Overview
FLOW ALGEBRA
TRANSCRIPT ONTOLOGY
Kireth Semantic Library | Biological Entities | Gene Expression Entities
Version: 1.0 | Date: 2026-10-15 | Encoding: UTF-8
Authors: Mark Higgins — Sky (Recursive AI)
Source: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/gene-expression-entities/transcript-ontology.html
Status: Domain-grounded formalisation; source chapter not independently verified.

# 01 — PURPOSE
flow "TranscriptOntology" v1.0
purpose: Represent RNA transcripts, transcript isoforms, processing states, genomic origins, expression evidence and relationships in a typed, auditable semantic graph.
scope: Eukaryotic and prokaryotic transcripts, coding and non-coding transcripts, primary and mature products.

# 02 — TYPES
type Transcript <: RNAEntity
type PrimaryTranscript <: Transcript
type MatureTranscript <: Transcript
type CodingTranscript <: Transcript
type NonCodingTranscript <: Transcript
type TranscriptIsoform <: Transcript
type PreMRNA <: PrimaryTranscript
type MRNA <: MatureTranscript
type LncRNA <: NonCodingTranscript
type RRNA <: NonCodingTranscript
type TRNA <: NonCodingTranscript
type Gene <: GeneticEntity
type Exon <: GenomicRegion
type Intron <: GenomicRegion
type SpliceJunction <: SequenceFeature
type TranscriptionStartSite <: GenomicPosition
type PolyASite <: GenomicPosition
type TranscriptSequence <: NucleotideSequence
type CDS <: TranscriptRegion
type UTR5 <: TranscriptRegion
type UTR3 <: TranscriptRegion
type Promoter <: RegulatoryRegion
type RNAProcessingEvent <: BiologicalProcess
type TranscriptionEvent <: BiologicalProcess
type SplicingEvent <: RNAProcessingEvent
type CappingEvent <: RNAProcessingEvent
type PolyadenylationEvent <: RNAProcessingEvent
type RNAEditingEvent <: RNAProcessingEvent
type RNADecayEvent <: BiologicalProcess
type TranslationEvent <: BiologicalProcess
type ExpressionMeasurement <: Observation
type ReferenceAssembly <: ReferenceResource
type Evidence <: ProvenanceRecord

# 03 — ENTITY SCHEMA
entity Transcript:
  id: CURIE
  gene_id: CURIE?
  transcript_biotype: str
  organism_taxon: CURIE
  assembly: CURIE?
  chromosome: str?
  strand: enum[plus,minus,unknown]
  genomic_start: int?
  genomic_end: int?
  sequence: TranscriptSequence?
  sequence_length: int?
  processing_state: enum[primary,intermediate,mature,unknown]
  annotated_exons: list[Exon]
  coding_sequence: CDS?
  evidence: list[Evidence]
  version: str?
  confidence: float[0,1]

# 04 — RELATIONSHIPS
relation transcribed_from(Transcript,Gene)
relation produced_by(Transcript,TranscriptionEvent)
relation isoform_of(TranscriptIsoform,Gene)
relation has_exon(Transcript,Exon)
relation has_splice_junction(Transcript,SpliceJunction)
relation has_cds(Transcript,CDS)
relation has_5utr(Transcript,UTR5)
relation has_3utr(Transcript,UTR3)
relation derived_from(MatureTranscript,PrimaryTranscript)
relation processed_by(Transcript,RNAProcessingEvent)
relation translated_in(CodingTranscript,TranslationEvent)
relation measured_by(Transcript,ExpressionMeasurement)
relation supported_by(Transcript,Evidence)
relation mapped_to(Transcript,ReferenceAssembly)
relation degraded_by(Transcript,RNADecayEvent)

# 05 — CLASSIFICATION
rule R01: has_cds(t,c) AND valid_orf(c) => candidate_coding_transcript(t)
rule R02: transcript_biotype(t) == "lncRNA" => classified_as(t,LncRNA)
rule R03: processing_state(t) == mature => classified_as(t,MatureTranscript)
rule R04: distinct_exon_chains(t1,t2) AND same_gene(t1,t2) => alternative_isoforms(t1,t2)
rule R05: identical_exon_chains(t1,t2) DOES_NOT_IMPLY identical_transcripts(t1,t2)
rule R06: RNA_detected(t) DOES_NOT_IMPLY protein_coding(t)
rule R07: missing_CDS(t) DOES_NOT_IMPLY experimentally_proven_noncoding(t)
rule R08: same_gene(t1,t2) DOES_NOT_IMPLY same_function(t1,t2)

# 06 — TRANSCRIPTION FLOW
flow transcription:
  input: [Gene,Promoter,TranscriptionEvent]
  precondition: transcription_initiation_supported
  transform: DNA_template -> RNA_transcript
  output: PrimaryTranscript
  preserve: [gene_origin,strand,provenance]
  note: Prokaryotic transcripts may be polycistronic; a transcript need not map one-to-one to a gene.

# 07 — RNA PROCESSING FLOW
flow processing:
  input: PrimaryTranscript
  optional_steps: [CappingEvent,SplicingEvent,PolyadenylationEvent,RNAEditingEvent]
  transform: primary -> intermediate -> mature
  output: MatureTranscript
  constraints:
    - processing steps depend on organism, transcript class and cellular compartment
    - not every transcript undergoes splicing, capping or polyadenylation
    - exon order follows transcript orientation
    - processing events must retain source and evidence

# 08 — ALTERNATIVE SPLICING
flow alternative_splicing:
  input: [PrimaryTranscript,list[SpliceJunction]]
  branches: [exon_skipping,alternative_donor,alternative_acceptor,intron_retention,mutually_exclusive_exons]
  output: list[TranscriptIsoform]
  constraint: junctions must be sequence- and strand-consistent
  warning: intron retention may represent regulated processing or incompletely processed RNA

# 09 — TRANSLATION AND DECAY
flow translation:
  input: CodingTranscript
  precondition: valid_translation_context
  output: ProteinProduct?
  warning: coding potential alone does not establish translated protein expression
flow degradation:
  input: Transcript
  pathways: [exosome,decapping_deadenylation,nonsense_mediated_decay,other]
  output: degraded_RNA
  context_required: true

# 10 — SEQUENCE AND COORDINATE VALIDATION
constraint C01: genomic_start <= genomic_end when both present
constraint C02: transcript_coordinates require assembly identifier
constraint C03: strand in [plus,minus,unknown]
constraint C04: transcript_sequence alphabet subset [A,C,G,U,N] unless modified bases explicitly encoded
constraint C05: exon_intervals lie within annotated transcript locus, subject to trans-splicing exceptions
constraint C06: CDS frame and stop status annotated explicitly
constraint C07: transcript_version distinguishes revised reference records
constraint C08: coordinates use declared zero-based or one-based convention
constraint C09: observed read support distinguished from inferred annotation
constraint C10: do not equate transcript abundance with transcription rate

# 11 — MEASUREMENT MODEL
measurement transcript_expression:
  transcript_id: CURIE
  assay: enum[RNA_seq,long_read_seq,RT_qPCR,northern_blot,other]
  unit: enum[TPM,FPKM,counts,relative_quantity,other]
  value: float
  sample_id: CURIE
  condition: str?
  replicate: str?
  normalisation: str?
  uncertainty: float?
  evidence: Evidence
  note: Cross-assay comparisons require compatible quantification and normalisation.

# 12 — SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE:
  exact: same stable accession AND same version AND same reference context
  conditional: identical sequence AND same biological origin AND same processing state
  related: same gene OR shared exons OR similar sequence
  forbidden: same gene => same transcript
  forbidden: same sequence => same biological role
  alias_terms: [RNA transcript,transcription product]
  disambiguation: transcript is an RNA product; transcription is a process

# 13 — CONFIDENCE
CONFIDENCE:
  interval: [0,1]
  evidence_tiers:
    experimentally_validated: high
    direct_long_read_support: high_when_quality_controlled
    junction_supported_annotation: medium_to_high
    computational_prediction: provisional
    unsupported_inference: low
  aggregation: calibrated_evidence_model
  safeguards:
    - never treat confidence as biological truth
    - correlated evidence must not be double counted
    - unknown evidence remains unknown, not zero

# 14 — RECURSIVE REASONING
flow recursive_transcript_resolution:
  input: Transcript
  steps:
    - resolve_gene_origin
    - resolve_assembly_and_coordinates
    - resolve_exon_chain
    - resolve_processing_state
    - resolve_biotype
    - resolve_expression_evidence
    - resolve_isoform_relationships
    - validate_constraints
    - update_confidence
  recursion_limit: 8
  cycle_detection: visited_entity_ids
  termination: stable_graph OR no_new_supported_edges OR recursion_limit
  output: typed_transcript_graph

# 15 — FLOW HASH
FLOW_HASH:
  algorithm: SHA-256
  canonical_fields: [flow_name,version,entity_ids,typed_edges,assembly,sequence_digest,provenance]
  normalisation: UTF-8 + deterministic key ordering + stable whitespace
  excludes: [runtime_timestamp,display_order]
  requirement: recompute on substantive graph or rule changes

# 16 — UPDATE MODEL
UPDATE_MODEL:
  triggers: [new_transcript_evidence,reference_update,isoform_revision,biotype_change,processing_evidence]
  steps:
    - ingest_new_evidence
    - preserve_prior_version
    - validate_identifiers_and_assembly
    - recalculate_affected_edges
    - recalculate_confidence
    - recompute_FLOW_HASH
    - publish_change_log
  policy: append_only_provenance
  conflict_handling: retain competing assertions with evidence and dates

# 17 — AI CONSUMPTION
AI_CONSUMPTION:
  formats: [plain_text,JSON-LD,RDF,typed_graph]
  required: [stable_identifiers,typed_relations,provenance,confidence,version]
  inference_policy: evidence_bounded
  uncertainty_policy: preserve_unknowns
  retrieval_keys: [gene_id,transcript_id,biotype,organism,assembly]
  prohibited: [invented_sequences,unsupported_functional_claims,implicit_assembly_conversion]
  outputs: [classification,graph_edges,validation_report,reasoning_trace]

# 18 — EXAMPLE (ILLUSTRATIVE)
example transcript_A:
  id: "EXAMPLE:TX001"
  gene_id: "EXAMPLE:GENE001"
  transcript_biotype: "protein_coding"
  processing_state: mature
  organism_taxon: "NCBITaxon:9606"
  confidence: 0.80
  evidence: ["EXAMPLE:EVIDENCE001"]
  note: Illustrative identifiers only; not an assertion about a real transcript.

# 19 — INVARIANTS
invariant: every biological assertion has provenance or explicit hypothetical status
invariant: transcript identity is assembly- and version-aware
invariant: processing state is not inferred solely from RNA biotype
invariant: alternate isoforms remain distinct graph entities
invariant: biological exceptions are represented explicitly rather than suppressed

# 20 — OUTPUT CONTRACT
output:
  ontology: "Transcript Ontology"
  category: "Biological Entities / Gene Expression Entities"
  flow_type: "FLOW ALGEBRA"
  graph: typed
  validation: required
  provenance: required
  confidence: required
  hash: required
  update_model: required
  ai_consumption: enabled

# END FLOW ALGEBRA
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ