RDFUnit icon indicating copy to clipboard operation
RDFUnit copied to clipboard

replacing values from SPARQL based constraints in the sh:message

Open Dragos0000 opened this issue 3 years ago • 1 comments

Example of SHACL shape with SPARQL query

    rdf:type sh:SPARQLConstraint ;
    rdfs:label "skos-xl pref label in the same language " ;
    sh:message "multiple skos-xl preferred label for language \"{$lang}\"" ;
    sh:prefixes <http://publications.europa.eu/ontology/skosShapes> ;
    sh:select """prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix skosxl: <http://www.w3.org/2008/05/skos-xl#>
SELECT $this ?lang (skosxl:prefLabel as ?path) (?l1f as ?value)
WHERE {
    $this skosxl:prefLabel ?l1 .
  ?l1 skosxl:literalForm ?l1f .
  $this skosxl:prefLabel ?l2 .
  ?l2 skosxl:literalForm ?l2f .
  FILTER ( ?l1 != ?l2 && lang(?l1f) = lang(?l2f) )
  BIND (lang(?l1f) as ?lang)
}

Expected Behavior

Would expect the variable {$lang} to be replaced in the sh:message from the SPARQL query. ex: multiple skos-xl preferred label for language "en"

Actual Behavior

In the validation process will get "multiple skos-xl preferred label for language "{$lang}"" message. The variable lang is not being replaced.

Is this supported or will be supported ?

Dragos0000 avatar Jan 25 '22 10:01 Dragos0000

Hi @Dragos0000 I remember that the variable replacement was not fully implemented on the sparql constraints. The shacl core variables should be working fine though. Need to find some time and debug this but cannot guarantee how soon this can be implemented unless someone else is willing to take a look. Would be happy to guide in the later case

jimkont avatar Mar 15 '22 07:03 jimkont