From: <jen...@us...> - 2008-11-14 16:56:03
|
Revision: 1515 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1515&view=rev Author: jenslehmann Date: 2008-11-14 16:55:52 +0000 (Fri, 14 Nov 2008) Log Message: ----------- - data type property hierarchy support now also moved to reasoner component - some small improvements Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyHierarchy.java trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-11-14 15:09:11 UTC (rev 1514) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-11-14 16:55:52 UTC (rev 1515) @@ -600,8 +600,9 @@ for (Entry<Individual, SortedSet<Constant>> e : mapping.entrySet()) { SortedSet<Constant> values = e.getValue(); if (values.size() > 1) { - logger.warn("Property " + datatypeProperty + " has value " + e.getValue() - + ". Cannot determine whether it is true."); + logger.warn("Property " + datatypeProperty + " has more than one value " + e.getValue() + + " for individual " + e.getKey() + ". We ignore the value."); + // d135 } else { if (values.first().getLiteral().equalsIgnoreCase("true")) { ret.add(e.getKey()); @@ -822,11 +823,19 @@ return getDatatypePropertyHierarchy().getMoreGeneralRoles(role); } + protected SortedSet<DatatypeProperty> getSuperPropertiesImpl(DatatypeProperty role) throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + @Override public final SortedSet<DatatypeProperty> getSubProperties(DatatypeProperty role) { return getDatatypePropertyHierarchy().getMoreSpecialRoles(role); } + protected SortedSet<DatatypeProperty> getSubPropertiesImpl(DatatypeProperty role) throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + @Override public final TreeSet<DatatypeProperty> getMostGeneralDatatypeProperties() { return getDatatypePropertyHierarchy().getMostGeneralRoles(); @@ -914,7 +923,6 @@ TreeMap<ObjectProperty, SortedSet<ObjectProperty>> roleHierarchyDown = new TreeMap<ObjectProperty, SortedSet<ObjectProperty>>( roleComparator); - // refinement of atomic concepts Set<ObjectProperty> atomicRoles = getObjectProperties(); for (ObjectProperty role : atomicRoles) { roleHierarchyDown.put(role, getSubPropertiesImpl(role)); @@ -951,16 +959,29 @@ */ public DatatypePropertyHierarchy prepareDatatypePropertyHierarchy() throws ReasoningMethodUnsupportedException { - throw new ReasoningMethodUnsupportedException( - "Datatype property hierarchy creation not supported by this reasoner."); + + RoleComparator roleComparator = new RoleComparator(); + TreeMap<DatatypeProperty, SortedSet<DatatypeProperty>> datatypePropertyHierarchyUp = new TreeMap<DatatypeProperty, SortedSet<DatatypeProperty>>( + roleComparator); + TreeMap<DatatypeProperty, SortedSet<DatatypeProperty>> datatypePropertyHierarchyDown = new TreeMap<DatatypeProperty, SortedSet<DatatypeProperty>>( + roleComparator); + + Set<DatatypeProperty> datatypeProperties = getDatatypeProperties(); + for (DatatypeProperty role : datatypeProperties) { + datatypePropertyHierarchyDown.put(role, getSubPropertiesImpl(role)); + datatypePropertyHierarchyUp.put(role, getSuperPropertiesImpl(role)); + } + + return new DatatypePropertyHierarchy(datatypeProperties, datatypePropertyHierarchyUp, + datatypePropertyHierarchyDown); } @Override public final DatatypePropertyHierarchy getDatatypePropertyHierarchy() { - + try { if (datatypePropertyHierarchy == null) { - prepareDatatypePropertyHierarchy(); + datatypePropertyHierarchy = prepareDatatypePropertyHierarchy(); } } catch (ReasoningMethodUnsupportedException e) { handleExceptions(e); Modified: trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyHierarchy.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyHierarchy.java 2008-11-14 15:09:11 UTC (rev 1514) +++ trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyHierarchy.java 2008-11-14 16:55:52 UTC (rev 1515) @@ -38,12 +38,12 @@ public class DatatypePropertyHierarchy { RoleComparator rc = new RoleComparator(); - TreeMap<DatatypeProperty,TreeSet<DatatypeProperty>> roleHierarchyUp; - TreeMap<DatatypeProperty,TreeSet<DatatypeProperty>> roleHierarchyDown; + TreeMap<DatatypeProperty,SortedSet<DatatypeProperty>> roleHierarchyUp; + TreeMap<DatatypeProperty,SortedSet<DatatypeProperty>> roleHierarchyDown; TreeSet<DatatypeProperty> mostGeneralRoles = new TreeSet<DatatypeProperty>(rc); TreeSet<DatatypeProperty> mostSpecialRoles = new TreeSet<DatatypeProperty>(rc); - public DatatypePropertyHierarchy(Set<DatatypeProperty> atomicRoles, TreeMap<DatatypeProperty,TreeSet<DatatypeProperty>> roleHierarchyUp , TreeMap<DatatypeProperty,TreeSet<DatatypeProperty>> roleHierarchyDown) { + public DatatypePropertyHierarchy(Set<DatatypeProperty> atomicRoles, TreeMap<DatatypeProperty,SortedSet<DatatypeProperty>> roleHierarchyUp , TreeMap<DatatypeProperty,SortedSet<DatatypeProperty>> roleHierarchyDown) { this.roleHierarchyUp = roleHierarchyUp; this.roleHierarchyDown = roleHierarchyDown; @@ -56,20 +56,16 @@ } } - @SuppressWarnings("unchecked") public SortedSet<DatatypeProperty> getMoreGeneralRoles(DatatypeProperty role) { // we clone all concepts before returning them such that they cannot be // modified externally - return (TreeSet<DatatypeProperty>) roleHierarchyUp.get(role).clone(); + return new TreeSet<DatatypeProperty>(roleHierarchyUp.get(role)); } - @SuppressWarnings("unchecked") public SortedSet<DatatypeProperty> getMoreSpecialRoles(DatatypeProperty role) { - return (TreeSet<DatatypeProperty>) roleHierarchyDown.get(role).clone(); - } + return new TreeSet<DatatypeProperty>(roleHierarchyDown.get(role)); + } - - @Override public String toString() { String str = ""; @@ -79,7 +75,7 @@ return str; } - private String toString(TreeMap<DatatypeProperty,TreeSet<DatatypeProperty>> hierarchy, DatatypeProperty role, int depth) { + private String toString(TreeMap<DatatypeProperty,SortedSet<DatatypeProperty>> hierarchy, DatatypeProperty role, int depth) { String str = ""; for(int i=0; i<depth; i++) str += " "; Modified: trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java 2008-11-14 15:09:11 UTC (rev 1514) +++ trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java 2008-11-14 16:55:52 UTC (rev 1515) @@ -82,5 +82,10 @@ } else return datatypeComparision; } + + @Override + public String toString() { + return literal + "^^" + datatype; + } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java 2008-11-14 15:09:11 UTC (rev 1514) +++ trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java 2008-11-14 16:55:52 UTC (rev 1515) @@ -89,4 +89,13 @@ public void accept(KBElementVisitor visitor) { visitor.visit(this); } + + @Override + public String toString() { + if(hasLang) { + return literal + "@" + lang; + } else { + return literal; + } + } } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-11-14 15:09:11 UTC (rev 1514) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-11-14 16:55:52 UTC (rev 1515) @@ -498,12 +498,6 @@ return atomicConcepts; } -// @Override -// public Map<Individual, SortedSet<Double>> getDoubleDatatypeMembersImpl( -// DatatypeProperty datatypeProperty) { -// return rc.getDoubleDatatypeMembers(datatypeProperty); -// } - /* * (non-Javadoc) * @@ -554,6 +548,16 @@ return rc.getSubPropertiesImpl(role); } + @Override + protected SortedSet<DatatypeProperty> getSuperPropertiesImpl(DatatypeProperty role) throws ReasoningMethodUnsupportedException { + return rc.getSuperPropertiesImpl(role); + } + + @Override + protected SortedSet<DatatypeProperty> getSubPropertiesImpl(DatatypeProperty role) throws ReasoningMethodUnsupportedException { + return rc.getSubPropertiesImpl(role); + } + /* * (non-Javadoc) * @@ -676,6 +680,28 @@ } @Override + public final SortedSet<Individual> getTrueDatatypeMembersImpl(DatatypeProperty datatypeProperty) { + return bdPos.get(datatypeProperty); + } + + @Override + public final SortedSet<Individual> getFalseDatatypeMembersImpl(DatatypeProperty datatypeProperty) { + return bdNeg.get(datatypeProperty); + } + + @Override + public Map<Individual, SortedSet<Integer>> getIntDatatypeMembersImpl( + DatatypeProperty datatypeProperty) { + return id.get(datatypeProperty); + } + + @Override + public Map<Individual, SortedSet<Double>> getDoubleDatatypeMembersImpl( + DatatypeProperty datatypeProperty) { + return dd.get(datatypeProperty); + } + + @Override public Set<Individual> getRelatedIndividualsImpl(Individual individual, ObjectProperty objectProperty) throws ReasoningMethodUnsupportedException { return rc.getRelatedIndividuals(individual, objectProperty); } Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-11-14 15:09:11 UTC (rev 1514) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-11-14 16:55:52 UTC (rev 1515) @@ -452,23 +452,23 @@ // return roleHierarchy; // } - public void prepareDatatypePropertyHierarchyImpl(Set<DatatypeProperty> allowedRoles) { - // code copied from DIG reasoner - - TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>> datatypePropertyHierarchyUp = new TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>>( - roleComparator); - TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>> datatypePropertyHierarchyDown = new TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>>( - roleComparator); - - // refinement of atomic concepts - for (DatatypeProperty role : datatypeProperties) { - datatypePropertyHierarchyDown.put(role, getMoreSpecialDatatypePropertiesImpl(role)); - datatypePropertyHierarchyUp.put(role, getMoreGeneralDatatypePropertiesImpl(role)); - } - - datatypePropertyHierarchy = new DatatypePropertyHierarchy(allowedRoles, datatypePropertyHierarchyUp, - datatypePropertyHierarchyDown); - } +// public void prepareDatatypePropertyHierarchyImpl(Set<DatatypeProperty> allowedRoles) { +// // code copied from DIG reasoner +// +// TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>> datatypePropertyHierarchyUp = new TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>>( +// roleComparator); +// TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>> datatypePropertyHierarchyDown = new TreeMap<DatatypeProperty, TreeSet<DatatypeProperty>>( +// roleComparator); +// +// // refinement of atomic concepts +// for (DatatypeProperty role : datatypeProperties) { +// datatypePropertyHierarchyDown.put(role, getMoreSpecialDatatypePropertiesImpl(role)); +// datatypePropertyHierarchyUp.put(role, getMoreGeneralDatatypePropertiesImpl(role)); +// } +// +// datatypePropertyHierarchy = new DatatypePropertyHierarchy(allowedRoles, datatypePropertyHierarchyUp, +// datatypePropertyHierarchyDown); +// } // @Override // public DatatypePropertyHierarchy getDatatypePropertyHierarchy() { @@ -533,7 +533,8 @@ return getFirstObjectProperties(properties); } - private TreeSet<DatatypeProperty> getMoreGeneralDatatypePropertiesImpl(DatatypeProperty role) { + @Override + protected TreeSet<DatatypeProperty> getSuperPropertiesImpl(DatatypeProperty role) { Set<Set<OWLDataProperty>> properties; try { properties = reasoner.getSuperProperties(OWLAPIConverter.getOWLAPIDataProperty(role)); @@ -544,7 +545,8 @@ return getFirstDatatypeProperties(properties); } - private TreeSet<DatatypeProperty> getMoreSpecialDatatypePropertiesImpl(DatatypeProperty role) { + @Override + protected TreeSet<DatatypeProperty> getSubPropertiesImpl(DatatypeProperty role) { Set<Set<OWLDataProperty>> properties; try { properties = reasoner.getSubProperties(OWLAPIConverter.getOWLAPIDataProperty(role)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |