






{"id":21579,"date":"2025-04-17T06:04:07","date_gmt":"2025-04-17T06:04:07","guid":{"rendered":"https:\/\/dataforpublicgood.org.in\/?p=21579"},"modified":"2025-04-17T06:33:18","modified_gmt":"2025-04-17T06:33:18","slug":"an-overview-of-the-gdi-python-sdk","status":"publish","type":"post","link":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/","title":{"rendered":"An Overview of the GDI Python SDK"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"21579\" class=\"elementor elementor-21579\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f2eab70 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f2eab70\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b87a89a\" data-id=\"b87a89a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3c06cee elementor-widget elementor-widget-text-editor\" data-id=\"3c06cee\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>The <b>GDI Python SDK<\/b> is a command-line toolkit designed to streamline interaction with the Integrated Geospatial Data Sharing Interface (GDI), accessible at <a href=\"https:\/\/catalogue.geospatial.org.in\" target=\"_blank\" rel=\"noopener\">https:\/\/catalogue.geospatial.org.in<\/a>. Built to support a wide range of geospatial workflows, the SDK enables users to efficiently access, process, and manage both vector and raster data within a unified, scriptable environment. With support for various storage backends including MinIO, AWS S3, and local file systems, the SDK adapts well to diverse deployment scenarios, from individual desktop setups to large-scale enterprise cloud systems.<\/p><p><b>Authentication and Access Control<\/b><\/p><p>User access within the SDK is managed through a secure authentication system based on client credentials. Tokens are issued to authenticate users and regulate access to data and services. Role-based access controls ensure that users interact with data in a secure and governed manner, aligning with organizational policies.<\/p><p><b>Artifact Management and Output Formats<\/b><\/p><p>The SDK offers structured artifact management by allowing users to create, store, and retrieve processed vector layers or raster overlays. These artifacts can be versioned and managed across different environments\u2014whether local, S3-compatible, or native cloud storage. Outputs are stored in widely accepted formats: raster data in Cloud Optimized GeoTIFF (COG) and vector data in GeoJSON, ensuring both compatibility and efficiency.<\/p><p><b>Managing Vector Resources and Operations<\/b><\/p><p>The SDK allows users to retrieve vector datasets on demand, either for immediate use or for persistent storage in predefined locations. It supports a wide range of spatial operations, including feature counting, buffering, spatial intersections, and clipping features to defined boundaries. Users can generate Delaunay triangles and Voronoi diagrams, compute geometries such as length, perimeter, and area, and list all available vector datasets for any specified location.<\/p><p>One of the key capabilities of the SDK is the ability to convert vector data into raster formats using attribute-based reducers, such as minimum, maximum, mean, count, density, mode, and others depending on the data type. It also supports the computation of optimal routes by utilizing road network data available in GDI in combination with user-provided points.<\/p><p><b>Raster Data Management and STAC Integration<\/b><\/p><p>GDI\u2019s SDK provides extensive support for raster data through integration with STAC (SpatioTemporal Asset Catalog) services. This integration allows users to search raster collections, retrieve individual assets, and conduct raster-based analyses directly from the command line. The SDK offers utilities to fetch raster data from STAC, giving users streamlined access to satellite imagery, orthoimagery, digital elevation models (DEMs), and other raster resources hosted on the GDI platform.<\/p><p><b>Raster Utility Functions<\/b><\/p><p>The SDK includes a comprehensive suite of raster processing tools. Users can clip raster images using vector features, merge multiple rasters, calculate NDVI for vegetation analysis, and generate flood inundation maps using elevation thresholds. It also supports the creation of contour lines from raster surfaces, the projection of raster values onto vector features as new attributes, slope map generation, and the computation of statistical correlations between two raster layers. These capabilities allow for detailed environmental and terrain analysis and support a variety of Earth observation applications.<\/p><p><b>Potential Use Cases Across Sectors<\/b><\/p><p>The versatility of the GDI Python SDK enables its application across multiple sectors. In disaster management, it can be used to map flood zones using DEMs and identify vulnerable areas by overlaying population and infrastructure data, thereby supporting proactive planning and emergency response.<br \/>In agriculture, the SDK supports NDVI-based vegetation health monitoring, crop density estimation, and yield forecasting through zonal statistics, helping inform land use decisions and optimize productivity. For urban planning, it provides tools for optimizing emergency service routes, mapping urban growth, and analyzing infrastructure networks for more sustainable city development.<\/p><p>Environmental and terrain analysis tasks, such as watershed modeling, erosion studies, and forest fragmentation assessments, are made easier through the SDK\u2019s raster and vector tools. It is also well-suited for geospatial data engineering, enabling automated feature extraction workflows and the development of integrated raster-vector analytics pipelines.<\/p><p>In the public sector, the SDK can help integrate land records with geospatial boundaries and assist in planning and governance by mapping the spatial distribution of facilities, resources, and populations.<\/p><p><b>Conclusion<\/b><\/p><p>The GDI Python SDK is a powerful and extensible tool that brings sophisticated geospatial analysis capabilities to the command line. By abstracting away the complexities of backend geospatial infrastructure, it provides analysts, developers, and data engineers with a streamlined and scalable solution for managing and analyzing geospatial data.<\/p><p>Whether used for terrain modeling, environmental monitoring, routing, or statistical spatial analysis, the SDK offers a reproducible and portable framework suitable for both local and cloud-based environments. It stands as a bridge between national-scale geospatial data resources and the day-to-day workflows of users, enabling faster insights and more effective decision-making.<\/p><p><b>Authors:<\/b><br \/>Joel Joy<br \/>Dr Linda Theres<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<div style=\"margin-top: 0px; margin-bottom: 0px;\" class=\"sharethis-inline-share-buttons\" ><\/div>","protected":false},"excerpt":{"rendered":"<p>The GDI Python SDK is a command-line toolkit designed to streamline interaction with the Integrated Geospatial Data Sharing Interface (GDI), accessible at https:\/\/catalogue.geospatial.org.in. Built to support a wide range of geospatial workflows, the SDK enables users to efficiently access, process, and manage both vector and raster data within a unified, scriptable environment. With support for various storage backends including MinIO, &hellip;<\/p>\n","protected":false},"author":2,"featured_media":21589,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-21579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.12 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>An Overview of the GDI Python SDK - Data for Public Good<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Overview of the GDI Python SDK - Data for Public Good\" \/>\n<meta property=\"og:description\" content=\"The GDI Python SDK is a command-line toolkit designed to streamline interaction with the Integrated Geospatial Data Sharing Interface (GDI), accessible at https:\/\/catalogue.geospatial.org.in. Built to support a wide range of geospatial workflows, the SDK enables users to efficiently access, process, and manage both vector and raster data within a unified, scriptable environment. With support for various storage backends including MinIO, &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/\" \/>\n<meta property=\"og:site_name\" content=\"Data for Public Good\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-17T06:04:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-17T06:33:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-content\/uploads\/2025\/04\/An-Overview-of-the-GDI-Python-SDK-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"CDPG\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AgriDataXchange\" \/>\n<meta name=\"twitter:site\" content=\"@AgriDataXchange\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"CDPG\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/\"},\"author\":{\"name\":\"CDPG\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/#\/schema\/person\/c521da9a85ddb366900e8ab41c092fb4\"},\"headline\":\"An Overview of the GDI Python SDK\",\"datePublished\":\"2025-04-17T06:04:07+00:00\",\"dateModified\":\"2025-04-17T06:33:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/\"},\"wordCount\":783,\"publisher\":{\"@id\":\"https:\/\/dataforpublicgood.org.in\/#organization\"},\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/\",\"url\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/\",\"name\":\"An Overview of the GDI Python SDK - Data for Public Good\",\"isPartOf\":{\"@id\":\"https:\/\/dataforpublicgood.org.in\/#website\"},\"datePublished\":\"2025-04-17T06:04:07+00:00\",\"dateModified\":\"2025-04-17T06:33:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dataforpublicgood.org.in\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Overview of the GDI Python SDK\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/#website\",\"url\":\"https:\/\/dataforpublicgood.org.in\/\",\"name\":\"Data for Public Good\",\"description\":\"Data for Public Good\",\"publisher\":{\"@id\":\"https:\/\/dataforpublicgood.org.in\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dataforpublicgood.org.in\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/#organization\",\"name\":\"Data for Public Good\",\"url\":\"https:\/\/dataforpublicgood.org.in\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/adex.org.in\/wp-content\/uploads\/2022\/12\/adex-logo.png\",\"contentUrl\":\"https:\/\/adex.org.in\/wp-content\/uploads\/2022\/12\/adex-logo.png\",\"width\":720,\"height\":270,\"caption\":\"Data for Public Good\"},\"image\":{\"@id\":\"https:\/\/dataforpublicgood.org.in\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/AgriDataXchange\",\"https:\/\/www.linkedin.com\/company\/agricultural-data-exchange\/?viewAsMember=true\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/#\/schema\/person\/c521da9a85ddb366900e8ab41c092fb4\",\"name\":\"CDPG\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dataforpublicgood.org.in\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/07c2cc51f2149e714f30055318fd3fbb92c6e503091ab59827d9bd261e19342a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/07c2cc51f2149e714f30055318fd3fbb92c6e503091ab59827d9bd261e19342a?s=96&d=mm&r=g\",\"caption\":\"CDPG\"},\"url\":\"https:\/\/dataforpublicgood.org.in\/cdpg\/author\/iudx\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An Overview of the GDI Python SDK - Data for Public Good","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/","og_locale":"en_US","og_type":"article","og_title":"An Overview of the GDI Python SDK - Data for Public Good","og_description":"The GDI Python SDK is a command-line toolkit designed to streamline interaction with the Integrated Geospatial Data Sharing Interface (GDI), accessible at https:\/\/catalogue.geospatial.org.in. Built to support a wide range of geospatial workflows, the SDK enables users to efficiently access, process, and manage both vector and raster data within a unified, scriptable environment. With support for various storage backends including MinIO, &hellip;","og_url":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/","og_site_name":"Data for Public Good","article_published_time":"2025-04-17T06:04:07+00:00","article_modified_time":"2025-04-17T06:33:18+00:00","og_image":[{"width":700,"height":600,"url":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-content\/uploads\/2025\/04\/An-Overview-of-the-GDI-Python-SDK-1.jpg","type":"image\/jpeg"}],"author":"CDPG","twitter_card":"summary_large_image","twitter_creator":"@AgriDataXchange","twitter_site":"@AgriDataXchange","twitter_misc":{"Written by":"CDPG","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/#article","isPartOf":{"@id":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/"},"author":{"name":"CDPG","@id":"https:\/\/dataforpublicgood.org.in\/#\/schema\/person\/c521da9a85ddb366900e8ab41c092fb4"},"headline":"An Overview of the GDI Python SDK","datePublished":"2025-04-17T06:04:07+00:00","dateModified":"2025-04-17T06:33:18+00:00","mainEntityOfPage":{"@id":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/"},"wordCount":783,"publisher":{"@id":"https:\/\/dataforpublicgood.org.in\/#organization"},"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/","url":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/","name":"An Overview of the GDI Python SDK - Data for Public Good","isPartOf":{"@id":"https:\/\/dataforpublicgood.org.in\/#website"},"datePublished":"2025-04-17T06:04:07+00:00","dateModified":"2025-04-17T06:33:18+00:00","breadcrumb":{"@id":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dataforpublicgood.org.in\/cdpg\/blog\/an-overview-of-the-gdi-python-sdk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dataforpublicgood.org.in\/"},{"@type":"ListItem","position":2,"name":"An Overview of the GDI Python SDK"}]},{"@type":"WebSite","@id":"https:\/\/dataforpublicgood.org.in\/#website","url":"https:\/\/dataforpublicgood.org.in\/","name":"Data for Public Good","description":"Data for Public Good","publisher":{"@id":"https:\/\/dataforpublicgood.org.in\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dataforpublicgood.org.in\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dataforpublicgood.org.in\/#organization","name":"Data for Public Good","url":"https:\/\/dataforpublicgood.org.in\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dataforpublicgood.org.in\/#\/schema\/logo\/image\/","url":"https:\/\/adex.org.in\/wp-content\/uploads\/2022\/12\/adex-logo.png","contentUrl":"https:\/\/adex.org.in\/wp-content\/uploads\/2022\/12\/adex-logo.png","width":720,"height":270,"caption":"Data for Public Good"},"image":{"@id":"https:\/\/dataforpublicgood.org.in\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/AgriDataXchange","https:\/\/www.linkedin.com\/company\/agricultural-data-exchange\/?viewAsMember=true"]},{"@type":"Person","@id":"https:\/\/dataforpublicgood.org.in\/#\/schema\/person\/c521da9a85ddb366900e8ab41c092fb4","name":"CDPG","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dataforpublicgood.org.in\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/07c2cc51f2149e714f30055318fd3fbb92c6e503091ab59827d9bd261e19342a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/07c2cc51f2149e714f30055318fd3fbb92c6e503091ab59827d9bd261e19342a?s=96&d=mm&r=g","caption":"CDPG"},"url":"https:\/\/dataforpublicgood.org.in\/cdpg\/author\/iudx\/"}]}},"_links":{"self":[{"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/posts\/21579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/comments?post=21579"}],"version-history":[{"count":10,"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/posts\/21579\/revisions"}],"predecessor-version":[{"id":21595,"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/posts\/21579\/revisions\/21595"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/media\/21589"}],"wp:attachment":[{"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/media?parent=21579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/categories?post=21579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dataforpublicgood.org.in\/cdpg\/wp-json\/wp\/v2\/tags?post=21579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}