macro_rules! doc (
    (AnnotatedComponent) => { "An `AnnotatedComponent` is an `Component` with one or more `Annotation`." };
    (Annotation) => { "Data associated with a part of the ontology.\n\nAnnotations are associated an IRI and describe that IRI in a\nparticular way, defined by the property." };
    (AnnotationAssertion) => { "An annotation assertion axiom\n\nStates that `annotation` applies to the\n`annotation_subject`. Annotations refer to an `IRI` rather\nthan the `NamedOWLEntity` identified by that `IRI`." };
    (AnnotationProperty) => { "An OWL\n[AnnotationProperty](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Document_Information_and_Annotations)\nis a relationship between a part of an ontology and an\n`Annotation`.\n\nThe `Annotation` describes that part of the ontology. It is\nnot part of the description of the world, but a description of\nthe ontology itself." };
    (AnnotationPropertyDomain) => { "Assert the domain of an `AnnotationProperty`" };
    (AnnotationPropertyRange) => { "Assert the range of an `AnnotationProperty`" };
    (AnnotationSubject) => { "An OWL2 annotation subjection can either an IRI or anonymous individual" };
    (AnnotationValue) => { "The value of an annotation" };
    (AnonymousIndividual) => { "An OWL2 Anonymous Individual" };
    (AsymmetricObjectProperty) => { "The asymmetric characteristic.\n\nif an individual `i` is connected to `j` by this\nObjectPropertyExpression, then `j` cannot be connected to `i`\nby the ObjectPropertyExpression.\n\nSee also: [Asymmetric](https://www.w3.org/TR/owl2-syntax/#Asymmetric_Object_Properties)" };
    (Atom) => { "A SWRL Atom" };
    (Build) => { "`Build` creates new `IRI` and `NamedEntity` instances.\n\nThere is caching for performance. An `IRI` or `NamedEntity` with a\ngiven IRI will use the same string in memory, if they have been\ncreated with the same builder. Equality, ordering and hashing is\nconserved across different `Build` instances, so entities from\ndifferent instances can be combined within a single ontology\nwithout consequences except for increased memory use." };
    (Class) => { "A named class" };
    (ClassAssertion) => { "A class assertion expression.\n\nStates that `i` is in class `ce`.\n\nSee also: [Class Assertions](https://www.w3.org/TR/owl2-syntax/#Class_Assertions)" };
    (ClassExpression) => { "A class expression\n\nAs well as a named class, it is possible to define classes of\nindividuals based on these class constructors." };
    (Component) => { "An ontology component: OWL axiom, metadata or SWRL rule\n\nThis enum has variants representing the various kinds of\nComponent that can be found in an OWL Ontology. An OWL axiom\nmaps to three different entities in Horned-OWL. First is a\nstruct (for example, `SubClassOf`) which contains the data\nwhich defines the axiom (i.e. super and sub class for\n`SubClassOf`). Second, is a variant of the `ComponentKind`,\nwhich is used to identify all instances of a particular\nkind of axiom (i.e. any `SubClassOf` axiom will return an\ninstance of ComponentKind::SubClassOf). Finally, we have a\nvariant of this enum, which contains one of the structs\n(i.e. Component::SubClassOf(SubClassOf)), which is used as a union\ntype for all structs. The struct and enum variants all\nshare identical names.\n\nIn OWL2 an ontology is a set of Axioms. In Horned-OWL, it\nis a set of components which also includes SWRL rules and\nontology metadata." };
    (ComponentKind) => { "Contains all different kinds of axiom\n\nVariants of this C-style enum represent all of the\ndifferent axioms that can exist in the ontology. Instances\nof this enum are returned by all `Component` and other\nentities as part of the `Kinded` trait.\nSee also `Component` which is a Enum whose variants take\ninstances of the `Component`" };
    (DArgument) => { "A SWRL DArgument" };
    (DataAllValuesFrom) => { "A universal relationship.\n\nThis is the anonymous class of individuals `i` which if they\nhave a relationship `dp` to some data, then that must be of\ntype `dr`.\n\nSee also [Universal Quantification](https://www.w3.org/TR/owl2-syntax/#Universal_Quantification_2)" };
    (DataExactCardinality) => { "An exact cardinality restriction\nThe class of individuals have exactly `n` relationships of\nthe kind `dp` to a given data range `dr`.\nSee also [Exactly Cardinality](https://www.w3.org/TR/owl2-syntax/#Exact_Cardinality_2)" };
    (DataHasValue) => { "A has-value relationship.\nThis is the class of individuals, `i`, which have the\nrelationship `dp` to exactly the literal `l`.\nSee also [Value Restriction](https://www.w3.org/TR/owl2-syntax/#Literal_Value_Restriction)" };
    (DataMaxCardinality) => { "A max cardinality restriction\nThe class of individuals have at most `n` relationships of\nthe kind `dp` to a given data range `dr`.\nSee also [Max Cardinality](https://www.w3.org/TR/owl2-syntax/#Maximum_Cardinality_2)" };
    (DataMinCardinality) => { "A minimum cardinality restriction\nThe class of individuals have at least `n` relationships of\nthe kind `dp` to a given data range `dr`.\nSee also [Min Cardinality](https://www.w3.org/TR/owl2-syntax/#Minimum_Cardinality_2)" };
    (DataProperty) => { "An OWL\n[DataProperty](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Datatypes)\nis a relationship between part of an ontology and some\nconcrete information." };
    (DataPropertyAssertion) => { "A data property assertion.\n\nIndividual `from` is connected `to`` literal by `dp`.\n\nSee also: [Data Property Assertion](https://www.w3.org/TR/owl2-syntax/#Positive_Data_Property_Assertions)" };
    (DataPropertyDomain) => { "The domain of a DataProperty.\n\nIf an individual `i` has a relationship `dp` then `i` must be\nof type `ce`.\n\nSee also: [Data Property Domain](https://www.w3.org/TR/owl2-syntax/#Disjoint_Data_Properties)" };
    (DataPropertyRange) => { "The range of a DataProperty.\n\nIf in individual `i` has a relationship `dp` with some literal\n`l`, then `l` must by in `dr`.\n\nSee also: [Data Property Range](https://www.w3.org/TR/owl2-syntax/#Data_Property_Range)" };
    (DataRange) => { "An OWL2 Data Range" };
    (DataSomeValuesFrom) => { "An existential relationship.\n\nThis is the anonymous class of individuals `i` which have the\nrelationship `dp` to the data range, `dr`. Every individual\n`i` must have this relationship to data constrained by `dr`.\n\nSee also: [Existential Quantification](https://www.w3.org/TR/owl2-syntax/#Existential_Quantification_2)" };
    (Datatype) => { "An OWL\n[Datatype](https://www.w3.org/TR/owl2-primer/#Datatypes) is a\nspecific kind of data, such as an integer, string or so forth." };
    (DatatypeDefinition) => { "Definition of a datatype.\n\nSee also: [Datatype Definitions](https://www.w3.org/TR/owl2-syntax/#Datatype_Definitions)" };
    (DeclareAnnotationProperty) => { "Declares that an IRI represents an AnnotationProperty in the\nOntology.\n\nSee also [`DeclareClass`](struct.DeclareClass.html)" };
    (DeclareClass) => { "Declares that an IRI represents a Class in the Ontology\n\nIn OWL, entities must be declared to be of a particular\ntype. While, OWL (and Horned-OWL) allows the use of Class in\nan ontology where there is no declaration, the end ontology\nwill change profile to OWL Full.  See also the [OWL\nPrimer](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Entity_Declarations)" };
    (DeclareDataProperty) => { "Declares that an IRI represents a DataProperty in the\nontology.\n\nSee also [`DeclareClass`](struct.DeclareClass.html)" };
    (DeclareDatatype) => { "Declare that an IRI represents a Datatype in the ontology.\n" };
    (DeclareNamedIndividual) => { "Declare that an IRI represents a NamedIndividual in the\nontology.\n\nSee also [`DeclareClass`](struct.DeclareClass.html)" };
    (DeclareObjectProperty) => { "Declares that an IRI represents an ObjectProperty in the\nOntology.\n\nSee also [`DeclareClass`](struct.DeclareClass.html)" };
    (DifferentIndividuals) => { "A different individuals expression.\n\nSee also: [Individual Inequality](https://www.w3.org/TR/owl2-syntax/#Individual_Inequality)" };
    (DisjointClasses) => { "A disjoint relationship between two `ClassExpression`\n\nNo instance of one `ClassExpression` can also be an instance\nof any of the others." };
    (DisjointDataProperties) => { "A disjoint data property relationship.\n\nNo individual can be connected to a data property expression\nby more than one of these DataProperty relations.\n\nSee also: [DisjointDataProperties](https://www.w3.org/TR/owl2-syntax/#Disjoint_Data_Properties)" };
    (DisjointObjectProperties) => { "A disjoint object property relationship.\n\nThis states that is an individual is connected by one of these\nobject properties, it cannot be connected by any of the others." };
    (DisjointUnion) => { "A disjoint union expression between one `ClassExpression` and\na set of others.\n\nSee also: [`Disjoint Unison`](https://www.w3.org/TR/owl2-syntax/#Disjoint_Union_of_Class_Expressions)" };
    (DocIRI) => { "The IRI from which the ontology was actually loaded." };
    (EquivalentClasses) => { "An equivalence relationship between two `ClassExpression`.\n\nAll instances of `ClassExpression` are also instances\nof other other." };
    (EquivalentDataProperties) => { "An equivalent data property relationship.\n\nAll these DataProperties are semantically identical.\n\nSee also: [EquivalentDataproperties](https://www.w3.org/TR/owl2-syntax/#Equivalent_Data_Properties)" };
    (EquivalentObjectProperties) => { "An equivalent object properties relationship.\n\nStates that two object properties are semantically identical\nto each other." };
    (FacetRestriction) => { "An OWL2 FacetRestriction" };
    (FunctionalDataProperty) => { "The functional DataProperty characteristic.\n\nAny individual `i` can only be connected to a single literal\nby this DataProperty.\n\nSee also: [Functional Data Property](https://www.w3.org/TR/owl2-syntax/#Functional_Data_Properties)" };
    (FunctionalObjectProperty) => { "The functional characteristic.\n\nThis states that if for a given individual `i`, there can be\nonly one individual `j` connected to `i` by this object\nproperty expression.\n\nSee also: [Functional](https://www.w3.org/TR/owl2-syntax/#Functional_Object_Properties)" };
    (HasKey) => { "A key\n\nAn individual `i` which is of type `ce` can be uniquely\nidentified by `pe`. Keys can only be applied to individuals\nwhich are explicitly named in the ontology, not those that are\ninferred.\n\nSee also: [Keys](https://www.w3.org/TR/owl2-syntax/#Keys)" };
    (HigherKind) => { "An ontology in Horned-OWL consists of a set of components which\ncan be either an OWL Axiom, metadata about the ontology or a SWRL\nrule. These unit tuple distinguishes between the two." };
    (IArgument) => { "A SWRL IArgument" };
    (IRI) => { "An\n[IRI](https://en.wikipedia.org/wiki/Internationalized_Resource_Identifier)\nis an internationalized version of an URI/URL.\n\nHere, we represent it as a simple `Borrow<str>`. IRIs are produced\nusing a `Build` instance, which allows for caching of the\nunderlying data.\n\nNo attempt is made to ensure that the IRI is valid with respect to\nthe specification. This can be achieved through\n[`as_oxiri`](IRI::as_oxiri) method which both validates and also\nprovides access to the constituent parts." };
    (Import) => { "Declares that an IRI is an import of this ontology" };
    (Individual) => { "An OWL2 Individual is either Named or Anonymous" };
    (InverseFunctionalObjectProperty) => { "The inverse functional characteristic\n\nThis states that for each individual `i`, there can be at most\none individual `j` connected to `i` via this object property\nexpression.\n\nSee also: [Inverse Functional](https://www.w3.org/TR/owl2-syntax/#Inverse-Functional_Object_Properties)" };
    (InverseObjectProperties) => { "An inverse relationship between two object properties.\n\nIf two individuals are related by one relationship, they are\nrelated by the other in the opposite direction. So, if `r` and\n`s` are transitive, then `a r b` implies `b r a`.\n\nSee also: [Property Characteristics](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Property_Characteristics)" };
    (IrreflexiveObjectProperty) => { "The irreflexive characteristic\n\nNo individual can be connected to itself by this property.\n\nSee also: [Irreflexive](https://www.w3.org/TR/owl2-syntax/#Irreflexive_Object_Properties)" };
    (Language) => { "Language-tagged literals have a lang tag and must be (or have\nan implicit) of datatype\n`http://www.w3.org/1999/02/22-rdf-syntax-ns#langString`" };
    (Literal) => { "Non-axiom data structures associated with OWL" };
    (MutableOntologyAdaptor) => { "An adaptor between `MutableOntology` and `Iterator`\n\nA wrapper to allow implementation of `FromIterator` and `Extend`\non any `MutableOntology`.\n\nMutableOntology implementations in horned_owl implement these interfaces directly\nand these should be used in preference." };
    (NamedEntity) => { "Enum of all OWL2 and SWRL `NamedEntity`" };
    (NamedEntityKind) => { "Unit tuple for the kind of a named entity in OWL2 and SWRL.\n\nSee also [`NamedOWLEntityKind`] for only those entities in OWL2" };
    (NamedIndividual) => { "An OWL\n[NamedIndividual](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Classes_and_Instances)\nis an individual in the ontology which is specifically known\nabout and can be identified by name." };
    (NamedOWLEntity) => { "An OWL entity that is directly resolvable to an IRI\n\nAll variants in this enum are named after the struct\nequivalent form. The individual structs for each variant\nprovide us types for use elsewhere in the library." };
    (NamedOWLEntityKind) => { "Unit tuple for all named entnties in OWL2, not including SWRL." };
    (NegativeDataPropertyAssertion) => { "A negative data property assertion.\n\nIndividual `from` is not connected `to` literal by `dp`.\n\nSee also [Negative Data Property Assertions](https://www.w3.org/TR/owl2-syntax/#Negative_Data_Property_Assertions)" };
    (NegativeObjectPropertyAssertion) => { "A negative object property assertion.\n\nIndividual `from` is not connected `to` by `ope`\n\nSee also: [Negative Object Property Assertions](https://www.w3.org/TR/owl2-syntax/#Negative_Object_Property_Assertions)" };
    (ObjectAllValuesFrom) => { "A universal relationship\n\nThis is the anonymous class of individuals `i` where all\nindividuals which are related by `o` are instances of\n`ce`. This does not imply that the `i` necessarily has any\nrelation `r`." };
    (ObjectComplementOf) => { "The boolean not\n\nThe class of individuals which are not individuals of any of\nthese classes." };
    (ObjectExactCardinality) => { "An exact cardinality relationship between individuals\n\nGiven an object property `o` and a class `ce`, this describes\nthe class of individuals which have the `o` relationship to exactly\n`n` other individuals." };
    (ObjectHasSelf) => { "The class of individuals which have a relation to themselves\n\nGiven a object property `r`, this class defines all the\nindividuals where `i r i`." };
    (ObjectHasValue) => { "An existential relationship to an individual\n\nThis is the class of individuals `c` which have the\nrelationship `o` to another individual `i`. Every individual\nin `c` must have this relationship to the individual `i`" };
    (ObjectIntersectionOf) => { "The boolean and\n\nThe class of individuals which are individuals of all these\nclasses." };
    (ObjectMaxCardinality) => { "A max cardinality relationship between individuals\n\nGiven an object property `o` and a class `ce`, this describes\nthe class of individuals which have the `o` relationship to at\nmost `n` other individuals." };
    (ObjectMinCardinality) => { "A min cardinality relationship between individuals\n\nGiven an object property `o` and a class `ce`, this describes\nthe class of individuals which have the `o` relationship to at\nleast `n` other individuals." };
    (ObjectOneOf) => { "An enumeration of individuals\n\nThis is the class containing exactly the given set of\nindividuals." };
    (ObjectProperty) => { "An OWL\n[ObjectProperty](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Object_Properties)\nis a relationship between two individuals.\n\nAlthough the relationship is between individuals, it is most\noften expressed as a relationship between two classes. See\n`ClassExpression` for more information." };
    (ObjectPropertyAssertion) => { "An object property assertion.\n\nIndividual `from` is connected `to` by `ope`.\n\nSee also: [Positive Object Property Assertions](https://www.w3.org/TR/owl2-syntax/#Positive_Object_Property_Assertions)" };
    (ObjectPropertyDomain) => { "The domain of the object property.\n\nThis states that if an individual `i` has an relationship,\n`ope` to any other individual, then the individual `i` is an\ninstances of `ce`\n\nSee also: [Domain](https://www.w3.org/TR/owl2-syntax/#Object_Property_Domain)" };
    (ObjectPropertyExpression) => { "A object property expression" };
    (ObjectPropertyRange) => { "The range of the object property.\n\nThis states that if an individual `i` is connected to be the\nrelationship `ope`, then it is an individual of `ce`.1\n\nSee also: [Domain](https://www.w3.org/TR/owl2-syntax/#Object_Property_Range)" };
    (ObjectSomeValuesFrom) => { "An existential relationship\n\nThis is the anonymous class of individuals `i`, which have the\nrelationship `o` to a class expression `ce`. Every individual\nin `i` must have this relationship to one individual in `ce`." };
    (ObjectUnionOf) => { "The boolean or\n\nThe class of individuals which are individuals of any of these\nclasses." };
    (OntologyAnnotation) => { "An annotation associated with this Ontology" };
    (OntologyID) => { "The Ontology ID. There should be only one OntologyID per\nontology." };
    (PropertyExpression) => { "A property expression" };
    (ReflexiveObjectProperty) => { "The reflexive characteristic\n\nEvery individual that is connected via the\nObjectPropertyExpression is connected to itself.\n\nSee also: [Reflexive](https://www.w3.org/TR/owl2-syntax/#Reflexive_Object_Properties)" };
    (Rule) => { "A SWRL Rule" };
    (SameIndividual) => { "A same individual expression.\n\nSee also: [Individual Equality](https://www.w3.org/TR/owl2-syntax/#Individual_Equality)" };
    (Simple) => { "Simple Literals are syntactic sugar for a Datatype with type:\n`http://www.w3.org/2001/XMLSchema#string`" };
    (SubAnnotationPropertyOf) => { "An sub-property assertion for annotation properties.\n\nImplies that any annotation of the type `sub_property` is also\nan annotation of the type `super_property`." };
    (SubClassOf) => { "A subclass relationship between two `ClassExpression`.\n\nAll instances of `sub_class` are also instances of\n`super_class`." };
    (SubDataPropertyOf) => { "A sub data property relationship.\n\nThe existence of the `sub_property` relationship also implies\nthe existence of the `super_property`.\n\nSee also: [Data Subproperties](https://www.w3.org/TR/owl2-syntax/#Data_Subproperties)" };
    (SubObjectPropertyExpression) => { "A sub-object property expression" };
    (SubObjectPropertyOf) => { "A sub property relationship between two object properties.\n\nThe existence of the sub property relationship between two\nindividuals also implies the super property relationship\nalso. The super property can also be a property chain.\nSo, if `s` is a super property of `r` then `a r b` implies `a\ns b`.\n\nSee also: [Property Hierarchies](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Property_Hierarchies)\n[Property Chains](https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Property_Chains)" };
    (SymmetricObjectProperty) => { "The symmetric characteristic\n\nIf an individual `i` is connected to `j` by this\nObjectPropertyExpression, then `j` is also connected by `i`\nSee also: [Symmetric](https://www.w3.org/TR/owl2-syntax/#Symmetric_Object_Properties)" };
    (TransitiveObjectProperty) => { "A transitive relationship between two object properties.\n\nWhen `r` is transitive, then `a r b`, and `b r c` implies `a r\nc` also.\n\nSee also: [TransitiveObjectProperty](https://www.w3.org/TR/owl2-syntax/#Transitive_Object_Properties)" };
    (Variable) => { "A SWRL Variable" };
    ($t:ident) => {""}
);
