<?xml version="1.0" encoding="UTF-8"?>
<!--
   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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.stanbol</groupId>
    <artifactId>org.apache.stanbol.data.parent</artifactId>
    <version>1.2.0-SNAPSHOT</version>
    <relativePath>../../parent</relativePath>
  </parent>

  <groupId>org.apache.stanbol</groupId>
  <artifactId>org.apache.stanbol.data.sites.dbpedia.cached</artifactId>
  <version>1.2.0-SNAPSHOT</version>
  <packaging>bundle</packaging>

  <name>Apache Stanbol Data: Remote DBpedia.org with local cache</name>
  <description>
    This bundle installs DBpedia as Referenced Site.
    The SPARQL endpoint is used for query and retrievel however retrieved
    Entities are locally cached.
  </description>

  <inceptionYear>2011</inceptionYear>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/stanbol/branches/apache-stanbol-1.0.0-branch/data/sites/dbpediacached
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/stanbol/branches/apache-stanbol-1.0.0-branch/data/sites/dbpediacached
    </developerConnection>
    <url>http://stanbol.apache.org/branches/apache-stanbol-1.0.0-branch</url>
  </scm>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.0.1</version>
        <inherited>true</inherited>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <!-- Header used to load the provided configurations -->
            <Install-Path> 
              org/apache/stanbol/data/site/dbpedia/cached
            </Install-Path>
            <_versionpolicy>$${version;===;${@}}</_versionpolicy>
          </instructions>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <!-- License provided in src/main/resources/README -->
            <exclude>src/main/resources/org/apache/stanbol/data/site/dbpedia/cached/org.apache.stanbol.enhancer.engines.entitytagging.impl.NamedEntityTaggingEngine-dbpedia.config</exclude>
            <exclude>src/main/resources/org/apache/stanbol/data/site/dbpedia/cached/org.apache.stanbol.entityhub.core.site.CacheImpl-dbpedia.config</exclude>
            <exclude>src/main/resources/org/apache/stanbol/data/site/dbpedia/cached/org.apache.stanbol.entityhub.site.referencedSite-dbpedia.config</exclude>
            <exclude>src/main/resources/org/apache/stanbol/data/site/dbpedia/cached/org.apache.stanbol.entityhub.yard.solr.impl.SolrYard-dbpediaCache.config</exclude>
          </excludes>
        </configuration>
      </plugin>
     </plugins>
  </build>

</project>
