[ ] remove ^^xs:string since that's default therefore redundant
[ ] maybe rename the ontology URL from aas: to a different one (eg aas-sh:). I personally like the practice to conflate the ontology and shape namespace
[ ] Don't use SHACL Advanced because it's more expensive. You can use a single SHACL standard shape for all "abstract class. Please use one of the subclasses". But if you want to target by these abstract classes (aas:AbstractLangString, aas:HasDataSpecificationShape etc), you need to mandate RDFS subclass reasoning, and complicate the shape to look for some rdf:type outside of the list:
aas:NoAbstractClassShape a sh:NodeShape ;
sh:targetClass aas:DataElement, aas:DataSpecificationContent, aas:EventElement, ...;
sh:not [sh:path rdf:type; sh:in (aas:DataElement aas:DataSpecificationContent aas:EventElement ...)];
sh:message "This is an abstract class. Please use one of the subclasses for the generation of instances."@en.
https://github.com/admin-shell-io/aas-specs/blob/master/schemas/rdf/shacl-schema.ttl
owl:imports <http://datashapes.org/dash>
since it doesn't use DASH shape constructsowl:imports sh:
since it doesn't use shapes from that URL (see https://book.validatingrdf.com/bookHtml011.html#sec126)^^xs:string
since that's default therefore redundantaas:
to a different one (egaas-sh:
). I personally like the practice to conflate the ontology and shape namespacesh:datatype rdf:langString
in 2 prop shapes). In particular:aas:AbstractLangString, aas:HasDataSpecificationShape
etc), you need to mandate RDFS subclass reasoning, and complicate the shape to look for somerdf:type
outside of the list:subClassOf
another shape is questionable at best (a Shape is not a Class, so it cannot be a subClass). What is the purpose of this? (shapes are not inherited this way) https://github.com/admin-shell-io/aas-specs/blob/2ab08f92bdd1d44edc1cfee52552fe5429d2178e/schemas/rdf/shacl-schema.ttl#L54-L54