From: <jen...@us...> - 2008-11-21 15:11:20
|
Revision: 1521 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1521&view=rev Author: jenslehmann Date: 2008-11-21 15:11:14 +0000 (Fri, 21 Nov 2008) Log Message: ----------- simulation fixes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java trunk/src/dl-learner/org/dllearner/test/junit/SimulationTests.java trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-11-21 12:06:58 UTC (rev 1520) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-11-21 15:11:14 UTC (rev 1521) @@ -330,7 +330,7 @@ // (same in both cases) private void labelSimulationUpdate() { // compute the nodes, which need to be updated - Set<ELDescriptionNode> update = new TreeSet<ELDescriptionNode>(); + Set<ELDescriptionNode> update = new HashSet<ELDescriptionNode>(); // loop over all nodes on the same level, which are not in the in set Set<ELDescriptionNode> tmp = new HashSet<ELDescriptionNode>(tree.getNodesOnLevel(level)); @@ -345,8 +345,10 @@ } } - // loop over all nodes in out set - for(ELDescriptionNode w : out) { + // loop over all nodes in out set (we make a copy, because out + // is potentially modified, so we cannot safely iterate over it) + tmp = new HashSet<ELDescriptionNode>(out); + for(ELDescriptionNode w : tmp) { if(w != this) { if(!tree.checkSC1(w, this)) { tree.shrinkSimulation(w, this); Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-11-21 12:06:58 UTC (rev 1520) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-11-21 15:11:14 UTC (rev 1521) @@ -322,52 +322,52 @@ // adds (node1,node2) to simulation, takes care of all helper sets public void extendSimulation(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.out.add(node2); - node1.outSC1.add(node2); - node1.outSC2.add(node2); - node2.in.add(node1); - node2.inSC1.add(node1); - node2.inSC2.add(node1); + node1.in.add(node2); + node1.inSC1.add(node2); + node1.inSC2.add(node2); + node2.out.add(node1); + node2.outSC1.add(node1); + node2.outSC2.add(node1); } public void extendSimulationSC1(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.outSC1.add(node2); - node2.inSC1.add(node1); + node1.inSC1.add(node2); + node2.outSC1.add(node1); } public void extendSimulationSC2(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.outSC2.add(node2); - node2.inSC2.add(node1); + node1.inSC2.add(node2); + node2.outSC2.add(node1); } public void extendSimulationSC12(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.out.add(node2); - node2.in.add(node1); + node1.in.add(node2); + node2.out.add(node1); } // removes (node1,node2) from simulation, takes care of all helper sets public void shrinkSimulation(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.out.remove(node2); - node1.outSC1.remove(node2); - node1.outSC2.remove(node2); - node2.in.remove(node1); - node2.inSC1.remove(node1); - node2.inSC2.remove(node1); + node1.in.remove(node2); + node1.inSC1.remove(node2); + node1.inSC2.remove(node2); + node2.out.remove(node1); + node2.outSC1.remove(node1); + node2.outSC2.remove(node1); } public void shrinkSimulationSC1(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.outSC1.remove(node2); - node2.inSC1.remove(node1); + node1.inSC1.remove(node2); + node2.outSC1.remove(node1); } public void shrinkSimulationSC2(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.outSC2.remove(node2); - node2.inSC2.remove(node1); + node1.inSC2.remove(node2); + node2.outSC2.remove(node1); } public void shrinkSimulationSC12(ELDescriptionNode node1, ELDescriptionNode node2) { - node1.out.remove(node2); - node2.in.remove(node1); + node1.in.remove(node2); + node2.out.remove(node1); } @Override Modified: trunk/src/dl-learner/org/dllearner/test/junit/SimulationTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/SimulationTests.java 2008-11-21 12:06:58 UTC (rev 1520) +++ trunk/src/dl-learner/org/dllearner/test/junit/SimulationTests.java 2008-11-21 15:11:14 UTC (rev 1521) @@ -28,6 +28,7 @@ import org.dllearner.core.ReasonerComponent; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.parser.KBParser; import org.dllearner.test.junit.TestOntologies.TestOntology; import org.junit.Test; @@ -71,12 +72,12 @@ // perform test with empty background knowledge and A1 AND EXISTS r1.TOP AND EXISTS r2.TOP ReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.EMPTY); ELDescriptionTree tree = new ELDescriptionTree(rs); - NamedClass a1 = new NamedClass("a1"); + NamedClass a1 = new NamedClass(uri("a1")); ELDescriptionNode v1 = new ELDescriptionNode(tree); v1.extendLabel(a1); - ObjectProperty r1 = new ObjectProperty("r1"); + ObjectProperty r1 = new ObjectProperty(uri("r1")); ELDescriptionNode v2 = new ELDescriptionNode(v1, r1, new TreeSet<NamedClass>()); - ObjectProperty r2 = new ObjectProperty("r2"); + ObjectProperty r2 = new ObjectProperty(uri("r2")); ELDescriptionNode v3 = new ELDescriptionNode(v1, r2, new TreeSet<NamedClass>()); assertEmpty(v1); @@ -95,20 +96,20 @@ * * v1: - * v2: in=inSC1=inSC2=outSC2={v3,v4} - * v3: inSC2=outSC2={v2,v4} - * v4: inSC2=outSC2={v2,v3} + * v3: out=outSC1={v2}, inSC2=outSC2={v2,v4} + * v4: out=outSC1={v2}, inSC2=outSC2={v2,v3} */ @Test public void test3() { ReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.R1SUBR2); ELDescriptionTree tree = new ELDescriptionTree(rs); ELDescriptionNode v1 = new ELDescriptionNode(tree); - ObjectProperty r1 = new ObjectProperty("r1"); - NamedClass a1 = new NamedClass("a1"); - NamedClass a2 = new NamedClass("a2"); + ObjectProperty r1 = new ObjectProperty(uri("r1")); + NamedClass a1 = new NamedClass(uri("a1")); + NamedClass a2 = new NamedClass(uri("a2")); ELDescriptionNode v2 = new ELDescriptionNode(v1, r1, a1, a2); ELDescriptionNode v3 = new ELDescriptionNode(v1, r1, a2); - ObjectProperty r2 = new ObjectProperty("r2"); + ObjectProperty r2 = new ObjectProperty(uri("r2")); ELDescriptionNode v4 = new ELDescriptionNode(v1, r2, a1); System.out.println("v1:\n" + v1.toSimulationString()); @@ -123,13 +124,17 @@ assertOutSC1(v2); assertOut(v2); + assertOut(v3,v2); + assertOutSC1(v3,v2); assertSC2(v3, v2, v4); - assertSC1(v3); - assertSC(v3); + assertInSC1(v3); + assertIn(v3); + assertOut(v4,v2); + assertOutSC1(v4,v2); assertSC2(v4, v2, v3); - assertSC1(v4); - assertSC(v4); + assertInSC1(v4); + assertIn(v4); } /** @@ -157,12 +162,12 @@ public void test4() { ReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.SIMPLE2); ELDescriptionTree tree = new ELDescriptionTree(rs); - ObjectProperty r1 = new ObjectProperty("r1"); - ObjectProperty r2 = new ObjectProperty("r2"); - ObjectProperty r3 = new ObjectProperty("r3"); - NamedClass a1 = new NamedClass("a1"); - NamedClass a2 = new NamedClass("a2"); - NamedClass a3 = new NamedClass("a3"); + ObjectProperty r1 = new ObjectProperty(uri("r1")); + ObjectProperty r2 = new ObjectProperty(uri("r2")); + ObjectProperty r3 = new ObjectProperty(uri("r3")); + NamedClass a1 = new NamedClass(uri("a1")); + NamedClass a2 = new NamedClass(uri("a2")); + NamedClass a3 = new NamedClass(uri("a3")); ELDescriptionNode v1 = new ELDescriptionNode(tree); ELDescriptionNode v2 = new ELDescriptionNode(v1, r1, a2, a3); ELDescriptionNode v3 = new ELDescriptionNode(v1, r1); @@ -220,11 +225,13 @@ assertOutSC2(node, nodesOut); } + @SuppressWarnings("unused") private void assertSC(ELDescriptionNode node, ELDescriptionNode... nodesOut) { assertIn(node, nodesOut); assertOut(node, nodesOut); } + @SuppressWarnings("unused") private void assertSC1(ELDescriptionNode node, ELDescriptionNode... nodesOut) { assertInSC1(node, nodesOut); assertOutSC1(node, nodesOut); @@ -286,4 +293,9 @@ assertTrue(node.getOutSC1().isEmpty()); assertTrue(node.getOutSC2().isEmpty()); } + + // we use the standard KB file prefix + private String uri(String localname) { + return KBParser.getInternalURI(localname); + } } Modified: trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java 2008-11-21 12:06:58 UTC (rev 1520) +++ trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java 2008-11-21 15:11:14 UTC (rev 1521) @@ -55,10 +55,13 @@ kbString += "cat SUB animal.\n"; kbString += "(human AND animal) = BOTTOM.\n"; } else if(ont.equals(TestOntology.SIMPLE2)) { - kbString += "Subrole(r2,r3)."; - kbString += "a2 SUB a4."; + kbString += "Subrole(r1,r2).\n"; + kbString += "a1 SUB TOP.\n"; + kbString += "a2 SUB a3.\n"; } else if(ont.equals(TestOntology.R1SUBR2)) { kbString += "Subrole(r1,r2).\n"; + kbString += "a1 SUB TOP.\n"; + kbString += "a2 SUB TOP.\n"; } else if(ont.equals(TestOntology.DATA1)) { kbString += "man SUB person.\n"; kbString += "woman SUB person.\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |