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
Download Code
Copy to Clipboard