/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.stanbol.entityhub.servicesapi.query; import org.apache.stanbol.entityhub.servicesapi.model.Representation; import org.apache.stanbol.entityhub.servicesapi.model.rdf.RdfResourceEnum; /** * A simple Search service that is intended for Entity lookup based on * <ul> * <li> Tags/Keywords by parsing the exact name * <li> Prefix to provide suggestions for users that type some characters into * a search field. * </ul><p> * Results of such queries will be {@link Representation} with the * following fields * <ul> * <li> id (required) * <li> name (required) by using field {@link RdfResourceEnum#name()} * <li> rank (required) by using field * <li> description (optional) * <li> image (optional) * <li> type (optional) * </ul><p> * Specific implementations may add additional fields. All fields MUST BE part * of the list returned by {@link QueryResultList#getSelectedFields()}. * TODO: define the URIs of the results * @author Rupert Westenthaler * */ public interface EntityQuery extends Query{ /** * Getter for the name/name fragment of the entity to search * @return the name */ String getName(); /** * If Prefix is enabled, the parsed name is interpreted as prefix. * The regex representation would be <code>"^"+getName()+".*$"</code> * @return */ boolean isPrefix(); /** * The type of the entity * TODO: currently symbols define only a required name and description, but * often it is also the type that is used to filter individuals. Therefore * it could make sense to also add the type to the properties of symbols * @return the type of the entities (full name, no wildcard support) */ String getEntityType(); }