/// <summary>
        /// Validate the given ontology against a set of RDFS/OWL-DL rules, detecting errors and inconsistencies affecting its model and data.
        /// </summary>
        public static RDFOntologyValidatorReport Validate(this RDFOntology ontology) {
            var report = new RDFOntologyValidatorReport();
            if (ontology != null) {
                RDFSemanticsEvents.RaiseSemanticsInfo(String.Format("Validator is going to be applied on Ontology '{0}'...", ontology.Value));

                //STEP 1: Expand ontology
                RDFOntology expOntology = ontology.UnionWith(RDFBASEOntology.Instance);

                //STEP 2: Execute rules                
                Parallel.ForEach(Rules, r => report.MergeEvidences(r.ExecuteRule(expOntology)));

                RDFSemanticsEvents.RaiseSemanticsInfo(String.Format("Validator has been applied on Ontology '{0}': found " + report.EvidencesCount + " evidences.", ontology.Value));
            }
            return report;
        }
        /// <summary>
        /// Validate the given ontology against a set of RDFS/OWL-DL rules, detecting errors and inconsistencies affecting its model and data.
        /// </summary>
        public static RDFOntologyValidatorReport Validate(this RDFOntology ontology)
        {
            var report = new RDFOntologyValidatorReport();

            if (ontology != null)
            {
                RDFSemanticsEvents.RaiseSemanticsInfo(string.Format("Validator is going to be applied on Ontology '{0}': this may require intensive processing, depending on size and complexity of domain knowledge.", ontology.Value));

                //STEP 1: Expand ontology
                RDFOntology expOntology = ontology.UnionWith(RDFBASEOntology.Instance);

                //STEP 2: Execute rules
                Parallel.ForEach(Rules, r => report.MergeEvidences(r.ExecuteRule(expOntology)));

                RDFSemanticsEvents.RaiseSemanticsInfo(string.Format("Validator has been applied on Ontology '{0}': found " + report.EvidencesCount + " evidences.", ontology.Value));
            }
            return(report);
        }
 /// <summary>
 /// Merges the evidences of the given report
 /// </summary>
 internal void MergeEvidences(RDFOntologyValidatorReport report)
 {
     lock (this.SyncLock) {
         this.Evidences.AddRange(report.Evidences);
     }
 }