0

我正在学习 ShEx 并使用http://shexjava.lille.inria.fr/为我的项目完成的“shexjava API”。我有模式、数据图和固定形状图。当我使用细化和递归验证进行验证时,我得到了ResultShapeMap原因appInfo对于 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。

有人可以帮帮我吗。

4

1 回答 1

1

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

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

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

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

在这种特殊情况下,它表示验证失败,因为 23 不是小数(实际上是整数)ShapeDesigner 中验证探索结果的屏幕截图

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

于 2020-04-24T09:38:45.570 回答