code: def _get_passage_plus(self, urn):
          
          urn = URN(urn)
          subreference = None
          if len(urn) < 4:
              raise InvalidURN
          if urn.reference is not None:
              subreference = str(urn.reference)
          node = self.resolver.getTextualNode(textId=urn.upTo(URN.NO_PASSAGE), subreference=subreference)
          r = render_template(
              "cts/GetPassagePlus.xml",
              filters="urn={}".format(urn),
              request_urn=str(urn),
              full_urn=node.urn,
              prev_urn=node.prevId,
              next_urn=node.nextId,
              metadata={
                  "groupname": [(literal.language, str(literal)) for literal in node.metadata.get(RDF_NAMESPACES.CTS.groupname)],
                  "title": [(literal.language, str(literal)) for literal in node.metadata.get(RDF_NAMESPACES.CTS.title)],
                  "description": [(literal.language, str(literal)) for literal in node.metadata.get(RDF_NAMESPACES.CTS.description)],
                  "label": [(literal.language, str(literal)) for literal in node.metadata.get(RDF_NAMESPACES.CTS.label)]
              },
              citation=Markup(node.citation.export(Mimetypes.XML.CTS)),
              passage=Markup(node.export(Mimetypes.XML.TEI))
          )
          return r, 200, {"content-type": "application/xml"}
docs: Provisional route for GetPassagePlus request
  
          :param urn: URN to filter the resource
          :return: GetPassagePlus response