2015-03-13 3 views
0

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

Я хочу использовать following class от 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> 

, но я получаю следующие ошибки:

Missing артефакт com.complexible.stardog: общая: баночку 2.2.2

Missing артефакт org.openrdf.sesame: кунжутное: баночка: 2.7.12

Отсутствует артефакт com.complexible.stardog: апи: jar.2.2.2

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

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

Любые идеи?

ответ

0

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

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

Я не слишком хорошо знаком с API Jena, но я уверен, что вы можете написать модель, скажем, 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); 
+0

Это сработало. В качестве примечания для всех, кто пытается это сделать, вам необходимо создать экземпляр вашего RDFWriter с тем же форматом, который вы планируете анализировать. В приведенном выше примере вам нужно создать экземпляр его как TURTLE. – DivDiff

Смежные вопросы