我正在学习ShEx,并在我的项目中使用由http://shexjava.lille.inria.fr/完成的'shexjava‘。我有模式,数据图和固定的形状图。当我使用精炼和递归验证验证时,我得到的是ResultShapeMap,但是对于NONCONFORMANT状态,原因和appInfo为null。我不明白为什么这两个字段为空。
我有模式,dataGraph,shapeMap。这是用于验证的代码。
ValidationAlgorithm vl = new RefineValidation(schema, dataGraph);
ResultShapeMap result = vl.validate(shapeMap);形状是,
{
"@context": "http://www.w3.org/ns/shex.jsonld",
"type": "Schema",
"shapes": [
{
"id": "http://example.com/ns#HouseShape",
"type": "Shape",
"expression": {
"type": "EachOf",
"expressions": [
{ "type": "TripleConstraint",
"predicate": "http://example.com/ns#number",
"valueExpr": { "type": "NodeConstraint",
"datatype": "http://www.w3.org/2001/XMLSchema#String"
}
},
{ "type": "TripleConstraint",
"predicate": "http://example.com/ns#size",
"valueExpr": { "type": "NodeConstraint",
"datatype": "http://www.w3.org/2001/XMLSchema#decimal"
}
}
]
}
}
]
}数据是,
ex:House1 a ex:House ;
ex:number "11A" ;
ex:size 23 .我的结果是
ResultShapeMap [
associations= [
ShapeAssociation [
nodeSelector=<example.com/ns#House>,
shapeSelector=<example.com/ns#HouseShape>,
status=NONCONFORMANT,
reason=null,
appInfo=null
]
]
] 我想说出不符合的原因。但这让我觉得这是无效的。
有人能帮帮我吗。
发布于 2020-04-24 09:38:45
shexjava实现目前不支持指示失败的原因。这是因为当节点不满足形状时,可能有几个原因。
如果你想学习ShEx,我建议你使用ShapeDesigner
https://gitlab.inria.fr/jdusart/shexjapp/
它提供了一个图形界面,您可以在其中探索验证结果。
在这种情况下,它表明验证失败,因为23不是十进制(实际上是整数) ShapeDesigner中验证探索结果的截图
我不知道这是否是一个bug,也就是说,在RDF中,积分器是否也应该被认为是小数。
https://stackoverflow.com/questions/61329775
复制相似问题