From: <lor...@us...> - 2014-05-02 19:20:25
|
Revision: 4256 http://sourceforge.net/p/dl-learner/code/4256 Author: lorenz_b Date: 2014-05-02 19:20:23 +0000 (Fri, 02 May 2014) Log Message: ----------- Added more data range support. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/utilities/owl/DLLearnerDescriptionConvertVisitor.java trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java Added Paths: ----------- trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLDataRangeConverter.java Modified: trunk/components-core/src/main/java/org/dllearner/utilities/owl/DLLearnerDescriptionConvertVisitor.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/owl/DLLearnerDescriptionConvertVisitor.java 2014-05-02 19:18:34 UTC (rev 4255) +++ trunk/components-core/src/main/java/org/dllearner/utilities/owl/DLLearnerDescriptionConvertVisitor.java 2014-05-02 19:20:23 UTC (rev 4256) @@ -23,12 +23,14 @@ import java.util.List; import java.util.Stack; +import org.dllearner.core.owl.Constant; import org.dllearner.core.owl.DataRange; import org.dllearner.core.owl.DatatypeExactCardinalityRestriction; import org.dllearner.core.owl.DatatypeMaxCardinalityRestriction; import org.dllearner.core.owl.DatatypeMinCardinalityRestriction; import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.DatatypeSomeRestriction; +import org.dllearner.core.owl.DatatypeValueRestriction; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; @@ -55,6 +57,7 @@ import org.semanticweb.owlapi.model.OWLDataMaxCardinality; import org.semanticweb.owlapi.model.OWLDataMinCardinality; import org.semanticweb.owlapi.model.OWLDataSomeValuesFrom; +import org.semanticweb.owlapi.model.OWLDatatypeRestriction; import org.semanticweb.owlapi.model.OWLObjectAllValuesFrom; import org.semanticweb.owlapi.model.OWLObjectComplementOf; import org.semanticweb.owlapi.model.OWLObjectExactCardinality; @@ -191,7 +194,7 @@ public void visit(OWLDataSomeValuesFrom description) { DatatypeProperty property = new DatatypeProperty(description.getProperty().asOWLDataProperty() .getIRI().toString()); - DataRange dataRange = OWLAPIConverter.convertDatatype(description.getFiller().asOWLDatatype()); + DataRange dataRange = OWLDataRangeConverter.convert(description.getFiller()); stack.push(new DatatypeSomeRestriction(property, dataRange)); } @@ -206,20 +209,16 @@ @Override public void visit(OWLDataHasValue description) { -// DatatypeProperty property = new DatatypeProperty(description.getProperty().asOWLDataProperty() -// .getURI().toString()); -// Constant c = OWLAPIConverter.convertConstant(description.getValue()); -// -// DataRange dataRange = OWLAPIConverter.convertDatatype(description.getFiller().asOWLDataType()); -// stack.push(new DatatypeValueRestriction(property, dataRange)); - + DatatypeProperty property = new DatatypeProperty(description.getProperty().asOWLDataProperty().getIRI().toString()); + Constant value = OWLAPIConverter.convertConstant(description.getValue()); + stack.push(new DatatypeValueRestriction(property, value)); } @Override public void visit(OWLDataMinCardinality description) { DatatypeProperty property = new DatatypeProperty(description.getProperty().asOWLDataProperty() .getIRI().toString()); - DataRange dataRange = OWLAPIConverter.convertDatatype(description.getFiller().asOWLDatatype()); + DataRange dataRange = OWLDataRangeConverter.convert(description.getFiller()); int min = description.getCardinality(); stack.push(new DatatypeMinCardinalityRestriction(property, dataRange,min)); @@ -229,7 +228,7 @@ public void visit(OWLDataExactCardinality description) { DatatypeProperty property = new DatatypeProperty(description.getProperty().asOWLDataProperty() .getIRI().toString()); - DataRange dataRange = OWLAPIConverter.convertDatatype(description.getFiller().asOWLDatatype()); + DataRange dataRange = OWLDataRangeConverter.convert(description.getFiller()); int minmax = description.getCardinality(); stack.push(new DatatypeExactCardinalityRestriction(property, dataRange, minmax)); @@ -239,7 +238,7 @@ public void visit(OWLDataMaxCardinality description) { DatatypeProperty property = new DatatypeProperty(description.getProperty().asOWLDataProperty() .getIRI().toString()); - DataRange dataRange = OWLAPIConverter.convertDatatype(description.getFiller().asOWLDatatype()); + DataRange dataRange = OWLDataRangeConverter.convert(description.getFiller()); int max = description.getCardinality(); stack.push(new DatatypeMaxCardinalityRestriction(property, dataRange, max)); Modified: trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java 2014-05-02 19:18:34 UTC (rev 4255) +++ trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java 2014-05-02 19:20:23 UTC (rev 4256) @@ -35,6 +35,7 @@ import org.dllearner.core.owl.DatatypeValueRestriction; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.DescriptionVisitor; +import org.dllearner.core.owl.DoubleMinMaxRange; import org.dllearner.core.owl.DoubleMinValue; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; @@ -334,6 +335,10 @@ facet = OWLFacet.MAX_INCLUSIVE; owlDataRange = factory.getOWLDatatypeRestriction(doubleDataType, facet, constant); + } else if(dataRange instanceof DoubleMinMaxRange){ + // currently only double restrictions implemented + owlDataRange = factory.getOWLDatatypeMinMaxInclusiveRestriction( + ((DoubleMinMaxRange) dataRange).getMinValue(), ((DoubleMinMaxRange) dataRange).getMaxValue()); } else { throw new UnsupportedOperationException("Can not convert " + description); } Added: trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLDataRangeConverter.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLDataRangeConverter.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLDataRangeConverter.java 2014-05-02 19:20:23 UTC (rev 4256) @@ -0,0 +1,113 @@ +/** + * + */ +package org.dllearner.utilities.owl; + +import java.util.HashSet; +import java.util.Set; + +import org.dllearner.core.owl.Constant; +import org.dllearner.core.owl.DataOneOf; +import org.dllearner.core.owl.DataRange; +import org.dllearner.core.owl.DoubleMaxValue; +import org.dllearner.core.owl.DoubleMinMaxRange; +import org.dllearner.core.owl.DoubleMinValue; +import org.semanticweb.owlapi.model.OWLDataComplementOf; +import org.semanticweb.owlapi.model.OWLDataIntersectionOf; +import org.semanticweb.owlapi.model.OWLDataOneOf; +import org.semanticweb.owlapi.model.OWLDataRange; +import org.semanticweb.owlapi.model.OWLDataRangeVisitor; +import org.semanticweb.owlapi.model.OWLDataUnionOf; +import org.semanticweb.owlapi.model.OWLDatatype; +import org.semanticweb.owlapi.model.OWLDatatypeRestriction; +import org.semanticweb.owlapi.model.OWLFacetRestriction; +import org.semanticweb.owlapi.model.OWLLiteral; +import org.semanticweb.owlapi.vocab.OWLFacet; + +/** + * @author Lorenz Buehmann + * + */ +public class OWLDataRangeConverter implements OWLDataRangeVisitor{ + + private DataRange dataRange; + + public static DataRange convert(OWLDataRange owlDataRange){ + OWLDataRangeConverter converter = new OWLDataRangeConverter(); + owlDataRange.accept(converter); + return converter.dataRange; + } + + /* (non-Javadoc) + * @see org.semanticweb.owlapi.model.OWLDataRangeVisitor#visit(org.semanticweb.owlapi.model.OWLDatatype) + */ + @Override + public void visit(OWLDatatype datatype) { + dataRange = OWLAPIConverter.convertDatatype(datatype); + } + + /* (non-Javadoc) + * @see org.semanticweb.owlapi.model.OWLDataRangeVisitor#visit(org.semanticweb.owlapi.model.OWLDataOneOf) + */ + @Override + public void visit(OWLDataOneOf dataOneOf) { + Set<OWLLiteral> owlLiterals = dataOneOf.getValues(); + Set<Constant> constants = new HashSet<Constant>(owlLiterals.size()); + for (OWLLiteral owlLiteral : owlLiterals) { + constants.add(OWLAPIConverter.convertConstant(owlLiteral)); + } + dataRange = new DataOneOf(constants); + } + + /* (non-Javadoc) + * @see org.semanticweb.owlapi.model.OWLDataRangeVisitor#visit(org.semanticweb.owlapi.model.OWLDataComplementOf) + */ + @Override + public void visit(OWLDataComplementOf arg0) { + } + + /* (non-Javadoc) + * @see org.semanticweb.owlapi.model.OWLDataRangeVisitor#visit(org.semanticweb.owlapi.model.OWLDataIntersectionOf) + */ + @Override + public void visit(OWLDataIntersectionOf arg0) { + } + + /* (non-Javadoc) + * @see org.semanticweb.owlapi.model.OWLDataRangeVisitor#visit(org.semanticweb.owlapi.model.OWLDataUnionOf) + */ + @Override + public void visit(OWLDataUnionOf arg0) { + } + + /* (non-Javadoc) + * @see org.semanticweb.owlapi.model.OWLDataRangeVisitor#visit(org.semanticweb.owlapi.model.OWLDatatypeRestriction) + */ + @Override + public void visit(OWLDatatypeRestriction restriction) { + Set<OWLFacetRestriction> facetRestrictions = restriction.getFacetRestrictions(); + Constant min = null; + Constant max = null; + for (OWLFacetRestriction facetRestriction : facetRestrictions) { + OWLFacet facet = facetRestriction.getFacet(); + OWLLiteral value = facetRestriction.getFacetValue(); + if(facet == OWLFacet.MIN_INCLUSIVE){ + min = OWLAPIConverter.convertConstant(value); + } else if(facet == OWLFacet.MAX_INCLUSIVE){ + max = OWLAPIConverter.convertConstant(value); + } + } + double minValue = Double.parseDouble(min.getLiteral()); + double maxValue = Double.parseDouble(max.getLiteral()); + if(min != null && max != null){ + dataRange = new DoubleMinMaxRange(minValue, maxValue); + } else if(min != null && max == null){ + dataRange = new DoubleMinValue(minValue); + } else if(max != null && min == null){ + dataRange = new DoubleMaxValue(maxValue); + } else { + + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |