From: <jen...@us...> - 2008-02-22 17:05:23
|
Revision: 628 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=628&view=rev Author: jenslehmann Date: 2008-02-22 09:05:19 -0800 (Fri, 22 Feb 2008) Log Message: ----------- improved object/datatype property domain/range support Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyRangeAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/Property.java trunk/src/dl-learner/org/dllearner/core/owl/PropertyRangeAxiom.java trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java trunk/src/dl-learner/org/dllearner/parser/kb.jj trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIAxiomConvertVisitor.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java 2008-02-22 17:05:19 UTC (rev 628) @@ -19,6 +19,7 @@ */ package org.dllearner.core.owl; +import java.net.URI; import java.util.Map; /** @@ -34,6 +35,8 @@ private Type type; + private static final String xsd = "http://www.w3.org/2001/XMLSchema#"; + public Datatype(Type type) { this.type = type; } @@ -60,6 +63,15 @@ return null; } + public URI getURI() { + switch(type) { + case DOUBLE: return URI.create(xsd + "double"); + case INT: return URI.create(xsd + "int"); + case BOOLEAN: return URI.create(xsd + "Boolean"); + default: throw new Error("Unknown tpye " + type + "."); + } + } + /** * @return the type */ Modified: trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyRangeAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyRangeAxiom.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/core/owl/DatatypePropertyRangeAxiom.java 2008-02-22 17:05:19 UTC (rev 628) @@ -38,6 +38,11 @@ return range.getLength() + 2; } + @Override + public DataRange getRange() { + return (DataRange) range; + } + /* (non-Javadoc) * @see org.dllearner.core.owl.KBElement#toString(java.lang.String, java.util.Map) */ Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java 2008-02-22 17:05:19 UTC (rev 628) @@ -30,7 +30,7 @@ * @author Jens Lehmann * */ -public class ObjectProperty extends ObjectPropertyExpression implements Property, NamedKBElement, Comparable<ObjectProperty> { +public class ObjectProperty extends ObjectPropertyExpression implements Property, Comparable<ObjectProperty> { public ObjectProperty(String name) { super(name); Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java 2008-02-22 17:05:19 UTC (rev 628) @@ -28,12 +28,10 @@ public class ObjectPropertyRangeAxiom extends PropertyRangeAxiom { - public ObjectPropertyRangeAxiom(ObjectProperty property, Description domain) { - super(property, domain); + public ObjectPropertyRangeAxiom(ObjectProperty property, Description range) { + super(property, range); } - - /* (non-Javadoc) * @see org.dllearner.core.owl.KBElement#getLength() */ @@ -49,6 +47,11 @@ return null; } + @Override + public Description getRange() { + return (Description) range; + } + /* (non-Javadoc) * @see org.dllearner.core.owl.Axiom#accept(org.dllearner.core.owl.AxiomVisitor) */ @@ -62,6 +65,7 @@ */ public void accept(KBElementVisitor visitor) { visitor.visit(this); - } + } + } Modified: trunk/src/dl-learner/org/dllearner/core/owl/Property.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Property.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/core/owl/Property.java 2008-02-22 17:05:19 UTC (rev 628) @@ -23,6 +23,6 @@ * @author Jens Lehmann * */ -public interface Property extends KBElement { +public interface Property extends NamedKBElement { } Modified: trunk/src/dl-learner/org/dllearner/core/owl/PropertyRangeAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/PropertyRangeAxiom.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/core/owl/PropertyRangeAxiom.java 2008-02-22 17:05:19 UTC (rev 628) @@ -36,5 +36,9 @@ public Property getProperty() { return property; } + + public PropertyRange getRange() { + return range; + } } Modified: trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-02-22 17:05:19 UTC (rev 628) @@ -140,7 +140,14 @@ kb.addAxiom(sc); } // define properties including domain and range - String kbString = "DPDOMAIN(" + getURI2("charge") + ") = " + getURI2("Atom") + "."; + String kbString = "DPDOMAIN(" + getURI2("charge") + ") = " + getURI2("Atom") + ".\n"; + kbString += "DPRANGE(" + getURI2("charge") + ") = DOUBLE.\n"; + kbString += "OPDOMAIN(" + getURI2("hasAtom") + ") = " + getURI2("Compound") + ".\n"; + kbString += "OPRANGE(" + getURI2("hasAtom") + ") = " + getURI2("Atom") + ".\n"; + kbString += "OPDOMAIN(" + getURI2("hasBond") + ") = " + getURI2("Compound") + ".\n"; + kbString += "OPRANGE(" + getURI2("hasBond") + ") = " + getURI2("Bond") + ".\n"; + kbString += "OPDOMAIN(" + getURI2("inBond") + ") = " + getURI2("Bond") + ".\n"; + kbString += "OPRANGE(" + getURI2("inBond") + ") = " + getURI2("Atom") + ".\n"; KB kb2 = KBParser.parseKBFile(kbString); kb.addKB(kb2); @@ -169,9 +176,11 @@ File confTrainFile = new File("examples/carcinogenesis/train.conf"); Files.clearFile(confTrainFile); String confHeader = "import(\"pte.owl\");\n\n"; - confHeader += "refinement.writeSearchTree = true;"; - confHeader += "refinement.searchTreeFile = \"log/carcinogenesis/searchTree.log\""; - confHeader += "reasoner = owlAPI;\n"; + confHeader += "reasoner = fastInstanceChecker;\n"; + confHeader += "algorithm = refexamples;\n"; +// confHeader += "refinement.writeSearchTree = true;"; +// confHeader += "refinement.searchTreeFile = \"log/carcinogenesis/searchTree.log\""; + confHeader += "\n\n"; Files.appendFile(confTrainFile, confHeader); // generating training examples Modified: trunk/src/dl-learner/org/dllearner/parser/kb.jj =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/kb.jj 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/parser/kb.jj 2008-02-22 17:05:19 UTC (rev 628) @@ -126,7 +126,11 @@ | rBoxAxiom = ObjectPropertyDomainAxiom() { kb.addRBoxAxiom(rBoxAxiom); } | rBoxAxiom = DatatypePropertyDomainAxiom() - { kb.addRBoxAxiom(rBoxAxiom); } + { kb.addRBoxAxiom(rBoxAxiom); } + | rBoxAxiom = ObjectPropertyRangeAxiom() + { kb.addRBoxAxiom(rBoxAxiom); } + | rBoxAxiom = DatatypePropertyRangeAxiom() + { kb.addRBoxAxiom(rBoxAxiom); } // da Konfigurationsoptionen ausgeschlossen sind, reicht es bis zum "=" zu suchen | LOOKAHEAD(Concept() "=") equality = TBoxEquiv() { kb.addTBoxAxiom(equality); } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-02-22 17:05:19 UTC (rev 628) @@ -108,9 +108,14 @@ */ @Override public void init() throws ComponentInitException { - rc = new DIGReasoner(sources); + rc = new OWLAPIReasoner(sources); + // DIG will only be used to get the role pairs; + // outside the constructor, OWL API will be used because + // it is fast than DIG + DIGReasoner rcDIG = new DIGReasoner(sources); try { rc.init(); + rcDIG.init(); } catch (ComponentInitException e1) { e1.printStackTrace(); } @@ -130,7 +135,7 @@ } for (ObjectProperty atomicRole : rs.getAtomicRoles()) { - opPos.put(atomicRole, rs.getRoleMembers(atomicRole)); + opPos.put(atomicRole, rcDIG.getRoleMembers(atomicRole)); } long dematDuration = System.currentTimeMillis() - dematStartTime; Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-02-22 17:05:19 UTC (rev 628) @@ -16,8 +16,6 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.FlatABox; import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.Intersection; -import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyHierarchy; import org.dllearner.core.owl.SubsumptionHierarchy; Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIAxiomConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIAxiomConvertVisitor.java 2008-02-22 15:18:56 UTC (rev 627) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIAxiomConvertVisitor.java 2008-02-22 17:05:19 UTC (rev 628) @@ -26,6 +26,8 @@ import org.dllearner.core.owl.Axiom; import org.dllearner.core.owl.AxiomVisitor; import org.dllearner.core.owl.ClassAssertionAxiom; +import org.dllearner.core.owl.DataRange; +import org.dllearner.core.owl.Datatype; import org.dllearner.core.owl.DatatypePropertyDomainAxiom; import org.dllearner.core.owl.DatatypePropertyRangeAxiom; import org.dllearner.core.owl.DoubleDatatypePropertyAssertion; @@ -250,26 +252,32 @@ * @see org.dllearner.core.owl.PropertyAxiomVisitor#visit(org.dllearner.core.owl.ObjectPropertyDomainAxiom) */ public void visit(ObjectPropertyDomainAxiom objectPropertyDomainAxiom) { - // TODO Auto-generated method stub - + OWLDescription d = getOWLDescription(objectPropertyDomainAxiom.getDomain()); + OWLObjectProperty op = factory.getOWLObjectProperty(URI.create(objectPropertyDomainAxiom.getProperty().getName())); + OWLAxiom axiomOWLAPI = factory.getOWLObjectPropertyDomainAxiom(op, d); + addAxiom(axiomOWLAPI); } /* (non-Javadoc) * @see org.dllearner.core.owl.PropertyAxiomVisitor#visit(org.dllearner.core.owl.DatatypePropertyRangeAxiom) */ public void visit(DatatypePropertyRangeAxiom axiom) { - // TODO Auto-generated method stub - + DataRange dr = axiom.getRange(); + Datatype dt = (Datatype) dr; + OWLDataType odt = factory.getOWLDataType(dt.getURI()); + OWLDataProperty dp = factory.getOWLDataProperty(URI.create(axiom.getProperty().getName())); + OWLAxiom axiomOWLAPI = factory.getOWLDataPropertyRangeAxiom(dp, odt); + addAxiom(axiomOWLAPI); } /* (non-Javadoc) * @see org.dllearner.core.owl.PropertyAxiomVisitor#visit(org.dllearner.core.owl.ObjectPropertyRangeAxiom) */ public void visit(ObjectPropertyRangeAxiom axiom) { - // TODO Auto-generated method stub - + OWLDescription d = getOWLDescription(axiom.getRange()); + OWLObjectProperty op = factory.getOWLObjectProperty(URI.create(axiom.getProperty().getName())); + OWLAxiom axiomOWLAPI = factory.getOWLObjectPropertyRangeAxiom(op, d); + addAxiom(axiomOWLAPI); } - - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |