私は、TopBraid Composer Free Edition(5.1.3)を使用して、SPIN制約を含むオントロジーを作成しています。結果のRDFファイルをRDF4J(2.0.1)にロードし、テストのためにRDF4J Workbenchを使用します。CONSTRUCTを使用したSPIN制約:CONSTRUCTのトリプルはどこに行きますか?
私はSPIN制約に取り組んでいます。ここで私はCRO2:SignalRate
クラスに追加した非負の信号レートをチェックする例です:だから
CONSTRUCT {
?this soo:hasConstraintViolation _:b0 .
_:b0 a spin:ConstraintViolation .
_:b0 rdfs:label "Non-Positive SignalRate" .
_:b0 spin:violationRoot ?this .
_:b0 spin:violationPath Nuvio:hasDataValue .
_:b0 spin:violationLevel spin:Warning .
}
WHERE {
?this Nuvio:hasDataValue ?signalRate .
FILTER (?signalRate <= 0.0) .
}
、私は次のSPARQLの更新クエリを使用してRDF4Jワークベンチでこの制約をテストしています:
PREFIX inst: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/Instantiations#>
PREFIX Nuvio: <http://cogradio.org/ont/Nuvio.owl#>
PREFIX CRO2: <http://cogradio.org/ont/CRO2.owl#>
INSERT DATA {
inst:aSignalRate_test a CRO2:SignalRate ;
Nuvio:hasDataValue "-10"^^xsd:long .
}
このテストインスタントは、上記の制約に違反します。 spin:violationLevel
トリプルを省略し、これをデフォルトのspin:Error
にすると、クエリからエラーメッセージが表示され、テストインスタンスが期待通りにアサートされません。示されているように実行されると、制約違反はspin:Warning
であるため、inst:aSignalRate_test
個体はデータ値-10.0で作成されます。 私の質問は、制約のCONSTRUCT
句のアサーションはどこに行くのですか?spin:violationLevel
影響の変化から彼らがアサルトされていると思います。私は自分自身のプロパティで空のノードに結びつけようとしましたが、これは動作しません。他のコンテキスト/グラフでCONSTRUCTトリプルがアサートされていますか?私はすべてのデフォルト/グラフを使用しています。
RDF4J WorkbenchのExploreとSPARQLクエリの両方を使用して、予想されるトリプルを探しています。
PREFIX spin: <http://spinrdf.org/spin#>
SELECT DISTINCT *
WHERE {
?s spin:violationRoot ?o .
}
この動作はTopBraid作曲FEとRDF4J Workbenchでアサートの間で一貫性がある:たとえば、次のクエリは、私は私の誤ったCRO2:SignalRate
を主張した後、何も返しません。
私の目標は、SPIN制約違反の場合には、好ましくはSPARQLクエリを使用してそのような診断を見つけることによって、診断メッセージを見つけて使用することです。合理的だと思う。私は何かを欠いている。
ありがとうございました。
OK、私はコンストラクタとしての私の制約を実装するに切り替えることがあります。私は過去にそれをしてきました。コンストラクターは、関連付けられたクラスがアサートされたときに呼び出され、コンストラクターが起動すると、アサーションは可視のトリプルストアに行います。欠点は、深刻なエラーがクラスのアサートをスピンのようにブロックしないということです:致命的またはスピン:制約付きエラー。後続のルールが不正なデータ(たとえば、負のCRO2:SignalRate)にならないようにする方法を慎重に考える必要があります。 DELETEはソリューションの中核となる可能性があります。 –
@ GregCox私は思う前にこれを言いましたが、RDF4Jで機能リクエストを記録するのは恥ずかしいことではありません。 SPINの推論者は正式にはまだベータ版であり、私たちは設計を選択する際に見落とされているユースケースに惑わされています。 –