From: <ku...@us...> - 2008-04-03 14:03:33
|
Revision: 764 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=764&view=rev Author: kurzum Date: 2008-04-03 07:03:19 -0700 (Thu, 03 Apr 2008) Log Message: ----------- some minor changes, verification works now with kb parse, but still yields strange results Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java trunk/src/dl-learner/org/dllearner/core/owl/Nothing.java trunk/src/dl-learner/org/dllearner/core/owl/Thing.java trunk/src/dl-learner/org/dllearner/examples/KRK.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/OntologyCloser.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/examples/OntologyCloser.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2008-04-03 11:57:35 UTC (rev 763) +++ trunk/src/dl-learner/org/dllearner/Info.java 2008-04-03 14:03:19 UTC (rev 764) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2008-03-16"; + public static final String build = "2008-03-31"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-03 11:57:35 UTC (rev 763) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-03 14:03:19 UTC (rev 764) @@ -386,8 +386,11 @@ logger.info("\nsolutions:"); for(Description c : solutions) { logger.info(" " + c + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); - //TODO remove this line - logger.info(" MANCHESTER: " + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()) ); + //TODO remove this line maybe + // watch for String.replace Quick hack + logger.info(" MANCHESTER: " + + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). + replace("\"", "")); } } logger.debug("size of candidate set: " + candidates.size()); Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-03 11:57:35 UTC (rev 763) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-03 14:03:19 UTC (rev 764) @@ -513,7 +513,11 @@ logger.info("\nsolutions:"); for(Description c : solutions) { logger.info(" " + c + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); - logger.info(" MANCHESTER: " + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()) ); + //TODO remove this line maybe + // watch for String.replace Quick hack + logger.info(" MANCHESTER: " + + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). + replace("\"", "")); } } logger.info(" horizontal expansion: " + minimumHorizontalExpansion + " to " + maximumHorizontalExpansion); Modified: trunk/src/dl-learner/org/dllearner/core/owl/Nothing.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Nothing.java 2008-04-03 11:57:35 UTC (rev 763) +++ trunk/src/dl-learner/org/dllearner/core/owl/Nothing.java 2008-04-03 14:03:19 UTC (rev 764) @@ -40,8 +40,10 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO: check whether this is correct - return "owl:Nothing"; + // in Protege 3.3 owl:Nothing + // in Protege 4.0 only Nothing + //return "owl:Nothing"; + return "Nothing"; } public int getLength() { Modified: trunk/src/dl-learner/org/dllearner/core/owl/Thing.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Thing.java 2008-04-03 11:57:35 UTC (rev 763) +++ trunk/src/dl-learner/org/dllearner/core/owl/Thing.java 2008-04-03 14:03:19 UTC (rev 764) @@ -44,7 +44,11 @@ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - return "owl:Thing"; + // in Protege 3.3 owl:Thing + // in Protege 4.0 only Thing + //return "owl:Thing"; + return "Thing"; + } public int getLength() { Modified: trunk/src/dl-learner/org/dllearner/examples/KRK.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-04-03 11:57:35 UTC (rev 763) +++ trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-04-03 14:03:19 UTC (rev 764) @@ -30,6 +30,7 @@ import org.dllearner.core.owl.SymmetricObjectPropertyAxiom; import org.dllearner.core.owl.TransitiveObjectPropertyAxiom; import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.OntologyCloser; /* * Structure @@ -223,14 +224,37 @@ writeOWLFile("test.owl"); } if(writeClosedOWL) { + OntologyCloser oc = new OntologyCloser(kb); + oc.applyNumberRestrictions(); + + String conceptStr = "ALL \"http://www.test.de/test#hasPiece\".(EXISTS \"http://www.test.de/test#fileDistanceLessThan6\".((NOT \"http://www.test.de/test#WKing\") AND ALL \"http://www.test.de/test#rankDistance1\".(\"http://www.test.de/test#WKing\" AND ALL \"http://www.test.de/test#fileDistanceLessThan2\".\"http://www.test.de/test#BKing\" AND ALL \"http://www.test.de/test#hasLowerFileThan\".\"http://www.test.de/test#WKing\")) AND ALL \"http://www.test.de/test#fileDistance1\".\"http://www.test.de/test#WRook\")"; //conceptStr = "ALL http://www.test.de/test#hasPiece.(EXISTS http://www.test.de/test#fileDistanceLessThan6.((NOT http://www.test.de/test#WKing) AND ALL http://www.test.de/test#rankDistance1.(http://www.test.de/test#WKing AND ALL http://www.test.de/test#fileDistanceLessThan2.http://www.test.de/test#WKing AND ALL http://www.test.de/test#hasLowerFileThan.http://www.test.de/test#WKing)) AND ALL http://www.test.de/test#fileDistance1.http://www.test.de/test#WRook)"; //conceptStr = "ALL hasPiece.(EXISTS fileDistanceLessThan6.((NOT WKing) AND ALL rankDistance1.(WKing AND ALL fileDistanceLessThan2.WKing AND ALL hasLowerFileThan.WKing)) AND ALL fileDistance1.WRook)"; - conceptStr = "ALL \"http://www.test.de/test#hasPiece\".\"http://www.test.de/test#WKing\""; - OntologyCloser oc = new OntologyCloser(kb); - oc.applyNumberRestrictions(); + //conceptStr = "ALL \"http://www.test.de/test#hasPiece\".\"http://www.test.de/test#WKing\""; + //conceptStr = "EXISTS \"http://www.test.de/test#hasPiece\".EXISTS \"http://www.test.de/test#hasLowerRankThan\".(\"http://www.test.de/test#WRook\" AND ALL \"http://www.test.de/test#fileDistanceLessThan1\".\"http://www.test.de/test#WKing\")"; + + + conceptStr = "\"http://www.test.de/test#WRook\""; + oc.verifyConcept(conceptStr); - writeOWLFile("test_Closed.owl"); + conceptStr = "ALL \"http://www.test.de/test#fileDistanceLessThan1\"." + + "\"http://www.test.de/test#WKing\" "; + + oc.verifyConcept(conceptStr); + conceptStr = "(\"http://www.test.de/test#WRook\" "+ + " AND " + + " ALL \"http://www.test.de/test#fileDistanceLessThan1\"." + + "\"http://www.test.de/test#WKing\") "; + + oc.verifyConcept(conceptStr); + conceptStr = "EXISTS \"http://www.test.de/test#hasLowerRankThan\"."+ + "(\"http://www.test.de/test#WRook\""+ + "AND ALL \"http://www.test.de/test#fileDistanceLessThan1\".\"http://www.test.de/test#WKing\") "; + + + oc.verifyConcept(conceptStr); + //writeOWLFile("test_Closed.owl"); } } catch (Exception e) { Deleted: trunk/src/dl-learner/org/dllearner/examples/OntologyCloser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/OntologyCloser.java 2008-04-03 11:57:35 UTC (rev 763) +++ trunk/src/dl-learner/org/dllearner/examples/OntologyCloser.java 2008-04-03 14:03:19 UTC (rev 764) @@ -1,102 +0,0 @@ -package org.dllearner.examples; - -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; - -import org.dllearner.core.KnowledgeSource; -import org.dllearner.core.ReasoningService; -import org.dllearner.core.owl.ClassAssertionAxiom; -import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.KB; -import org.dllearner.core.owl.ObjectExactCardinalityRestriction; -import org.dllearner.core.owl.ObjectProperty; -import org.dllearner.core.owl.PropertyAxiom; -import org.dllearner.core.owl.Thing; -import org.dllearner.kb.KBFile; -import org.dllearner.parser.KBParser; -import org.dllearner.reasoning.OWLAPIReasoner; - -public class OntologyCloser { - KB kb; - KBFile kbFile; - Set<KnowledgeSource> ks; - ReasoningService rs; - - public OntologyCloser(KB kb) { - super(); - this.kb = kb; - this.kbFile = new KBFile(this.kb); - this.ks = new HashSet<KnowledgeSource>(); - this.ks.add(this.kbFile); - OWLAPIReasoner owlapi = new OWLAPIReasoner(ks); - owlapi.init(); - - this.rs = new ReasoningService(owlapi); - - } - - /** - * counts the number of roles used by each individual and assigns - * ExactCardinalityRestriction - */ - public void applyNumberRestrictions() { - Set<ObjectProperty> allRoles = this.rs.getAtomicRoles(); - // Set<Individual> allind = this.rs.getIndividuals(); - Set<PropertyAxiom> ax = kb.getRbox(); - for (PropertyAxiom propertyAxiom : ax) { - if (propertyAxiom.getClass().getSimpleName().equals( - "TransitiveObjectPropertyAxiom")) { - - System.out - .println("WARNING transitive object property can't be used in cardinality restriction\n" - + propertyAxiom.toString()); - } - } - - for (ObjectProperty oneRole : allRoles) { - - // System.out.println(oneRole.getClass()); - Map<Individual, SortedSet<Individual>> allRoleMembers = this.rs - .getRoleMembers(oneRole); - for (Individual oneInd : allRoleMembers.keySet()) { - SortedSet<Individual> fillers = allRoleMembers.get(oneInd); - if (fillers.size() > 0) { - ObjectExactCardinalityRestriction oecr = new ObjectExactCardinalityRestriction( - fillers.size(), oneRole, new Thing()); - kb.addABoxAxiom(new ClassAssertionAxiom(oecr, oneInd)); - } - } - - } - // System.out.println("good ontology? " + rs.isSatisfiable()); - - } - - public static void closeKB(KB kb) { - new OntologyCloser(kb).applyNumberRestrictions(); - } - - public void verifyConcept(String conceptStr) { - Description d; - StringBuffer sb = new StringBuffer(); - sb.append(conceptStr); - conceptStr = sb.toString(); - try { - d = KBParser.parseConcept(conceptStr); - System.out.println("Starting retrieval"); - SortedSet<Individual> ind = this.rs.retrieval(d); - System.out.println("retrieved: " + ind.size() + " instances"); - - for (Individual individual : ind) { - System.out.println(individual + ""); - } - - } catch (Exception e) { - e.printStackTrace(); - } - } - -} Copied: trunk/src/dl-learner/org/dllearner/utilities/OntologyCloser.java (from rev 760, trunk/src/dl-learner/org/dllearner/examples/OntologyCloser.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/OntologyCloser.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/OntologyCloser.java 2008-04-03 14:03:19 UTC (rev 764) @@ -0,0 +1,105 @@ +package org.dllearner.utilities; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; + +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.owl.ClassAssertionAxiom; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.KB; +import org.dllearner.core.owl.ObjectExactCardinalityRestriction; +import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.core.owl.PropertyAxiom; +import org.dllearner.core.owl.Thing; +import org.dllearner.kb.KBFile; +import org.dllearner.parser.KBParser; +import org.dllearner.reasoning.OWLAPIReasoner; + +public class OntologyCloser { + KB kb; + KBFile kbFile; + Set<KnowledgeSource> ks; + ReasoningService rs; + + public OntologyCloser(KB kb) { + super(); + this.kb = kb; + this.kbFile = new KBFile(this.kb); + this.ks = new HashSet<KnowledgeSource>(); + this.ks.add(this.kbFile); + OWLAPIReasoner owlapi = new OWLAPIReasoner(ks); + owlapi.init(); + + this.rs = new ReasoningService(owlapi); + + } + + /** + * counts the number of roles used by each individual and assigns + * ExactCardinalityRestriction + */ + public void applyNumberRestrictions() { + Set<ObjectProperty> allRoles = this.rs.getAtomicRoles(); + // Set<Individual> allind = this.rs.getIndividuals(); + Set<PropertyAxiom> ax = kb.getRbox(); + for (PropertyAxiom propertyAxiom : ax) { + if (propertyAxiom.getClass().getSimpleName().equals( + "TransitiveObjectPropertyAxiom")) { + + System.out + .println("WARNING transitive object property can't be used in cardinality restriction\n" + + propertyAxiom.toString()); + } + } + + for (ObjectProperty oneRole : allRoles) { + + // System.out.println(oneRole.getClass()); + Map<Individual, SortedSet<Individual>> allRoleMembers = this.rs + .getRoleMembers(oneRole); + for (Individual oneInd : allRoleMembers.keySet()) { + SortedSet<Individual> fillers = allRoleMembers.get(oneInd); + if (fillers.size() > 0) { + ObjectExactCardinalityRestriction oecr = new ObjectExactCardinalityRestriction( + fillers.size(), oneRole, new Thing()); + kb.addABoxAxiom(new ClassAssertionAxiom(oecr, oneInd)); + } + } + + } + // System.out.println("good ontology? " + rs.isSatisfiable()); + + } + + public static void closeKB(KB kb) { + new OntologyCloser(kb).applyNumberRestrictions(); + } + + public void verifyConcept(String conceptStr) { + Description d; + StringBuffer sb = new StringBuffer(); + sb.append(conceptStr); + conceptStr = sb.toString(); + try { + d = KBParser.parseConcept(conceptStr); + System.out.println(d.toManchesterSyntaxString("", new HashMap<String,String>())); + System.out.println(d.toString()); + System.out.println("Starting retrieval"); + SortedSet<Individual> ind = this.rs.retrieval(d); + System.out.println("retrieved: " + ind.size() + " instances"); + + //for (Individual individual : ind) { + //System.out.println(individual + ""); + //} + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |