/// <summary> /// /// </summary> /// <param name="spinGraph"></param> /// <returns></returns> internal IGraph Initialise(IGraph spinGraph) { if (_spinConfiguration.GraphUris.Contains(spinGraph.BaseUri)) { _spinConfiguration.RemoveGraph(spinGraph.BaseUri); } String ontQuery = "CONSTRUCT { ?graphUri a <" + SPIN.ClassLibraryOntology + ">} WHERE { {?s (<" + SPIN.PropertyImports + ">|<" + OWL.PropertyImports + ">) ?graphUri} UNION {?graphUri a <" + SPIN.ClassLibraryOntology + ">} }"; IGraph imports = (Graph)spinGraph.ExecuteQuery(ontQuery); // Explore for subsequent imports foreach (Triple t in imports.GetTriplesWithPredicateObject(RDF.PropertyType, SPIN.ClassLibraryOntology)) { Uri importUri = ((IUriNode)t.Subject).Uri; if (!_spinConfiguration.GraphUris.Contains(importUri) && !RDFUtil.sameTerm(importUri, spinGraph.BaseUri)) { Initialise(importUri); } } _spinConfiguration.AddGraph(spinGraph); _reasoner.Initialise(spinGraph); IGraph inferenceGraph = ApplyInference(spinGraph); _spinConfiguration.AddGraph(inferenceGraph); _reasoner.Initialise(inferenceGraph); return(inferenceGraph); }
static Graph() { using var schemaFull = new NonIndexedGraph(); schemaFull.LoadFromEmbeddedResource("GraphEngine.Resources.Schema.ttl, GraphEngine"); using var schemaClean = new NonIndexedGraph(); schemaClean.Assert( schemaFull .GetTriplesWithPredicate(UriFactory.Create(OntologyHelper.PropertyDomain)) .Where(t => !ExcludedClasses.Contains(t.Object))); Reasoner.Initialise(schemaClean); }