Skip to content
Snippets Groups Projects

api for owl2nl

10 files
+ 923
53
Compare changes
  • Side-by-side
  • Inline

Files

@@ -24,52 +24,7 @@ import java.util.List;
@@ -24,52 +24,7 @@ import java.util.List;
import org.aksw.owl2nl.exception.OWLAxiomConversionException;
import org.aksw.owl2nl.exception.OWLAxiomConversionException;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.ToStringRenderer;
import org.semanticweb.owlapi.io.ToStringRenderer;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.model.OWLAnnotationAssertionAxiom;
import org.semanticweb.owlapi.model.OWLAnnotationPropertyDomainAxiom;
import org.semanticweb.owlapi.model.OWLAnnotationPropertyRangeAxiom;
import org.semanticweb.owlapi.model.OWLAsymmetricObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLAxiomVisitor;
import org.semanticweb.owlapi.model.OWLClassAssertionAxiom;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLDataPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLDataPropertyDomainAxiom;
import org.semanticweb.owlapi.model.OWLDataPropertyRangeAxiom;
import org.semanticweb.owlapi.model.OWLDatatypeDefinitionAxiom;
import org.semanticweb.owlapi.model.OWLDeclarationAxiom;
import org.semanticweb.owlapi.model.OWLDifferentIndividualsAxiom;
import org.semanticweb.owlapi.model.OWLDisjointClassesAxiom;
import org.semanticweb.owlapi.model.OWLDisjointDataPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLDisjointObjectPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLDisjointUnionAxiom;
import org.semanticweb.owlapi.model.OWLEquivalentClassesAxiom;
import org.semanticweb.owlapi.model.OWLEquivalentDataPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLEquivalentObjectPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLFunctionalDataPropertyAxiom;
import org.semanticweb.owlapi.model.OWLFunctionalObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLHasKeyAxiom;
import org.semanticweb.owlapi.model.OWLInverseFunctionalObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLInverseObjectPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLIrreflexiveObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLNegativeDataPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLNegativeObjectPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyDomainAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyRangeAxiom;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLReflexiveObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLSameIndividualAxiom;
import org.semanticweb.owlapi.model.OWLSubAnnotationPropertyOfAxiom;
import org.semanticweb.owlapi.model.OWLSubClassOfAxiom;
import org.semanticweb.owlapi.model.OWLSubDataPropertyOfAxiom;
import org.semanticweb.owlapi.model.OWLSubObjectPropertyOfAxiom;
import org.semanticweb.owlapi.model.OWLSubPropertyChainOfAxiom;
import org.semanticweb.owlapi.model.OWLSymmetricObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLTransitiveObjectPropertyAxiom;
import org.semanticweb.owlapi.model.SWRLRule;
import org.slf4j.Logger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.LoggerFactory;
@@ -95,6 +50,7 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
@@ -95,6 +50,7 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
private Realiser realiser;
private Realiser realiser;
private OWLClassExpressionConverter ceConverter;
private OWLClassExpressionConverter ceConverter;
 
private OWLPropertyExpressionConverter peConverter;
private OWLDataFactory df = new OWLDataFactoryImpl();
private OWLDataFactory df = new OWLDataFactoryImpl();
@@ -105,6 +61,7 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
@@ -105,6 +61,7 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
realiser = new Realiser(lexicon);
realiser = new Realiser(lexicon);
ceConverter = new OWLClassExpressionConverter(lexicon);
ceConverter = new OWLClassExpressionConverter(lexicon);
 
peConverter = new OWLPropertyExpressionConverter(lexicon);
}
}
public OWLAxiomConverter() {
public OWLAxiomConverter() {
@@ -125,12 +82,15 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
@@ -125,12 +82,15 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
logger.debug("Converting " + axiom.getAxiomType().getName() + " axiom: " + axiom);
logger.debug("Converting " + axiom.getAxiomType().getName() + " axiom: " + axiom);
try {
try {
axiom.accept(this);
axiom.accept(this);
 
Optimizer opt = new Optimizer();
 
System.out.println("Before Optimise :"+ nl);
 
nl = opt.Optimise(nl);
 
System.out.println("After Optimise :"+ nl);
return nl;
return nl;
} catch (Exception e) {
} catch (Exception e) {
throw new OWLAxiomConversionException(axiom, e);
throw new OWLAxiomConversionException(axiom, e);
}
}
}
}
logger.warn("Conversion of non-logical axioms not supported yet!");
logger.warn("Conversion of non-logical axioms not supported yet!");
return null;
return null;
}
}
@@ -205,6 +165,22 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
@@ -205,6 +165,22 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
@Override
@Override
public void visit(OWLSubObjectPropertyOfAxiom axiom) {
public void visit(OWLSubObjectPropertyOfAxiom axiom) {
 
logger.debug("Converting SubObjectPropertyOf axiom {}", axiom);
 
// convert the sub property
 
OWLObjectPropertyExpression subProperty = axiom.getSubProperty();
 
NLGElement subPropertyElement = peConverter.asNLGElement(subProperty, true);
 
logger.debug("subProperty: " + realiser.realise(subPropertyElement));
 
 
// convert the super property
 
OWLObjectPropertyExpression superProperty = axiom.getSuperProperty();
 
NLGElement superPropertyElement = peConverter.asNLGElement(superProperty);
 
logger.debug("SuperObjectProperty: " + realiser.realise(superPropertyElement));
 
 
SPhraseSpec clause = nlgFactory.createClause(subPropertyElement, "imply", superPropertyElement);
 
superPropertyElement.setFeature(Feature.COMPLEMENTISER, null);
 
 
nl = realiser.realise(clause).toString();
 
logger.debug(axiom + " = " + nl);
}
}
@Override
@Override
@@ -370,10 +346,9 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
@@ -370,10 +346,9 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
public static void main(String[] args) throws Exception {
public static void main(String[] args) throws Exception {
ToStringRenderer.getInstance().setRenderer(new DLSyntaxObjectRenderer());
ToStringRenderer.getInstance().setRenderer(new DLSyntaxObjectRenderer());
String ontologyURL = "http://130.88.198.11/2008/iswc-modtut/materials/koala.owl";
String ontologyURL = "http://www.cs.man.ac.uk/~stevensr/ontology/family.rdf.owl";// subproperties of the form 'isSomething'
ontologyURL = "http://rpc295.cs.man.ac.uk:8080/repository/download?ontology=http://reliant.teknowledge.com/DAML/Transportation.owl&format=RDF/XML";
//ontologyURL = "https://protege.stanford.edu/ontologies/pizza/pizza.owl"; // subproperties of the form 'hasSomething'
ontologyURL = "http://protege.cim3.net/file/pub/ontologies/travel/travel.owl";
//ontologyURL = "https://raw.githubusercontent.com/pezra/pretty-printer/master/Jenna-2.6.3/testing/ontology/bugs/koala.owl";
OWLOntologyManager man = OWLManager.createOWLOntologyManager();
OWLOntologyManager man = OWLManager.createOWLOntologyManager();
OWLOntology ontology = man.loadOntology(IRI.create(ontologyURL));
OWLOntology ontology = man.loadOntology(IRI.create(ontologyURL));
@@ -382,5 +357,4 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
@@ -382,5 +357,4 @@ public class OWLAxiomConverter implements OWLAxiomVisitor{
converter.convert(axiom);
converter.convert(axiom);
}
}
}
}
}
}
Loading