2

私はprotegeでいくつかのサンプルオントロジーを作成しました。私のオントロジーによると、personというクラスがあり、Studentというサブクラスがあります。学生の個人(john、paul、marry、...)がいます。「email」と呼ばれるデータプロパティを定義し、それらの電子メールアドレスを割り当てました。

オントロジーのすべての個人をもたらす次のクエリ。しかし、私は各個人とその電子メールアドレスを取得したいと思います。

String queryStr =
    "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+
    "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  "+
    "select   ?ind "+
    "where { "+
    "?ind  rdf:type <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#Student> ;"+

"}\n ";

上記のクエリは、EclipseIDEのjenaでテストされました。

何か案が..?

少し早いですがお礼を!

4

2 に答える 2

8

電子メールアドレスを取得するには、1)それらの変数をSELECT行に追加し、2)その変数をWHEREパターンでバインドする必要があります。また、オントロジーを2回参照する必要があるため、独自のオントロジーのプレフィックスを追加することをお勧めします。何かのようなもの:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#>

SELECT ?ind ?email
WHERE {
  ?ind rdf:type my:Student .
  ?ind my:Email ?email
}
于 2010-06-08T12:19:25.890 に答える
1

よりコンパクトな方法は次のとおりです。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#>

SELECT ?ind ?email 
WHERE { 
       ?ind rdf:type my:Student ;
            my:Email ?email .
     }
于 2018-03-05T20:48:26.990 に答える