2012-06-28 34 views
2

我正在尝试编写一个小应用程序,它将以xhtml + xml格式(其实我是在谈论dbpedia spotlight)和通过使用rdf蒸馏器(这里是Java-rdfa api)来提取Web服务的响应rdf三联。我已经设法安装jena api(我使用Netbeans和eclipse IDE)并且没有问题。为了安装java-rdfa api,我在java-rdfa-0.4.1.jar中创建了一个用户库“put”,并为我的项目设置了一个类路径(因为它是我的项目依赖于3个库java-rdfa,jena -api-2.7.1。和默认的java JDK 1.7)。 不幸的是,当我ruuning我的应用我得到以下异常如何使Java-rdfa API与Jena Api协同工作?

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

我相信,在耶拿API有一个IRI-0.9.1罐子。是造成的,因为我不使用Maven的问题? (我知道是一个Java包管理器,但我什么都不知道)。甚至可以使用这两个API没有maven在一个简单的方法? 或者可能是因为我的代码? 我很抱歉,如果这个问题似乎微不足道或不是很好形成,但由于我是新手编程任何建议,将不胜感激。

回答

1

那么,看看java-rdfa的maven pom.xml文件,看起来它使用的是一个相当旧版本的Jena-2.6.3,而您可能为您的IDE下载的版本将是(在猜测)2.7.0或2.7.1。

一个行动方案是在github上分配project并更新pom.xml以指向最新的Jena版本。但是,如果你不熟悉编程,那可能太多了。碰巧,我知道java-rdfa的维护者,我会问他是否有时间去做一个与现代耶拿版本兼容的新版本。

+0

谢谢我理解。 – user1479847

+1

我已经更新了jena依赖[此处](https://github.com/shellac/java-rdfa/commits/0.4-branch)。由于jdk xml问题(发牢骚),我会尝试在发布之前尝试修复这个问题,因此存在无关的测试失败,但您可以从git中抓取它并构建它。 – user205512

+0

@ user205512非常感谢您的努力,我真的很感激。所以基本上,如果我正确地理解了你,将会有一个java-rdfa的新版本,它将与jena 2.7.1一起工作?不错:) – user1479847

0

让我提供一个替代方案。如果您正在从DBpedia Spotlight中寻找RDF,为什么不直接在您最喜欢的序列化中请求它?你只需要相应地设置你的Accept头。

这里用cURL的例子。

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

对于Java,搜索“set http accept header 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 .