PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX pav: <http://purl.org/pav/>
PREFIX dce: <http://purl.org/dc/elements/1.1/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX lego: <http://geneontology.org/lego/>
PREFIX linkml: <https://w3id.org/linkml/>
PREFIX biolink: <https://w3id.org/biolink/vocab/>
PREFIX gocam: <https://w3id.org/gocam/>
PREFIX OBAN: <http://purl.org/oban/>
PREFIX goshapes: <http://purl.obolibrary.org/obo/go/shapes/>
PREFIX RO: <http://purl.obolibrary.org/obo/RO_>
PREFIX NCBITaxon: <http://purl.obolibrary.org/obo/NCBITaxon_>
PREFIX BFO: <http://purl.obolibrary.org/obo/BFO_>
PREFIX GO: <http://purl.obolibrary.org/obo/GO_>
PREFIX ECO: <http://purl.obolibrary.org/obo/ECO_>
PREFIX gomodel: <http://model.geneontology.org/>
PREFIX oio: <http://www.geneontology.org/formats/oboInOwl#>
PREFIX orcid: <https://orcid.org/>
PREFIX UniProtKB: <http://purl.uniprot.org/uniprot/>
PREFIX PMID: <http://identifiers.org/pubmed/>
PREFIX GOREF: <http://purl.obolibrary.org/obo/go/references/>
PREFIX DOI: <http://doi.org/>
PREFIX CHEBI: <http://purl.obolibrary.org/obo/CHEBI_>
PREFIX CL: <http://purl.obolibrary.org/obo/CL_>
PREFIX PO: <http://purl.obolibrary.org/obo/PO_>
PREFIX FAO: <http://purl.obolibrary.org/obo/FAO_>
PREFIX DDANAT: <http://purl.obolibrary.org/obo/DDANAT_>
PREFIX UBERON: <http://purl.obolibrary.org/obo/UBERON_>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX RHEA: <http://rdf.rhea-db.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX vann: <http://purl.org/vocab/vann/>

<https://w3id.org/gocam> a owl:Ontology ;
  rdfs:comment """Gene Ontology Causal Activity Model (GO-CAM) Schema.

This schema provides a way of representing causal pathway [Models](Model.md). A model consists of a set of
[Activity](Activity.md) objects, where each activity object represents the function of either an [individual
gene product](EnabledByGeneProductAssociation), a [protein complex of gene products](EnabledByGeneProductAssociation),
or a set of possible gene products.

Each [Models](Model.md) has associated metadata slots. Some slots such as [id](id.md), [title](title.md),
and [status](status.md) are *required*.""" ;
  rdfs:seeAlso <https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7012280/> , <https://docs.google.com/presentation/d/1ja0Vkw0AoENJ58emM77dGnqPtY1nfIJMeyVnObBxIxI/edit#slide=id.p8> ;
  vann:preferredNamespacePrefix "gocam" ;
  vann:preferredNamespaceUri "https://w3id.org/gocam/"^^xsd:anyURI ;
  sh:declare [
    sh:prefix "pav" ;
    sh:namespace "http://purl.org/pav/"^^xsd:anyURI
  ] , [
    sh:prefix "dce" ;
    sh:namespace "http://purl.org/dc/elements/1.1/"^^xsd:anyURI
  ] , [
    sh:prefix "dct" ;
    sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI
  ] , [
    sh:prefix "rdfs" ;
    sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI
  ] , [
    sh:prefix "lego" ;
    sh:namespace "http://geneontology.org/lego/"^^xsd:anyURI
  ] , [
    sh:prefix "linkml" ;
    sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI
  ] , [
    sh:prefix "biolink" ;
    sh:namespace "https://w3id.org/biolink/vocab/"^^xsd:anyURI
  ] , [
    sh:prefix "gocam" ;
    sh:namespace "https://w3id.org/gocam/"^^xsd:anyURI
  ] , [
    sh:prefix "OBAN" ;
    sh:namespace "http://purl.org/oban/"^^xsd:anyURI
  ] , [
    sh:prefix "goshapes" ;
    sh:namespace "http://purl.obolibrary.org/obo/go/shapes/"^^xsd:anyURI
  ] , [
    sh:prefix "RO" ;
    sh:namespace "http://purl.obolibrary.org/obo/RO_"^^xsd:anyURI
  ] , [
    sh:prefix "NCBITaxon" ;
    sh:namespace "http://purl.obolibrary.org/obo/NCBITaxon_"^^xsd:anyURI
  ] , [
    sh:prefix "BFO" ;
    sh:namespace "http://purl.obolibrary.org/obo/BFO_"^^xsd:anyURI
  ] , [
    sh:prefix "GO" ;
    sh:namespace "http://purl.obolibrary.org/obo/GO_"^^xsd:anyURI
  ] , [
    sh:prefix "ECO" ;
    sh:namespace "http://purl.obolibrary.org/obo/ECO_"^^xsd:anyURI
  ] , [
    sh:prefix "gomodel" ;
    sh:namespace "http://model.geneontology.org/"^^xsd:anyURI
  ] , [
    sh:prefix "oio" ;
    sh:namespace "http://www.geneontology.org/formats/oboInOwl#"^^xsd:anyURI
  ] , [
    sh:prefix "orcid" ;
    sh:namespace "https://orcid.org/"^^xsd:anyURI
  ] , [
    sh:prefix "UniProtKB" ;
    sh:namespace "http://purl.uniprot.org/uniprot/"^^xsd:anyURI
  ] , [
    sh:prefix "PMID" ;
    sh:namespace "http://identifiers.org/pubmed/"^^xsd:anyURI
  ] , [
    sh:prefix "GOREF" ;
    sh:namespace "http://purl.obolibrary.org/obo/go/references/"^^xsd:anyURI
  ] , [
    sh:prefix "DOI" ;
    sh:namespace "http://doi.org/"^^xsd:anyURI
  ] , [
    sh:prefix "CHEBI" ;
    sh:namespace "http://purl.obolibrary.org/obo/CHEBI_"^^xsd:anyURI
  ] , [
    sh:prefix "CL" ;
    sh:namespace "http://purl.obolibrary.org/obo/CL_"^^xsd:anyURI
  ] , [
    sh:prefix "PO" ;
    sh:namespace "http://purl.obolibrary.org/obo/PO_"^^xsd:anyURI
  ] , [
    sh:prefix "FAO" ;
    sh:namespace "http://purl.obolibrary.org/obo/FAO_"^^xsd:anyURI
  ] , [
    sh:prefix "DDANAT" ;
    sh:namespace "http://purl.obolibrary.org/obo/DDANAT_"^^xsd:anyURI
  ] , [
    sh:prefix "UBERON" ;
    sh:namespace "http://purl.obolibrary.org/obo/UBERON_"^^xsd:anyURI
  ] , [
    sh:prefix "dcterms" ;
    sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI
  ] , [
    sh:prefix "RHEA" ;
    sh:namespace "http://rdf.rhea-db.org/"^^xsd:anyURI
  ] .

gocam:Model a owl:Class ;
  rdfs:comment "A model of a biological program consisting of a set of causally connected activities." ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty dct:title ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty dct:title ;
    owl:cardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:taxon ;
    owl:allValuesFrom gocam:TaxonTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:taxon ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:additional_taxa ;
    owl:allValuesFrom gocam:TaxonTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty pav:status ;
    owl:allValuesFrom gocam:ModelStateEnum
  ] , [
    a owl:Restriction ;
    owl:onProperty pav:status ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty dct:date ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty dct:date ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty rdfs:comment ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:activities ;
    owl:allValuesFrom gocam:Activity
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:molecules ;
    owl:allValuesFrom gocam:MoleculeNode
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:objects ;
    owl:allValuesFrom gocam:Object
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:provenances ;
    owl:allValuesFrom gocam:ProvenanceInfo
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:query_index ;
    owl:allValuesFrom gocam:QueryIndex
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:query_index ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:Activity a owl:Class ;
  rdfs:comment "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" ;
  skos:altLabel "annoton" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty gocam:enabled_by ;
    owl:allValuesFrom gocam:EnabledByAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:enabled_by ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:molecular_function ;
    owl:allValuesFrom gocam:MolecularFunctionAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:molecular_function ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:occurs_in ;
    owl:allValuesFrom gocam:CellularAnatomicalEntityAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:occurs_in ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:allValuesFrom gocam:BiologicalProcessAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:happens_during ;
    owl:allValuesFrom gocam:PhaseAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:happens_during ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:molecular_associations ;
    owl:allValuesFrom gocam:MoleculeAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:causal_associations ;
    owl:allValuesFrom gocam:CausalAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:provenances ;
    owl:allValuesFrom gocam:ProvenanceInfo
  ] .

gocam:MoleculeNode a owl:Class ;
  rdfs:comment "An individual molecule or chemical entity in a causal model, representing a specific occurrence of a molecule that participates in activities as an input or output and may be localized to a particular cellular location." ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:MoleculeTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:cardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:located_in ;
    owl:allValuesFrom gocam:CellularAnatomicalEntityAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:located_in ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:EvidenceItem a owl:Class ;
  rdfs:comment "An individual piece of evidence that is associated with an assertion in a model" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:EvidenceTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:reference ;
    owl:allValuesFrom gocam:PublicationObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:reference ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:with_objects ;
    owl:allValuesFrom gocam:Object
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:provenances ;
    owl:allValuesFrom gocam:ProvenanceInfo
  ] .

gocam:Association a owl:Class ;
  rdfs:comment "An abstract grouping for different kinds of evidence-associated provenance" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty gocam:type ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:type ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:evidence ;
    owl:allValuesFrom gocam:EvidenceItem
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:provenances ;
    owl:allValuesFrom gocam:ProvenanceInfo
  ] , [
    a owl:Class ;
    owl:unionOf ( gocam:EnabledByAssociation gocam:CausalAssociation gocam:TermAssociation gocam:MoleculeAssociation )
  ] .

