我需要帮助才能使用 Jena 框架从 RDF 中获取一些信息。我有这样的 RDF 内容:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ts="http://www.test.com/testModel.owl#">
<ts:Entity rdf:ID="1234_test">
<....>
</ts>
</rdf:RDF>
现在我的想法是从 ts:Entity 中取出 ID。这是我的代码:
Model model = ModelFactory.createDefaultModel();
InputStream requestBody = new ByteArrayInputStream(request.getBytes());
String BASE = "http://www.test.com/testModel.owl#";
model.read(requestBody,BASE);
requestBody.close();
StmtIterator iter = model.listStatements();
while (iter.hasNext()) {
Statement stmt = iter.nextStatement(); // get next statement
Resource subject = stmt.getSubject(); // get the subject
Property predicate = stmt.getPredicate(); // get the predicate
RDFNode object = stmt.getObject(); // get the object
System.out.println(subject + " | "+predicate);
}
在这种情况下,唯一的问题是我必须滚动所有声明。有一种方法可以直接从 ts:Entity 获取 ID?可能在获取资源之前和与该资源相关的 ID 值之后。
提前感谢您的帮助。
抱歉,我又来了,因为我有一个类似的问题,例如,如果我有这个 rdf:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ts="http://www.test.com/testModel.owl#">
<ts:Entity rdf:ID="1234_test">
<ts:Resource>
<ts:testProp rdf:datatype="http://www.w3.org/2001/XMLSchema#string">test_ID_test</ts:testProp>
</ts>
</ts>
</rdf:RDF>
我如何提取值 test_ID_test ???如果我想使用 SPARQL 我该怎么做耶拿???