この質問(およびその前の質問)に関連しています:
sh:maxExclusive を使用して 2 つのデータ型プロパティ (の値) を比較する
DataSubject、MemberState、および Minor という 3 つのクラスを持つ小さなオントロジーを作成しました。has-age と has-minimalage の 2 つのデータ型プロパティがあります。前者は DataSubject から整数へ、後者は MemberState から整数へです。次に、DataSubject(s) から MemberState(s) へのオブジェクト プロパティ has-member-state があります。
現在、次の個人がいます。
ontology:John
rdf:type ontology:DataSubject ;
ontology:has-age "20"^^xsd:positiveInteger ;
ontology:has-member-state ontology:Spain ;
.
ontology:Spain
rdf:type ontology:MemberState ;
ontology:has-minimalage "16"^^xsd:positiveInteger ;
.
そして、メンバー状態の最小年齢よりも年齢が低い各 DataSubject もマイナー クラスの個体であるという SHACL ルールを書きたいと思います。
他の質問に対する回答を踏まえて、次のことを試しました。
sh:rule [
rdf:type sh:TripleRule ;
sh:condition [
sh:property [
sh:path ontology:has-age ;
sh:lessThan (ontology:has-member-state ontology:has-minimalage)
] ;
] ;
sh:subject sh:this ;
sh:predicate rdf:type;
sh:object ontology:Minor ;
] ;
これは機能しません: John をマイナーとして分類しますが、20 は16 未満ではありません。もちろん、他の多くのバリアントを試しました。 :has-minimalage)];];"、その多くはおそらく意味がありませんが、どれも機能しません.
sh:lessThan のパラメータにパスを埋め込む方法を教えてもらえますか?
これらすべての質問に煩わしくなり始めたら申し訳ありません:-(私はSHACLとSPARQLを初めて使用しますが、Webで見つけることができるすべてのものからそれらを学ぶために最善を尽くしています.
ありがとうリビオ