gocam:EnabledByAssociation a owl:Class ;
  rdfs:comment """An association between an activity and the gene product or complex or set of potential gene products
  that carry out that activity.""" ;
  skos:note "Note that this is an abstract class, and should ot be instantiated directly, instead instantiate a subclass depending on what kind of entity enables the association" ;
  rdfs:subClassOf gocam:Association , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:InformationBiomacromoleculeTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Class ;
    owl:unionOf ( gocam:EnabledByGeneProductAssociation gocam:EnabledByProteinComplexAssociation )
  ] .

gocam:EnabledByGeneProductAssociation a owl:Class ;
  rdfs:comment "An association between an activity and an individual gene product" ;
  rdfs:subClassOf gocam:EnabledByAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:allValuesFrom gocam:PartOfProteinComplexAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:GeneProductTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:EnabledByProteinComplexAssociation a owl:Class ;
  rdfs:comment "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." ;
  skos:note "Protein complexes can be specified either by *pre-composition* or *post-composition*. For pre-composition, a species-specific named protein complex (such as an entry in ComplexPortal) can be specified, in which case the value of `has_part` is *implicit*. For post-composition, the placeholder term \"GO:0032991\" can be used, in which case `has_part` must be *explicitly* specified. An intermediate case is when a named class in GO that is a subclass of \"GO:0032991\" is used. In this case, `has_part` should still be specified, as this may only be partially specified by the GO class." ;
  rdfs:subClassOf gocam:EnabledByAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:has_part ;
    owl:allValuesFrom gocam:ProteinComplexHasPartAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:ProteinComplexTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:PartOfProteinComplexAssociation a owl:Class ;
  rdfs:comment "An association between a gene product and a protein complex that it is a part of." ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:has_part ;
    owl:allValuesFrom gocam:ProteinComplexHasPartAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:ProteinComplexTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:ProteinComplexHasPartAssociation a owl:Class ;
  rdfs:comment "An association between a protein complex and one of its parts." ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:allValuesFrom gocam:PartOfProteinComplexAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:GeneProductTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:CausalAssociation a owl:Class ;
  rdfs:comment "A causal association between two activities" ;
  rdfs:subClassOf gocam:Association , [
    a owl:Restriction ;
    owl:onProperty gocam:predicate ;
    owl:allValuesFrom gocam:PredicateTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:predicate ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:downstream_activity ;
    owl:allValuesFrom gocam:Activity
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:downstream_activity ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:TermAssociation a owl:Class ;
  rdfs:comment "An association between an activity and a term, potentially with extensions. This is an abstract class for grouping purposes, it should not be directly instantiated, instead a subclass should be instantiated." ;
  rdfs:subClassOf gocam:Association , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Class ;
    owl:unionOf ( gocam:PartOfProteinComplexAssociation gocam:ProteinComplexHasPartAssociation gocam:MolecularFunctionAssociation gocam:BiologicalProcessAssociation gocam:PhaseAssociation gocam:CellularAnatomicalEntityAssociation gocam:CellTypeAssociation gocam:GrossAnatomyAssociation )
  ] .

gocam:MolecularFunctionAssociation a owl:Class ;
  rdfs:comment "An association between an activity and a molecular function term" ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:MolecularFunctionTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:BiologicalProcessAssociation a owl:Class ;
  rdfs:comment "An association between an activity and a biological process term" ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:happens_during ;
    owl:allValuesFrom gocam:PhaseAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:happens_during ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:allValuesFrom gocam:BiologicalProcessAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:BiologicalProcessTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:PhaseAssociation a owl:Class ;
  rdfs:comment "An association between an activity or biological process and a phase term" ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:PhaseTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:CellularAnatomicalEntityAssociation a owl:Class ;
  rdfs:comment "An association between an activity and a cellular anatomical entity term" ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:allValuesFrom gocam:CellTypeAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:CellularAnatomicalEntityTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:CellTypeAssociation a owl:Class ;
  rdfs:comment "An association between an activity and a cell type term" ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:allValuesFrom gocam:GrossAnatomyAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:CellTypeTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:GrossAnatomyAssociation a owl:Class ;
  rdfs:comment "An association between an activity and a gross anatomical structure term" ;
  rdfs:subClassOf gocam:TermAssociation , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:allValuesFrom gocam:GrossAnatomyAssociation
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:part_of ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:allValuesFrom gocam:GrossAnatomicalStructureTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:term ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:MoleculeAssociation a owl:Class ;
  rdfs:comment "An association between an activity and a molecule node" ;
  rdfs:subClassOf gocam:Association , [
    a owl:Restriction ;
    owl:onProperty gocam:predicate ;
    owl:allValuesFrom gocam:PredicateTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:predicate ;
    owl:cardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:molecule ;
    owl:allValuesFrom gocam:MoleculeNode
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:molecule ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:Object a owl:Class ;
  rdfs:comment "An abstract class for all identified objects in a model" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty rdfs:label ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty rdfs:label ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:type ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:obsolete ;
    owl:allValuesFrom xsd:boolean
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:obsolete ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:TermObject a owl:Class ;
  rdfs:comment "An abstract class for all ontology term objects" ;
  rdfs:subClassOf gocam:Object .

gocam:PublicationObject a owl:Class ;
  rdfs:comment "An object that represents a publication or other kind of reference" ;
  rdfs:subClassOf gocam:Object , [
    a owl:Restriction ;
    owl:onProperty gocam:abstract_text ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:abstract_text ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:full_text ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:full_text ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:EvidenceTermObject a owl:Class ;
  rdfs:comment "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." ;
  rdfs:subClassOf gocam:TermObject .

gocam:MolecularFunctionTermObject a owl:Class ;
  rdfs:comment "A term object that represents a molecular function term from GO" ;
  rdfs:subClassOf gocam:TermObject .

gocam:BiologicalProcessTermObject a owl:Class ;
  rdfs:comment "A term object that represents a biological process term from GO" ;
  rdfs:subClassOf gocam:TermObject .

gocam:CellularAnatomicalEntityTermObject a owl:Class ;
  rdfs:comment "A term object that represents a cellular anatomical entity term from GO" ;
  rdfs:subClassOf gocam:TermObject .

gocam:MoleculeTermObject a owl:Class ;
  rdfs:comment "A term object that represents a molecule term from CHEBI or UniProtKB" ;
  rdfs:subClassOf gocam:TermObject .

gocam:CellTypeTermObject a owl:Class ;
  rdfs:comment "A term object that represents a cell type term from CL" ;
  rdfs:subClassOf gocam:TermObject .

gocam:GrossAnatomicalStructureTermObject a owl:Class ;
  rdfs:comment "A term object that represents a gross anatomical structure term from UBERON" ;
  rdfs:subClassOf gocam:TermObject .

gocam:PhaseTermObject a owl:Class ;
  rdfs:comment "A term object that represents a phase term from GO or UBERON" ;
  rdfs:subClassOf gocam:TermObject .

gocam:InformationBiomacromoleculeTermObject a owl:Class ;
  rdfs:comment "An abstract class for all information biomacromolecule term objects" ;
  rdfs:subClassOf gocam:TermObject , [
    a owl:Class ;
    owl:unionOf ( gocam:GeneProductTermObject gocam:ProteinComplexTermObject )
  ] .

gocam:GeneProductTermObject a owl:Class ;
  rdfs:comment "A term object that represents a gene product term from GO or UniProtKB" ;
  rdfs:subClassOf gocam:InformationBiomacromoleculeTermObject .

gocam:ProteinComplexTermObject a owl:Class ;
  rdfs:comment "A term object that represents a protein complex term from GO" ;
  rdfs:subClassOf gocam:InformationBiomacromoleculeTermObject .

gocam:TaxonTermObject a owl:Class ;
  rdfs:comment "A term object that represents a taxon term from NCBITaxon" ;
  rdfs:subClassOf gocam:TermObject .

gocam:PredicateTermObject a owl:Class ;
  rdfs:comment "A term object that represents an OWL relation from the OBO Relations Ontology" ;
  rdfs:subClassOf gocam:TermObject .

gocam:ProvenanceInfo a owl:Class ;
  rdfs:comment "Provenance information for an object" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty dct:contributor ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty dct:created ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty dct:created ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty dct:date ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty dct:date ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty pav:providedBy ;
    owl:allValuesFrom xsd:string
  ] .

gocam:QueryIndex a owl:Class ;
  rdfs:comment "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." ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty gocam:taxon_label ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:taxon_label ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_activities ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_activities ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_enabled_by_terms ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_enabled_by_terms ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_causal_associations ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_causal_associations ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:length_of_longest_causal_association_path ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:length_of_longest_causal_association_path ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_strongly_connected_components ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_strongly_connected_components ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:flattened_references ;
    owl:allValuesFrom gocam:PublicationObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:flattened_provided_by ;
    owl:allValuesFrom gocam:Object
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:flattened_contributors ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:flattened_evidence_terms ;
    owl:allValuesFrom gocam:EvidenceTermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_molecular_function_terms ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_molecular_function_closure ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_molecular_function_rollup ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_occurs_in_terms ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_occurs_in_closure ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_occurs_in_rollup ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_enabled_by_terms ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_enabled_by_closure ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_enabled_by_rollup ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_enabled_by_genes ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_part_of_terms ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_part_of_closure ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_part_of_rollup ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_has_input_terms ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_has_input_closure ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_activity_has_input_rollup ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_chemical_terms ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_taxon ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_taxon_closure ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:model_taxon_rollup ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:annoton_terms ;
    owl:allValuesFrom gocam:TermObject
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:start_activities ;
    owl:allValuesFrom gocam:Activity
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:end_activities ;
    owl:allValuesFrom gocam:Activity
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:intermediate_activities ;
    owl:allValuesFrom gocam:Activity
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:singleton_activities ;
    owl:allValuesFrom gocam:Activity
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_start_activities ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_start_activities ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_end_activities ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_end_activities ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_intermediate_activities ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_intermediate_activities ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_singleton_activities ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty gocam:number_of_singleton_activities ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] .

gocam:term a owl:ObjectProperty ;
  rdfs:comment "A generic slot for ontology terms" ;
  rdfs:range gocam:TermObject ;
  a owl:FunctionalProperty .

gocam:provenances a owl:ObjectProperty ;
  rdfs:comment "A generic slot for provenance information" ;
  rdfs:range gocam:ProvenanceInfo .

