Проверка ShEx - причина и appInfo равны нулю в Result Shape Map - PullRequest
0 голосов
/ 20 апреля 2020

Я изучаю ShEx и использую 'shex java API', сделанный http://shexjava.lille.inria.fr/ для моего проекта. У меня есть схема, график данных и карта фиксированной формы. Когда я проверяю, используя уточнение и рекурсивную проверку, я получаю ResultShapeMap , но причина и appInfo равны нулю для НЕ СОГЛАСОВАННОГО статуса. Я не понимаю, почему эти два поля являются нулевыми.

У меня есть схема, 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 
      ] 
   ] 
] 

Я хочу вывести причина не соответствует. Но это дает мне ноль за это.

Может кто-нибудь, пожалуйста, помогите мне.

1 Ответ

1 голос
/ 24 апреля 2020

В настоящее время реализация shex java не поддерживает указание причины сбоя. Это потому, что когда узел не удовлетворяет форме, это может быть вызвано несколькими причинами.

Если вы хотите изучить ShEx, я бы посоветовал вам использовать ShapeDesigner

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

, который предоставляет графический интерфейс, в котором вы можете исследовать результаты проверки.

В данном конкретном случае это означает, что проверка завершается неудачно, потому что 23 не является десятичным числом (на самом деле это целое число) Снимок экрана с результатами исследования проверки в ShapeDesigner

Я не знаю, является ли это ошибкой, то есть следует ли считать целые числа десятичными в RDF.

...