// A molecule grouping class that groups the different ion forms of the base of an acid
message AcidAnionGroupingClass
 {
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
  chemicalEntity conjugateBaseOf = 0
  chemicalEntity conjugateAcidOf = 0
  string name = 0
 }
// A conugate base of an acid with charge specified. Example: citrate(3-)
message AcidBase
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  chemicalEntity conjugateBaseOf = 0
  chemicalEntity conjugateAcidOf = 0
  integer elementalCharge = 0
  bronstedAcid hasAcidForm = 0
 }
// A molecule grouping class that can groups an acid together with all its conjugate bases. physiological
message AcidBaseConflationClass
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
  chemicalEntity conjugateBaseOf = 0
  chemicalEntity conjugateAcidOf = 0
  acidBase hasPhysiologicalBase = 0
 }
// A molecule consisting of atoms of the same element
message Allotrope
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  chemicalElement allotropicAnalogOf = 0
  string hasBondingStructure = 0
 }
message AminoAcidSequenceInterval
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  aminoAcidSequenceString hasSequenceRepresentation = 0
 }
// A monoatomic ion that is negative
message AtomAnion
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  chemicalElement hasElement = 0
  integer elementalCharge = 0
 }
// A monoatomic ion that is positive, e.g Cu(2+)
message AtomCation
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  chemicalElement hasElement = 0
  integer elementalCharge = 0
 }
// Example: group 13 atom
message AtomGroupingByPeriodicTableBlock
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  atom classifies = 0
  periodicTableBlockEnum inPeriodicTableBlock = 0
 }
// Example: p-block atom
message AtomGroupingByPeriodicTableGroup
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  atom classifies = 0
  periodicTableGroup inPeriodicTableGroup = 0
 }
// Example: metal atom
message AtomGroupingByProperty
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  atom classifies = 0
 }
// A grouping class that classifies atoms. For example, metal atom
message AtomGroupingClass
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  atom classifies = 0
 }
// A connection between two atoms. Note this is the reified form of 'atomically connected to'. 
message AtomicBond
 {
  owlClass owlSubclassOf = 0
  atomOccurrence subject = 0
  atomOccurrence object = 0
  bondTypeEnum bondType = 0
  integer bondOrder = 0
  float bondLength = 0
  float bondEnergy = 0
  float bondLengthInAngstroms = 0
  float bondAngle = 0
  float torsionalAngle = 0
 }
// An occurrence of an atom in the context of a particular molecule. For example, one of two occurrences of oxygen in nitrate
message AtomOccurrence
 {
  owlClass owlSubclassOf = 0
  string name = 0
  atom occurrenceOf = 0
  integer valence = 0
  integer oxidationNumber = 0
  integer formalCharge = 0
  integer coordinationNumber = 0
 }
// A molecule capable of donating a hydron to an acceptor. Example: citric acid
message BronstedAcid
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  float acidity = 0
  hardOrSoftEnum hardOrSoft = 0
 repeated  acidBase acidFormOf = 0
 }
// generic form of an atom, with unspecified neutron or charge
message ChemicalElement
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  string symbol = 0
  periodicTableGroup inPeriodicTableGroup = 0
  periodicTableBlockEnum inPeriodicTableBlock = 0
  float boilingPointInCelcius = 0
  float meltingPointInCelcius = 0
  float standardAtomicWeight = 0
  float mass = 0
  float monoisotopicMass = 0
  string electronConfiguration = 0
 repeated  stereocenter hasStereocenter = 0
  string hasPhysiologicallyStableForm = 0
 }
message ChemicalGroup
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 }
// A grouping class that refines a charge-neutral entity
message ChemicalGroupingByCharge
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
  chemicalEntity classifies = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  uriorcurie hasChargeState = 0
  chemicalEntity chargeAgnosticEntity = 0
 }
// A characteristic of a chemical entity that is realized under particular conditions
message ChemicalRole
 {
  owlClass owlSubclassOf = 0
 }
// a chemical compound consisting of an ionic assembly of cations and anions.
message ChemicalSalt
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  integer elementalCharge = 0
  cationState hasCationicComponent = 0
  anionState hasAnionicComponent = 0
 }
// A grouping class for a chemical salt named by anion
message ChemicalSaltByAnion
 {
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  string hasCationicComponent = 0
  chemicalSalt classifies = 0
  string hasAnionicComponent = 0
  string name = 0
 }
// A grouping class for a chemical salt named by cation
message ChemicalSaltByCation
 {
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  string hasAnionicComponent = 0
  chemicalSalt classifies = 0
  string hasCationicComponent = 0
  string name = 0
 }
