Stored Transformation

Stored transformation detail

Inspect version history, edit inputs, and save a new version without overwriting prior records.

Transformation ID segittur-hotel-pid-object-update-from-ngsi-building-lasrozas
Selected Version v1
Versions 1
Updated 2026-04-27T13:45:55.789075+00:00
Version 1
Target Stored target schema Switch between manual editing, a persisted schema, and an internal schema, then validate or translate with the selected target schema.
Result Generated jq filter
def v($k): .[$k].value // null;
def trim:
  gsub("^\\s+|\\s+$"; "");
def clean_text:
  tostring | gsub("\\s+"; " ") | trim;
def gql_line($key; $value):
  if $value == null or $value == "" then "" else "            " + $key + " : " + ($value | @json) + "\n" end;
def province_from_postal_code($cp):
  if $cp | startswith("28") then "Madrid" else null end;
def ac_from_postal_code($cp):
  if $cp | startswith("28") then "Comunidad de Madrid" else null end;
def parsed_address:
  (v("address")) as $a
  | if ($a == null) or (($a | type) != "string") or (($a | clean_text) == "") then
      {
        streetAddress: "Dirección no disponible",
        postalCode: "28232",
        municipality: "Las Rozas",
        province: "Madrid",
        autonomousCommunity: "Comunidad de Madrid",
        country: "España"
      }
    else
      ($a | clean_text | gsub("\\.$"; "")) as $raw
      | if ($raw | test("\\b\\d{5}\\b")) then
          ($raw | capture("^(?<streetAddress>.*?)[,.;]?\\s*(?<postalCode>\\d{5})\\s+(?<municipality>[^,.;]+)")) as $m
          | {
              streetAddress: ($m.streetAddress | clean_text | gsub("[,.;]$"; "")),
              postalCode: $m.postalCode,
              municipality: ($m.municipality | clean_text),
              province: province_from_postal_code($m.postalCode),
              autonomousCommunity: ac_from_postal_code($m.postalCode),
              country: "España"
            }
        else
          {
            streetAddress: $raw,
            postalCode: "28232",
            municipality: "Las Rozas",
            province: "Madrid",
            autonomousCommunity: "Comunidad de Madrid",
            country: "España"
          }
        end
    end;
def parsed_coords:
  (.location.value.coordinates // null) as $c
  | if ($c | type) == "array" and ($c | length) >= 2 then
      {long: $c[0], lat: $c[1]}
    else
      {}
    end;
(v("description")) as $desc
| (.id // null) as $externalId
| (parsed_address) as $addr
| (parsed_coords) as $coords
| ((($addr // {}) + $coords)) as $loc
| {
    query:
      "mutation update_hotel {\n" +
      "  updateHotel(\n" +
      "    dti: \"ROZAS_DE_MADRID_LAS\"\n" +
      "    input: {\n" +
      "      object: {\n" +
      "        externalId: " + ($externalId | @json) + "\n" +
      "        name: {\n" +
      "          value: " + (($desc // "Hotel PID") | @json) + "\n" +
      "          lang: \"es\"\n" +
      "        }\n" +
      "        hasDescription: {\n" +
      "          object: {\n" +
      "            shortDescription: {\n" +
      "              value: " + (($desc // "Hotel PID") | @json) + "\n" +
      "              lang: \"es\"\n" +
      "            }\n" +
      "          }\n" +
      "        }\n" +
      "        hasLocation: {\n" +
      "          object: {\n" +
      (gql_line("streetAddress"; $loc.streetAddress)) +
      (gql_line("postalCode"; $loc.postalCode)) +
      (gql_line("municipality"; $loc.municipality)) +
      (gql_line("province"; $loc.province)) +
      (gql_line("autonomousCommunity"; $loc.autonomousCommunity)) +
      (gql_line("country"; $loc.country)) +
      (gql_line("long"; $loc.long)) +
      (gql_line("lat"; $loc.lat)) +
      "          }\n" +
      "        }\n" +
      "      }\n" +
      "    }\n" +
      "  ) {\n" +
      "    uri\n" +
      "    dtiName\n" +
      "    name {\n" +
      "      value\n" +
      "      lang\n" +
      "    }\n" +
      "  }\n" +
      "}",
    operationName: "update_hotel"
  }
Output Transformed output
{
  "operationName": "update_hotel",
  "query": "mutation update_hotel {...}"
}