{"id":1162,"date":"2013-12-01T22:13:44","date_gmt":"2013-12-01T21:13:44","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=1162"},"modified":"2014-03-17T23:22:20","modified_gmt":"2014-03-17T22:22:20","slug":"datavalues-geo-0-1-1-released","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/","title":{"rendered":"DataValues Geo 0.1.1 released"},"content":{"rendered":"<div id=\"pN7RmhDXItdrT10z52+dK7YPKS3O1B0IIL9sfNM3k3w=_142acb50887:8cf9831:7fe12541_entryContent\" itemprop=\"description\">\n<p>I\u2019m happy to announce the release of <a href=\"https:\/\/github.com\/DataValues\/Geo\" target=\"_blank\">DataValues Geo<\/a> 0.1.1.<\/p>\n<p>DataValues Geo is a library containing value objects to represent geographical information, parsers to turn user input into such value objects, and formatters to turn them back into user consumable representations. It is part of the <a href=\"https:\/\/github.com\/DataValues\" target=\"_blank\">DataValues set of libraries<\/a>. For background on this set of libraries, see my recent blog post.<\/p>\n<p>The functionality provided by the library can be subdivided into 3 groups: value objects, parsers and formatters.<\/p>\n<h4>Value objects<\/h4>\n<p>These are simple value objects. They all implement the <code>DataValues\\DataValue<\/code> interface.<\/p>\n<ul>\n<li><code>LatLongValue<\/code> \u2013 Object representing a geographic point specified by latitude and longitude.<\/li>\n<li><code>GlobeCoordinateValue<\/code> \u2013 Geographical coordinate with precision and globe.<\/li>\n<\/ul>\n<h4><a href=\"https:\/\/github.com\/DataValues\/Geo#formatters\" target=\"_blank\" name=\"formatters\"><\/a>Formatters<\/h4>\n<p>These turn value objects into string representations. They all implement the <code>ValueFormatters\\ValueFormatter<\/code> interface.<\/p>\n<ul>\n<li><code>GeoCoordinateFormatter<\/code> \u2013 Formats a LatLongValue into float, decimal minute, decimal degree or degree minute second notation. Both directional and non-directional notation are supported. Directional labels, latitude-longitude separator and precision can be specified.<\/li>\n<li><code>GlobeCoordinateFormatter<\/code> \u2013 Formats a GlobeCoordinateValue.<\/li>\n<\/ul>\n<h4><a href=\"https:\/\/github.com\/DataValues\/Geo#parsers\" target=\"_blank\" name=\"parsers\"><\/a>Parsers<\/h4>\n<p>These turn string representations into value objects. They all implement the <code>ValueParsers\\ValueParser<\/code> interface.<\/p>\n<p>Simple parsers:<\/p>\n<ul>\n<li><code>DdCoordinateParser<\/code> \u2013 Parses decimal degree coordinates into LatLongValue objects.<\/li>\n<li><code>DmCoordinateParser<\/code> \u2013 Parses decimal minute coordinates into LatLongValue objects.<\/li>\n<li><code>DmsCoordinateParser<\/code> \u2013 Parses degree minute second coordinates into LatLongValue objects.<\/li>\n<li><code>FloatCoordinateParser<\/code> \u2013 Parses float coordinates into LatLongValue objects.<\/li>\n<\/ul>\n<p>Composite parsers:<\/p>\n<ul>\n<li><code>GeoCoordinateParser<\/code> \u2013 Facade for DdCoordinateParser, DmCoordinateParser, DmsCoordinateParser and FloatCoordinateParser. Parses a coordinate in any of the notations supported by these parsers into a LatLongValue object. Both directional and non-directional notation are supported. Directional labels and the latitude-longitude separator can be specified.<\/li>\n<li><code>GlobeCoordinateParser<\/code> \u2013 Parses coordinates into GlobeCoordinateValue objects.<\/li>\n<\/ul>\n<p><strong>Historical perspective<\/strong><\/p>\n<p>In 2009 I wrote <a href=\"https:\/\/github.com\/JeroenDeDauw\/Maps\" target=\"_blank\">the Maps extension<\/a>. It was initially in part based on the Semantic Layers extension, from which I stole the coordinate parsing code. Or perhaps I stole it from Semantic Google Maps, I can\u2019t remember. The important part is that I stole it from somewhere. I ended up rewriting big parts of the extension rather frequently, as <a href=\"http:\/\/www.yaronkoren.com\/\" target=\"_blank\">Yaron Koren<\/a> can attest to. This was to try out various things and solve certain design issues. (Of course, since I did not really have an idea of software design back then, I ended up trading one set of issues for another, without consistently moving in the good direction.) The parsing and formatting of coordinates was the one part that remained untouched for a long time, as I found it rather scary.<\/p>\n<p>At some point I did end up rewriting it all, since some modifications needed to be made. And so <a href=\"https:\/\/github.com\/JeroenDeDauw\/Maps\/blob\/2.0.x\/includes\/Maps_CoordinateParser.php\" target=\"_blank\">MapsCoordinateParser<\/a> was born. This lovely \u201cclass\u201d was fully static, responsible for everything related to coordinate parsing, which I figured included formatting, validation and even geocoding *shiver*.<\/p>\n<p>The first tests I ever wrote where for this class. I had read about this testing thing somewhere and decided to <a href=\"https:\/\/github.com\/JeroenDeDauw\/Maps\/blob\/2.0.x\/tests\/phpunit\/MapsCoordinateParserTest.php\" target=\"_blank\">give it a try<\/a> on this code. Unsurprisingly I got the impression that writing tests is rather hard, and not worth the effort to do for all code. It took quite some time before I tried the testing thing again and learned about how to do it right.<\/p>\n<p>About a year ago, I started working on the concept of creating dedicated value objects, parsers and formatters, that could then be reused by different extensions. One of the initial use cases for this was the coordinate parsing code of Maps, which I wanted to share with <a href=\"https:\/\/www.mediawiki.org\/wiki\/Extension:Validator\" target=\"_blank\">the Validator extension<\/a>. This would then allow for having parameters of a \u201cgeographical coordinate\u201d type.<\/p>\n<p>The result of this work was a fresh set of code somewhat based on the code from Maps. Unlike that old code, this was created via <a href=\"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\" target=\"_blank\">Test Driven Development<\/a>, so has lots of tests. By doing this I found a few bugs in the old Maps code that have been there for years. The new code also correctly separates concerns, avoids tight coupling, enables <a href=\"https:\/\/en.wikipedia.org\/wiki\/Inversion_of_control\" target=\"_blank\">inversion of control<\/a> and does not lead to global state. One big step forward.<\/p>\n<p><strong>Current status and future<\/strong><\/p>\n<p>The Maps and Validator extensions now both make use of this new library. <a href=\"https:\/\/www.mediawiki.org\/wiki\/Wikibase\" target=\"_blank\">Wikibase<\/a>, the <a href=\"https:\/\/wikidata.org\/\" target=\"_blank\">Wikidata<\/a> software, also makes use of it, though right now it is still using an older version of DataValues in which the Geo library does not stand on its own. <a href=\"https:\/\/semantic-mediawiki.org\/\" target=\"_blank\">Semantic MediaWiki<\/a> is a potential user of it as well. Making use of DataValues Geo would fall under the general item of <a href=\"https:\/\/semantic-mediawiki.org\/wiki\/Roadmap#Make_use_of_DataValues_library\" target=\"_blank\">utilizing the DataValues set of libraries<\/a>.<\/p>\n<p>Of course usage is not restricted to MediaWiki related code, as the library is not dependent, on or even knows about, MediaWiki. I thus hope it is of use to many other people as well!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019m happy to announce the release of DataValues Geo 0.1.1. DataValues Geo is a library containing value objects to represent&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[307,308,155,215,311,227,228,272,305],"class_list":["post-1162","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-datavalues","tag-geo","tag-maps","tag-refactoring","tag-release","tag-semantic-maps","tag-semantic-mediawiki","tag-validator","tag-wikidata"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DataValues Geo 0.1.1 released - Blog of Jeroen De Dauw<\/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:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DataValues Geo 0.1.1 released - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"I\u2019m happy to announce the release of DataValues Geo 0.1.1. DataValues Geo is a library containing value objects to represent&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2013-12-01T21:13:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-03-17T22:22:20+00:00\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\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:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"DataValues Geo 0.1.1 released\",\"datePublished\":\"2013-12-01T21:13:44+00:00\",\"dateModified\":\"2014-03-17T22:22:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/\"},\"wordCount\":744,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"keywords\":[\"DataValues\",\"Geo\",\"Maps\",\"Refactoring\",\"Release\",\"Semantic Maps\",\"Semantic MediaWiki\",\"Validator\",\"wikidata\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/\",\"name\":\"DataValues Geo 0.1.1 released - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"datePublished\":\"2013-12-01T21:13:44+00:00\",\"dateModified\":\"2014-03-17T22:22:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/01\\\/datavalues-geo-0-1-1-released\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DataValues Geo 0.1.1 released\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jeroendedauw\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DataValues Geo 0.1.1 released - Blog of Jeroen De Dauw","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:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/","og_locale":"en_US","og_type":"article","og_title":"DataValues Geo 0.1.1 released - Blog of Jeroen De Dauw","og_description":"I\u2019m happy to announce the release of DataValues Geo 0.1.1. DataValues Geo is a library containing value objects to represent&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2013-12-01T21:13:44+00:00","article_modified_time":"2014-03-17T22:22:20+00:00","author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"DataValues Geo 0.1.1 released","datePublished":"2013-12-01T21:13:44+00:00","dateModified":"2014-03-17T22:22:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/"},"wordCount":744,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"keywords":["DataValues","Geo","Maps","Refactoring","Release","Semantic Maps","Semantic MediaWiki","Validator","wikidata"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/","url":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/","name":"DataValues Geo 0.1.1 released - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"datePublished":"2013-12-01T21:13:44+00:00","dateModified":"2014-03-17T22:22:20+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/01\/datavalues-geo-0-1-1-released\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"DataValues Geo 0.1.1 released"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-iK","jetpack-related-posts":[{"id":1151,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/24\/datavalues-library\/","url_meta":{"origin":1162,"position":0},"title":"DataValues library","author":"Jeroen","date":"2013-11-24","format":false,"excerpt":"Last week I released the first version of the DataValues library. This blog post serves as an introduction to that library, explaining the motivations behind it, and providing a historical context. (Originally posted on November 24, 2013) A bit over a year ago, I wrote down a basic strategic outline\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":816,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/05\/04\/geographical-coordinates-semantic-datatype\/","url_meta":{"origin":1162,"position":1},"title":"Geographical coordinates semantic datatype","author":"Jeroen","date":"2010-05-04","format":false,"excerpt":"One of the big changes in the upcoming 0.6 release of Semantic Maps will be the from the ground up rewritten semantic datatype for Geographical coordinates. Although the changes themselves do not directly add any value for the user, they enable some pretty neat improvements to existing features, and the\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Semantic Maps 0.6 coordinates database table","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/05\/SemanticMaps0.6coordinateStorage.gif?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":779,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/04\/03\/maps-and-semantic-maps-0-6-alpha-1\/","url_meta":{"origin":1162,"position":2},"title":"Maps and Semantic Maps 0.6 &#8211; alpha 1","author":"Jeroen","date":"2010-04-03","format":false,"excerpt":"During the past two weeks I've been putting some effort in making some big changes to the source of Maps and Semantic Maps, and adding some awesome new features. Although not every to-do for the 0.6 release has been completed, I've made an early alpha version available which allows you\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Maps shwoing an OpenLayers map with Google Maps layer of New York","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/04\/MapsOpenLayersNewYork.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/04\/MapsOpenLayersNewYork.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/04\/MapsOpenLayersNewYork.gif?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":840,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/05\/31\/maps-and-semantic-maps-0-6-released\/","url_meta":{"origin":1162,"position":3},"title":"Maps and Semantic Maps 0.6 released","author":"Jeroen","date":"2010-05-31","format":false,"excerpt":"Maps and Semantic Maps 0.6 are now available for download. Maps 0.6 requires Validator 0.3, which is included in the release distribution, and can also be found on SVN. Semantic Maps 0.6 requires Maps 0.6, Validator 0.3 and Semantic MediaWiki 1.5.1 or above. See the download page for full dependency\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":870,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/08\/maps-and-semantic-maps-0-6-4-released\/","url_meta":{"origin":1162,"position":4},"title":"Maps and Semantic Maps 0.6.4 released","author":"Jeroen","date":"2010-07-08","format":false,"excerpt":"Maps and Semantic Maps 0.6.4 are now available for download. This release contains several new features, amongst which basic KML support for Google Maps, a new OSM service implementation and re-added service links support to the Geographical Coordinates data-type in Semantic Maps. Everyone running 0.6.2 or older is advised to\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Semantic Maps 0.6.4 dependencies","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/Semantic-Maps-0.6.4-dependencies.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/Semantic-Maps-0.6.4-dependencies.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/Semantic-Maps-0.6.4-dependencies.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":734,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/03\/02\/maps-and-semantic-maps-0-5-4-released\/","url_meta":{"origin":1162,"position":5},"title":"Maps and Semantic Maps 0.5.4 released!","author":"Jeroen","date":"2010-03-02","format":false,"excerpt":"Yesterday I released Maps and Semantic Maps 0.5.4. This is a minor update which mainly brings additional stability and security to the 0.5.x branch. It contains several bug fixes, a few code improvements and some security fixes. Check out the Maps change log and Semantic Maps change log. The only\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Semantic Maps","src":"http:\/\/upload.wikimedia.org\/wikipedia\/mediawiki\/9\/99\/SemanticMaps.png","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=1162"}],"version-history":[{"count":2,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1162\/revisions"}],"predecessor-version":[{"id":1258,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1162\/revisions\/1258"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=1162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=1162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=1162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}