// A grouping class for a chemical salt
message ChemicalSaltGroupingClass
 {
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  string hasAnionicComponent = 0
  string hasCationicComponent = 0
  string name = 0
  chemicalSalt classifies = 0
 }
// A relationship between two or more chemical entities where there is some degree of similarity between these entities on their similarity
message ChemicalSimilarity
 {
  owlClass owlSubclassOf = 0
 }
message Collection
 {
 repeated  domainEntity entities = 0
 }
// a polymer with a more than one type of repeating unit
message Copolymer
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
  chemicalEntity hasRepeatUnit = 0
  boolean isBranched = 0
  string polymerArchitectureType = 0
 repeated  macromolecule polymerOf = 0
 }
message DNASequenceInterval
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  dNASequenceString hasSequenceRepresentation = 0
 }
// one of two stereoisomers of a chiral molecule that are mirror images. Example: R-thalidomide
message Enantiomer
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  chemicalEncoding isomericSmilesString = 0
  string relativeConfiguration = 0
  string opticalConfiguration = 0
  string absoluteConfiguration = 0
  molecule enantiomerFormOf = 0
 }
// An ester is a chemical compound derived from an acid (organic or inorganic) in which at least one –OH hydroxyl group is replaced by an –O– alkyl (alkoxy) group
message Ester
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  chemicalEntity hasParentAlcohol = 0
  bronstedAcid hasParentAcid = 0
 }
// An atom type that has atomic number, charge, and neutron number stated (equivalently: protons + mass + charge)
message FullySpecifiedAtom
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  integer elementalCharge = 0
  count neutronNumber = 0
 }
message FunctionalGroup
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  molecule isSubstitutentGroupFrom = 0
 }
// A molecule grouping class that can groups an acid together with all its conjugate bases. physiological
message GeneralAcidBaseGroupingClass
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
  chemicalEntity conjugateBaseOf = 0
  chemicalEntity conjugateAcidOf = 0
 }
// A molecule grouping class that can be written using a chemical formula using variables (e.g. n), or arithmetic expressions uing variables (e.g. 2n+2), plus optionally constraints on those variables (e.g. n>3). An example is alkane; CnH2n+2, which groups specific molecules such as methane
message GeneralizedMolecularStructureClass
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
 }
// A macromolecule consisting of a large number of monosaccharides linked glycosidically
message Glycan
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
 }
// a polymer with a single type of repeating unit
message Homopolymer
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
  chemicalEntity hasRepeatUnit = 0
  boolean isBranched = 0
  string polymerArchitectureType = 0
  macromolecule polymerOf = 0
 }
// A macroscopic polyatomic entity that consists of multiple chemical entities where the stoichiometry is not specified and the spatial arrangement of the ingredients is not defined. Examples include coal, tea tree oil, toothpaste, organometallic compounds, heterogeneous metals
message ImpreciseChemicalMixture
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  proportionalPart hasProportionalParts = 0
  fileLocation hasMixfileLocation = 0
  chemicalEncoding hasMinchiRepresentation = 0
 }
// Isobars are atoms (nuclides) of different chemical elements that have the same number of nucleons.
message Isobar
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  string energyLevel = 0
  chemicalElement hasElement = 0
  count nucleonNumber = 0
  chemicalEntity isobarOf = 0
  numberOfYears halfLife = 0
  isotope decayProduct = 0
  string decayMode = 0
  string decayEnergy = 0
  string modeOfFormation = 0
 }
// A reaction that converts a molecule from one isomer to another.
message IsomeraseReaction
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  chemicalEncoding hasRinchiRepresentation = 0
  chemicalEncoding hasReactionSmilesRepresentation = 0
  float reactionRateCoefficient = 0
  float reactionRate = 0
 repeated  reactionParticipant leftParticipants = 0
 repeated  reactionParticipant rightParticipants = 0
  string direction = 0
  string smartsString = 0
  boolean isDiastereoselective = 0
  boolean isStereo = 0
  boolean isBalanced = 0
  boolean isTransport = 0
  boolean isFullyCharacterized = 0
  string reactionCenter = 0
  string description = 0
 }
// A specific subtype of an atom with a specified neutron number
message Isotope
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  string energyLevel = 0
  chemicalElement hasElement = 0
  count neutronNumber = 0
  isotope isotopeOf = 0
  numberOfYears halfLife = 0
  isotope decayProduct = 0
  string decayMode = 0
  string decayEnergy = 0
  string modeOfFormation = 0
 }
message Lipid
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
 }
// A large molecule, such as a polymer, lipid, or macrocycle
message Macromolecule
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
 }
