/*
* 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.site;
import java.util.Dictionary;
import org.apache.stanbol.entityhub.servicesapi.EntityhubConfiguration;
import org.apache.stanbol.entityhub.servicesapi.mapping.FieldMapping;
import org.apache.stanbol.entityhub.servicesapi.model.ManagedEntityState;
import org.apache.stanbol.entityhub.servicesapi.model.MappingState;
import org.apache.stanbol.entityhub.servicesapi.yard.Cache;
import org.apache.stanbol.entityhub.servicesapi.yard.CacheStrategy;
import org.apache.stanbol.entityhub.servicesapi.yard.Yard;
/**
* This interface defines the getter as well as the keys used to configure
* such properties when parsing an configuration for a {@link Site}.<p>
*
* @author Rupert Westenthaler
*
*/
public interface SiteConfiguration {
/**
* The key to be used for the site id
*/
String ID = "org.apache.stanbol.entityhub.site.id";
/**
* Getter for the id of this site.
* @return The id of the Site
*/
String getId();
/**
* The key to be used for the name of the site
*/
String NAME = "org.apache.stanbol.entityhub.site.name";
/**
* The preferred name of this site (if not present use the id)
* @return the name (or if not defined the id) of the site
*/
String getName();
/**
* The key to be used for the site description
*/
String DESCRIPTION = "org.apache.stanbol.entityhub.site.description";
/**
* Getter for the default short description of this site.
* @return The description or <code>null</code> if non is defined
*/
String getDescription();
/**
* The key used to configure the FieldMappings for a Site. Note that values
* are parsed by using {@link FieldMapping#parseFieldMapping(String)}
*/
String SITE_FIELD_MAPPINGS = "org.apache.stanbol.entityhub.site.fieldMappings";
/**
* Getter for the field mappings used for this site when importing entities
* to the Entityhub.<p>
* Note that this field mappings are used in addition to the field mappings
* defined by the {@link EntityhubConfiguration}.
* @return the FieldMappings or <code>null</code> if none.
*/
String[] getFieldMappings();
/**
* Key used for the configuration of prefixes used by Entities managed by this Site
*/
String ENTITY_PREFIX = "org.apache.stanbol.entityhub.site.entityPrefix";
/**
* Getter for the prefixes of entities managed by this Site
* @return the entity prefixes. In case there are non an empty array is returned.
*/
String[] getEntityPrefixes();
/**
* Key used for the configuration of the default {@link ManagedEntityState} for a site
*/
String DEFAULT_SYMBOL_STATE = "org.apache.stanbol.entityhub.site.defaultSymbolState";
/**
* The initial state if a {@link Symbol} is created for an entity managed
* by this site
* @return the default state for new symbols
*/
ManagedEntityState getDefaultManagedEntityState();
/**
* Key used for the configuration of the default {@link EntityMapping} state
* ({@link MappingState} for a site
*/
String DEFAULT_MAPPING_STATE = "org.apache.stanbol.entityhub.site.defaultMappedEntityState";
/**
* The initial state for mappings of entities managed by this site
* @return the default state for mappings to entities of this site
*/
MappingState getDefaultMappedEntityState();
/**
* Key used for the configuration of the default expiration duration for entities and
* data for a site
*/
String DEFAULT_EXPIRE_DURATION = "org.apache.stanbol.entityhub.site.defaultExpireDuration";
/**
* Return the duration in milliseconds or values <= 0 if mappings to entities
* of this Site do not expire.
* @return the duration in milliseconds or values <=0 if not applicable.
*/
long getDefaultExpireDuration();
/**
* The key used to configure the name of License used by a referenced Site
*/
String SITE_LICENCE_NAME = "org.apache.stanbol.entityhub.site.licenseName";
/**
* The key used to configure the License of a referenced Site
*/
String SITE_LICENCE_TEXT = "org.apache.stanbol.entityhub.site.licenseText";
/**
* The key used to configure the link to the License used by a referenced Site
*/
String SITE_LICENCE_URL = "org.apache.stanbol.entityhub.site.licenseUrl";
/**
* Getter for the the License(s) used for the data provided by this
* site. If multiple Liceneses are given it is assumed that any of them can
* be used. <p>
* Licenses are defined by the name ({@link #SITE_LICENCE_NAME}),
* the text ({@link #SITE_LICENCE_TEXT}) and the url
* ({@link #SITE_LICENCE_URL}) to the page of the license. This three keys
* are combined to the {@link License} object.<p>
* It is recommended to use "cc:license" to link those licenses to the
* page.
* @return The name of the license
*/
License[] getLicenses();
/**
* The attribution for the data provided by this referenced site
*/
String SITE_ATTRIBUTION = "org.apache.stanbol.entityhub.site.attribution";
/**
* The name the creator of the Work (representations in case of referenced
* sites) would like used when attributing re-use. <code>null</code> if
* none is required by the license.<p>
* It is recommended to use "cc:attributionName" to represent this in
* RDF graphs
* @return the attribution name
*/
String getAttribution();
/**
* The URL to the attribution for the data provided by this referenced site
*/
String SITE_ATTRIBUTION_URL = "org.apache.stanbol.entityhub.site.attributionUrl";
/**
* The URL the creator of a Work (representations in case of referenced
* sites) would like used when attributing re-use. <code>null</code> if
* none is required by the license.<p>
* It is recommended to use "cc:attributionURL" to represent this in
* RDF graphs
* @return the link to the URL providing the full attribution
*/
String getAttributionUrl();
/**
* The configuration as {@link Dictionary} (as used by OSGI)
* @return the configuration as Dictionary
*/
Dictionary<String,Object> getConfiguration();
}