TopQuadrant / shacl

SHACL API in Java based on Apache Jena
Apache License 2.0
215 stars 61 forks source link

shaclc: missing property shape #142

Closed VladimirAlexiev closed 2 years ago

VladimirAlexiev commented 2 years ago

Possibly related to #92.

This SHACLC:

PREFIX nom:      <https://nomenclature.info/nom/>
PREFIX nomo:     <https://nomenclature.info/nom/ontology/>
PREFIX nomShape: <https://nomenclature.info/nom/shape/>

PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX skos:     <http://www.w3.org/2004/02/skos/core#> 
PREFIX skosxl:   <http://www.w3.org/2008/05/skos-xl#> 
PREFIX xsd:      <http://www.w3.org/2001/XMLSchema#>

shape nomShape:concept {
  class = skos:Concept
  targetSubjectsOf = skos:inScheme.
  skos:inScheme hasValue=nom:
    message="All concepts must be in the nom: concept scheme" [1..1].
  nomo:level xsd:integer minInclusive=1 maxInclusive=6 !lessThanOrEquals=[skos:broader nomo:level]
    message="(Non-top) concepts must have level that is greater than its parent's level" [1..1].
  skos:topConceptOf|skos:broader  hasValue=nom:|@nomShape:parentConcept
    message="Concepts must either have skos:topConcept pointing to the nom: scheme, or have a parent that's in the same scheme" [1..1].
  skos:prefLabel rdf:langString uniqueLang=true
    message="Concepts can have only one preferred label per language" [1..*].   
  skos:prefLabel rdf:langString languageIn=["en"]
   message="There must be a preferred label in English" [1..1].
  skos:prefLabel rdf:langString languageIn=["fr"]
   message="There must be a preferred label in French" [1..1].
  skos:altLabel  rdf:langString.  
}

shape nomShape:parentConcept {
  class = skos:Concept.
  skos:inScheme hasValue=nom: [1..1].
}

Is converted to a SHACL where the property of the second shape is lost:

nomShape:parentConcept
        a            sh:NodeShape ;
        sh:class     skos:Concept ;
        sh:property  []  .

If I swap the textual order of the two SHACLC shapes, then one prop from the bigger shape is lost.

This uses the shaclconvert CLI described in #92

HolgerKnublauch commented 2 years ago

SHACLC support has been deleted from this TopBraid SHACL API because Jena already supports it. I suggest you create a new ticket on https://github.com/w3c/shacl/issues