具有 stardog 和 sesame 依赖关系的 Maven 神器问题

Maven artifact issue with stardog and sesame dependencies

我有一个程序,通过 Eclipse 在 maven 项目中开发,它提供 ETL 服务来摄取数据,使用 Jena API 生成海龟格式的 RDF,并将其加载到需要数据的三重存储中使用芝麻 API 发送给它。因此,我需要将 ETL 服务创建的语句从 Jena 转换为 Sesame。

我想使用 Stardog 的 following class,因为它正是我需要做的。我尝试将以下依赖项添加到我的 pom.xml 中以解决问题:

    <dependency>
        <groupId>com.complexible.stardog.protocols.http</groupId>
        <artifactId>client</artifactId>
        <version>${stardog.version}</version>
        <exclusions>
            <exclusion>
                <!-- Depends on this as if it were a jar artifact, when it is a pom -->
                <artifactId>sesame</artifactId>
                <groupId>org.openrdf.sesame</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.complexible.stardog.reasoning.http</groupId>
        <artifactId>client</artifactId>
        <version>${stardog.version}</version>
        <exclusions>
            <exclusion>
                <!-- Depends on this as if it were a jar artifact, when it is a pom -->
                <artifactId>sesame</artifactId>
                <groupId>org.openrdf.sesame</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.complexible.stardog</groupId>
        <artifactId>core</artifactId>
        <version>${stardog.version}</version>
        <exclusions>
            <exclusion>
                <!-- Depends on this as if it were a jar artifact, when it is a pom -->
                <artifactId>sesame</artifactId>
                <groupId>org.openrdf.sesame</groupId>
            </exclusion>
            <exclusion>
                <artifactId>license</artifactId>
                <groupId>com.clarkparsia</groupId>
            </exclusion>
            <exclusion>
                <artifactId>erg</artifactId>
                <groupId>com.complexible.erg</groupId>
            </exclusion>
        </exclusions>
    </dependency>

但我收到以下错误:

缺少工件 com.complexible.stardog:shared:jar 2.2.2

缺少神器org.openrdf.sesame:sesame:jar:2.7.12

缺少工件 com.complexible.stardog:api:jar.2.2.2

我在上述依赖项的开始依赖项标记上也收到错误,说其中包含的依赖项也丢失了。

注意:stardog.version = 2.2.2 和 sesame.version = 2.7.12。

有什么想法吗?

我真的不知道如何帮助您解决 Maven 依赖性问题 - 这看起来非常特定于 Stardog。如果您在这里没有得到答案,您可以尝试在他们的支持邮件列表上询问这个问题。

不过,我可以提供一个替代解决方案:不用转换器 class,您只需将 Jena 对象序列化回 N-Triples 或 Turtle,然后使用 Sesame 的 Rio 解析器解析它们 - 这将当然是创建 Sesame API 个对象。

我不太熟悉 Jena API,但我确信有一种方法可以将模型编写为 Turtle 格式的 OutputStream。一旦你有了 OutputStream,你可以简单地做这样的事情:

// in case of very large files, use something more efficient, like a   
// PipedOutputStream, or first write back to disk
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); 

// parse the data using Sesame Rio, which provides a Sesame Model     
// object. You can of course also immediately write the  
// data to the store instead of first creating a Model.
org.openrdf.model.Model model = Rio.parse(in, "", RDFFormat.TURTLE);