5

特定のクラスのスーパークラス/サブクラスを見つけるために、SPARQL クエリを作成する必要があります。

たとえば、http ://139.91.183.30:9090/RDF/VRP/Examples/ Phenomenon.rdf RDFS ボキャブラリ ファイルが与えられた場合、'AcousticWave' ('Wave') のスーパークラスを見つけたいと考えています。

同様に、ユーザーが「Wave」と入力すると、「Wave」のすべてのサブクラス (「AcousticWave」、「GravityWave」、「InternalWave」、および「Tide」) を取得したいと考えています。

ここに画像の説明を入力

このような SPARQL クエリをどのように記述すればよいでしょうか?

4

1 に答える 1

11

rdfs状態のサブ/スーパークラスの関係に使用される述語はrdfs:subClassOfです。そのことを念頭に置いて、SPARQLクエリに、その述語と一致させたいサブジェクトまたはオブジェクトをバインドするトリプルパターンを記述する必要があります---AcousticWaveあなたの場合。

以下の質問が自明であることを願っています。

スーパークラスの場合..。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ns: <http://www.domain.com/your/namespace/>

SELECT ?superClass WHERE { ns:AcousticWave rdfs:subClassOf ?superClass . }

そしてサブクラスの場合...

SELECT ?subClass WHERE { ?subClass rdfs:subClassOf ns:Wave . }

すべてのサブクラスのラベルを取得する場合は、次のns:Waveようにします...

SELECT ?subClass ?label WHERE { 
        ?subClass rdfs:subClassOf ns:Wave . 
        ?subClass rdfs:label ?label . 
}

サブ/スーパークラスの推移閉包が必要な場合は、次の2つのオプションがあります。

  1. クロージャを収集するまで、これらのクエリを再帰的に繰り返します。
  2. RDFデータをRDF/RDFS推論システムに渡して、すべての含意をフォワードチェーンし、RDFデータベースでこれらをアサートします。
于 2011-09-26T16:48:58.393 に答える