問題タブ [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.
rdf - RDFで2つの空白ノードを区別する方法は?
w3.orgからの一節を理解するのに苦労しています。紛らわしい一節は誤りかもしれませんし、私はただ混乱しているかもしれません。
6.6空白ノード
RDFグラフの空白ノードは、無限集合から描画されます。この空白ノードのセット、すべてのRDF URI参照のセット、およびすべてのリテラルのセットは、ペアごとに互いに素です。
それ以外の場合、この空白ノードのセットは任意です。
RDFは空白ノードの内部構造を参照しません。2つの空白ノードが与えられた場合、それらが同じであるかどうかを判断することができます。
ですから、私が混乱しているのは、「空白のメモの内部構造」を知る方法がない場合、どうすればそれらを区別できるのでしょうか。これはタイプミスですか?
python - トリプルに空白ノードを追加する
以下に記述されたコードは、次の出力を提供します。
コード:
出力:
しかし、次の出力が必要です。何が問題なのか教えてください。
前もって感謝します。
sparql - SPARQLコンストラクトクエリで空白ノードを再帰的に展開する方法は?
これにはおそらく簡単に答えることができますが、それを見つけるために Google クエリを作成する方法さえわかりません。
空白のノードを含むデータセットに対して SPARQL コンストラクト クエリを作成しています。したがって、次のようなクエリを実行すると
CONSTRUCT {?x ?y ?z .}
WHERE {?x ?y ?z .}
次に、私の結果の1つは次のようになります。
nm:John nm:owns _:Node
すべての場合、これは問題です
_:Node nm:has nm:Hats
トリプルも何らかの形でクエリ結果に入りません(Pythonのrdflibのように使用している一部のパーサーは、ぶら下がっているbノードを本当に好まないためです)。
元の CONSTRUCT クエリを記述して、新しいグラフに bnode がぶら下がったままにならないように、任意の bnode 結果に関連付けられたすべてのトリプルを再帰的に追加する方法はありますか?
sparql - 空のノードを stardog から pubby にマップする
この .rdf をStardogにロードしてから、 Pubbyを使用して Jetty 上で実行し、トリプル ストアを閲覧しています。
私のrdfファイルには、stardogによって空白のノード識別子が与えられたいくつかの空白のノードがあります。これは rdf ファイルの一部です。
したがって、基本的には、言及の開始と言及の終了のオフセット値を持つ空白ノードへのリンクを持つリソース「res1」があります。
Pubby の config.ttl ファイルのスニペットを以下に示します。
したがって、重要なのは、URI を URL にマップする datasetBase です。
これをマッピングしようとすると、「匿名ノード」リンクがありますが、クリックしても何も表示されません。私の推測では、これは空白ノードに _:bnode1234 のような識別子があり、Pubby によってマップされていないためです。
これらの空白のノードをマッピングする方法を知っている人がいるかどうかを知りたかったのです。
(注: この rdf を静的 rdf ファイルとして Pubby に直接ロードすると、問題なく動作します。しかし、stardog をトリプル ストアとして使用すると、このマッピングはうまく機能しません)
sparql - SPARQLの「select *」で変数を返さずに使用する方法はありますか?
使用時にそれを返さずに、一種のプレースホルダー変数をSPARQLで使用する方法はありSELECT *
ますか?
例えば:
変数を返したくない場合は、 、、および変数?s
だけを返し、 .?title
?name
?s2
SELECT *
を使用して選択結果を制限できることは理解していますSELECT ?title ?name ...
が、プレースホルダー変数の何らかの表記法またはこれを管理する方法があるかどうかに興味があります。
編集:
場合によっては、空白ノードを使用してこれを実現できることを理解しています。たとえば、次のようになります。
しかし、空白のノードは基本的なグラフ パターン間で使用できないため、問題が発生することはありませんか? たとえば、これは次の場合に壊れます。
ありがとう!
sparql - SparqlParameterizedString でパラメーター値を割り当てる方法
私は Dotnetrdf の sparql エンジンでいくつか遊んでいますが、まだ成功していないパラメーター化されたクエリを作成しようとしています。
コードで _:1690 として識別される空白ノードを持つグラフ g に取り組んでいるとします。
これを実行すると、空のノードのみで結果をフィルタリングするのではなく、rdfs:label プロパティを持つすべてのノードが取得されます。
パラメータの値を適切に設定して、結果に 1 つの項目のみを取得する方法を教えてください。
前もってありがとう、マックス。
rdf - Jena は匿名ノードを持つトリプルを削除します
Jena を使用してモデルからトリプルを削除しようとしましたが、成功しませんでした。主語、述語、および目的語が URI またはリテラルの場合はうまく機能しますが、匿名ノードの場合は機能しないようです。たとえば、モデル内の次のトリプルについて考えてみます。
次を使用して削除したいと思います。
createAnon
またはを使用しても、トリプルを削除できませんNode.ANY
。コードを別のマシンで実行すると、同じ匿名 ID が生成されるとは思えないため、AnonId を使用したくありません。
rdf - 複数のサブジェクトが空白ノードの同じリストを指していることを確認する
の次のインスタンスを考えてみましょうSomeClass
:
すべてのインスタンス ( some_thing2
、some_thing3
など) が、空のノードの同じリストをhasChainTo
指すようにする必要があります (そのコピーが 1 つしかないため)。チェーンが非常に深くなり、この構文は各チェーン ( 、など)を書き出すのに非常に流動的であるため、空白ノード構文のリストを維持する必要があります。SomeClass2
SomeClass3
基本クラスとそこから subClassOf を単純に作成すると、hasChainTo
プロパティは継承されますが、それが指しているオブジェクトは継承されません。これは直感的には理にかなっていますが、他の動作が必要です。
これはどのように達成できますか?
sparql - セサミでリソースの簡潔な境界記述を取得するには?
私はセサミ 2.7.2 をテストしてきましたが、DESCRIBE クエリに空白ノード クロージャが含まれていないという事実に直面したとき、大きな驚きを覚えました [編集: これの正しい用語は、簡潔な境界記述の CBD です]。
私が正しく理解していれば、SPARQL仕様はそれについてかなり緩く、返されるものは実際にはプロバイダー次第であると言っていますが、bnode(describeクエリの結果)は使用できないため、その選択にはまだ驚いています後続の SPARQL クエリで。
問題は、次のことを<uri1>
せずにリソースの閉じた説明を取得するにはどうすればよいかということです。
- クエリ
DESCRIBE <uri1>
- 結果を繰り返し処理して、どのオブジェクトが空白ノードであるかを判断します
- それから
DESCRIBE ?b WHERE { <uri1> pred_relating_to_bnode_ ?b }
- 再帰的に実行し、bnode が見つかる限り連鎖します
私が間違っていなければ、深さ 2 の bnode は次のように記述する必要があります。
これを行う簡単な方法がない限り?
DESCRIBE
最後に、次のような方法で現在返されている結果を取得できるリソースの閉じた説明を返す方が、より適切で簡単ではないでしょうか?
編集:これは、ゴマから取り戻したい閉じた結果の例です
現在:DESCRIBE <urn:sites#1>
query と同じ結果を返すCONSTRUCT WHERE {<urn:sites#1> ?p ?o}
ので、それだけを取得します
rdf - Protege 4 - ネストされた空白ノードを再フォーマットする RDF の保存
Protege を試すために TopBraid から切り替えました。
これに似たRDFのオントロジーがあります:
このネストされた空白ノードの構文は、チェーンが非常に深くなり、チェーンが時々変更され、新しいチェーンが追加される可能性があるため、この構文は流動的で非常に読みやすく、保守しやすいため、うまく機能するという考えです。
それだけでなく、結果のグラフに対するクエリを既に作成しています。
問題は、これを Protege にインポートしてすぐに保存すると、結果が次のように再フォーマットされることです。
結果として得られる RDF は、クエリ システムを完全に破壊するだけでなく、このアプローチを使用して「連鎖」を表現することの他の利点も破壊します。
これを回避する方法はありますか?そうでない場合は、TopBraid に戻らざるを得なくなる可能性があります。
更新:問題の再現は次のとおりです。
私はbugTest.ttl
それを書いてProtegeで開き、すぐに名前を付けて保存>タートル> bugTestOutput.ttl
:
https://dl.dropboxusercontent.com/u/13814624/bugTest.ttl https://dl.dropboxusercontent.com/u/13814624/bugTestOutput.ttl