为什么 ShEx 常量不匹配数据中的相同术语?
Why isn't a ShEx constant matching the same term in the data?
我有一个需要特定类型的 ShEx 模式:
epri:VariableShape {
a st:studyVariable ;
st:subject [tax:~] ;
st:signal xsd:decimal
}
拒绝该类型的数据
st:envFactorEMF a st:studyVariable ; # << this isn't recognized
st:subject tax:1758 ;
st:signal -.00043 .
(demo) 为什么会这样?
您链接到的演示中的错误消息实际上描述了确切的问题。
Error validating http://www.epri.com/studies/3002011786studyVariable as {"type":"NodeConstraint","datatype":"http://www.epri.com/studies/3002011786studyVariable"}: mismatched datatype: http://www.epri.com/studies/3002011786studyVariable is not a literal with datatype http://www.epri.com/studies/3002011786studyVariable
您正在使用 datatype constraint,这不是您想要的。
您需要使用 a [ st:studyVariable ]
,因为您要指定 value set:
epri:VariableShape {
a [ st:studyVariable ];
st:subject [tax:~] ;
st:signal xsd:decimal
}
是正确的,但是,由于这是 ShEx 中最常见的错误,我想我会用一点 ascii 艺术来详细说明。
ShEx 数据类型表示为裸 IRI,而值集表示为 []s
。您的 rdf:type
为 st:studyVariable
:
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)
我有一个需要特定类型的 ShEx 模式:
epri:VariableShape {
a st:studyVariable ;
st:subject [tax:~] ;
st:signal xsd:decimal
}
拒绝该类型的数据
st:envFactorEMF a st:studyVariable ; # << this isn't recognized
st:subject tax:1758 ;
st:signal -.00043 .
(demo) 为什么会这样?
您链接到的演示中的错误消息实际上描述了确切的问题。
Error validating http://www.epri.com/studies/3002011786studyVariable as {"type":"NodeConstraint","datatype":"http://www.epri.com/studies/3002011786studyVariable"}: mismatched datatype: http://www.epri.com/studies/3002011786studyVariable is not a literal with datatype http://www.epri.com/studies/3002011786studyVariable
您正在使用 datatype constraint,这不是您想要的。
您需要使用 a [ st:studyVariable ]
,因为您要指定 value set:
epri:VariableShape {
a [ st:studyVariable ];
st:subject [tax:~] ;
st:signal xsd:decimal
}
ShEx 数据类型表示为裸 IRI,而值集表示为 []s
。您的 rdf:type
为 st:studyVariable
:
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)