TDB耶拿查询

时间:2011-12-28 17:16:54

标签: sparql jena

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

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();
 }
}

1 个答案:

答案 0 :(得分:3)

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

#!/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/目录中的所有jar都在CLASSPATH中。无论如何,它会帮助你给出未找到类的完整java.lang.NoClassDefFoundError,这会给你一些它缺少的东西。可能是一些未在jena发行版中发布的日志库。

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