我有一个期望特定类型的ShEx架构:
(id != A) && (id != B)
拒绝该类型的数据
epri:VariableShape {
a st:studyVariable ;
st:subject [tax:~] ;
st:signal xsd:decimal
}
(demo)为什么会这样?
答案 0 :(得分:5)
您链接到的演示中的错误消息实际上描述了确切的问题。
将http://www.epri.com/studies/3002011786studyVariable验证为{“type”时出错:“NodeConstraint”,“datatype”:“http://www.epri.com/studies/3002011786studyVariable”}:数据类型不匹配:http://www.epri.com/studies/3002011786studyVariable不是数据类型为{{3}的文字}}
您使用的是http://www.epri.com/studies/3002011786studyVariable,这不是您想要的。
您需要使用public static void Main()
{
IDrawable borderlessRectangle = new Rectangle(null);
IDrawable borderedRectangle = new Border(borderlessRectangle);
borderlessRectangle.Draw();//gives a rectangle without a border
borderedRectangle.Draw();//gives a rectangle with a border
}
,因为您要指定datatype constraint:
a [ st:studyVariable ]
答案 1 :(得分:4)
Joshua Taylor's answer是现货,但由于这是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)