2

JenaFrameworkを使用して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を使用したい場合、どのようにjenaで行うことができますか?

4

2 に答える 2

3

すべてのステートメントを反復処理するのではなく、SPARQLを使用してモデルをクエリする必要があります。Jenaは、APIでSPARQLを使用する方法に関する優れたチュートリアルを提供しています。

于 2012-12-03T17:17:40.390 に答える
2

どうですか:

Resource ENTITY_TYPE = model.getResource("http://www.test.com/testModel.owl#Entity");
StmtIterator iter = model.listStatements(null, RDF.type, ENTITY_TYPE);
while (iter.hasNext()) {
    String entityID = iter.next().getSubject().getURI();
    System.out.println(entityID);
}

これにより、各エンティティのURIが取得されます。

于 2012-12-03T20:53:25.800 に答える