public void UseSimpleGraphToPerformSelectQuery() { var graph = ConstructGraph(); var x = new RDFSharp.Query.RDFVariable("x"); var patternGroup = new RDFSharp.Query.RDFPatternGroup("PG1"); patternGroup.AddPattern(new RDFSharp.Query.RDFPattern( x, RDFSharp.Model.RDFVocabulary.FOAF.FAMILY_NAME, new RDFSharp.Model.RDFPlainLiteral("Doe"))); var query = new RDFSharp.Query.RDFSelectQuery(); query.AddPatternGroup(patternGroup); var result = query.ApplyToGraph(graph); Assert.AreEqual(1, result.SelectResultsCount); foreach (System.Data.DataRow row in result.SelectResults.Rows) { foreach (System.Data.DataColumn column in result.SelectResults.Columns) { var cellValue = row[column]; Util.WriteLine($"{column.ColumnName}: {cellValue}"); } } }
public void DemonstrateInference() { var graph = LoadOntologyGraph(); var ontology = RDFOntology.FromRDFGraph(graph); var report = ontology.Validate(); foreach (var error in report.SelectErrors()) { Util.WriteLine(error.EvidenceMessage); } var reasoner = RDFOntologyReasoner.CreateNew("Default") .WithRule(RDFBASEReasonerRuleset.DomainEntailment) .WithRule(RDFBASEReasonerRuleset.RangeEntailment) .WithRule(RDFBASEReasonerRuleset.SubClassTransitivity) .WithRule(RDFBASEReasonerRuleset.SubPropertyTransitivity) .WithRule(RDFBASEReasonerRuleset.TransitivePropertyEntailment) .WithRule(RDFBASEReasonerRuleset.SymmetricPropertyEntailment) .WithRule(RDFBASEReasonerRuleset.InverseOfEntailment); reasoner.ApplyToOntology(ref ontology); var x = new RDFSharp.Query.RDFVariable("x"); var y = new RDFSharp.Query.RDFVariable("y"); var patterns = new List <RDFSharp.Query.RDFPattern> { new RDFSharp.Query.RDFPattern( x, new RDFSharp.Model.RDFResource("http://example.com/demo#name"), new RDFSharp.Model.RDFPlainLiteral("Alice")), new RDFSharp.Query.RDFPattern( y, new RDFSharp.Model.RDFResource("http://example.com/demo#parentOf"), x), }; var patternGroup = new RDFSharp.Query.RDFPatternGroup("PG1", patterns); var query = new RDFSharp.Query.RDFSelectQuery(); query.AddProjectionVariable(y); query.AddPatternGroup(patternGroup); var result = query.ApplyToOntology(ontology); Assert.AreEqual(1, result.SelectResultsCount); foreach (System.Data.DataRow row in result.SelectResults.Rows) { foreach (System.Data.DataColumn column in result.SelectResults.Columns) { var cellValue = row[column]; Util.WriteLine($"{column.ColumnName}: {cellValue}"); } } }
public void UseSimpleGraphToPerformAskQuery() { var graph = ConstructGraph(); var x = new RDFSharp.Query.RDFVariable("x"); var patternGroup = new RDFSharp.Query.RDFPatternGroup("PG1"); patternGroup.AddPattern(new RDFSharp.Query.RDFPattern( x, RDFSharp.Model.RDFVocabulary.FOAF.FAMILY_NAME, new RDFSharp.Model.RDFPlainLiteral("Doe"))); var query = new RDFSharp.Query.RDFAskQuery(); query.AddPatternGroup(patternGroup); var result = query.ApplyToGraph(graph); Assert.IsTrue(result.AskResult); }
public void UseMultipleGraphToPerformSelectQuery() { var firstGraph = ConstructGraph(); var secondGraph = LoadGraphFromJsonLd(); var store = new RDFSharp.Store.RDFMemoryStore(); store.MergeGraph(firstGraph); store.MergeGraph(secondGraph); var x = new RDFSharp.Query.RDFVariable("x"); var y = new RDFSharp.Query.RDFVariable("y"); var patternGroup = new RDFSharp.Query.RDFPatternGroup("PG1"); patternGroup.AddPattern(new RDFSharp.Query.RDFPattern( x, y, RDFSharp.Model.RDFVocabulary.FOAF.FAMILY_NAME, new RDFSharp.Model.RDFPlainLiteral("Doe"))); var query = new RDFSharp.Query.RDFSelectQuery(); query.AddProjectionVariable(x); query.AddProjectionVariable(y); query.AddPatternGroup(patternGroup); var result = query.ApplyToStore(store); Assert.AreEqual(2, result.SelectResultsCount); foreach (System.Data.DataRow row in result.SelectResults.Rows) { foreach (System.Data.DataColumn column in result.SelectResults.Columns) { var cellValue = row[column]; Util.WriteLine($"{column.ColumnName}: {cellValue}"); } } }