package org.mindswap.swoop.utils.rdfapi; import java.net.URI; import java.util.Map; import java.util.WeakHashMap; import org.semanticweb.owl.model.OWLAnd; import org.semanticweb.owl.model.OWLAnnotationInstance; import org.semanticweb.owl.model.OWLAnnotationProperty; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataAllRestriction; import org.semanticweb.owl.model.OWLDataCardinalityRestriction; import org.semanticweb.owl.model.OWLDataEnumeration; import org.semanticweb.owl.model.OWLDataProperty; import org.semanticweb.owl.model.OWLDataPropertyInstance; import org.semanticweb.owl.model.OWLDataPropertyRangeAxiom; import org.semanticweb.owl.model.OWLDataSomeRestriction; import org.semanticweb.owl.model.OWLDataType; import org.semanticweb.owl.model.OWLDataValue; import org.semanticweb.owl.model.OWLDataValueRestriction; import org.semanticweb.owl.model.OWLDifferentIndividualsAxiom; import org.semanticweb.owl.model.OWLDisjointClassesAxiom; import org.semanticweb.owl.model.OWLEnumeration; import org.semanticweb.owl.model.OWLEquivalentClassesAxiom; import org.semanticweb.owl.model.OWLEquivalentPropertiesAxiom; import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLFrame; import org.semanticweb.owl.model.OWLFunctionalPropertyAxiom; import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLIndividualTypeAssertion; import org.semanticweb.owl.model.OWLInverseFunctionalPropertyAxiom; import org.semanticweb.owl.model.OWLInversePropertyAxiom; import org.semanticweb.owl.model.OWLNamedObject; import org.semanticweb.owl.model.OWLNot; import org.semanticweb.owl.model.OWLObject; import org.semanticweb.owl.model.OWLObjectAllRestriction; import org.semanticweb.owl.model.OWLObjectCardinalityRestriction; import org.semanticweb.owl.model.OWLObjectProperty; import org.semanticweb.owl.model.OWLObjectPropertyInstance; import org.semanticweb.owl.model.OWLObjectPropertyRangeAxiom; import org.semanticweb.owl.model.OWLObjectSomeRestriction; import org.semanticweb.owl.model.OWLObjectValueRestriction; import org.semanticweb.owl.model.OWLObjectVisitor; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOr; import org.semanticweb.owl.model.OWLPropertyDomainAxiom; import org.semanticweb.owl.model.OWLSameIndividualsAxiom; import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.OWLSubPropertyAxiom; import org.semanticweb.owl.model.OWLSymmetricPropertyAxiom; import org.semanticweb.owl.model.OWLTransitivePropertyAxiom; import edu.unika.aifb.rdf.api.model.ModelException; import edu.unika.aifb.rdf.api.model.RDFNode; public class StandardNodeProvider implements OWLObjectVisitor, NodeProvider { SwoopNodeFactory nodeFactory; Map resources; public StandardNodeProvider() { nodeFactory = new NodeFactoryImpl(); resources = new WeakHashMap(); } public StandardNodeProvider(SwoopNodeFactory nodeFactory) { this.nodeFactory = nodeFactory; resources = new WeakHashMap(); } public void visit(OWLAnd node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLAnnotationProperty node) throws OWLException { handle(node); } public void visit(OWLAnnotationInstance node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDataValue node) throws OWLException { try { String data = null; if (node.getValue() != null) data = node.getValue().toString(); String dtype = null; if (node.getURI() != null) dtype = node.getURI().toString(); resources.put(node, nodeFactory.createLiteral(data, dtype, node.getLang())); } catch (ModelException e) { throw new OWLException(e); } } public void visit(OWLDataType node) throws OWLException { handle(node); } public void visit(OWLDataEnumeration node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDataAllRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDataCardinalityRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDataProperty node) throws OWLException { handle(node); } public void visit(OWLDataSomeRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDataValueRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDifferentIndividualsAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDisjointClassesAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLEquivalentClassesAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLEquivalentPropertiesAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLFrame node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLIndividual node) throws OWLException { handle(node); } public void visit(OWLObjectAllRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLObjectCardinalityRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLObjectProperty node) throws OWLException { handle(node); } public void visit(OWLObjectSomeRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLObjectValueRestriction node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLNot node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLOntology node) throws OWLException { handle(node); } public void visit(OWLOr node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLClass node) throws OWLException { handle(node); } public void visit(OWLEnumeration node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLSameIndividualsAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLSubClassAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLSubPropertyAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLFunctionalPropertyAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLInverseFunctionalPropertyAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLTransitivePropertyAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLSymmetricPropertyAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLInversePropertyAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLPropertyDomainAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLObjectPropertyRangeAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDataPropertyRangeAxiom node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLObjectPropertyInstance node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLDataPropertyInstance node) throws OWLException { // TODO Auto-generated method stub } public void visit(OWLIndividualTypeAssertion node) throws OWLException { // TODO Auto-generated method stub } public RDFNode getNode(OWLObject obj) throws OWLException { obj.accept(this); if (!resources.containsKey(obj)) { obj.accept(this); if (!resources.containsKey(obj)) { // Just make a new one up. resources.put(obj, nodeFactory.createResource()); } } return (RDFNode) resources.get(obj); } public SwoopNodeFactory getNodeFactory() { return nodeFactory; } public void handle(OWLNamedObject obj) throws OWLException { URI uri = obj.getURI(); if (uri != null) { try { resources.put(obj, nodeFactory.createResource(uri.toString())); } catch (ModelException e) { throw new OWLException(e); } } } }