@prefix brick: <https://brickschema.org/schema/Brick#> .
@prefix bsh: <https://brickschema.org/schema/BrickShape#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
bsh:BuildingMeterRule a sh:NodeShape ;
sh:rule [ a sh:SPARQLRule ;
sh:construct """
CONSTRUCT {
$this rdf:type ?newtype .
}
WHERE {
$this brick:meters ?bldg .
?bldg rdf:type/rdfs:subClassOf* brick:Building .
$this rdf:type ?type .
BIND(IRI(CONCAT("https://brickschema.org/schema/Brick#Building_", strafter(str(?type), "https://brickschema.org/schema/Brick#"))) as ?newtype) .
FILTER (strEnds(str(?type), "_Meter"))
FILTER (!strStarts(str(?type), "https://brickschema.org/schema/Brick#Building_"))
}
""" ;
sh:prefixes <https://brickschema.org/schema/1.4/Brick> ] ;
sh:targetClass brick:Meter .