public void GraphSubGraphMatchingWithBNodes() { Graph parent = new Graph(); FileLoader.Load(parent, "resources\\Turtle.ttl"); Graph subgraph = new Graph(); subgraph.Assert(parent.Triples.Where(t => !t.IsGroundTriple)); //Check method calls Dictionary <INode, INode> mapping; Console.WriteLine("Doing basic sub-graph matching with BNode tests"); Assert.True(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.False(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.False(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.True(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); //Eliminate some of the Triples from the sub-graph Console.WriteLine("Eliminating some Triples from the sub-graph and seeing if the mapping still computes OK"); subgraph.Retract(subgraph.Triples.Skip(2).Take(5).ToList()); Assert.True(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.False(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.False(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.True(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); Console.WriteLine("Eliminating Blank Nodes from the parent Graph to check that the sub-graph is no longer considered as such afterwards"); parent.Retract(parent.Triples.Where(t => !t.IsGroundTriple).ToList()); Assert.False(parent.HasSubGraph(subgraph), "Sub-graph should no longer be considered as such"); Assert.False(subgraph.IsSubGraphOf(parent), "Sub-graph should no longer be considered as such"); }
public void GraphSubGraphMatching() { Graph parent = new Graph(); FileLoader.Load(parent, "resources\\InferenceTest.ttl"); Graph subgraph = new Graph(); subgraph.NamespaceMap.Import(parent.NamespaceMap); subgraph.Assert(parent.GetTriplesWithSubject(parent.CreateUriNode("eg:FordFiesta"))); //Check method calls Dictionary <INode, INode> mapping; Console.WriteLine("Doing basic sub-graph matching with no BNode tests"); Assert.True(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.False(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.False(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.True(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); //Add an extra triple into the Graph which will cause it to no longer be a sub-graph Console.WriteLine("Adding an extra Triple so the sub-graph is no longer such"); subgraph.Assert(new Triple(subgraph.CreateUriNode("eg:Rocket"), subgraph.CreateUriNode("rdf:type"), subgraph.CreateUriNode("eg:AirVehicle"))); Assert.False(parent.HasSubGraph(subgraph, out mapping), "Sub-graph should no longer be considered a sub-graph"); Assert.False(subgraph.IsSubGraphOf(parent, out mapping), "Sub-graph should no longer be considered a sub-graph"); Console.WriteLine("OK"); Console.WriteLine(); //Reset the sub-graph Console.WriteLine("Resetting the sub-graph"); subgraph = new Graph(); subgraph.NamespaceMap.Import(parent.NamespaceMap); subgraph.Assert(parent.GetTriplesWithSubject(parent.CreateUriNode("eg:FordFiesta"))); Console.WriteLine("Adding additional information to the parent Graph, this should not affect the fact that the sub-graph is a sub-graph of it"); Assert.True(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.False(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.False(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.True(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); //Remove stuff from parent graph so it won't match any more Console.WriteLine("Removing stuff from parent graph so that it won't have the sub-graph anymore"); parent.Retract(parent.GetTriplesWithSubject(parent.CreateUriNode("eg:FordFiesta")).ToList()); Assert.False(parent.HasSubGraph(subgraph, out mapping), "Parent should no longer contian the sub-graph"); Assert.False(subgraph.IsSubGraphOf(parent, out mapping), "Parent should no longer contain the sub-graph"); Console.WriteLine("OK"); Console.WriteLine(); }
public void GraphSubGraphMatching() { Graph parent = new Graph(); FileLoader.Load(parent, "InferenceTest.ttl"); Graph subgraph = new Graph(); subgraph.NamespaceMap.Import(parent.NamespaceMap); subgraph.Assert(parent.GetTriplesWithSubject(parent.CreateUriNode("eg:FordFiesta"))); //Check method calls Dictionary<INode, INode> mapping; Console.WriteLine("Doing basic sub-graph matching with no BNode tests"); Assert.IsTrue(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.IsFalse(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.IsFalse(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.IsTrue(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); //Add an extra triple into the Graph which will cause it to no longer be a sub-graph Console.WriteLine("Adding an extra Triple so the sub-graph is no longer such"); subgraph.Assert(new Triple(subgraph.CreateUriNode("eg:Rocket"), subgraph.CreateUriNode("rdf:type"), subgraph.CreateUriNode("eg:AirVehicle"))); Assert.IsFalse(parent.HasSubGraph(subgraph, out mapping), "Sub-graph should no longer be considered a sub-graph"); Assert.IsFalse(subgraph.IsSubGraphOf(parent, out mapping), "Sub-graph should no longer be considered a sub-graph"); Console.WriteLine("OK"); Console.WriteLine(); //Reset the sub-graph Console.WriteLine("Resetting the sub-graph"); subgraph = new Graph(); subgraph.NamespaceMap.Import(parent.NamespaceMap); subgraph.Assert(parent.GetTriplesWithSubject(parent.CreateUriNode("eg:FordFiesta"))); Console.WriteLine("Adding additional information to the parent Graph, this should not affect the fact that the sub-graph is a sub-graph of it"); Assert.IsTrue(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.IsFalse(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.IsFalse(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.IsTrue(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); //Remove stuff from parent graph so it won't match any more Console.WriteLine("Removing stuff from parent graph so that it won't have the sub-graph anymore"); parent.Retract(parent.GetTriplesWithSubject(parent.CreateUriNode("eg:FordFiesta"))); Assert.IsFalse(parent.HasSubGraph(subgraph, out mapping), "Parent should no longer contian the sub-graph"); Assert.IsFalse(subgraph.IsSubGraphOf(parent, out mapping), "Parent should no longer contain the sub-graph"); Console.WriteLine("OK"); Console.WriteLine(); }
public void GraphSubGraphMatchingWithBNodes() { Graph parent = new Graph(); FileLoader.Load(parent, "Turtle.ttl"); Graph subgraph = new Graph(); subgraph.Assert(parent.Triples.Where(t => !t.IsGroundTriple)); //Check method calls Dictionary<INode, INode> mapping; Console.WriteLine("Doing basic sub-graph matching with BNode tests"); Assert.IsTrue(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.IsFalse(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.IsFalse(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.IsTrue(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); //Eliminate some of the Triples from the sub-graph Console.WriteLine("Eliminating some Triples from the sub-graph and seeing if the mapping still computes OK"); subgraph.Retract(subgraph.Triples.Skip(2).Take(5)); Assert.IsTrue(parent.HasSubGraph(subgraph, out mapping), "Failed to match the sub-graph as expected"); Assert.IsFalse(parent.IsSubGraphOf(subgraph, out mapping), "Parent should not be a sub-graph of the sub-graph"); Assert.IsFalse(subgraph.HasSubGraph(parent, out mapping), "Sub-graph should not have parent as its sub-graph"); Assert.IsTrue(subgraph.IsSubGraphOf(parent, out mapping), "Failed to match the sub-graph as expected"); Console.WriteLine("OK"); Console.WriteLine(); Console.WriteLine("Eliminating Blank Nodes from the parent Graph to check that the sub-graph is no longer considered as such afterwards"); parent.Retract(parent.Triples.Where(t => !t.IsGroundTriple)); Assert.IsFalse(parent.HasSubGraph(subgraph), "Sub-graph should no longer be considered as such"); Assert.IsFalse(subgraph.IsSubGraphOf(parent), "Sub-graph should no longer be considered as such"); }