// A substance composed of repeated chemical units that has a specific arrangement of atoms or molecules.
message Material
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  chemicalEntity hasRepeatUnit = 0
  chemicalEntity hasPart = 0
 }
// A grouping class that classifies materials
message MaterialGroupingClass
 {
  string id = 0
  string name = 0
  owlClass owlSubclassOf = 0
 repeated  materialGroupingClass subtypeOf = 0
  material classifies = 0
 }
message Mineral
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  chemicalEntity hasRepeatUnit = 0
  chemicalEntity hasPart = 0
 }
// a named part of a molecule. In some instances moieties may be composed of yet smaller moieties and functional groups
message Moiety
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 }
// A polyatomic ion that is negative
message MolecularAnion
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  chemicalEntity conjugateBaseOf = 0
  chemicalEntity conjugateAcidOf = 0
  integer elementalCharge = 0
 }
// A polyatomic ion that is positive
message MolecularCation
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  chemicalEntity conjugateBaseOf = 0
  chemicalEntity conjugateAcidOf = 0
  integer elementalCharge = 0
 }
// A molecular complex is a chemical complex composed of at least one weakly interacting molecule.[SIO] Examples: chromosome, double-standed DNA, protein-containing macromolecular complex
message MolecularComplex
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 }
// A proper part of a molecule that is larger than an atom
message MolecularComponent
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 }
// A grouping class that classifies molecular components. Example: inorganic anion group
message MolecularComponentGroupingClass
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  molecularComponentGroupingClass subtypeOf = 0
  molecularComponent classifies = 0
 }
// A grouping class defined as a derivative of another molecule or molecular grouping class
message MolecularDerivativeGroupingClass
 {
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  chemicalEntity derivativeOf = 0
  string name = 0
  molecule classifies = 0
 }
// A molecule in which the units are identical. Example: methyl
message MolecularSpecies
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 }
message MolecularSubsequence
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 }
// A chemical entity that consists of two or more atoms where all atoms are connected via covalent bonds.
message Molecule
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 }
// A grouping class that classifies molecules. Example: carbohydrate, monosaccharide, amino acid, polyacrylamide
message MoleculeGroupingClass
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
 }
// A grouping class defined in terms of a derivative of a molecule and the addition of a group
message MoleculeGroupingClassDefinedByAdditionOfAGroup
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
 repeated  chemicalGroup hasGroup = 0
  polyatomicEntity derivativeOf = 0
 }
// A grouping class defined as an exhaustive list of components
message MoleculeGroupingClassDefinedByComponents
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
  chemicalEntityOrGrouping hasPart = 0
 }
message MoleculePairwiseSimilarity
 {
  owlClass owlSubclassOf = 0
  molecule leftMolecule = 0
  molecule rightMolecule = 0
  float score = 0
 }
// An atom type that has a charge
message MonoatomicIon
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  integer elementalCharge = 0
  chemicalElement hasElement = 0
 }
message Monomer
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 }
message MonomericPolymericGroupingClass
 {
  string name = 0
  owlClass owlSubclassOf = 0
  string id = 0
 repeated  moleculeGroupingClass subtypeOf = 0
  molecule classifies = 0
  chemicalEntity hasRepeatUnit = 0
 }
// A macromolecule composed of repeating subunits. Examples: cellulose
message MonomolecularPolymer
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
  macromolecule polymerOf = 0
  chemicalEntity hasRepeatUnit = 0
  boolean isBranched = 0
  string polymerArchitectureType = 0
 }
// A material of which a single unit is sized (in at least one dimension) between 1 and 100 nm
message Nanomaterial
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  chemicalEntity hasRepeatUnit = 0
  chemicalEntity hasPart = 0
  nanostructureMorphologyEnum hasMorphologicalCategory = 0
 }
message NaturalProduct
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  uriorcurie derivedFromOrganisms = 0
 }
// A molecule in which the units are not identical. TODO: move this higher
message NonSpeciesMolecule
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 }
message NucleotideSequenceInterval
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  dNASequenceString hasSequenceRepresentation = 0
 }
// an atomic species characterized by the specific constitution of its nucleus
message Nuclide
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  string energyLevel = 0
 }
message Peptide
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
 }
// A molecule that has a charge. For example, nitrate is a molecular and ionic species; its formula is (NO3-).
message PolyatomicIon
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  chemicalEntity conjugateBaseOf = 0
  chemicalEntity conjugateAcidOf = 0
  integer elementalCharge = 0
 }
message PolymerPart
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 }
// An abstract part of a polymer that is all instances of a repeated monomer of a single type
message PolymerRepeatUnit
 {
  owlClass owlSubclassOf = 0
  molecule repetitionOf = 0
  count degreeOfPolymerization = 0
  float mass = 0
 }
