0

ええと、そのような素朴な質問で申し訳ありませんが、関連する情報は今のところ見つかりませんでした... Jena schemagenpottery.javaから生成pottery.rdfしました。私のオントロジーのプロパティとクラスは、次のように変換されました。

public static final DatatypeProperty colors = m_model.createDatatypeProperty( URL_0 );    
public static final OntClass Class_1 = m_model.createClass( URL_1 );
public static final OntClass Class_2 = m_model.createClass( URL_2 );

pottery.java

のすべてのインスタンスの名前と色を一覧表示したいとしますClass_1。どうすればいいですか?私が今知っているのは、次のコードを使用して、属しているクラスに関係なく、すべてのインスタンスを一覧表示する方法です。

ResIterator iter = model.listResourcesWithProperty(pottery.colors);
while (iter.hasNext()) {
  Resource r = iter.nextResource();
  System.out.println("  " + r.getLocalName() + " " + 
                     r.getRequiredProperty(pottery.colors).getString() );
}

要するに、私の質問は、上記のコードにクラス制限を追加する方法です。

4

3 に答える 3

2

リソースresourceが特定の RDF タイプ を持っているかどうかは、値typeのプロパティがあるかどうかを確認することで確認できます。上記のコードの場合、次の形式の条件を追加できます。RDF.typetype

if ( r.hasProperty( RDF.type, importantType ) ) {
  System.out.println("  " + r.getLocalName() + " " + 
                     r.getRequiredProperty(pottery.colors).getString() );
}
于 2013-05-24T12:39:07.183 に答える
1

仮定:

  • Pottery.javaschemagen で生成した Java クラスでClass_1Class_2、 などのパブリック定数が含まれています。

  • modelOntModel調べたいRDFデータを含む

それから:

// list the resources that are instance of Class_1 in model:
for (ExtendedIterator<Individual> i = model.listIndividuals(Pottery.Class_1); 
       i.hasNext(); ) {
  Individual instance = i.next();
  System.out.println( instance.toString() + " is an instance of Class_1" );
}

編集:インスタンスの色も欲しかったようです:

for (ExtendedIterator<Individual> i = model.listIndividuals(Pottery.Class_1); 
       i.hasNext(); ) {
  Individual instance = i.next();
  RDFNode cs = intance.getPropertyValue( Potter.colors );
  System.out.println( instance.toString() + " is an instance of Class_1" + 
                      " with colors " + cs );
}

詳細については、Jena Ontology API ドキュメントを参照してください。

于 2013-05-24T12:44:48.100 に答える
0

あなたはほとんどそこにいます:

ResIterator iter = model.listResourcesWithProperty(RDF.type, Class_1);

RDF.typeタイプ(プロパティ) valueを持つすべてのものをリストしますClass_1

jenaのチュートリアルを試してください。この種のタスクには jena オントロジー API の方が便利だと思うかもしれませんが、基本的な API で問題ありません。

于 2013-05-24T12:38:50.977 に答える