 syntax="proto3";
 package
// metamodel_version: 1.7.0
// An individual activity in a causal model, representing the individual molecular activity of a single gene product or complex in the context of a particular model
message Activity
 {
  uriorcurie id = 0
  enabledByAssociation enabledBy = 0
  molecularFunctionAssociation molecularFunction = 0
  cellularAnatomicalEntityAssociation occursIn = 0
  biologicalProcessAssociation partOf = 0
 repeated  moleculeAssociation hasInput = 0
  moleculeAssociation hasPrimaryInput = 0
 repeated  moleculeAssociation hasOutput = 0
  moleculeAssociation hasPrimaryOutput = 0
 repeated  causalAssociation causalAssociations = 0
 repeated  provenanceInfo provenances = 0
 }
// An association between an activity and a biological process term
message BiologicalProcessAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  phaseTermObject happensDuring = 0
  biologicalProcessAssociation partOf = 0
  biologicalProcessTermObject term = 0
 }
// A term object that represents a biological process term from GO
message BiologicalProcessTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// A causal association between two activities
message CausalAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  predicateTermObject predicate = 0
  activity downstreamActivity = 0
 }
// An association between an activity and a cell type term
message CellTypeAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  grossAnatomyAssociation partOf = 0
  cellTypeTermObject term = 0
 }
// A term object that represents a cell type term from CL
message CellTypeTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// An association between an activity and a cellular anatomical entity term
message CellularAnatomicalEntityAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  cellTypeAssociation partOf = 0
  cellularAnatomicalEntityTermObject term = 0
 }
// A term object that represents a cellular anatomical entity term from GO
message CellularAnatomicalEntityTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// An association between an activity and an individual gene product
message EnabledByGeneProductAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  geneProductTermObject term = 0
 }
// An association between an activity and a protein complex, where the complex carries out the activity. This should only be used when the activity cannot be attributed to an individual member of the complex, but instead the function is an emergent property of the complex.
message EnabledByProteinComplexAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
 repeated  geneProductTermObject members = 0
  proteinComplexTermObject term = 0
 }
// An individual piece of evidence that is associated with an assertion in a model
message EvidenceItem
 {
  evidenceTermObject term = 0
  publicationObject reference = 0
 repeated  object withObjects = 0
 repeated  provenanceInfo provenances = 0
 }
// A term object that represents an evidence term from ECO. Only ECO terms that map up to a GO GAF evidence code should be used.
message EvidenceTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// A term object that represents a gene product term from GO or UniProtKB
message GeneProductTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// A term object that represents a gross anatomical structure term from UBERON
message GrossAnatomicalStructureTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// An association between an activity and a gross anatomical structure term
message GrossAnatomyAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  grossAnatomyAssociation partOf = 0
  grossAnatomicalStructureTermObject term = 0
 }
// A model of a biological program consisting of a set of causally connected activities.
message Model
 {
  uriorcurie id = 0
  string title = 0
  taxonTermObject taxon = 0
 repeated  taxonTermObject additionalTaxa = 0
  modelStateEnum status = 0
  string dateModified = 0
 repeated  string comments = 0
 repeated  activity activities = 0
 repeated  object objects = 0
 repeated  provenanceInfo provenances = 0
  queryIndex queryIndex = 0
 }
// An association between an activity and a molecular function term
message MolecularFunctionAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  molecularFunctionTermObject term = 0
 }
// A term object that represents a molecular function term from GO
message MolecularFunctionTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// An association between an activity and a molecule term
message MoleculeAssociation
 {
  string type = 0
 repeated  evidenceItem evidence = 0
 repeated  provenanceInfo provenances = 0
  moleculeTermObject term = 0
 }
// A term object that represents a molecule term from CHEBI or UniProtKB
message MoleculeTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// An abstract class for all identified objects in a model
message Object
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// A term object that represents a phase term from GO or UBERON
message PhaseTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// A term object that represents a taxon term from NCBITaxon
message PredicateTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// A term object that represents a protein complex term from GO
message ProteinComplexTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
// Provenance information for an object
message ProvenanceInfo
 {
 repeated  string contributor = 0
  string created = 0
  string date = 0
 repeated  string providedBy = 0
 }
// An object that represents a publication or other kind of reference
message PublicationObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
  string abstractText = 0
  string fullText = 0
 }
// An index that is optionally placed on a model in order to support common query or index operations. Note that this index is not typically populated in the working transactional store for a model, it is derived via computation from core primary model information.
message QueryIndex
 {
  string taxonLabel = 0
  integer numberOfActivities = 0
  integer numberOfEnabledByTerms = 0
  integer numberOfCausalAssociations = 0
  integer lengthOfLongestCausalAssociationPath = 0
  integer numberOfStronglyConnectedComponents = 0
 repeated  publicationObject flattenedReferences = 0
 repeated  termObject modelActivityMolecularFunctionTerms = 0
 repeated  termObject modelActivityMolecularFunctionClosure = 0
 repeated  termObject modelActivityMolecularFunctionRollup = 0
 repeated  termObject modelActivityOccursInTerms = 0
 repeated  termObject modelActivityOccursInClosure = 0
 repeated  termObject modelActivityOccursInRollup = 0
 repeated  termObject modelActivityEnabledByTerms = 0
 repeated  termObject modelActivityEnabledByClosure = 0
 repeated  termObject modelActivityEnabledByRollup = 0
 repeated  termObject modelActivityEnabledByGenes = 0
 repeated  termObject modelActivityPartOfTerms = 0
 repeated  termObject modelActivityPartOfClosure = 0
 repeated  termObject modelActivityPartOfRollup = 0
 repeated  termObject modelActivityHasInputTerms = 0
 repeated  termObject modelActivityHasInputClosure = 0
 repeated  termObject modelActivityHasInputRollup = 0
 repeated  termObject modelTaxon = 0
 repeated  termObject modelTaxonClosure = 0
 repeated  termObject modelTaxonRollup = 0
 repeated  termObject annotonTerms = 0
 repeated  activity startActivities = 0
 repeated  activity endActivities = 0
 repeated  activity intermediateActivities = 0
 repeated  activity singletonActivities = 0
  integer numberOfStartActivities = 0
  integer numberOfEndActivities = 0
  integer numberOfIntermediateActivities = 0
  integer numberOfSingletonActivities = 0
 }
// A term object that represents a taxon term from NCBITaxon
message TaxonTermObject
 {
  uriorcurie id = 0
  string label = 0
  uriorcurie type = 0
  boolean obsolete = 0
 }
