問題タブ [blank-nodes]
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 で DBpedia から空白ノードを取得する方法と、DISTINCT で削減された結果を説明する
SPARQL クエリを使用して空白ノードを取得したいと考えています。データセットとして DBpedia を使用しています。たとえば、次のクエリを使用すると、約 340 万件の結果が得られました。
ソリューション修飾子を使用するDISTINCTと、約 220 万の結果が得られます。
2 つの質問があります。
- 2 番目のクエリで 120 万件のレコードが重複して削除されたのでしょうか、それとも空白のノードですか?
- DBpedia から空白のノードとその値を取得するにはどうすればよいですか?
rdf - 空白ノードを範囲とするプロパティ
オントロジーでプロパティを定義するとき、このプロパティの範囲が「空白」ノードであることをどのように定義しますか? たとえばhasPhoneNumber、 domain でプロパティを定義したいとしますPerson。人が複数の電話番号を持つことができることを私が知っているよりも、のインスタンスはプロパティにPerson接続された空白ノードを持ち、次にこの空白ノードに電話番号が接続されます。hasPhoneNumber
sparql - Blank ノードを使用した Sparql クエリは複雑になる可能性があります
このブログ記事Problems of the RDF model: Blank Nodesを読みましたが、空白ノードを使用するとデータの処理が複雑になる可能性があると言及されていました。
空白ノードを使用すると SPARQL クエリを実行するのが難しい理由の例を教えてください。空白ノードの複雑さがわかりません。存在変数の意味とセマンティクスを説明してもらえますか? RDF Semantics Recommendation 1.5に記載されているこの説明がよくわかりません。存在変数としての空白ノード。
sparql - SPARQL クエリの空白ノードと変数の違い
このトピックに関するSPARQL 仕様を調査しましたが、この回答もかなり興味深いことがわかりました。ただし、定義は十分に複雑であるため、私の質問に対する答えはまだわかりません。
空白ノードの代わりに変数を使用した同じクエリとは異なる結果を返す、空白ノードを使用したクエリの例が見つかりません。
たとえば、次のクエリが異なる結果を返す場合があります。
- /li>
- /li>
異なる動作を引き起こす、より複雑なクエリがあるのではないでしょうか?
特に、空白ノードを持たない RDF グラフで実行されたクエリのさまざまな結果の例があるのだろうか。
ありがとう。
PS。はい、変数とは対照的に、空白ノードは 1 つの BasicGraphPattern でのみ使用できることを知っています。しかし、これは私が話している違いではありません。
rdf - Jena ルール内で個人を作成する
私は多くの個人とのオントロジーを持っており、Jena 推論を使用してそれらに関する情報を取得しています。私の目標は、そのルール内の特定の情報に基づいて新しい個人を作成し、それらにプロパティを割り当てることです。個体に名前を付ける必要はありませんが、型が必要で、いくつかのプロパティの一部である必要があります。現時点では、(メーリング リストへの投稿の助けを借りて) 匿名の個人を作成できますが、指定できるのは 1 つの型または 1 つのプロパティのみです。
これが私の問題の小さな例です。私のルールは次のようになります (オントロジーと推論された結果は下部にあります):
[test2: (?X rdf:type NS:Test1) ->
[(?Y rdf:type NS:Test2) <- makeSkolem(?Y, ?X)]]
これは、Test1 個体が見つかると、新しい空のノードが作成され、そのノードにタイプ Test2 が与えられることを意味します。正常に動作しますが、この新しい個体に分類と ?X (Test1 個体) へのポインター (プロパティ) を与えたいと考えています。
次のようなものは機能しません。「後方規則では先頭句が 1 つしか許可されない」ためです。ただし、その句のすべての句は完全に正常に機能します。
[test2: (?X rdf:type NS:Test1) ->
[(?Y rdf:type NS:Test2), (?Y NS:hasClassification 'test'), <- makeSkolem(?Y, ?X)]]
これは私のオントロジーです:
これは最初のルールの結果です (IDA0を持つ空白のノードA1が新しい個体です)。
java - 空白のノード マッピングの取得
私のグループは現在、RDF グラフをナビゲートして情報を抽出するためのポイント アンド クリック インターフェイスを開発しています。この一環として、Jena の sparqlservice メソッドを使用して、さまざまなトリプル ストア エンドポイントに接続しています。ユーザーが現在見ているポイントを移動するために、ユーザーはノードを選択して中心にすることができます。次に、プログラムは、以下に示す式を使用して、そのノードの隣接ノードをフェッチします。
ここで、URI はユーザーが選択したノードです (リテラルに対しては少し異なることを行います)。この式は、次のように実行されます。
私たちが直面している問題は、空白のノードに関するものです。Jena がエンドポイントから空のノードを取得すると、すぐに Jena bNode ID が割り当てられます。この ID は、エンドポイントによって提示されたものと同じではありません。ユーザーがクライアント側で空白のノードを新しいセンターとして選択すると、明らかに問題が発生します。
したがって、私の質問は次のとおりです。Jena 内で元のエンドポイント ID を保持する方法はありますか? Jena の内部をブラウズすると、いくつかのResultSetクラスが というクラスを使用して、エンドポイント ID と Jena ID の間のマッピングを処理していることがわかりますLabelToNodeMap。このマッピングを取得する方法はありますか? または、Jena が独自の ID スキーマを使用しないようにして、代わりにエンドポイントを使用します。