我正在尝试使用TDB在Java和Jena中进行查询。所以基本上我得到了一个名为song.n3的n3文件,使用这个文件,我想在TDB中使用这个文件。因此,我已经创建了一个在我的Java1文件夹(Netbeans项目文件夹)中生成的目录,然后我就拥有了实际n3文件的源代码。运行这段代码后,我遇到了错误"java.lang.NoClassDefFoundError“。基本上,调试代码会导致由以下行引起的错误: Dataset dataset =TDBFactory.createDataset(目录);。我不太确定为什么会导致这个错误,可能是因为我的目录是空的,没有模型。
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();
}
}发布于 2011-12-29 02:10:25
这应该是您的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/目录中的所有jars都在CLASSPATH中。无论如何,它会帮助你给出完整的java.lang.NoClassDefFoundError,其中没有找到的类被显示,这将给你一个线索,它丢失了什么。可能是jena发行版中没有附带的一些日志库。
另外,还要注意那个owl:sameas谓词。SPARQL和RDF区分大小写,正确的谓词是owl:sameAs。
https://stackoverflow.com/questions/8659058
复制相似问题