ShEx 验证 - 原因和 appInfo 在结果形状图中为空

ShEx Validation - reason and appInfo are null in Result Shape Map

我正在学习 ShEx 并在我的项目中使用 http://shexjava.lille.inria.fr/ 完成的 'shexjava API'。我有架构、数据图和固定形状地图。当我使用优化和递归验证进行验证时,我得到 ResultShapeMapreasonappInfo 为空对于 NONCONFORMANT 状态。我不明白为什么这两个字段为空。

我有架构、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 
      ] 
   ] 
] 

我要输出不符合的原因。但它给了我 null。

有人可以帮助我吗?

shexjava 实现目前不支持指示失败原因。 这是因为当节点不满足形状时,可能有多种原因。

如果你想学习 ShEx,我建议你使用 ShapeDesigner

https://gitlab.inria.fr/jdusart/shexjapp/

它提供了一个图形界面,您可以在其中浏览验证结果。

在这种特殊情况下,它表示验证失败,因为 23 不是小数(它实际上是一个整数)Screenshot of validation exploration result in ShapeDesigner

我不知道这是否是一个错误,即是否应将整数视为 RDF 中的小数。