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-from-ngsi-building-lasrozas
Selected Version v4
Versions 5
Updated 2026-04-27T13:21:37.738328+00:00
Version 5 Version 4 Version 3 Version 2 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
      null
    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"
            }
          | with_entries(select(.value != null and .value != ""))
        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 nuevo_hotel { createHotel(dti: \"ROZAS_DE_MADRID_LAS\" input: { object: { externalId: " + ($externalId|@json) + " name: { value: " + (($desc // "Hotel PID")|@json) + " lang: \"es\" } hasLocation: { object: {" + (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)) + "}}}}) { uri } }",
    operationName: "nuevo_hotel"
  }
Output Transformed output
null