gocam:part_of a owl:ObjectProperty ;
  rdfs:comment "A generic slot for part-of relationships" ;
  rdfs:range xsd:string .

dct:title a owl:DatatypeProperty ;
  rdfs:comment "The human-readable descriptive title of the model" ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

gocam:taxon a owl:ObjectProperty ;
  rdfs:comment "The primary taxon that the model is about" ;
  rdfs:range gocam:TaxonTermObject ;
  a owl:FunctionalProperty .

gocam:additional_taxa a owl:ObjectProperty ;
  rdfs:comment "Additional taxa that the model is about" ;
  rdfs:range gocam:TaxonTermObject .

pav:status a owl:ObjectProperty ;
  rdfs:comment "The status of the model in terms of its progression along the developmental lifecycle" ;
  skos:altLabel "model state" ;
  rdfs:range gocam:ModelStateEnum ;
  a owl:FunctionalProperty .

dct:date a owl:DatatypeProperty ;
  rdfs:comment "The date that the model was last modified" ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

rdfs:comment a owl:DatatypeProperty ;
  rdfs:comment "Curator-provided comments about the model" ;
  rdfs:range xsd:string .

gocam:activities a owl:ObjectProperty ;
  rdfs:comment "All of the activities that are part of the model" ;
  skos:note "this slot is conditionally required. It is optional for models in development state (because a curator may need to instantiate a Model before populating it with activities), but is required for production models. See the associated rule." ;
  rdfs:range gocam:Activity .

gocam:molecules a owl:ObjectProperty ;
  rdfs:comment "All of the molecule nodes that are part of the model." ;
  rdfs:range gocam:MoleculeNode .

gocam:objects a owl:ObjectProperty ;
  rdfs:comment "All of the objects that are part of the model. This includes terms as well as publications and database objects like gene. This is not strictly part of the data managed by the model, it is for convenience, and should be refreshed from outside." ;
  rdfs:range gocam:Object .

gocam:query_index a owl:ObjectProperty ;
  rdfs:comment "An optional object that contains the results of indexing a model with various summary statistics and retrieval indices." ;
  skos:note "This is typically not populated in the primary transactional store (OLTP processing), because the values will be redundant with the primary edited components of the model. It is intended to be populated in batch *after* editing, and then used for generating reports, or for indexing in web applications." ;
  rdfs:range gocam:QueryIndex ;
  a owl:FunctionalProperty .

gocam:enabled_by a owl:ObjectProperty ;
  rdfs:comment "The gene product or complex that carries out the activity" ;
  rdfs:range gocam:EnabledByAssociation ;
  a owl:FunctionalProperty .

gocam:molecular_function a owl:ObjectProperty ;
  rdfs:comment "The molecular function that is carried out by the gene product or complex" ;
  rdfs:range gocam:MolecularFunctionAssociation ;
  a owl:FunctionalProperty .

gocam:occurs_in a owl:ObjectProperty ;
  rdfs:comment "The cellular location in which the activity occurs" ;
  rdfs:range gocam:CellularAnatomicalEntityAssociation ;
  a owl:FunctionalProperty .

gocam:happens_during a owl:ObjectProperty ;
  rdfs:comment "The phase during which the activity takes place" ;
  rdfs:range gocam:PhaseAssociation ;
  a owl:FunctionalProperty .

gocam:molecular_associations a owl:ObjectProperty ;
  rdfs:comment "Associations between the activity and molecules that are relevant to it. This includes molecules that are products/substrates or regulators of the activity." ;
  rdfs:range gocam:MoleculeAssociation .

gocam:causal_associations a owl:ObjectProperty ;
  rdfs:comment "The causal associations that flow out of this activity" ;
  skos:note "All activities in a model must be connected to at least one other activity. If a an activity has no outgoing activities (i.e the value of this slot is empty) then it is a terminal activity in the model. If an activity has no incoming activities, it is an initial activity." ;
  rdfs:range gocam:CausalAssociation .

gocam:located_in a owl:ObjectProperty ;
  rdfs:comment "The cellular location in which the molecule is located" ;
  rdfs:range gocam:CellularAnatomicalEntityAssociation ;
  a owl:FunctionalProperty .

gocam:reference a owl:ObjectProperty ;
  rdfs:comment "The publication of reference that describes the evidence" ;
  skos:example "PMID:32075755" ;
  rdfs:range gocam:PublicationObject ;
  a owl:FunctionalProperty .

gocam:with_objects a owl:ObjectProperty ;
  rdfs:comment "Supporting database entities or terms" ;
  skos:altLabel "with" , "with/from" ;
  rdfs:range gocam:Object .

gocam:type a owl:DatatypeProperty ;
  rdfs:comment "The type of association." ;
  skos:note "when instantiating Association objects in Python and other languages, it isn't necessary to populate this, it is auto-populated from the object class." ;
  a owl:FunctionalProperty .

gocam:evidence a owl:ObjectProperty ;
  rdfs:comment "The set of evidence items that support the association." ;
  rdfs:range gocam:EvidenceItem .

gocam:has_part a owl:ObjectProperty ;
  rdfs:comment "Associations between the complex and gene products that are part of it." ;
  rdfs:range gocam:ProteinComplexHasPartAssociation .

