<?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-rdf-parent</artifactId>
		<version>0.5.0</version>
	</parent>

	<artifactId>commons-rdf-rdf4j</artifactId>
	<packaging>jar</packaging>

	<name>Commons RDF impl: RDF4j</name>
	<description>Eclipse RDF4j implementation of Commons RDF API</description>

	<build>
		<plugins>
			<plugin>

				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<configuration>
					<instructions>
						<!-- Not sure why this is needed, .impl and .internal is normally hidden 
							by the Bundle Plugin.. -->

						<Export-Package>org.apache.commons.rdf.rdf4j</Export-Package>
						<Private-Package>org.apache.commons.rdf.rdf4j.impl</Private-Package>
						<Bundle-SymbolicName>org.apache.commons.rdf.rdf4j</Bundle-SymbolicName>
						<Automatic-Module-Name>org.apache.commons.rdf.rdf4j</Automatic-Module-Name>
						<Require-Capability>osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional</Require-Capability>
						<Provide-Capability>osgi.serviceloader; osgi.serviceloader=org.apache.commons.rdf.api.RDF</Provide-Capability>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>

    <distributionManagement>
      <site>
        <id>commonsrdf-api-site</id>
        <url>scm:svn:${commons.scmPubUrl}/rdf4j/</url>
      </site>
    </distributionManagement>

	<dependencies>
		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>commons-rdf-api</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>commons-rdf-simple</artifactId>
			<version>${project.version}</version>
		</dependency>

		<!-- Selected rdf4j dependencies We don't use rdf4j-runtime or rdf4j-runtime-osgi 
			here, as they pull in various depenencies like lucene, which might not be 
			needed. -->

		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-model</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-repository-api</artifactId>
		</dependency>

		<!-- For RDF4JParser, these are the RIO dependencies for the standard 
			RDF 1.1 languages -->
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-rio-turtle</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-rio-ntriples</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-rio-nquads</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-rio-rdfxml</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-rio-trig</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-rio-jsonld</artifactId>
		</dependency>
		<!-- Languages notably missing, and why: 
		
		rdf4j-rio-rdfjson: standard, but https://www.w3.org/TR/rdf-json/ says:
			"The syntax defined in this document should not be used unless there is a specific reason to do so" 
			
		rdf4j-rio-binary: non-standard 
		
		rdf4j-rio-n3: unofficial standard, super-seeded by Turtle
			
		rdf4j-rio-trix: unofficial standard 
		-->

		<!-- There are multiple RDF4J sail/repository implementations, we use the 
			below from RDF4JFactory. -->
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-sail-memory</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-repository-sail</artifactId>
		</dependency>
		<!--  and nativerdf for testing -->
		<dependency>
			<groupId>org.eclipse.rdf4j</groupId>
			<artifactId>rdf4j-sail-nativerdf</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>commons-rdf-api</artifactId>
			<version>${project.version}</version>
			<classifier>tests</classifier>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<!-- Ensure consistent rdf4j versions across the board -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.eclipse.rdf4j</groupId>
				<artifactId>rdf4j-bom</artifactId>
				<version>${rdf4j.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

</project>
