2017-10-22 8 views
4

私は、特定のタイプの期待ShExスキーマ持っている:なぜそれは次のようになり、そのタイプShEx定数がデータ内の同じ用語と一致しないのはなぜですか?

st:envFactorEMF a st:studyVariable ; # << this isn't recognized 
    st:subject tax:1758 ; 
    st:signal -.00043 . 

demo)でデータを拒否し

epri:VariableShape { 
    a st:studyVariable ; 
    st:subject [tax:~] ; 
    st:signal xsd:decimal 
} 

を?

+0

を私はShExpert(ごめん)だありませんが、バリデータが提供する特定のエラーメッセージが役立ちます。 'st:signal xsd:decimal'と同じように、st:signalプロパティの値はデータ型xsd:decimalのリテラルであると予想され、rdf:typeの値はデータ型st:studyVariableのリテラルになると予想しています。もちろん、データでは、その値は実際にはIRI st:studyVariableであり、リテラルではありません。 –

+0

実際の値が必要であることを示すには 'a [st:studyVariable]'を使いたいと思います。 –

答えて

5

実際にリンクしたデモからのエラーメッセージに、正確な問題が記述されています。

エラー{ "タイプ": "NodeConstraint"、 "データ型": "http://www.epri.com/studies/3002011786studyVariable"}:としてhttp://www.epri.com/studies/3002011786studyVariableを検証し、不一致データ型:http://www.epri.com/studies/3002011786studyVariableはあなたが使用しているhttp://www.epri.com/studies/3002011786studyVariable

データ型とリテラルではありませんdatatype constraint、これはあなたが望むものではありません。あなたがvalue setを指定したいので、あなたが、その代わり、a [ st:studyVariable ]を使用する必要が

epri:VariableShape { 
    a [ st:studyVariable ]; 
    st:subject [tax:~] ; 
    st:signal xsd:decimal 
} 
4

Joshua Taylor's answerは上のスポットけど、これはShExで最も一般的な間違いであることから、私は私が手の込んだだろうと思っています少しアスキーアート。

ShExデータ型はベアIRIとして表され、値セットは[]sで表されます。あなたはst:studyVariablerdf:typeを持っていた:

epri:VariableShape { 
    a st:studyVariable ; # <-- datatype 
    st:subject [tax:~] ; # <-- value set 
    st:signal xsd:decimal # <-- datatype 
} 

あなたがst:studyVariableの(小さな)値のセットたかったとき:

epri:VariableShape { 
    a [st:studyVariable] ; # <-- value set 
    st:subject [tax:~] ; # <-- value set 
    st:signal xsd:decimal # <-- datatype 
} 

demo

関連する問題