Beispiel #1
0
        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}");
                }
            }
        }
Beispiel #2
0
        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}");
                }
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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}");
                }
            }
        }