gocam:predicate a owl:ObjectProperty ;
  rdfs:comment "The RO relation that represents the type of relationship" ;
  rdfs:range gocam:PredicateTermObject ;
  a owl:FunctionalProperty .

gocam:downstream_activity a owl:ObjectProperty ;
  rdfs:comment "The activity unit that is downstream of this one" ;
  skos:altLabel "object" ;
  rdfs:range gocam:Activity ;
  a owl:FunctionalProperty .

gocam:molecule a owl:ObjectProperty ;
  rdfs:comment "The molecule node that is associated with this activity" ;
  rdfs:range gocam:MoleculeNode ;
  a owl:FunctionalProperty .

rdfs:label a owl:DatatypeProperty ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

gocam:obsolete a owl:DatatypeProperty ;
  rdfs:range xsd:boolean ;
  a owl:FunctionalProperty .

gocam:abstract_text a owl:DatatypeProperty ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

gocam:full_text a owl:DatatypeProperty ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

dct:contributor a owl:DatatypeProperty ;
  rdfs:range xsd:string .

dct:created a owl:DatatypeProperty ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

pav:providedBy a owl:DatatypeProperty ;
  rdfs:range xsd:string .

gocam:taxon_label a owl:DatatypeProperty ;
  rdfs:comment "The label of the primary taxon for the model" ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

gocam:number_of_activities a owl:DatatypeProperty ;
  rdfs:comment "The number of activities in a model." ;
  skos:note "this includes all activities, even those without an enabler." ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:number_of_enabled_by_terms a owl:DatatypeProperty ;
  rdfs:comment "The number of molecular entities or sets of entities in a model." ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:number_of_causal_associations a owl:DatatypeProperty ;
  rdfs:comment "Total number of causal association edges connecting activities in a model. This includes both explicit causal associations (e.g. \"directly positively regulates\") between activities and implicit causal associations between activities with shared input/output chemical entities." ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:length_of_longest_causal_association_path a owl:DatatypeProperty ;
  rdfs:comment "The maximum number of hops along activities along the direction of causal flow in a model." ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:number_of_strongly_connected_components a owl:DatatypeProperty ;
  rdfs:comment "The number of distinct components that consist of activities that are connected (directly or indirectly) via causal connections. Most models will consist of a single SCC. Some models may consist of two or more \"islands\" where there is no connection from one island to another." ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:flattened_references a owl:ObjectProperty ;
  rdfs:comment "All publication objects from the model across different levels combined in one place" ;
  rdfs:range gocam:PublicationObject .

gocam:flattened_provided_by a owl:ObjectProperty ;
  rdfs:comment "All provided_by values from the model across different levels combined in one place" ;
  rdfs:range gocam:Object .

gocam:flattened_contributors a owl:DatatypeProperty ;
  rdfs:comment "All contributor values from the model across different levels combined in one place" ;
  rdfs:range xsd:string .

gocam:flattened_evidence_terms a owl:ObjectProperty ;
  rdfs:comment "All evidence term objects from the model across different levels combined in one place" ;
  rdfs:range gocam:EvidenceTermObject .

gocam:model_activity_molecular_function_terms a owl:ObjectProperty ;
  rdfs:comment "All MF terms for all activities" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_molecular_function_closure a owl:ObjectProperty ;
  rdfs:comment "The reflexive transitive closure of `model_activity_molecular_function_terms`, over the is_a relationship" ;
  gocam:closure_computed_over "[rdfs:subClassOf]" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_molecular_function_rollup a owl:ObjectProperty ;
  rdfs:comment "The rollup of `model_activity_molecular_function_closure` to a GO subset or slim." ;
  skos:note "added for completion but may not be useful in practice" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_occurs_in_terms a owl:ObjectProperty ;
  rdfs:comment "All direct cellular component localization terms for all activities" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_occurs_in_closure a owl:ObjectProperty ;
  rdfs:comment "The reflexive transitive closure of `model_activity_occurs_in_terms`, over the is_a and part_of relationship type" ;
  gocam:closure_computed_over "[rdfs:subClassOf, BFO:0000050]" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_occurs_in_rollup a owl:ObjectProperty ;
  rdfs:comment "The rollup of `model_activity_occurs_in_closure` to a GO subset or slim." ;
  rdfs:range gocam:TermObject .

gocam:model_activity_enabled_by_terms a owl:ObjectProperty ;
  rdfs:comment "All direct enabler terms for all activities" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_enabled_by_closure a owl:ObjectProperty ;
  rdfs:comment "The reflexive transitive closure of `model_activity_enabled_by_terms`, over the is_a and part_of relationship types" ;
  gocam:closure_computed_over "[rdfs:subClassOf, BFO:0000050]" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_enabled_by_rollup a owl:ObjectProperty ;
  rdfs:comment "The rollup of `model_activity_enabled_by_closure` to a GO subset or slim." ;
  skos:note "added for completion but may not be useful in practice" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_enabled_by_genes a owl:ObjectProperty ;
  rdfs:comment "All direct enabler genes and genes that are part of enabler complexes for all activities" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_part_of_terms a owl:ObjectProperty ;
  rdfs:comment "All direct biological process terms for all activities" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_part_of_closure a owl:ObjectProperty ;
  rdfs:comment "The reflexive transitive closure of `model_activity_part_of_terms`, over the is_a and part_of relationship type" ;
  gocam:closure_computed_over "[rdfs:subClassOf, BFO:0000050]" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_part_of_rollup a owl:ObjectProperty ;
  rdfs:comment "The rollup of `model_activity_part_of_closure` to a GO subset or slim." ;
  rdfs:range gocam:TermObject .

