<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def schema_org(builder):
 # pylint: disable=line-too-long """Builds schema.org microdata for DatasetSearch from DatasetBuilder. Markup spec: https://developers.google.com/search/docs/data-types/dataset#dataset Testing tool: https://search.google.com/structured-data/testing-tool For Google Dataset Search: https://toolbox.google.com/datasetsearch Microdata format was chosen over JSON-LD due to the fact that Markdown rendering engines remove all <script> tags. Args: builder: `tfds.core.DatasetBuilder` Returns: HTML string with microdata """

  # pylint: enable=line-too-long

  properties = [
      (lambda x: x.name, SCHEMA_ORG_NAME),
      (lambda x: x.description, SCHEMA_ORG_DESC),
      (lambda x: x.name, SCHEMA_ORG_URL),
      (lambda x: (x.urls and x.urls[0]) or "", SCHEMA_ORG_SAMEAS)
  ]

  info = builder.info
  out_str = SCHEMA_ORG_PRE
  for extractor, template in properties:
    val = extractor(info)
    if val:
      # We are using cgi module instead of html due to Python 2 compatibility
      out_str += template.format(val=cgi.escape(val, quote=True).strip())
  out_str += SCHEMA_ORG_POST

  return out_str