問題タブ [dotnetrdf]
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 - dotNetRDF を使用して RDF タプルを削除する
dotNetRDF を使用して RDF タプルを削除したいと考えています。ここに私のRDFファイルがあります:
私が使用しているコードは次のとおりです。
ただし、RDF ファイルには何も起こりません。
SPARQL を使用してトリプルを削除するように求められなかったので、このコードは問題なく機能します。
wheredestID
はすべてのトリプルの主語です。
rdf - RdfParseException: 予期しない文字 (コード 114) r が検出されました
dotNetRDFを使用して、次のクエリをDBpediaに送信しようとしています。
しかし、RdfParseException
予期しないr
文字が見つかったとのことです (114 は の 10 進文字コードですr
)。
同じクエリに対してWeb ベースの DBpedia SPARQL フォームを使用すると、妥当と思われる結果が返されます。したがって、私の SPARQL クエリに問題はないと思います。少なくとも、DBpedia が対処できなかった問題はありません。
とを有効にして、同様の問題についてこの質問からのアドバイスに従おうとしました。その質問に対する受け入れられた回答で説明されているように、これは受信した応答を stderr に出力します。ただし、「別のエラー」は発生しません。代わりに、クエリは成功したように見えますが、返されたグラフは空です (トリプルが含まれていません)。Options.HttpDebugging
Options.HttpFullDebugging
問題を再現する最小限のサンプルを次に示します。
これにより、次の出力が生成されます。
そこに見られるように、結果のグラフはいくつかのプレフィックスのみで構成されていますが、ノードやトリプルは含まれていません。
例外は、結果のグラフの行 1、列 9 を指します。これは、受信した応答を見るとrdf
、プレフィックス宣言のプレフィックスの始まりになります。
私が独特だと思うことの 1 つは、例外がNTriplesTokeniser
内のどこかによってスローされることですが、返されたグラフはN-TriplesではなくTurtleNTriplesParser
のように見えます。
NuGet の最新の dotNetRDF バージョン、現在 1.0.1.2809を使用しています。
私はそこで何か間違ったことをしていますか、またはこの場合に必要な dotNetRDF の追加設定はありますか?
編集:完全を期すために、内部にいくつかのDBpediaデータがあるローカルのVirtuosoインストールに追加する必要があります。クラッシュはありません。
timeout - 非同期リクエストのタイムアウト通知
SPARQL クエリを非同期リクエストとして SPARQL エンドポイントに送信しています。現在、DBpediaはdotNetRDF ライブラリを使用しています。通常、単純なクエリは機能しますが、より複雑なクエリではタイムアウトが発生することがあります。
発生したイベントをキャプチャしてタイムアウトを処理する方法を探しています。
classの非同期QueryWithResultSet
オーバーロードの1 つを使用して、クエリを送信しています。SparqlRemoteEndpoint
で説明したように、非同期リクエストが失敗した場合SparqlResultsCallback
、state
オブジェクトはAsyncError
インスタンスに置き換えられます。これはタイムアウトが発生したことを示していますが、リクエストが送信されてから10 分後にしか発生していないようです。たとえば、タイムアウトが 30 秒の場合、30 秒後にリクエストが成功したかどうかを知りたいです。(35 秒でも構いませんが、お分かりいただけると思います。)
以下は、2 つの要求を送信するサンプル アプリケーションです。最初の要求は非常に単純で、タイムアウト (ここでは 120 秒に設定) 内に成功する可能性が高く、2 番目の要求はかなり複雑で、DBpedia では簡単に失敗する可能性があります。
これを実行すると、次のような出力が再現可能に得られます。
明らかに正確な時間は異なりますが、重要な点は、2 番目のクエリに基づくエラー メッセージが、要求が送信されてから約10 分後に受信され、タイムアウトに設定された 2 分にはほど遠いことです。
ここで dotNetRDF を間違って使用していますか、それともタイムアウトを自分で測定し、その間に応答が受信されない限り、自分で反応するために追加のタイマーを実行する必要があるのは意図的ですか?
rdf - プロパティパスを使用したクエリで「セット内の変数の値を変更することはできません」
DotNetRDF ( BitBucketからダウンロード) を使用して SPARQL クエリを実行していますが、プロパティ パスを含むクエリを使用すると例外が発生します。
Set 内の変数の値は変更できません
以下は、RDF、SPARQL クエリ、およびクエリを実行する C# コードの一部です。クエリが返されることを期待していますid/002
and id/003
.
c# - ID を使用せずに、同じ RDF/XML 要素名を持つすべてのリソースを取得する
すべてのグラフ トリプルのサブジェクトを印刷すると、データ内のサブジェクトは常にGraphURI/#SubjectID.
次のようなクエリで 1 つのサブジェクトのプロパティと値を取得できる形式の URI であることがわかりました。
cim:ACLineSegment
ただし、RDF/XML シリアライゼーションの要素によって表されるすべてのリソースに対してこれを実行したいと考えて います。シリアル化は次のようになります。
以下のようなものが欲しいです。これは可能ですか?