Java ShEx验证-结果形状映射中的原因和appInfo为空

Java ShEx验证-结果形状映射中的原因和appInfo为空,java,validation,rdf,semantic-web,shex,Java,Validation,Rdf,Semantic Web,Shex,我正在学习ShEx,并在我的项目中使用由完成的“ShexJavaAPI”。我有模式,数据图和固定形状的地图。当我使用优化和递归验证进行验证时,我得到的是结果shapemap,但是原因和appInfo对于不符合状态为空。我不明白这两个字段为什么为空 我有schema,dataGraph,shapeMap。这是用于验证的代码 ValidationAlgorithm vl = new RefineValidation(schema, dataGraph); ResultShapeMap result

我正在学习ShEx,并在我的项目中使用由完成的“ShexJavaAPI”。我有模式,数据图和固定形状的地图。当我使用优化和递归验证进行验证时,我得到的是结果shapemap,但是原因和appInfo对于不符合状态为空。我不明白这两个字段为什么为空

我有schema,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 
      ] 
   ] 
] 
ResultShapeMap[
协会=[
形状联想[
节点选择器=,
形状选择器=,
状态=不合格,
原因=空,
appInfo=null
] 
] 
] 
我想输出不符合要求的原因。但它给了我零


谁能帮帮我吗

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

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

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

在这种情况下,它表示验证失败,因为23不是小数(实际上是整数)


我不知道这是否是一个错误,即整数在RDF中是否也应该被视为小数。

不确定您到底在问什么,请提供代码和数据以及输出和预期结果。我有模式、数据图、形状图。这是用于验证的代码。ValidationAlgorithm vl=新的优化验证(模式、数据图);结果shapeMap结果=vl.validate(shapeMap);这是我的数据=>ex:house1a ex:House;例:编号“11A”;例:大小23。这是我的结果是,ResultsShapeMap[associations=[ShapeAssociation[nodeSelector=,shapeSelector=,status=Nonconforment,reason=null,appInfo=null]]我想输入不符合的原因。但它给了我空值。不,编辑你的问题。。。没有人希望阅读注释中的代码。正如您所说,ShexJavaAPI不支持给出失败的原因。但是ShapeDesigner在消息列中给了我失败的原因(但只给了我一个原因)。那么它是如何工作的呢?ShapeDesigner正在使用shexjava API以外的另一个库?或者它是如何给出原因的?感谢ShexJava API允许侦听验证事件,ShapeDesigner使用它。困难在于没有失败的原因。(对于不匹配的三元组,算法如何知道谓词是否拼写错误或数据值是否不正确?)。由您决定如何更改数据以满足模式。也就是说,故障原因是ShEx标准的一部分,是特定于实现的。