0

In my case there are SingleChoice (SC) and MultipleChoice (MC) questions. SC have a set of answers (as blank nodes) that must contain exectly one "points" and one "text" property. MC have a set of answers that must contain exectly one "points", one "text" and one "pointsNegative" property. Example as turtle:

prefix ex ...

ex:SC a ex:SingleChoice .
  ex:hasAnswers [
    a ex:Answer .
    ex:text "Answer 1" .
    ex:points 5 ;
  ],[ ...sameAsAbove ], ... ;

ex:MC a ex:MultipleChoice .
  ex:hasAnswers [
    a ex:Answer .
    ex:text "Answer 1" .
    ex:points 5 .
    ex:pointsNegative 1 ;
  ],[ ...sameAsAbove ], ... ;

クラス ex:Answer のすべてのインスタンスを検証する shacl ルールを書くことができました。しかし、これらのインスタンスが属するもの (SC または MC) を、次のルールで検証することによって区別することはできません。

ex:AnswerShape
  a sh:NodeShape ;
  sh:targetClass ex:Answer ;
  sh:property [
    a sh:PropertyShape ;
    sh:path ex:Text ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:dataType xsd:string .
  ] .

たとえば、ex:pointsNegative に別の PropertyShape を追加すると、SC の質問のすべての回答で形状が失敗します (これらには ex:pointsNegative がないため)。minCount 制限を省略できますが、MC の質問に対する回答に ex:pointsNegative プロパティがない可能性があります。リンク (SC または MC に属する) に応じて、Class ex:Answer のインスタンスに対して異なるルールを実行するにはどうすればよいですか? これはシャクルでも可能ですか?

4

1 に答える 1