1

basekb を使用してセマンティック情報を抽出しています。

次の sparql クエリは、freebase クエリとしても使用できます (basekb にも freebase があるため)。

問題文: エンティティが他のエンティティのサブカテゴリであるかどうかを確認します。

例: en.academy_award_for_best_supporting_actor がカテゴリ en.academy_award に属しているかどうかを確認します。

prefix basekb: <http://rdf.basekb.com/ns/>
prefix public: <http://rdf.basekb.com/public/>
prefix fbase: <http://rdf.freebase.com/ns/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select ?aa_ct ?bb {
?aa_ct public:knownAs basekb:en.academy_awards .
?bb public:knownAs basekb:en.academy_award_for_best_supporting_actor .
**?bb rdfs:categoryOf ?aa .**
}

太字のテキストを適切な構文で変更する必要があります (私は知りません)。

4

1 に答える 1

1

SPARQL 実装が 1.1 標準をサポートしている場合、データに厳密なカテゴリ階層があると仮定して、プロパティ パスを使用できるはずです。

?bb rdfs:categoryOf+ ?aa .

プロパティ パスは、既知の述語に対して使用できる単純な正規表現スタイルの構文を提供し、 と の間に接続がある場所を照合することを示し?bbます?aa

この場合、rdfs:categoryOf+値が 1 つまたは複数のリンクのシーケンスによって?bbリンクされる必要があることを意味します。?aardfs:categoryOf

編集

UNIONたとえば、固定長の単純なパスを使用して、プロパティ パスに似た効果を実現できます。

{ ?bb rdfs:categoryOf ?aa }
UNION
{ ?bb rdfs:categoryOf [ rdfs:categoryOf ?aa ] }
UNION
{ ?bb rdfs:categoryOf [ rdfs:categoryOf [ rdfs:categoryOf ?aa ] ] }

これは?bb、 が のサブカテゴリである?aa場合に 1 ~ 3 ステップで一致します。予想されるパスの長さまで必要なだけこれを拡張できます。プロパティ パスをサポートする実装に比べて、パフォーマンスが低下する可能性があります。

于 2012-12-06T18:22:53.970 に答える