gocam:model_activity_has_input_terms a owl:ObjectProperty ;
  rdfs:comment "All direct input terms for all activities" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_has_input_closure a owl:ObjectProperty ;
  rdfs:comment "The reflexive transitive closure of `model_activity_has_input_terms`, over the is_a relationship type" ;
  gocam:closure_computed_over "[rdfs:subClassOf]" ;
  rdfs:range gocam:TermObject .

gocam:model_activity_has_input_rollup a owl:ObjectProperty ;
  rdfs:comment "The rollup of `model_activity_has_input_closure` to a GO subset or slim." ;
  rdfs:range gocam:TermObject .

gocam:model_chemical_terms a owl:ObjectProperty ;
  rdfs:comment "All molecule terms in the model that are chemical entities (e.g. substrates or products) and not information biomacromolecules (e.g. gene products or complexes)." ;
  rdfs:range gocam:TermObject .

gocam:model_taxon a owl:ObjectProperty ;
  rdfs:comment "The primary taxon term for the model, over the NCBITaxon:subClassOf relationship type. This is used to determine the primary taxon that the model is relevant to." ;
  rdfs:range gocam:TermObject .

gocam:model_taxon_closure a owl:ObjectProperty ;
  rdfs:comment "The reflexive transitive closure of the taxon term for the model, over the NCBITaxon:subClassOf relationship type. This is used to determine the set of taxa that are relevant to the model." ;
  gocam:closure_computed_over "[rdfs:subClassOf]" ;
  rdfs:range gocam:TermObject .

gocam:model_taxon_rollup a owl:ObjectProperty ;
  rdfs:comment "The rollup of the taxon closure to a NCBITaxon subset or slim." ;
  rdfs:range gocam:TermObject .

gocam:annoton_terms a owl:ObjectProperty ;
  rdfs:range gocam:TermObject .

gocam:start_activities a owl:ObjectProperty ;
  rdfs:comment "The set of activities that are the starting points of the model, i.e. those that have no incoming causal associations." ;
  rdfs:range gocam:Activity .

gocam:end_activities a owl:ObjectProperty ;
  rdfs:comment "The set of activities that are the end points of the model, i.e. those that have no outgoing causal associations." ;
  rdfs:range gocam:Activity .

gocam:intermediate_activities a owl:ObjectProperty ;
  rdfs:comment "The set of activities that are neither start nor end activities, i.e. those that have both incoming and outgoing causal associations." ;
  rdfs:range gocam:Activity .

gocam:singleton_activities a owl:ObjectProperty ;
  rdfs:comment "The set of activities that have no causal associations, i.e. those that are not connected to any other activity in the model." ;
  rdfs:range gocam:Activity .

gocam:number_of_start_activities a owl:DatatypeProperty ;
  rdfs:comment "The number of start activities in a model" ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:number_of_end_activities a owl:DatatypeProperty ;
  rdfs:comment "The number of end activities in a model" ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:number_of_intermediate_activities a owl:DatatypeProperty ;
  rdfs:comment "The number of intermediate activities in a model" ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:number_of_singleton_activities a owl:DatatypeProperty ;
  rdfs:comment "The number of singleton activities in a model" ;
  rdfs:range xsd:integer ;
  a owl:FunctionalProperty .

gocam:ModelStateEnum a owl:Class ;
  rdfs:comment "A term describing where the model is in the development life cycle." ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( gocam:ModelStateEnum.DEVELOPMENT gocam:ModelStateEnum.PRODUCTION gocam:ModelStateEnum.DELETE gocam:ModelStateEnum.REVIEW gocam:ModelStateEnum.INTERNAL_TEST gocam:ModelStateEnum.TEMPLATE gocam:ModelStateEnum.CLOSED )
  ] .

gocam:ModelStateEnum.DEVELOPMENT a owl:NamedIndividual ;
  skos:notation "development" ;
  rdfs:comment "Used when the curator is still working on the model. Edits are still being made, and the information in the model is not yet guaranteed to be accurate or complete. The model should not be displayed in end-user facing websites, unless it is made clear that the model is a work in progress." ;
  skos:altLabel "work in progress" ;
  a gocam:ModelStateEnum .

gocam:ModelStateEnum.PRODUCTION a owl:NamedIndividual ;
  skos:notation "production" ;
  rdfs:comment "Used when the curator has declared the model is ready for public consumption. Edits might still be performed on the model in future, but the information in the model is believed to be both accurate and reasonably complete. The model may be displayed in public websites." ;
  a gocam:ModelStateEnum .

gocam:ModelStateEnum.DELETE a owl:NamedIndividual ;
  skos:notation "delete" ;
  rdfs:comment "When the curator has marked for future deletion." ;
  a gocam:ModelStateEnum .

