unaryShape: ('$' tripleExprLabel)? (tripleConstraint | encapsulatedShape) | include

def visitUnaryShape(self, ctx: ShExDocParser.UnaryShapeContext):
        """ unaryShape: ('$' tripleExprLabel)? (tripleConstraint | encapsulatedShape) | include """
        if ctx.include():
            self.expression = self.context.tripleexprlabel_to_iriref(ctx.include().tripleExprLabel())
        else:
            lbl = self.context.tripleexprlabel_to_iriref(ctx.tripleExprLabel()) if ctx.tripleExprLabel() else None
            if ctx.tripleConstraint():
                self.expression = TripleConstraint(lbl)
                self.visit(ctx.tripleConstraint())
            elif ctx.encapsulatedShape():
                self.visit(ctx.encapsulatedShape())
                self.expression.id = lbl