Проблема артефакта Maven с зависимостями stardog и sesame

У меня есть программа, разработанная в проекте maven через Eclipse, которая предоставляет службу ETL, которая принимает данные, генерирует RDF в формате черепахи с использованием API Jena и загружает его в тройное хранилище, для которого требуются данные, отправленные ему с помощью Sesame API. Таким образом, мне нужно преобразовать операторы, созданные службой ETL, из Jena в Sesame.

Я хочу использовать следующий класс от Stardog , так как он делает именно то, что мне нужно сделать. Я попытался добавить следующие зависимости в свой 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

Я также получаю ошибки при открытии тега Dependency для вышеуказанных зависимостей, говоря, что зависимость, содержащаяся в нем, также отсутствует.

Примечание: stardog.version = 2.2.2 и sesame.version = 2.7.12.

Любые идеи?


person DivDiff    schedule 13.03.2015    source источник


Ответы (1)


Я действительно не знаю, как помочь вам с проблемой зависимости maven - это выглядит очень специфично для Stardog. Если вы не получили ответа здесь, вы можете попробовать спросить об этом в их списке рассылки поддержки.

Однако я могу предложить альтернативное решение: вместо использования класса преобразователя вы просто сериализуете объекты Jena обратно в N-Triples или Turtle, а затем анализируете их с помощью синтаксического анализатора Sesame Rio, который, конечно, создаст объекты Sesame API.

Я не очень хорошо знаком с Jena API, но уверен, что есть способ написать модель, скажем, для OutputStream в формате Turtle. Когда у вас есть этот 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); 
person Jeen Broekstra    schedule 13.03.2015
comment
Это сработало. В качестве примечания для всех, кто пытается это сделать, вам нужно создать экземпляр RDFWriter в том же формате, который вы планируете анализировать. Для приведенного выше примера вам нужно создать его как ЧЕРЕПАХУ. - person DivDiff; 18.03.2015