Как заставить Java-rdfa API работать с Jena Api?

Я пытаюсь написать небольшое приложение, которое будет получать ответ от веб-службы в формате xhtml + xml (на самом деле я говорю о центре внимания dbpedia) и с помощью дистиллятора rdf (здесь идет API Java-rdfa) для извлечения тройки rdf . Мне удалось установить jena api (я использую Netbeans и Eclipse IDE) и работает без проблем. Чтобы установить java-rdfa api, я поместил пользовательскую библиотеку в java-rdfa-0.4.1.jar и установил путь к классу для моего проекта (поскольку мой проект зависит от 3 библиотек java-rdfa, jena -api-2.7.1. и Java JDK 1.7 по умолчанию). К сожалению, когда я запускаю свое приложение, я получаю следующее исключение

  java.lang.NoClassDefFoundError: com/hp/hpl/jena/iri/IRIFactory

Я уверен, что в jena api есть jar iri-0.9.1. Проблема вызвана тем, что я не использую maven? (Я понимаю, что это менеджер пакетов java, но я ничего о нем не знаю). Это даже Можно ли использовать эти два API без Maven простым способом? Или это может быть из-за моего кода? Я извиняюсь, если этот вопрос кажется тривиальным или не очень хорошо сформулированным, но, поскольку я новичок в программировании, любые предложения будут оценены.


person user1479847    schedule 28.06.2012    source источник


Ответы (3)


Ну, посмотрите на файл maven pom.xml для java-rdfa, похоже, он использует довольно старую версию Jena — 2.6.3, тогда как версия, которую вы, вероятно, загрузили для своей IDE, будет (предположительно) 2.7.0 или 2.7.1.

Один из вариантов действий — разветвить проект на github и обновить pom.xml, чтобы он указывал на последняя версия Йена. Но это, вероятно, слишком много, если вы новичок в программировании. Как это бывает, знаю мейнтейнера java-rdfa, спрошу, есть ли у него время сделать новый релиз, работающий с современными версиями Jena.

person Ian Dickinson    schedule 28.06.2012
comment
Я обновил зависимости jena здесь. Есть несвязанный сбой теста из-за проблем с jdk xml (ворчание), которые я постараюсь исправить перед выпуском, но вы можете просто взять его и собрать из git. - person user205512; 29.06.2012
comment
@user205512 user205512 Большое спасибо за ваши усилия, я очень ценю это. Итак, если я вас правильно понял, будет ли выпущена новая версия java-rdfa, которая будет работать с jena 2.7.1? Ницца :) - person user1479847; 29.06.2012
comment
Выпустили, надеюсь! Он должен появиться в Maven Central в течение нескольких дней. Тем временем вы можете использовать мой репозиторий. - person user205512; 29.06.2012

Вы проверили clj-rdfa-jena, который использует библиотеку, совместимую с RDFa 1.1 clj-rdfa? См. пример.

person scor    schedule 28.06.2012

Позвольте мне предложить альтернативу. Если вы ищете RDF от DBpedia Spotlight, почему бы просто не попросить его в вашей любимой сериализации? Вам просто нужно соответствующим образом настроить заголовок Accept.

Вот пример с cURL.

curl -H "Accept: text/turtle" http://spotlight.dbpedia.org/rest/annotate -d "text=Berlin capital of Germany"

Для Java выполните поиск «установить http accept заголовок java».

Ответом на этот запрос будет RDF в NIF.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix itsrdf: <http://www.w3.org/2005/11/its/rdf#> .
@prefix str: <http://nlp2rdf.lod2.eu/schema/string/> .

<http://spotlight.dbpedia.org/rest/document/?text=Berlin%20capital%20of%20Germany#offset_0_25> str:sourceString "Berlin capital of Germany" ;
    str:subString <http://spotlight.dbpedia.org/rest/document/?text=Berlin%20capital%20of%20Germany#offset_0_6> ;
    a str:OffsetBasedString , str:Document .

<http://spotlight.dbpedia.org/rest/document/?text=Berlin%20capital%20of%20Germany#offset_0_6> itsrdf:disambigIdentRef <http://dbpedia.org/resource/West_Berlin> ;
    a str:OffsetBasedString .
person Pablo Mendes    schedule 08.09.2013