From: <lor...@us...> - 2011-09-26 21:23:05
|
Revision: 3286 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3286&view=rev Author: lorenz_b Date: 2011-09-26 21:22:59 +0000 (Mon, 26 Sep 2011) Log Message: ----------- Some modifications to store the property that axioms are already asserted in the knowledge base. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/core/EvaluatedAxiom.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -154,6 +154,9 @@ for(Entry<Description, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new DatatypePropertyDomainAxiom(propertyToDescribe, entry.getKey()), computeScore(total, entry.getValue())); + if(existingAxioms.contains(evalAxiom.getAxiom())){ + evalAxiom.setAsserted(true); + } axioms.add(evalAxiom); } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -80,10 +80,11 @@ fetchedRows = 0; currentlyBestAxioms = new ArrayList<EvaluatedAxiom>(); - //check if property is already declared as symmetric in knowledge base + //check if property is already declared as functional in knowledge base String query = String.format("ASK {<%s> a <%s>}", propertyToDescribe, OWL.FunctionalProperty.getURI()); boolean declaredAsFunctional = executeAskQuery(query); if(declaredAsFunctional) { + existingAxioms.add(new FunctionalDatatypePropertyAxiom(propertyToDescribe)); logger.info("Property is already declared as functional in knowledge base."); } @@ -107,7 +108,7 @@ } if(all > 0){ currentlyBestAxioms.add(new EvaluatedAxiom(new FunctionalDatatypePropertyAxiom(propertyToDescribe), - computeScore(all, all - notFunctional))); + computeScore(all, all - notFunctional), declaredAsFunctional)); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -85,6 +85,7 @@ String query = String.format("ASK {<%s> a <%s>}", propertyToDescribe, OWL.FunctionalProperty.getURI()); boolean declaredAsFunctional = executeAskQuery(query); if(declaredAsFunctional) { + existingAxioms.add(new FunctionalObjectPropertyAxiom(propertyToDescribe)); logger.info("Property is already declared as functional in knowledge base."); } @@ -108,7 +109,7 @@ } if(all > 0){ currentlyBestAxioms.add(new EvaluatedAxiom(new FunctionalObjectPropertyAxiom(propertyToDescribe), - computeScore(all, all - notFunctional))); + computeScore(all, all - notFunctional), declaredAsFunctional)); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -87,8 +87,9 @@ //check if property is already declared as symmetric in knowledge base String query = String.format("ASK {<%s> a <%s>}", propertyToDescribe, OWL.InverseFunctionalProperty.getURI()); - boolean declaredAsFunctional = executeAskQuery(query); - if(declaredAsFunctional) { + boolean declaredAsInverseFunctional = executeAskQuery(query); + if(declaredAsInverseFunctional) { + existingAxioms.add(new InverseFunctionalObjectPropertyAxiom(propertyToDescribe)); logger.info("Property is already declared as functional in knowledge base."); } @@ -112,7 +113,7 @@ } if(all > 0){ currentlyBestAxioms.add(new EvaluatedAxiom(new InverseFunctionalObjectPropertyAxiom(propertyToDescribe), - computeScore(all, all - notInverseFunctional))); + computeScore(all, all - notInverseFunctional), declaredAsInverseFunctional)); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -81,10 +81,11 @@ fetchedRows = 0; currentlyBestAxioms = new ArrayList<EvaluatedAxiom>(); - //check if property is already declared as reflexive in knowledge base + //check if property is already declared as irreflexive in knowledge base String query = String.format("ASK {<%s> a <%s>}", propertyToDescribe, OWL2.IrreflexiveProperty.getURI()); - boolean declaredAsReflexive = executeAskQuery(query); - if(declaredAsReflexive) { + boolean declaredAsIrreflexive = executeAskQuery(query); + if(declaredAsIrreflexive) { + existingAxioms.add(new IrreflexiveObjectPropertyAxiom(propertyToDescribe)); logger.info("Property is already declared as irreflexive in knowledge base."); } @@ -111,7 +112,7 @@ if(all > 0){ currentlyBestAxioms.add(new EvaluatedAxiom(new IrreflexiveObjectPropertyAxiom(propertyToDescribe), - computeScore(all, irreflexive))); + computeScore(all, irreflexive), declaredAsIrreflexive)); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -90,7 +90,7 @@ fetchedRows = 0; currentlyBestAxioms = new ArrayList<EvaluatedAxiom>(); - if(returnOnlyNewAxioms){ + if(reasoner.isPrepared()){ //get existing domains Description existingDomain = reasoner.getDomain(propertyToDescribe); if(existingDomain != null){ @@ -154,6 +154,9 @@ for(Entry<Description, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new ObjectPropertyDomainAxiom(propertyToDescribe, entry.getKey()), computeScore(total, entry.getValue())); + if(existingAxioms.contains(evalAxiom.getAxiom())){ + evalAxiom.setAsserted(true); + } axioms.add(evalAxiom); } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -39,6 +39,7 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.core.owl.ObjectPropertyDomainAxiom; import org.dllearner.core.owl.ObjectPropertyRangeAxiom; import org.dllearner.core.owl.Thing; import org.dllearner.kb.SparqlEndpointKS; @@ -64,8 +65,6 @@ private long startTime; private int fetchedRows; - private Set<Description> existingRanges; - public ObjectPropertyRangeAxiomLearner(SparqlEndpointKS ks){ this.ks = ks; } @@ -93,20 +92,20 @@ fetchedRows = 0; currentlyBestAxioms = new ArrayList<EvaluatedAxiom>(); - if(returnOnlyNewAxioms){ - existingRanges = new HashSet<Description>(); + if(reasoner.isPrepared()){ //get existing ranges - Description existingRange = reasoner.getRange(propertyToDescribe); - existingRanges.add(existingRange); - logger.info("Existing range: " + existingRange); - if(reasoner.isPrepared()){ - if(reasoner.getClassHierarchy().contains(existingRange)){ - for(Description sup : reasoner.getClassHierarchy().getSuperClasses(existingRange)){ - existingRanges.add(sup); - logger.info("Existing range(inferred): " + sup); + Description existingDomain = reasoner.getRange(propertyToDescribe); + if(existingDomain != null){ + existingAxioms.add(new ObjectPropertyRangeAxiom(propertyToDescribe, existingDomain)); + if(reasoner.isPrepared()){ + if(reasoner.getClassHierarchy().contains(existingDomain)){ + for(Description sup : reasoner.getClassHierarchy().getSuperClasses(existingDomain)){ + existingAxioms.add(new ObjectPropertyRangeAxiom(propertyToDescribe, existingDomain)); + logger.info("Existing range(inferred): " + sup); + } } + } - } } @@ -151,17 +150,15 @@ //omit owl:Thing result.remove(new NamedClass(Thing.instance.getURI())); - if(returnOnlyNewAxioms){ - for(Description range : existingRanges){ - result.remove(range); - } - } EvaluatedAxiom evalAxiom; int total = individual2Types.keySet().size(); for(Entry<Description, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new ObjectPropertyRangeAxiom(propertyToDescribe, entry.getKey()), computeScore(total, entry.getValue())); + if(existingAxioms.contains(evalAxiom.getAxiom())){ + evalAxiom.setAsserted(true); + } axioms.add(evalAxiom); } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -85,6 +85,7 @@ String query = String.format("ASK {<%s> a <%s>}", propertyToDescribe, OWL2.ReflexiveProperty.getURI()); boolean declaredAsReflexive = executeAskQuery(query); if(declaredAsReflexive) { + existingAxioms.add(new ReflexiveObjectPropertyAxiom(propertyToDescribe)); logger.info("Property is already declared as reflexive in knowledge base."); } @@ -109,7 +110,7 @@ } if(total > 0){ currentlyBestAxioms.add(new EvaluatedAxiom(new ReflexiveObjectPropertyAxiom(propertyToDescribe), - computeScore(total, reflexive))); + computeScore(total, reflexive), declaredAsReflexive)); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -85,6 +85,7 @@ String query = String.format("ASK {<%s> a <%s>}", propertyToDescribe, OWL2.SymmetricProperty.getURI()); boolean declaredAsSymmetric = executeAskQuery(query); if(declaredAsSymmetric) { + existingAxioms.add(new SymmetricObjectPropertyAxiom(propertyToDescribe)); logger.info("Property is already declared as symmetric in knowledge base."); } @@ -125,7 +126,7 @@ if(total > 0){ currentlyBestAxioms.add(new EvaluatedAxiom(new SymmetricObjectPropertyAxiom(propertyToDescribe), - computeScore(total, symmetric))); + computeScore(total, symmetric), declaredAsSymmetric)); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -85,6 +85,7 @@ String query = String.format("ASK {<%s> a <%s>}", propertyToDescribe, OWL.TransitiveProperty.getURI()); boolean declaredAsTransitive = executeAskQuery(query); if(declaredAsTransitive) { + existingAxioms.add(new TransitiveObjectPropertyAxiom(propertyToDescribe)); logger.info("Property is already declared as transitive in knowledge base."); } @@ -123,7 +124,7 @@ if(total > 0){ currentlyBestAxioms.add(new EvaluatedAxiom(new TransitiveObjectPropertyAxiom(propertyToDescribe), - computeScore(total, transitive))); + computeScore(total, transitive), declaredAsTransitive)); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/core/EvaluatedAxiom.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/EvaluatedAxiom.java 2011-09-26 08:54:46 UTC (rev 3285) +++ trunk/components-core/src/main/java/org/dllearner/core/EvaluatedAxiom.java 2011-09-26 21:22:59 UTC (rev 3286) @@ -55,6 +55,12 @@ this.axiom = axiom; this.score = score; } + + public EvaluatedAxiom(Axiom axiom, Score score, boolean asserted) { + this.axiom = axiom; + this.score = score; + this.asserted = asserted; + } public Axiom getAxiom() { return axiom; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |