首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDB Jena查询

TDB Jena查询
EN

Stack Overflow用户
提问于 2011-12-29 01:16:54
回答 1查看 1.3K关注 0票数 2

我正在尝试使用TDB在Java和Jena中进行查询。所以基本上我得到了一个名为song.n3的n3文件,使用这个文件,我想在TDB中使用这个文件。因此,我已经创建了一个在我的Java1文件夹(Netbeans项目文件夹)中生成的目录,然后我就拥有了实际n3文件的源代码。运行这段代码后,我遇到了错误"java.lang.NoClassDefFoundError“。基本上,调试代码会导致由以下行引起的错误: Dataset dataset =TDBFactory.createDataset(目录);。我不太确定为什么会导致这个错误,可能是因为我的目录是空的,没有模型。

代码语言:javascript
复制
public static void main(String[] args) throws IOException {
   String directory = "./tdb";
   Dataset dataset = TDBFactory.createDataset(directory);
   Model tdb = dataset.getDefaultModel();
   String source = "C:\\Users\\Name\\Documents\\NetBeansProjects\\Java1\\src\\song.n3";
   FileManager.get().readModel( tdb, source, "N3" );
   String queryString = "PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?x owl:sameas ?y }";

   Query query = QueryFactory.create(queryString);

   QueryExecution qe = QueryExecutionFactory.create(query, tdb);
   ResultSet results = qe.execSelect();

   ResultSetFormatter.out(System.out, results, query);

   qe.close();
 }
}
EN

回答 1

Stack Overflow用户

发布于 2011-12-29 02:10:25

这应该是您的CLASSPATH的问题,当我使用TDB时,我使用以下脚本将Jena-TDB库加载到我的类路径中。

代码语言:javascript
复制
#!/bin/bash
CP="."
for i in ./TDB-0.8.9/lib/*.jar ; do
    CP=$CP:./TDB-0.8.9/lib/$i
done
export CLASSPATH=$CP

它是bash,但很容易转换成Windows脚本。总之,要确保/lib/目录中的所有jars都在CLASSPATH中。无论如何,它会帮助你给出完整的java.lang.NoClassDefFoundError,其中没有找到的类被显示,这将给你一个线索,它丢失了什么。可能是jena发行版中没有附带的一些日志库。

另外,还要注意那个owl:sameas谓词。SPARQL和RDF区分大小写,正确的谓词是owl:sameAs

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8659058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档