gocam:ModelStateEnum.REVIEW a owl:NamedIndividual ;
  skos:notation "review" ;
  rdfs:comment "The model has been marked for curator review." ;
  a gocam:ModelStateEnum .

gocam:ModelStateEnum.INTERNAL_TEST a owl:NamedIndividual ;
  skos:notation "internal_test" ;
  rdfs:comment "The model is not intended for use public use; it is likely to be used for internal testing." ;
  a gocam:ModelStateEnum .

gocam:ModelStateEnum.TEMPLATE a owl:NamedIndividual ;
  skos:notation "template" ;
  rdfs:comment "The model is a template that is not intended to represent a specific biological scenario, but rather to be used as a template for building other models." ;
  a gocam:ModelStateEnum .

gocam:ModelStateEnum.CLOSED a owl:NamedIndividual ;
  skos:notation "closed" ;
  rdfs:comment "TBD" ;
  a gocam:ModelStateEnum .

gocam:InformationBiomacromoleculeCategory a owl:Class ;
  rdfs:comment "A term describing the type of the enabler of an activity." ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( gocam:biolink.GeneOrGeneProduct gocam:InformationBiomacromoleculeCategory.PROTEIN_ISOFORM gocam:InformationBiomacromoleculeCategory.MACROMOLECULAR_COMPLEX gocam:InformationBiomacromoleculeCategory.UNKNOWN )
  ] .

gocam:biolink.GeneOrGeneProduct a owl:NamedIndividual ;
  skos:notation "GeneOrReferenceProtein" ;
  a gocam:InformationBiomacromoleculeCategory .

gocam:InformationBiomacromoleculeCategory.PROTEIN_ISOFORM a owl:NamedIndividual ;
  skos:notation "ProteinIsoform" ;
  a gocam:InformationBiomacromoleculeCategory .

gocam:InformationBiomacromoleculeCategory.MACROMOLECULAR_COMPLEX a owl:NamedIndividual ;
  skos:notation "MacromolecularComplex" ;
  a gocam:InformationBiomacromoleculeCategory .

gocam:InformationBiomacromoleculeCategory.UNKNOWN a owl:NamedIndividual ;
  skos:notation "Unknown" ;
  a gocam:InformationBiomacromoleculeCategory .

gocam:CausalPredicateEnum a owl:Class ;
  rdfs:comment "A term describing the causal relationship between two activities. All terms are drawn from the \"causally upstream or within\" (RO:0002418) branch of the Relation Ontology (RO)." ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( RO:0002304 RO:0002305 RO:0002411 RO:0002412 RO:0002418 RO:0004046 RO:0004047 RO:0002211 RO:0002212 RO:0002213 RO:0002413 RO:0012010 )
  ] .

RO:0002304 a owl:NamedIndividual ;
  skos:notation "causally upstream of, positive effect" ;
  a gocam:CausalPredicateEnum .

RO:0002305 a owl:NamedIndividual ;
  skos:notation "causally upstream of, negative effect" ;
  a gocam:CausalPredicateEnum .

RO:0002411 a owl:NamedIndividual ;
  skos:notation "causally upstream of" ;
  a gocam:CausalPredicateEnum .

RO:0002412 a owl:NamedIndividual ;
  skos:notation "immediately causally upstream of" ;
  a gocam:CausalPredicateEnum .

RO:0002418 a owl:NamedIndividual ;
  skos:notation "causally upstream of or within" ;
  a gocam:CausalPredicateEnum .

RO:0004046 a owl:NamedIndividual ;
  skos:notation "causally upstream of or within, negative effect" ;
  a gocam:CausalPredicateEnum .

RO:0004047 a owl:NamedIndividual ;
  skos:notation "causally upstream of or within, positive effect" ;
  a gocam:CausalPredicateEnum .

RO:0002211 a owl:NamedIndividual ;
  skos:notation "regulates" ;
  a gocam:CausalPredicateEnum .

RO:0002212 a owl:NamedIndividual ;
  skos:notation "negatively regulates" ;
  a gocam:CausalPredicateEnum .

RO:0002213 a owl:NamedIndividual ;
  skos:notation "positively regulates" ;
  a gocam:CausalPredicateEnum .

RO:0002413 a owl:NamedIndividual ;
  skos:notation "provides input for" ;
  a gocam:CausalPredicateEnum .

RO:0012010 a owl:NamedIndividual ;
  skos:notation "removes input for" ;
  a gocam:CausalPredicateEnum .

gocam:EvidenceCodeEnum a owl:Class ;
  rdfs:comment "A term from the subset of ECO that maps up to a GAF evidence code" .

gocam:CellularAnatomicalEntityEnum a owl:Class ;
  rdfs:comment "A term from the subset of the cellular anatomical entity branch of GO CC" .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

skos:altLabel a owl:AnnotationProperty .

skos:note a owl:AnnotationProperty .

skos:example a owl:AnnotationProperty .

gocam:closure_computed_over a owl:AnnotationProperty .

skos:notation a owl:AnnotationProperty .

sh:declare a owl:AnnotationProperty .

sh:prefix a owl:AnnotationProperty .

sh:namespace a owl:AnnotationProperty .