// A part of a complex mixture that is of uniform composition
message ProportionalPart
 {
  owlClass owlSubclassOf = 0
  ingredientRoleEnum hasRole = 0
  chemicalEntity composedOf = 0
  float minimalPercentage = 0
  float maximumPercentage = 0
 }
message Protein
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  molecule hasSubmolecules = 0
 }
// a chemical compound that has equal amounts of left- and right-handed enantiomers of a chiral molecule. An example is Thalidomide
message RacemicMixture
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  enantiomer hasLeftEnantiomer = 0
  enantiomer hasRightEnantiomer = 0
  molecule chiralityAgnosticForm = 0
  string iUPACName = 0
 }
// an atom that has excess nuclear energy, making it unstable
message Radionuclide
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  string energyLevel = 0
 }
// Reaction
message Reaction
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  chemicalEncoding hasRinchiRepresentation = 0
  chemicalEncoding hasReactionSmilesRepresentation = 0
  float reactionRateCoefficient = 0
  float reactionRate = 0
 repeated  reactionParticipant leftParticipants = 0
 repeated  reactionParticipant rightParticipants = 0
  string direction = 0
  string smartsString = 0
  boolean isDiastereoselective = 0
  boolean isStereo = 0
  boolean isBalanced = 0
  boolean isTransport = 0
  boolean isFullyCharacterized = 0
  string reactionCenter = 0
  string description = 0
 }
// A grouping class for reactions, for example, dehalogenase; breaking of covalent bond
message ReactionGroupingClass
 {
  string id = 0
  string name = 0
  owlClass owlSubclassOf = 0
 repeated  reactionGroupingClass subtypeOf = 0
  reaction classifies = 0
 }
// Instances of this link a reaction to a chemical entity participant
message ReactionParticipant
 {
  owlClass owlSubclassOf = 0
  chemicalEntity participant = 0
  integer stoichiometry = 0
 }
message RNASequenceInterval
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  dNASequenceString hasSequenceRepresentation = 0
 }
// A molecule characterized by availability in small-molecule databases
message SmallMolecule
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 }
message StandardInchiObject
 {
  string inchiVersionString = 0
  string inchiChemicalSublayer = 0
  string inchiAtomConnectionsSublayer = 0
  string inchiHydrogenConnectionsSublayer = 0
  string inchiChargeSublayer = 0
  string inchiProtonSublayer = 0
  string inchiStereochemicalDoubleBondSublayer = 0
  string inchiTetrahedralStereochemicalSublayer = 0
  string inchiStereochemicalTypeSublayer = 0
  string inchiIsotopicLayer = 0
 }
message Stereoisomer
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
 repeated  chemicalEncoding isomericSmilesString = 0
 }
// A chemical entity below the granularity of an atom.
message SubatomicParticle
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  subatomicParticleEnum subatomicParticleType = 0
 }
message SubatomicParticleOccurrence
 {
  owlClass owlSubclassOf = 0
  subatomicParticle occurrenceOf = 0
  integer count = 0
 }
// polymeric arrays of monomeric units that are connected by reversible and highly directional secondary interactions–that is, non-covalent bonds
message SupramolecularPolymer
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
  macromolecule polymerOf = 0
  chemicalEntity hasRepeatUnit = 0
 }
message TanimotoSimilarity
 {
  owlClass owlSubclassOf = 0
  molecule leftMolecule = 0
  molecule rightMolecule = 0
  float score = 0
 }
// An atom type that has no charge
message UnchargedAtom
 {
  string id = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  count atomicNumber = 0
  string symbol = 0
  string name = 0
  subatomicParticleOccurrence hasNuclearParts = 0
  subatomicParticle hasPart = 0
  integer elementalCharge = 0
 }
// A molecule that has no charge
message UnchargedMolecule
 {
  string id = 0
  string name = 0
  uriorcurie type = 0
  string iUPACName = 0
  boolean isRadical = 0
  chemicalRole hasChemicalRole = 0
  chemicalEncoding inchiString = 0
  string inchiChemicalSublayer = 0
 repeated  chemicalEncoding smilesString = 0
  chemicalEncoding empiricalFormula = 0
  owlClass owlSubclassOf = 0
  string inchiAtomConnectionsSublayer = 0
 repeated  atomOccurrence hasAtomOccurrences = 0
 repeated  atomicBond hasBonds = 0
 repeated  molecule hasSubmolecules = 0
 repeated  atom hasAtoms = 0
  boolean isOrganic = 0
  string hasPart = 0
  integer elementalCharge = 0
 }
