def visitShapeNot(self, ctx: ShExDocParser.ShapeNotContext):
        """ shapeNot: negation? shapeAtom """
        if ctx.negation():
            self.expr = ShapeNot(id=self.label)
            sn = ShexShapeExpressionParser(self.context)
            sn.visit(ctx.shapeAtom())
            self.expr.shapeExpr = sn.expr if sn.expr is not None else Shape()
        else:
            self.visitChildren(ctx)