私はRDF4JサーバーとWorkbenchバージョン2.2.2を使用しています。私はRDF4JでSPIN対応のリポジトリを使用しています。多くのspin:construct
ルールを含むTobBraid Composer Free Edition(TBC FE)で作成したRDFファイルを読んでいます。 TBD FEは、sp:text
プロパティを使用して、自分のコンストラクタのSPARQLソースコードを含むように設定されています。私はsp:text
トリプルが存在し、SPARQLソースコードをRDF4Jが利用できるようにすると、RDF4Jは同じクエリのRDFトークン化表現を使用する代わりにSPARQLソースを使用するように見えることがわかりました。私の第一および第二の質問は以下のとおりです。両方sp:text
とRDF表現がインポートされたRDFファイル内に存在しているときインポートされたRDFファイルにsp:textが存在する場合、RDF4JにSPIN RDFトリプルを使用させる方法はありますか?
- がどのように私はSPINコンストラクタのRDF表現を使用するRDF4Jに指示することができますか?
- RDF4JがSPINコンストラクタの表現
sp:text
を使用する場合、インポートされたRDFファイルの先頭にあるプレフィックス定義を使用する方法をどのように指示できますか?私はこれまでに69のコンストラクタを持ち、数えています。各コンストラクタに接頭辞定義を埋め込むことはできますが、そうすることは無駄になります。
Iはsp:text
SPARQLソースコード表現のRDF4Jを奪うと、期待どおり、コンストラクタは、インポートRDFファイルの先頭に定義されたプレフィックスを使用して実行します。私は、私がコンストラクタを定義したクラスをインスタンス化する前に、ソースコードを削除するクエリを実行することによって、ソースコードのRDF4Jを奪い取ることができます。私はその目的を達成するために、このSPARQLの更新クエリを使用しました:
PREFIX sp: <http://spinrdf.org/sp#>
DELETE {?s sp:text ?o .} WHERE {?s sp:text ?o .}
私はSPARQLクエリを経由してRDF4Jサーバと通信し、私は建物だGUIで表示のために周りのSPARQLのソースコードを維持したいと思います。私の厄介な暫定修正は、以下の手順5で使用されたSPARQL更新クエリを使用してsp:text
プロパティの別のカスタムデータプロパティを置き換えることです。このプロパティ置換は、RDF4JがSPINコンストラクタ用のSPARQLソースコードを見つけられないようにします。 RDF4Jは、代わりに、ルールのトークン化されたRDF表現を解釈します。 RDF4JにSPARQLソースコードからではなくRDFからSPINコンストラクタを強制的に実行させるよりクリーンな方法はありますか?私は、SPARQLソースコードの代わりにRDF表現を解釈するようにRDF4Jに通知する何らかの方法が必要であると考えていますが、私はその方法はわかりません。
そして今、血みどろの詳細については、このような状況が再現可能にする...
- はRDF4Jワークベンチを使用してRDF4JにおけるSPIN可能なリポジトリを作成します。鉱山をクリアRDF4Jワークベンチ([変更]→[クリア)
- RDF4Jワークベンチを使用してロードpub7.rdfを使用してリポジトリ
- TakeRDF4J4SPIN(リポジトリ→新しいリポジトリ)と命名されました...このRDFファイルは、ファイルの先頭に関連するすべてのプレフィックスを定義することを
を(未確認コンテキスト識別子として使用するベースURI/wの追加→変更)注:
<?xml version="1.0"?>
<rdf:RDF
xmlns:fn="http://www.w3.org/2005/xpath-functions#"
xmlns:soo="http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/SpectrumOperationsOntology#"
xmlns:spolicy="http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/spolicy#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:spin="http://spinrdf.org/spin#"
xmlns:sp="http://spinrdf.org/sp#"
xmlns:smf="http://topbraid.org/sparqlmotionfunctions#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:arg="http://spinrdf.org/arg#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:pub7="http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/Pub7#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:spl="http://spinrdf.org/spl#"
xml:base="http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/Pub7">
もSPINコンストラクタが取り付けられていることに注意してくださいクラスpub7:Pub7TestClass
にある:
CONSTRUCT {
?this spin:hasConstraintViolation _:b0 .
_:b0 a spin:ConstraintViolation ;
rdfs:label "Test message." ;
spin:violationRoot ?this ;
spin:violationLevel spin:Error ;
spolicy:sPActionRecordHasTimestamp ?timestamp .
}
WHERE {
BIND(now() AS ?timestamp) .
}
pub7:Pub7TestClass
のインスタンスを作成する
PREFIX inst: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/Instantiations#>
PREFIX pub7: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/Pub7#>
INSERT DATA {
inst:aPub7TestClassInstance_test1 a pub7:Pub7TestClass .
}
...インスタンスを作成するためにRDF4Jワークベンチの[変更]→[SPARQLアップデートでこのSPARQL更新クエリを使用
コンストラクタ上方sp:text
SPARQLソースコード表現に基づい:
org.eclipse.rdf4j.query.UpdateExecutionException: org.eclipse.rdf4j.repository.RepositoryException: org.eclipse.rdf4j.sail.SailException: org.eclipse.rdf4j.query.MalformedQueryException: org.eclipse.rdf4j.query.parser.sparql.ast.VisitorException: QName 'spin:hasConstraintViolation' uses an undefined prefix
sp:text
を隠す
-
次のSPARQL更新クエリ:
です。
PREFIX sp: <http://spinrdf.org/sp#>
PREFIX soo: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/SpectrumOperationsOntology#>
DELETE {
?originalPolicyURI sp:systemProperty ?policySourceCodeString .
?originalPolicyURI sp:text ?policySourceCodeString .
}
INSERT {
?originalPolicyURI soo:policySourceCode ?policySourceCodeString .
}
WHERE {
?originalPolicyURI sp:text ?policySourceCodeString .
}
すぐテストクラスをインスタンス化するステップ4に示すSPARQL更新クエリを再実行
RDF4J WorkbenchのExplore→Explore機能を使用して、作成したインスタンシエーション/個人を確認してください。inst:aPub7TestClassInstance_test1
。テストコンストラクタが実際にsp:text
表現なしでこの時間実行したことを示す証拠を提供して、spin:hasConstratintViolation
プロパティを介してインスタンス化に制約違反通知があることがわかるはずであり、強制的にSPINコンストラクタのRDFトークン化表現を使用する必要があります。