为什么ShEx常数与数据中的相同术语不匹配?

时间:2017-10-22 20:15:29

标签: rdf semantic-web shex

我有一个期望特定类型的ShEx架构:

(id != A) && (id != B)

拒绝该类型的数据

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

demo)为什么会这样?

2 个答案:

答案 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