問題タブ [stardog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sparql - バインドされていない変数のオプションの Sparql ステートメントが Stardog で機能しない
環境
やあ!
別の仕様の特定の関係に関連付けられた質問を表示する仕様があります。私の仕様のすべてのオブジェクトには、いわゆるフラグメント言語化 (relation:hasFragmentVerbalisation) があります。
質問を正しく表示するには、言語化を直接使用できる「単純な」Iri がある場合と、特定のタイプ (この場合は部屋または従業員の場合) である場合を区別する必要があります。その場合、そのタイプのすべてのリソースの優先ラベルを返したいです(基本的に、オブジェクトが部屋を表す場合、データベースにあるすべての部屋を返したいです)。
私は現在クエリに取り組んでおり、次のようなステートメント部分を追加しようとしています:
ここでしたいこと
?オブジェクトを取得しました。私のクエリの主な結果は ?final オブジェクトです。ここで、考えられる 3 つのケースについて説明します。
- 最初のオプション ステートメント: ここでは、フラグメントの言語化を取得したいだけです。
- 2 番目のオプションのステートメント: 私の IRI が実際に従業員を指している場合、従業員の優先ラベルをすべて ?final として返したいと考えています。基本的に、私はすべての従業員のリストを返しています。
- 3 番目のオプション ステートメント: IRI が部屋を指している場合、?final のすべての部屋番号を返したい。ここでの私の質問にとって、正規表現フィルターは重要ではありません。
- 4 番目の (アウトコメントされた) オプションのステートメント: 2 番目と 3 番目のステートメントが適合しない場合、?final はバインドされません。
問題
一般的に、アウトを除くすべての作品は 1 つの作品にコメントしました。ただし、ここで 2 つの問題があります。
- ?objectVerb を事前定義された文字列と比較する代わりに、2 番目と 3 番目の Optional については、 (疑似コードのみ:) と尋ねます
Do this only if ?object rdf:type iri:for:person:or:room
。しかし、私はそのような声明を出すことができないようです。 - 「outcommented」オプションの呼び出し (最後の呼び出し) はまったく機能せず、その理由について少し混乱しています。私がここで試しているのは次のとおりです。
- 私の ?final 変数がまだ何にもバインドされていない場合、?object が IRI であるかどうかを確認し、そうでない場合は、以前に取得した ?objectVerb-value を ?final の値として設定する必要があります。
ここで誰かが解決策を指摘できますか? 助けてくれてありがとう。
編集:完全なクエリ:
そして、それが機能するためにそれを実行するための非常に短縮されたデータセット: