diff --git a/CHANGELOG.md b/CHANGELOG.md
index 016b462bb..cd0697d86 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Added
+- Add [`validate`] command [#691]
+
### Fixed
- Handle empty [`template`] property charactersitics in [#719]
@@ -193,11 +196,13 @@ First official release of ROBOT!
[`repair`]: http://robot.obolibrary.org/repair
[`report`]: http://robot.obolibrary.org/report
[`template`]: http://robot.obolibrary.org/template
+[`validate`]: http://robot.obolibrary.org/validate
[#719]: https://github.com/ontodev/robot/pull/716
[#715]: https://github.com/ontodev/robot/pull/715
[#710]: https://github.com/ontodev/robot/pull/710
[#709]: https://github.com/ontodev/robot/issues/709
+[#691]: https://github.com/ontodev/robot/pull/691
[#689]: https://github.com/ontodev/robot/pull/689
[#685]: https://github.com/ontodev/robot/pull/685
[#671]: https://github.com/ontodev/robot/pull/671
diff --git a/docs/examples/immune_exposures.csv b/docs/examples/immune_exposures.csv
new file mode 100644
index 000000000..55cbfc672
--- /dev/null
+++ b/docs/examples/immune_exposures.csv
@@ -0,0 +1,14 @@
+exposure process reported,exposure material reported,exposure material id,disease reported,disease ontology id,disease stage reported
+is-required; subclass-of 'exposure process';,subclass-of|equivalent-to 'material entity'; equivalent-to %3; is-required (when %1 subclass-of ('administering substance in vivo' or 'exposure to substance without evidence for disease' or 'occurrence of infectious disease' or 'occurrence of allergic disease')); is-excluded (when %1 equivalent-to 'occurrence of disease'); is-excluded (when %1 subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer' or 'no exposure' or unknown)),equivalent-to %2,subclass-of disease; subclass-of 'has material basis in' some %2 (when %1 not-subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer')); equivalent-to %5; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 equivalent-to 'administering substance in vivo'); is-excluded (when %1 subclass-of (vaccination or 'transplant or transfusion' or 'exposure to substance without evidence for disease' or 'no exposure' or unknown)),equivalent-to %4,subclass-of 'disease stage'; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 not-subclass-of 'occurrence of disease')
+unknown,,,,,
+administering substance in vivo,Hepacivirus C,NCBITaxon:11103,,,
+exposure to substance without evidence for disease,Dengue virus,NCBITaxon:12637,,,
+occurrence of disease,,,,,
+occurrence of infectious disease,Dengue virus,NCBITaxon:12637,dengue hemorrhagic fever,DOID:12206,Acute/Recent onset
+occurrence of infectious disease,Dengue virus,NCBITaxon:12637,,,Acute/Recent onset
+occurrence of infectious disease,Dengue virus,NCBITaxon:12637,dengue hemorrhagic fever,DOID:12206,
+occurrence of infectious disease,Dengue virus,NCBITaxon:11060,dengue hemorrhagic fever,DOID:12206,Acute/Recent onset
+occurrence of infectious disease,Dengue virus,NCBITaxon:12637,Dengue virus 2,NCBITaxon:11060,Acute/Recent onset
+('administering substance in vivo' or 'exposure to substance without evidence for disease'),blood or 'Hepacivirus C',UBERON:0000178,,,Chronic
+occurrence of infectious disease,Dengue virus,NCBITaxon:12637,dengue hemorrhagic fever|wheat allergy,DOID:12206|DOID:3660,Acute/Recent onset
+occurrence of infectious disease,Dengue virus,NCBITaxon:12637,dengue hemorrhagic fever|dengue hemorrhagic fever,DOID:12206|DOID:12206,Acute/Recent onset
\ No newline at end of file
diff --git a/docs/examples/immune_exposures.html b/docs/examples/immune_exposures.html
new file mode 100644
index 000000000..41d401421
--- /dev/null
+++ b/docs/examples/immune_exposures.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
exposure process reported
+
exposure material reported
+
exposure material id
+
disease reported
+
disease ontology id
+
disease stage reported
+
+
+
+
+
is-required; subclass-of 'exposure process';
+
subclass-of|equivalent-to 'material entity'; equivalent-to %3; is-required (when %1 subclass-of ('administering substance in vivo' or 'exposure to substance without evidence for disease' or 'occurrence of infectious disease' or 'occurrence of allergic disease')); is-excluded (when %1 equivalent-to 'occurrence of disease'); is-excluded (when %1 subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer' or 'no exposure' or unknown))
+
equivalent-to %2
+
subclass-of disease; subclass-of 'has material basis in' some %2 (when %1 not-subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer')); equivalent-to %5; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 equivalent-to 'administering substance in vivo'); is-excluded (when %1 subclass-of (vaccination or 'transplant or transfusion' or 'exposure to substance without evidence for disease' or 'no exposure' or unknown))
+
equivalent-to %4
+
subclass-of 'disease stage'; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 not-subclass-of 'occurrence of disease')
+
+
diff --git a/docs/examples/immune_exposures.owl b/docs/examples/immune_exposures.owl
new file mode 100644
index 000000000..cf7472de1
--- /dev/null
+++ b/docs/examples/immune_exposures.owl
@@ -0,0 +1,709 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ has material basis in
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adminstering a vaccine to an organism with the intention of inducing immunity against antigen components of the vaccine.
+ vaccination
+ http://purl.obolibrary.org/obo/VO_0000002
+
+
+
+
+
+
+
+
+ An unplanned process in which an organism comes into contact with a substance without evidence for a disease caused by that exposure.
+ exposure to substance without evidence for disease
+
+
+
+
+
+
+
+
+ A process in which an infectious agent is in or on the body of an organism without causing detectable disease .
+ occurrence of asymptomatic infection
+
+
+
+
+
+
+
+
+ A process in which an organism is exposed to a substance which is evident from that process having been observed or documented.
+ documented exposure without evidence for disease
+
+
+
+
+
+
+
+
+ A process in which an organism's exposure to a material entity is assumed from that material being commonly present in the environment of the organism.
+ environmental exposure to endemic/ubiquitous agent without evidence for disease
+
+
+
+
+
+
+
+
+ An organism's lifspan which does not include exposure to a substance of interest.
+ no exposure
+
+
+
+
+
+
+
+
+ An organism's lifespan for which there is no available information on an exposure to a material entity of interest.
+ unknown
+
+
+
+
+
+
+
+
+ A planned process in which solid tissue is transferred to an organism
+ solid tissue transplantation
+
+
+
+
+
+
+
+
+ A planned process in which a bodily fluid is transferred into an organism
+ transfusion
+
+
+
+
+
+
+
+
+ An occurrence of cancer where there is evidence for the presence of a cancer causing oncovirus in the tumor.
+ occurrence of cancer associated with virus
+
+
+
+
+
+
+
+
+ A planned process by which a material is intentionally given to an organism resulting in exposure of the organism to that substance.
+ administering substance in vivo
+ http://purl.obolibrary.org/obo/OBI_0600007
+
+
+
+
+
+
+
+
+ Administering an infectious agent to an organism in order to test if and how an infection will occur.
+ infectious challenge
+ http://purl.obolibrary.org/obo/OBI_0000712
+
+
+
+
+
+
+
+
+ Transferring a solid tissue (transplant) or bodily fluid (transfusion) to an organism.
+ transplant or transfusion
+ http://purl.obolibrary.org/obo/OBI_0000105
+
+
+
+
+
+
+
+
+ The process in which an infectious disease unfolds.
+ occurrence of infectious disease
+ http://purl.obolibrary.org/obo/DOID_0050117
+ http://purl.obolibrary.org/obo/OBI_1110008
+
+
+
+
+
+
+
+
+ The process in which an allergic disease unfolds.
+ occurrence of allergic disease
+ http://purl.obolibrary.org/obo/DOID_1205
+ http://purl.obolibrary.org/obo/OBI_1110012
+
+
+
+
+
+
+
+
+ The process in which an autoimmune disease unfolds.
+ occurrence of autoimmune disease
+ http://purl.obolibrary.org/obo/DOID_417
+ http://purl.obolibrary.org/obo/OBI_1110054
+
+
+
+
+
+
+
+
+ The process in which cancer unfolds
+ occurrence of cancer
+ http://purl.obolibrary.org/obo/DOID_162
+ http://purl.obolibrary.org/obo/OBI_1110053
+
+
+
+
+
+
+
+
+ A process in which an organism is exposed to a material entity which is evident by a detectable immune reactivity against it.
+ exposure with existing immune reactivity without evidence for disease
+ http://purl.obolibrary.org/obo/OBI_1110061
+
+
+
+
+
+
+
+
+ The process in which a disease unfolds.
+ occurrence of disease
+ http://purl.obolibrary.org/obo/DOID_4
+ http://purl.obolibrary.org/obo/OGMS_0000031
+
+
+
+
+
+
+
+
+ Post
+
+
+
+
+
+
+
+
+ Unknown
+
+
+
+
+
+
+
+ exposure process
+
+
+
+
+
+
+
+ material entity
+
+
+
+
+
+
+
+
+ allergic disease
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dengue hemorrhagic fever
+
+
+
+
+
+
+
+
+ cancer
+
+
+
+
+
+
+
+
+ colon cancer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ wheat allergy
+
+
+
+
+
+
+
+ disease
+
+
+
+
+
+
+
+
+ autoimmune disease
+
+
+
+
+
+
+
+
+ acquired immunodeficiency syndrome
+
+
+
+
+
+
+
+
+ organism
+
+
+
+
+
+
+
+
+ Dengue virus 1
+
+
+
+
+
+
+
+
+ Dengue virus 2
+
+
+
+
+
+
+
+
+ Hepacivirus C
+
+
+
+
+
+
+
+
+ Dengue virus
+
+
+
+
+
+
+
+
+ Triticum aestivum
+
+
+
+
+
+
+
+ disease stage
+
+
+
+
+
+
+
+
+ Acute/Recent onset
+
+
+
+
+
+
+
+
+ Chronic
+
+
+
+
+
+
+
+
+ blood
+
+
+
+
+
+
+
+
+ Dryvax
+
+
+
+
+
+
+
+
+ FluMist
+
+
+
+
+
+
+
+
+ Fluarix
+
+
+
+
+
+
+
+
+ Fluvirin
+
+
+
+
+
+
+
+
+ Fluzone
+
+
+
+
+
+
+
+
+ Menactra
+
+
+
+
+
+
+
+
+ Influenza A (H1N1) 2009 Monovalent Vaccine (Novartis)
+
+
+
+
+
+
+
+
+ Plasmodium falciparum vaccine
+
+
+
+
+
+
+
+
+ Pneumovax 23 (USA)
+
+
+
+
+
+
+
+
+ YF-Vax
+
+
+
+
+
+
+
+
+ Yellow fever 17D vaccine vector
+
+
+
+
+
+
+
+
+ Zostavax
+
+
+
+
+
+
+
+
+ Influenza virus vaccine
+ Trivalent inactivated influenza
+
+
+
+
+
+
+
+
+ Varicella-zoster virus vaccine
+
+
+
+
+
+
+
+
+ BCG Vaccine
+
+
+
+
+
+
+
+
+ Menveo
+
+
+
+
+
+
+
+
+ MVA85A
+
+
+
+
+
+
+
+
+ MRKAd5 HIV-1 gag/pol/nef
+
+
+
+
+
+
+
+
+ ACWY Vax
+
+
+
+
+
+
+
+
+ Stamaril
+
+
+
+
+
+
+
+
+ HEPLISAV-B
+
+
+
+
+
+
+
+
+ LC16m8
+
+
+
+
+
+
+
+
+ rVSV-EBOV
+
+
+
+
+
+
+
+
+ 2008-2009 trivalent influenza vaccine
+
+
+
+
+
+
+
+
+ Engerix-B
+
+
+
+
+
+
+
+
+ Meningococcal Polysaccharide Vaccine, Groups A & C, Menomune A/C
+
+
+
+
+
+
+
+
+ vaccine
+
+
+
+
+
+
+
+
+ kidney transplant
+
+
+
+
+
+
+
diff --git a/docs/examples/immune_exposures.txt b/docs/examples/immune_exposures.txt
new file mode 100644
index 000000000..562e98a5a
--- /dev/null
+++ b/docs/examples/immune_exposures.txt
@@ -0,0 +1,14 @@
+At immune_exposures.csv row 6, column 4: Cell is empty but rule: "is-required true" does not allow this.
+At immune_exposures.csv row 7, column 6: Cell is empty but rule: "is-required true" does not allow this.
+At immune_exposures.csv row 8, column 2: Validation failed for rule: "Dengue virus equivalent-to (NCBITaxon:11060)".
+At immune_exposures.csv row 8, column 3: Validation failed for rule: "NCBITaxon:11060 equivalent-to 'Dengue virus'".
+At immune_exposures.csv row 9, column 4: Validation failed for rule: "Dengue virus 2 subclass-of disease".
+At immune_exposures.csv row 9, column 4: Validation failed for rule: "Dengue virus 2 subclass-of 'has material basis in' some 'Dengue virus'".
+At immune_exposures.csv row 10, column 2: Validation failed for rule: "blood or 'Hepacivirus C' equivalent-to (UBERON:0000178)".
+At immune_exposures.csv row 10, column 3: Validation failed for rule: "UBERON:0000178 equivalent-to (blood or 'Hepacivirus C')".
+At immune_exposures.csv row 10, column 6: Cell is non-empty ("Chronic") but rule: "is-excluded true" does not allow this.
+At immune_exposures.csv row 11, column 4: Validation failed for rule: "wheat allergy equivalent-to (DOID:12206)".
+At immune_exposures.csv row 11, column 4: Validation failed for rule: "dengue hemorrhagic fever equivalent-to (DOID:3660)".
+At immune_exposures.csv row 11, column 4: Validation failed for rule: "wheat allergy subclass-of 'has material basis in' some 'Dengue virus'".
+At immune_exposures.csv row 11, column 5: Validation failed for rule: "DOID:3660 equivalent-to 'dengue hemorrhagic fever'".
+At immune_exposures.csv row 11, column 5: Validation failed for rule: "DOID:12206 equivalent-to 'wheat allergy'".
diff --git a/docs/examples/immune_exposures_2.csv b/docs/examples/immune_exposures_2.csv
new file mode 100644
index 000000000..f6f03f182
--- /dev/null
+++ b/docs/examples/immune_exposures_2.csv
@@ -0,0 +1,14 @@
+exposure process reported,exposure material reported,exposure material id,disease reported,disease ontology id,disease stage reported
+is-required; subclass-of 'exposure process';,subclass-of|equivalent-to 'material entity'; equivalent-to %3; is-required (when %1 subclass-of ('administering substance in vivo' or 'exposure to substance without evidence for disease' or 'occurrence of infectious disease' or 'occurrence of allergic disease')); is-excluded (when %1 equivalent-to 'occurrence of disease'); is-excluded (when %1 subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer' or 'no exposure' or unknown)),equivalent-to %2,subclass-of disease; subclass-of 'has material basis in' some %2 (when %1 not-subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer')); equivalent-to %5; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 equivalent-to 'administering substance in vivo'); is-excluded (when %1 subclass-of (vaccination or 'transplant or transfusion' or 'exposure to substance without evidence for disease' or 'no exposure' or unknown)),equivalent-to %4,subclass-of 'disease stage'; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 not-subclass-of 'occurrence of disease')
+vaccination,Varicella-zoster virus vaccine,VO:0000669,,,
+infectious challenge,Hepacivirus C,NCBITaxon:11103,,,
+transplant or transfusion,blood,UBERON:0000178,,,
+infectious challenge,Dengue virus,NCBITaxon:12637,dengue hemorrhagic fever,DOID:12206,Acute/Recent onset
+allergic disease,Triticum aestivum,NCBITaxon:4565,wheat allergy,DOID:3660,Post
+occurrence of autoimmune disease,,,acquired immunodeficiency syndrome,DOID:635,Chronic
+occurrence of cancer,,,colon cancer,DOID:219,Chronic
+occurrence of asymptomatic infection,Dengue virus,NCBITaxon:12637,,,
+exposure with existing immune reactivity without evidence for disease,Dengue virus 2,NCBITaxon:11060,,,
+documented exposure without evidence for disease,Dengue virus,NCBITaxon:12637,,,Post
+environmental exposure to endemic/ubiquitous agent without evidence for disease,Dengue virus,NCBITaxon:12637,,,
+no exposure,,,,,
\ No newline at end of file
diff --git a/docs/examples/immune_exposures_2.html b/docs/examples/immune_exposures_2.html
new file mode 100644
index 000000000..1c9a985aa
--- /dev/null
+++ b/docs/examples/immune_exposures_2.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
exposure process reported
+
exposure material reported
+
exposure material id
+
disease reported
+
disease ontology id
+
disease stage reported
+
+
+
+
+
is-required; subclass-of 'exposure process';
+
subclass-of|equivalent-to 'material entity'; equivalent-to %3; is-required (when %1 subclass-of ('administering substance in vivo' or 'exposure to substance without evidence for disease' or 'occurrence of infectious disease' or 'occurrence of allergic disease')); is-excluded (when %1 equivalent-to 'occurrence of disease'); is-excluded (when %1 subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer' or 'no exposure' or unknown))
+
equivalent-to %2
+
subclass-of disease; subclass-of 'has material basis in' some %2 (when %1 not-subclass-of ('occurrence of autoimmune disease' or 'occurrence of cancer')); equivalent-to %5; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 equivalent-to 'administering substance in vivo'); is-excluded (when %1 subclass-of (vaccination or 'transplant or transfusion' or 'exposure to substance without evidence for disease' or 'no exposure' or unknown))
+
equivalent-to %4
+
subclass-of 'disease stage'; is-required (when %1 subclass-of 'occurrence of disease'); is-excluded (when %1 not-subclass-of 'occurrence of disease')