2

我正在尝试编写小型应用程序,它将响应 xhtml+xml 格式的 web 服务(实际上我是在谈论 dbpedia 聚光灯)并使用 rdf 蒸馏器(这里是 Java-rdfa api)来提取 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中有一个iri-0.9.1 jar。问题是因为我不使用maven引起的吗?(我知道是一个java包管理器,但我对此一无所知)。它甚至可以在没有maven的情况下以简单的方式使用这两个api吗?或者可能是因为我的代码?如果这个问题看起来微不足道或格式不正确,我深表歉意,但由于我是编程新手,任何建议都将不胜感激。

4

3 回答 3

1

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

一种做法是在 github 上fork项目pom.xml并将其更新为指向最新的 Jena 版本。但是,如果您是编程新手,这可能是一个过分的问题。碰巧,我认识 java-rdfa 的维护者,我会问他是否有时间做一个适用于现代 Jena 版本的新版本。

于 2012-06-28T19:16:57.913 回答
0

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

这里有一个 cURL 的例子。

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

对于 Java,搜索“设置 http 接受标头 java”。

对该请求的响应将是NIF中的 RDF

@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 .
于 2013-09-08T00:43:59.113 回答
0

您是否检查使用符合 RDFa 1.1 的库clj-rdfa的 clj-rdfa-jena ?看一个例子

于 2012-06-28T20:58:20.933 回答