<?xml version="1.0" encoding="UTF-8" standalone="no"?><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">
<!--

 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.

-->

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>clerezza</artifactId>
        <groupId>org.apache.clerezza</groupId>
        <version>8-SNAPSHOT</version>
        <relativePath>../../parent</relativePath>
    </parent>

    <groupId>org.apache.clerezza</groupId>
    <artifactId>platform.graphprovider.content</artifactId>
    <version>1.0.1-SNAPSHOT</version>
    <packaging>bundle</packaging>
    <name>Clerezza - Platform Graph Provider Content</name>
    <description>A service that provides the content-graph</description>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>platform</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>rdf.core</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>rdf.utils</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>permissiondescriptions</artifactId>
            <version>0.2</version>
        </dependency>
    </dependencies>
</project>