/******************************************************************************* * Copyright (c) 2009 Fraunhofer IWU and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Fraunhofer IWU - initial API and implementation *******************************************************************************/ package net.enilink.komma.owl.edit; import java.util.Collection; import net.enilink.komma.common.util.IResourceLocator; import net.enilink.komma.core.URI; import net.enilink.komma.em.concepts.IClass; import net.enilink.komma.model.IObject; import net.enilink.komma.rdfs.edit.RDFSPropertyItemProvider; import net.enilink.vocab.owl.OWL; public class OWLPropertyItemProvider extends RDFSPropertyItemProvider { public OWLPropertyItemProvider( OWLItemProviderAdapterFactory adapterFactory, IResourceLocator resourceLocator, Collection<IClass> supportedTypes) { super(adapterFactory, resourceLocator, supportedTypes); } protected String findPatternsFor(URI propertyType) { String typeLiteral = "<" + propertyType + ">"; StringBuilder patterns = new StringBuilder("?s a ").append(typeLiteral) .append(" . "); if (OWL.TYPE_OBJECTPROPERTY.equals(propertyType)) { patterns.append("FILTER NOT EXISTS {" // + " ?s a ?otherType . ?otherType rdfs:subClassOf " + typeLiteral // + " FILTER (?otherType = owl:AnnotationProperty || ?otherType = owl:DatatypeProperty || ?otherType = rdfs:ContainerMembershipProperty)" // + "}"); } return patterns.toString(); }; @Override protected String getQueryFindPatterns(Object parent) { if (OWL.PROPERTY_TOPOBJECTPROPERTY.equals(parent)) { return findPatternsFor(OWL.TYPE_OBJECTPROPERTY); } else if (OWL.PROPERTY_TOPDATAPROPERTY.equals(parent)) { return findPatternsFor(OWL.TYPE_DATATYPEPROPERTY); } return super.getQueryFindPatterns(parent); } @Override public Collection<?> getChildren(Object object) { if (object instanceof IObject) { if (OWL.PROPERTY_TOPOBJECTPROPERTY.equals(object)) { return ((IObject) object).getModel().getOntology() .getRootObjectProperties().toList(); } else if (OWL.PROPERTY_TOPDATAPROPERTY.equals(object)) { return ((IObject) object).getModel().getOntology() .getRootDatatypeProperties().toList(); } } return super.getChildren(object); } }