問題タブ [spin-rdf]
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 - TopBraid Composer で作成された SPARQL/SPIN 制約とコンストラクタを、SPIN 対応リポジトリ内の Sesame で使用するためにロードするにはどうすればよいですか?
ASK
TopBraid Composer Maestro Edition バージョン 5.1.1 を使用して、OWL/RDF オントロジー内で(SPARQL クエリを使用して) SPIN 制約を正常に生成およびテストしました。これらの SPIN 制約を Sesame でテストしたいと思います。TopBraid COmposer Maestro Edition で作成された OWL オントロジーに含まれる SPIN 制約、クラス定義、プロパティ定義、およびテスト個体を Sesame に取得するにはどうすればよいですか?
私はセサミOpenRDFワークベンチを使用しています:
私の制約、クラス、プロパティ、および個体の例は、TopBraid Composer Maestro Edition の下の 1 つの RDF ファイルに含まれています。
Sesame Open RDF ワークベンチModify/Add
コマンドを使用して、TopBraid Maestro Edition によって生成された RDF ファイルを取り込もうとしましたが、空白のノードに関連しているように見えるエラーが発生します。
javax.servlet.ServletException: org.openrdf.repository.RepositoryException: org.openrdf.repository.RepositoryException: org.openrdf.sail.SailException: org.openrdf.query.QueryEvaluationException: Multiple statements for pattern: _:node1alqlr2eix590 http://spinrdf.org/sp#where null
TopBraid Composer Maestro Edition から正しくエクスポートしていないのでしょうか? TopBraid Composer Maestro Edition のファイル システムに RDF ファイルの一般的なエクスポートを使用し、Sesame OpenRDF ワークベンチの add RDF File / RDF Data File コマンドを使用した結果、上記のエラー メッセージが表示されました。
私の特定のケースでは役に立たない可能性のある回答の指示を先取りするには:
- 特に、SWRL やその他のルール言語ではなく、SPIN コンストラクターと制約を使用したいと考えています。
- 私は TopBraid Composer Maestro Edition で成功し、TopQuadrant から得た支援に感謝していますが、他のコンピューターと対話しながら SPIN コンストラクターと制約を使用するために必要な TopBraid Live ライセンスを購入する余裕はありません。(TopBraid Composer Maestro Edition には SPARQL エンドポイントがありますが、そのエンドポイントにはホスト マシンから localhost 経由でのみアクセスできます。)また、Sesame の実装が、TopBraid ツールが行う SPIN 制約とコンストラクターに同じ制限のいくつかを課しているかどうかも判断したいと思います。
sparql - Protege が SPIN 制約とコンストラクタを作成/編集するためのプラグイン?
Protege で SPARQL/SPIN 制約とコンストラクターを作成および編集するためのプラグインまたはその他の手段はありますか?
私が理解しているように、RDF で SPIN 制約を取得するには、ASK または CONSTRUCT クエリの SPARQL コードを解析してエンコードする必要があります。不透明な文字列として保存されません。したがって、SPARQL と SPIN の知識を持つプラグインが必要になるようです。
SPIN 制約を含む Topbraid Composer から RDF を Protege 4.3.0 にロードしました。制約が注釈として認識されているようですが、基礎となる SPARQL コードのすべてを批判的に含めて、すべての詳細を見つけることができないようです。RDF ファイルをテキスト編集するときに表示されます。
広い意味では、SPIN 制約とコンストラクターを作成/編集し、それらを Sesame にロードして、クラスからインスタンス化された個人を操作する方法を見つけようとしています。TopBraid Composer から Sesame へのパスに関する別の質問を投稿しました。私はスタックオーバーフローの初心者なので、質問をより具体的にしようとしています。
ところで、いいえ、代わりに SWRL を使用したくありません。SWRL を使用して必要な制約を表現するのに苦労しました。SPARQL を使用して成功しました。
ありがとう。
sparql - TopBraid Composer FE が複数の OR 条件を SPIN ルール フィルタで再グループ化したのはなぜですか?
TopBraid Composer Free Edition (TBC FE) バージョン 5.1.3 を使用しています。SPIN ルール / CONSTRUCT クエリを作成しています。私のクエリの一部には、複数の OR 条件を持つ FILTER ステートメントがあります。次のように TBC FE に入力します。
しかし、SPIN ルールを TBC FE に保存すると、OR 条件が再グループ化されてバイナリ OR のセットになります。
私の質問は、なぜ再編成するのですか? この再グループ化を行わなかった他の SPARQL エディターとエンドポイントを使用しました。これにより、コードが読みにくくなる(コストがかかる)と主張しているので、どのような利点があるのでしょうか。
また、これが再編成する必要がない場合、TBC FE でそれをオフにする方法はありますか?
ありがとう。
PS: はい、リテラル文字列の部分文字列を取得するのはばかげているように思えます。私は、TBD FE から保存した RDF ファイルを Sesame にロードするときに、リテラル文字列をトリミングする Sesame のバグを回避するためにこれを行っています。このバグは報告されており、対処中です。修正されたら、Sesame のバージョンをアップグレードして、これらの醜い部分文字列を削除します。
sparql - SPIN:ルールはいつ実行されますか?
TopBraid Free Edition を使用して、SPIN ルールで OWL オントロジーを作成しています。オントロジーと SPIN ルールを Sesame OpenRDF Workbench にロードしています。
簡単なテスト オントロジーを作成しました。これには、1 つの SPIN ルールと 1 つのデータ型プロパティを持つ 1 つのクラスがあります。
SPIN ルールはxsd:dateTime
、テスト クラスのテスト インスタンスにタイムスタンプを追加します。これは、クラス、データ型プロパティ、およびルール (短い) を含むテスト オントロジー全体の RDF です。
そのため、Sesame の SPIN リポジトリをクリアし、ワークベンチの [Modify/Add] コマンドを使用します (バグを回避するために重要な [use base URI as context identifier] ボックスをオフにして)。次に、SPARQL Update クエリを使用して、クラスのテスト インスタンスを作成します。
次に、結果の bugsi:aTimeStampBug_test1 を個別に調べて、SPIN:rule が複数回実行され、複数のタイムスタンプが生成されたことを確認します。タイムスタンプの数は、テストごとに異なります。結果の一例を次に示します。
そのため、私の SPIN:rule は、クラスの 1 つのインスタンス化に対して数回実行されました。クラスのインスタンス化のために SPIN:rule を何回実行する必要がありますか? 一度だけ実行されると思っていましたが、間違っているようです。
sparql - CONSTRUCT を使用した SPIN 制約: CONSTRUCT のトリプルはどこに行くのですか?
TopBraid Composer Free Edition (5.1.3) を使用して、SPIN 制約を含むオントロジーを作成しています。次に、結果の RDF ファイルを RDF4J (2.0.1) にロードし、RDF4J Workbench を使用してテストします。
私はSPIN制約に取り組んでいます。CRO2:SignalRate
クラスに追加した負でない信号レートを確認する例を次に示します。
そこで、次の SPARQL 更新クエリを使用して、RDF4J ワークベンチでこの制約をテストしています。
このテスト インスタントは、上記の制約に違反しています。spin:violationLevel
トリプルを省略し、これをデフォルトで aspin:Error
にすると、クエリからエラー メッセージが表示され、テスト インスタンスが期待どおりにアサートされません。示されているように実行すると、制約違反は であるspin:Warning
ため、inst:aSignalRate_test
個人はデータ値 -10.0 で作成されます。 私の質問は、制約のCONSTRUCT
句のアサーションはどこに行くのですか? spin:violationLevel
影響行動 の変更以来、それらは主張されていると思います。独自のプロパティを使用して空のノードに結び付けようとしましたsoo:hasConstraintViolation
が、これは機能しません。CONSTRUCT トリプルは他のコンテキスト/グラフでアサートされていますか? すべてにデフォルト/グラフを使用しています。
RDF4J Workbench の Explore と SPARQL クエリの両方を使用して、予想されるトリプルを探しています。たとえば、次のクエリは、 I assert my errant の後、何も返しませんCRO2:SignalRate
。
この動作は、TopBraid Composer FE と RDF4J Workbench でのアサート間で一貫しています。
私の目標は、できれば SPARQL クエリを使用してそのような診断を見つけることにより、SPIN 制約違反の場合にアサートされる診断メッセージを見つけて使用することです。合理的なようです。何かが足りない。
ありがとう。