{"id":171,"date":"2020-03-12T14:07:00","date_gmt":"2020-03-12T13:07:00","guid":{"rendered":"https:\/\/blog.simon-frey.eu\/?p=171"},"modified":"2024-01-19T12:52:35","modified_gmt":"2024-01-19T11:52:35","slug":"k-anonymity","status":"publish","type":"post","link":"https:\/\/simon-frey.com\/blog\/k-anonymity\/","title":{"rendered":"k-anonymity"},"content":{"rendered":"\n<p>As you might already have recognized I am in favor of strong privacy technology to counter the surveillance in our current age. One pillar to archive this is to get developers thinking about this and teach methods to build privacy protecting systems. <\/p>\n\n\n\n<p>Within this article you will learn about a theoretical technic called <em>k-anonymity<\/em> in order to obfuscate &amp; protect the people which data you collected.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Usage Scenario<\/h2>\n\n\n\n<p>Let&#8217;s start with the typical example scenario in this space: <br> A hospital collects data about their patients in order to help research gather insights about diseases and in the end serve their patients even better.<br> Let&#8217;s assume we have following (intentional super small) data set (Source: <a href=\"https:\/\/en.wikipedia.org\/wiki\/*k-anonymity*\">Wikipedia<\/a>):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Name<\/strong><\/td><td><strong>Age<\/strong><\/td><td><strong>Gender<\/strong><\/td><td><strong>State of domicile<\/strong><\/td><td><strong>Religion<\/strong><\/td><td><strong>Disease<\/strong><\/td><\/tr><tr><td>Ramsha<\/td><td>30<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>Hindu<\/td><td>Cancer<\/td><\/tr><tr><td>Yadu<\/td><td>24<\/td><td>Female<\/td><td>Kerala<\/td><td>Hindu<\/td><td>Viral infection<\/td><\/tr><tr><td>Salima<\/td><td>28<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>Muslim<\/td><td>TB<\/td><\/tr><tr><td>Sunny<\/td><td>27<\/td><td>Male<\/td><td>Karnataka<\/td><td>Parsi<\/td><td>No illness<\/td><\/tr><tr><td>Joan<\/td><td>24<\/td><td>Female<\/td><td>Kerala<\/td><td>Christian<\/td><td>Heart-related<\/td><\/tr><tr><td>Bahuksana<\/td><td>23<\/td><td>Male<\/td><td>Karnataka<\/td><td>Buddhist<\/td><td>TB<\/td><\/tr><tr><td>Rambha<\/td><td>19<\/td><td>Male<\/td><td>Kerala<\/td><td>Hindu<\/td><td>Cancer<\/td><\/tr><tr><td>Kishor<\/td><td>29<\/td><td>Male<\/td><td>Karnataka<\/td><td>Hindu<\/td><td>Heart-related<\/td><\/tr><tr><td>Johnson<\/td><td>17<\/td><td>Male<\/td><td>Kerala<\/td><td>Christian<\/td><td>Heart-related<\/td><\/tr><tr><td>John<\/td><td>19<\/td><td>Male<\/td><td>Kerala<\/td><td>Christian<\/td><td>Viral infection<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>I assume we agree that is is not a good idea to expose the patients and their diseases by handing this data as it is to research. Doing so we would violate the patients privacy and could cause problems for them and also the hospital. (<a href=\"https:\/\/en.wikipedia.org\/wiki\/General_Data_Protection_Regulation\">GDPR<\/a> for the rescue ;))<\/p>\n\n\n\n<p>This is the moment where <em>k-anonymity<\/em> comes into play<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Definition <em>k-anonymity<\/em><\/h2>\n\n\n\n<p>Wikipedia states: *&#8221;A release of data is said to have the *k-anonymity* property if the information for each person contained in the release cannot be distinguished from at least k \u2212 1 individuals whose information also appear in the release.&#8221;*<\/p>\n\n\n\n<p>We get the following insights from this definition:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>k-anonymity<\/em> is a property of a data set, not a method<\/li><li><em>k-anonymity<\/em> refers to k-1 individuals in the data set not being able to be distinguished<\/li><\/ul>\n\n\n\n<p>To archive 2-anonymity (k=2) the data set needs to be obfuscated (by some method) with the result that for every entry, there is at least one other entry being identical. For 3-anonymity it must be at least two others and so on\u2026<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Obfuscation<\/h2>\n\n\n\n<p>Best protection would be to remove as much attributes as possible and only hand out a minimal amount of data. Though protecting the privacy of the patients this would render research useless. We have to find the sweet spot between patient privacy and research interest, by just obfuscating enough information to effectively protect the patients privacy.<\/p>\n\n\n\n<p>There are two common obfuscation methods in order to achieve <em>k-anonymity<\/em>: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>Generalization<\/em>: Replaces attributes with broader ones. E.g. Replacing the exact age of a patient with a date range (Replace <em>33<\/em> with <em>25) is still a good enough information for research, but removes direct identifying attributes.<\/em><\/li><li><em>Suppression<\/em>: This methods removes certain attributes all together as without them a identification of single people in the data set might not be possible anymore. e.g. First step of obfuscating a data set is removing the unique names<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Obfuscation applied<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Generalization<\/h4>\n\n\n\n<p>Our data set would look like following if we apply generalization to the age attribute with the two categories &#8220;Age \u2264 20&#8221; &amp; &#8220;20 &lt; Age \u2264 30&#8221;:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Name<\/strong><\/td><td><strong>Age<\/strong><\/td><td><strong>Gender<\/strong><\/td><td><strong>State of domicile<\/strong><\/td><td><strong>Religion<\/strong><\/td><td><strong>Disease<\/strong><\/td><\/tr><tr><td>Ramsha<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>Hindu<\/td><td>Cancer<\/td><\/tr><tr><td>Yadu<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Kerala<\/td><td>Hindu<\/td><td>Viral infection<\/td><\/tr><tr><td>Salima<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>Muslim<\/td><td>TB<\/td><\/tr><tr><td>Sunny<\/td><td>20 &lt; Age \u2264 30<\/td><td>Male<\/td><td>Karnataka<\/td><td>Parsi<\/td><td>No illness<\/td><\/tr><tr><td>Joan<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Kerala<\/td><td>Christian<\/td><td>Heart-related<\/td><\/tr><tr><td>Bahuksana<\/td><td>20 &lt; Age \u2264 30<\/td><td>Male<\/td><td>Karnataka<\/td><td>Buddhist<\/td><td>TB<\/td><\/tr><tr><td>Rambha<\/td><td>Age \u2264 20<\/td><td>Male<\/td><td>Kerala<\/td><td>Hindu<\/td><td>Cancer<\/td><\/tr><tr><td>Kishor<\/td><td>20 &lt; Age \u2264 30<\/td><td>Male<\/td><td>Karnataka<\/td><td>Hindu<\/td><td>Heart-related<\/td><\/tr><tr><td>Johnson<\/td><td>Age \u2264 20<\/td><td>Male<\/td><td>Kerala<\/td><td>Christian<\/td><td>Heart-related<\/td><\/tr><tr><td>John<\/td><td>Age \u2264 20<\/td><td>Male<\/td><td>Kerala<\/td><td>Christian<\/td><td>Viral infection<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Suppression<\/h4>\n\n\n\n<p>Our data set would look like following if we apply suppression to Name an the Religion attribute:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Name<\/strong><\/td><td><strong>Age<\/strong><\/td><td><strong>Gender<\/strong><\/td><td><strong>State of domicile<\/strong><\/td><td><strong>Religion<\/strong><\/td><td><strong>Disease<\/strong><\/td><\/tr><tr><td>&#8211;<\/td><td>30<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>&#8211;<\/td><td>Cancer<\/td><\/tr><tr><td>&#8211;<\/td><td>24<\/td><td>Female<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Viral infection<\/td><\/tr><tr><td>&#8211;<\/td><td>28<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>&#8211;<\/td><td>TB<\/td><\/tr><tr><td>&#8211;<\/td><td>27<\/td><td>Male<\/td><td>Karnataka<\/td><td>&#8211;<\/td><td>No illness<\/td><\/tr><tr><td>&#8211;<\/td><td>24<\/td><td>Female<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Heart-related<\/td><\/tr><tr><td>&#8211;<\/td><td>23<\/td><td>Male<\/td><td>Karnataka<\/td><td>&#8211;<\/td><td>TB<\/td><\/tr><tr><td>&#8211;<\/td><td>19<\/td><td>Male<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Cancer<\/td><\/tr><tr><td>&#8211;<\/td><td>29<\/td><td>Male<\/td><td>Karnataka<\/td><td>&#8211;<\/td><td>Heart-related<\/td><\/tr><tr><td>&#8211;<\/td><td>17<\/td><td>Male<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Heart-related<\/td><\/tr><tr><td>&#8211;<\/td><td>19<\/td><td>Male<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Viral infection<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Combined<\/h4>\n\n\n\n<p>Most of the time both methods are used in combination. Combining the two examples our data set would look like following:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Name<\/strong><\/td><td><strong>Age<\/strong><\/td><td><strong>Gender<\/strong><\/td><td><strong>State of domicile<\/strong><\/td><td><strong>Religion<\/strong><\/td><td><strong>Disease<\/strong><\/td><\/tr><tr><td>&#8211;<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>&#8211;<\/td><td>Cancer<\/td><\/tr><tr><td>&#8211;<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Viral infection<\/td><\/tr><tr><td>&#8211;<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Tamil Nadu<\/td><td>&#8211;<\/td><td>TB<\/td><\/tr><tr><td>&#8211;<\/td><td>20 &lt; Age \u2264 30<\/td><td>Male<\/td><td>Karnataka<\/td><td>&#8211;<\/td><td>No illness<\/td><\/tr><tr><td>&#8211;<\/td><td>20 &lt; Age \u2264 30<\/td><td>Female<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Heart-related<\/td><\/tr><tr><td>&#8211;<\/td><td>20 &lt; Age \u2264 30<\/td><td>Male<\/td><td>Karnataka<\/td><td>&#8211;<\/td><td>TB<\/td><\/tr><tr><td>&#8211;<\/td><td>Age \u2264 20<\/td><td>Male<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Cancer<\/td><\/tr><tr><td>&#8211;<\/td><td>20 &lt; Age \u2264 30<\/td><td>Male<\/td><td>Karnataka<\/td><td>&#8211;<\/td><td>Heart-related<\/td><\/tr><tr><td>&#8211;<\/td><td>Age \u2264 20<\/td><td>Male<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Heart-related<\/td><\/tr><tr><td>&#8211;<\/td><td>Age \u2264 20<\/td><td>Male<\/td><td>Kerala<\/td><td>&#8211;<\/td><td>Viral infection<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Evaluating k-anonymity<\/h2>\n\n\n\n<p>To check if we have a degree of <em>k-anonymity<\/em> we have to count the occurrences of non-distinguishable entries for disease as the goal of our anonymity is to not disclose which person has which disease.<\/p>\n\n\n\n<p>Let&#8217;s do this for 4 different data sets:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Original: 10 <em>unique entries<\/em>, 0 <em>2-anonym entries<\/em>, 0 <em>3-anonym entries<\/em> =&gt; no anonymity<\/li><li>Generalization example:  10 <em>unique entries<\/em>, 0 <em>2-anonym entries<\/em>, 0 <em>3-anonym entries<\/em> =&gt; no anonymity<\/li><li>Suppression example:  6 <em>unique entries<\/em>, 4 <em>2-anonym entries<\/em>, 0 <em>3-anonym entries<\/em> =&gt; no anonymity<\/li><li>Generalization &amp; Suppression examples combined: 0 <em>unique entries<\/em>, 10 <em>2-anonym entries<\/em>, 0 <em>3-anonym entries<\/em> =&gt; 2-anonymity<\/li><\/ul>\n\n\n\n<p>The whole data set always gets the lowest k-anonymity even if some entries offer a lot higher protection. Thus, even if the suppression example offers some 2-anonym entries, the overall class is still 1-anonymity as there are unique entries left. Even if only one unique entry would be left and all others are in higher classes, the class would stay the same.<\/p>\n\n\n\n<p>Only the last example combining generalization &amp; suppression offers 2-anonymity as the weakest anonymity the data set provides is the 2-anonymity. <br>\nThereby no person can be linked to a single disease, as there are always at least two entries with the same identifying attributes. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Possible attacks &amp; caveats<\/h2>\n\n\n\n<p>There are possible attacks on <em>k-anonymity<\/em> to re-identify the information in the data set. <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Homogeneity Attack: If the anonymized data is too similar it might still give insights about the person. E.g. If all male in the data set under 20 living in a certain city have cancer, than this would allow to reason about a single person again.<\/li><li>Background Attack: By using additional information it might be possible to de-anonymize the data. E.g. If you know that heart attacks occur at a higher rate for people living in a certain city, you are able to link this city to the data again.<\/li><\/ul>\n\n\n\n<p>Other problems are: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Forward Knowledge Attack (my term): If you have certain knowledge about people in the data set, you might gain unintended insights again. E.g. If you know that Simon is a Male with the Age 19 you know from the data set that he is sick (either Cancer, Heart-related, Viral infection) which is a privacy violation again.<\/li><li>Skewing of the data set: By removing to much information from the data set the validity of the data set might be skewed, as important information could be removed which renders the research useless again.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>If you work with data sets you should always keep the privacy rights of the people in the set in mind. You can use the given techniques Generalization &amp; Suppression to archive a certain strength of <em>k-anonymity<\/em>. The whole process is proven to not be easily automatizable and needs time and understanding. Small mistakes can result in de-anonymization.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>Please keep in mind this article is a simplified explanation. If you want to gain even deeper knowledge about this topic, following paper is a good start: https:\/\/dataprivacylab.org\/dataprivacy\/projects\/kanonymity\/paper3.pdf<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you might already have recognized I am in favor of strong privacy technology to counter the surveillance in our current age. One pillar to archive this is to get developers thinking about this and&hellip;<\/p>\n<p><a href=\"https:\/\/simon-frey.com\/blog\/k-anonymity\/\" class=\"more-link\">Read more<span class=\"screen-reader-text\"> of k-anonymity<\/span><span aria-hidden=\"true\"> &rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":317,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[25],"tags":[65,22,64,70],"class_list":["post-171","post","type-post","status-publish","format-standard","hentry","category-privacy","tag-anonymity","tag-gdpr","tag-privacy","tag-time"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>k-anonymity - Blog by Simon Frey<\/title>\n<meta name=\"description\" content=\"A developers guide on how to empower k-anonymity in order to protect the privacy of persons in a data set. Learn what this privacy-property is about...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simon-frey.com\/blog\/k-anonymity\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Frey\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"k-anonymity - Blog by Simon Frey","description":"A developers guide on how to empower k-anonymity in order to protect the privacy of persons in a data set. Learn what this privacy-property is about...","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:\/\/simon-frey.com\/blog\/k-anonymity\/","twitter_misc":{"Written by":"Simon Frey","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/#article","isPartOf":{"@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/"},"author":{"name":"Simon Frey","@id":"https:\/\/simon-frey.com\/blog\/#\/schema\/person\/34753982b648415636ee7a079f3e19a3"},"headline":"k-anonymity","datePublished":"2020-03-12T13:07:00+00:00","dateModified":"2024-01-19T11:52:35+00:00","mainEntityOfPage":{"@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/"},"wordCount":1277,"publisher":{"@id":"https:\/\/simon-frey.com\/blog\/#\/schema\/person\/34753982b648415636ee7a079f3e19a3"},"image":{"@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/#primaryimage"},"thumbnailUrl":"https:\/\/simon-frey.com\/blog\/wp-content\/uploads\/2021\/02\/k-anonymity-2.png","keywords":["Anonymity","GDPR","Privacy","time"],"articleSection":["Privacy"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/","url":"https:\/\/simon-frey.com\/blog\/k-anonymity\/","name":"k-anonymity - Blog by Simon Frey","isPartOf":{"@id":"https:\/\/simon-frey.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/#primaryimage"},"image":{"@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/#primaryimage"},"thumbnailUrl":"https:\/\/simon-frey.com\/blog\/wp-content\/uploads\/2021\/02\/k-anonymity-2.png","datePublished":"2020-03-12T13:07:00+00:00","dateModified":"2024-01-19T11:52:35+00:00","description":"A developers guide on how to empower k-anonymity in order to protect the privacy of persons in a data set. Learn what this privacy-property is about...","breadcrumb":{"@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simon-frey.com\/blog\/k-anonymity\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/#primaryimage","url":"https:\/\/simon-frey.com\/blog\/wp-content\/uploads\/2021\/02\/k-anonymity-2.png","contentUrl":"https:\/\/simon-frey.com\/blog\/wp-content\/uploads\/2021\/02\/k-anonymity-2.png","width":2048,"height":1124},{"@type":"BreadcrumbList","@id":"https:\/\/simon-frey.com\/blog\/k-anonymity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simon-frey.com\/blog\/"},{"@type":"ListItem","position":2,"name":"k-anonymity"}]},{"@type":"WebSite","@id":"https:\/\/simon-frey.com\/blog\/#website","url":"https:\/\/simon-frey.com\/blog\/","name":"Blog by Simon Frey","description":"","publisher":{"@id":"https:\/\/simon-frey.com\/blog\/#\/schema\/person\/34753982b648415636ee7a079f3e19a3"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simon-frey.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/simon-frey.com\/blog\/#\/schema\/person\/34753982b648415636ee7a079f3e19a3","name":"Simon Frey","logo":{"@id":"https:\/\/simon-frey.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/simon-frey.com","https:\/\/www.linkedin.com\/in\/simonfrey\/","https:\/\/x.com\/eu_frey"]}]}},"_links":{"self":[{"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/comments?post=171"}],"version-history":[{"count":4,"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":976,"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/posts\/171\/revisions\/976"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/media\/317"}],"wp:attachment":[{"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/categories?post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simon-frey.com\/blog\/wp-json\/wp\/v2\/tags?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}