def gen_multivalued_slot(self, target_name_base: str, target_type: IRIREF) -> IRIREF:
list_shape_id = IRIREF(target_name_base + "<STR_LIT>")<EOL>if list_shape_id not in self.list_shapes:<EOL><INDENT>list_shape = Shape(id=list_shape_id, closed=True)<EOL>list_shape.expression = EachOf()<EOL>expressions = [TripleConstraint(predicate=RDF.first, valueExpr=target_type, min=<NUM_LIT:0>, max=<NUM_LIT:1>)]<EOL>targets = ShapeOr()<EOL>targets.shapeExprs = [(NodeConstraint(values=[RDF.nil])), list_shape_id]<EOL>expressions.append(TripleConstraint(predicate=RDF.rest, valueExpr=targets))<EOL>list_shape.expression.expressions = expressions<EOL>self.shapes.append(list_shape)<EOL>self.list_shapes.append(list_shape_id)<EOL><DEDENT>return list_shape_id<EOL>
Generate a shape that represents an RDF list of target_type

        @param target_name_base:
        @param target_type:
        @return: