{"id":1165,"date":"2013-12-23T22:15:00","date_gmt":"2013-12-23T21:15:00","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=1165"},"modified":"2014-03-17T23:22:09","modified_gmt":"2014-03-17T22:22:09","slug":"wikibase-datamodel-released","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/","title":{"rendered":"Wikibase DataModel released!"},"content":{"rendered":"<div id=\"pN7RmhDXItdrT10z52+dK7YPKS3O1B0IIL9sfNM3k3w=_14320fc8ac7:1e7078f:d5082bca_entryContent\" itemprop=\"description\">\n<p>I\u2019m happy to announce the 0.6 release of <a href=\"https:\/\/github.com\/wmde\/WikibaseDataModel\" target=\"_blank\">Wikibase DataModel<\/a>. This is the first real release of this component.<\/p>\n<p><strong>DataModel?<\/strong><\/p>\n<p>Wikibase is the software behind Wikidata.org. At its core, this software is about describing entities. Entities are collections of claims, which can have qualifiers, references and values of various different types. How this all fits together is described in the <a href=\"https:\/\/meta.wikimedia.org\/wiki\/Wikidata\/Data_model\" target=\"_blank\">DataModel document<\/a> written by <a href=\"http:\/\/korrekt.org\/\" target=\"_blank\">Markus<\/a> and <a href=\"http:\/\/simia.net\/wiki\/Denny\" target=\"_blank\">Denny<\/a> at the start of the project. The Wikibase DataModel component contains (PHP) domain objects representing entities and their various parts, as well as associated domain logic.<\/p>\n<p><strong>A little history<\/strong><\/p>\n<p>At the start of the Wikidata project, very little thought was put into creating architectural boundaries and components. As a result, we ended up with all code being in one big repo. In this little distinction between application and domain logic was made, and dependencies going from domain layer to data access and presentation layers. Much like what is done in MediaWiki, though luckily on a smaller scale. This is also known as the \u201c<a href=\"https:\/\/en.wikipedia.org\/wiki\/Big_ball_of_mud\" target=\"_blank\">big ball of mud<\/a>\u201d pattern. Needless to say, this causes many many problems, one of which is inseparability. (Inseparability is a code smell that means one cannot extract the code doing one particular task from the larger body of code it resides in.)<\/p>\n<p>It quickly became clear there where a lot of places where the DataModel related code would be very useful. People writing tools dealing with the data, such as (web API) bot authors and people analyzing dumps, very often need a way to represent the entities they are dealing with. It\u2019s silly for every user to re-implement this functionality, which ends up being done in many different manners, most of which will be incorrect to at least some extend. Then there is not only the initial cost of creating this \u2013 one also needs to keep it updated as the Wikibase software evolves. Take for instance the deserialization process of the web API format from the Wikibase software. Both authors need to write some code to interpret this format. If on the other hand they can use deserilaizers from a shared library, they can immediately get to the actual work they want to do, and have their code isolated from changes to the web API format. (Of course they can achieve this isolation as well without a shared library, though I have yet to see a bot author bother to do this.) So, lots of motivation to make this code reusable.<\/p>\n<p>For this and many architectural reasons (which I will not describe here without making this post way TL;DR) the Wikibase DataModel code was the first to be pulled from the big Wikibase blob. The first step was to stuff all the obviously data model related classes with application independent code into its own component. This happened over half a year back. Initially this component still had a lot of binding to things it really should not depend on, such as MediaWiki and Wikibase Repo\/Client. This was gradually solved over time, and several months ago a point was reached where it was usable as library. Meaning that it no longer depended on any framework and could thus be reused in non-Wikibase contexts. Some lingering bad dependencies remained though, resulting in certain code that should not be used from non-Wikibase context, as it would else fatal. Only last week the last remaining technical debt in this department got solved.<\/p>\n<p><strong>This release<\/strong><\/p>\n<p>So this release is the first one really ready for third party usage \\o\/<\/p>\n<p>It is also the first one that got tagged at a very specific point. The intention is from now on to do releases on sensible points quickly after changes and additions where made. And those changes will now be documented in <a href=\"https:\/\/github.com\/wmde\/WikibaseDataModel\/blob\/master\/RELEASE-NOTES.md\" target=\"_blank\">the release notes<\/a>, so users of the library know what to watch out for when upgrading.<\/p>\n<p>Another nice improvement included in this releases is full <a href=\"https:\/\/github.com\/php-fig\/fig-standards\/blob\/master\/accepted\/PSR-0.md\" target=\"_blank\">PSR-0<\/a> compliance. All Wikibase classes used to be directly in the Wikibase namespace. All classes of the DataModel are now in Wikibase\\DataModel or sub namespaces thereof. Aliases are in place to retain compatibility with references to the older class names users might have.<\/p>\n<p>Yet another first is that this release now depends only on stable releases of its dependencies. Those dependencies include the <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Diff\" target=\"_blank\">Diff library<\/a>, as well as several of the <a href=\"https:\/\/github.com\/DataValues\" target=\"_blank\">DataValue components<\/a>. As a user of the library you do not really have to care much about this, since the dependencies are managed via Composer. The package name is <a href=\"https:\/\/packagist.org\/packages\/wikibase\/data-model\" target=\"_blank\">wikibase\/data-model<\/a>, which you can include in your project. And when developing on DataModel itself, you can run composer update in its root directory (this is done automatically if you run the PHPUnit tests).<\/p>\n<p>I hope people building on top of our awesome platform are helped out a lot by this library. I\u2019ll be putting in more work into making other application independent parts of our code reusable, so expect more such goodness in the near future. And as always, contributions are definitely welcome. You can create pull requests against <a href=\"https:\/\/github.com\/wmde\/WikibaseDataModel\" target=\"_blank\">the repo on GitHub<\/a> or submit changes to gerrit, against the mediawiki-extensions-WikibaseDataModel project. If you have any questions, feel free to poke me or one of my colleagues on IRC at #wikidata <a href=\"http:\/\/webchat.freenode.net\/\" target=\"_blank\">on Freenode<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019m happy to announce the 0.6 release of Wikibase DataModel. This is the first real release of this component. DataModel?&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":[67,181,195,215,311,316,317,318,305],"class_list":["post-1165","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-component","tag-open-source","tag-php","tag-refactoring","tag-release","tag-software-design","tag-wikibase","tag-wikibase-datamodel","tag-wikidata"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wikibase DataModel 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\/23\/wikibase-datamodel-released\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wikibase DataModel released! - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"I\u2019m happy to announce the 0.6 release of Wikibase DataModel. This is the first real release of this component. DataModel?&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2013-12-23T21:15:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-03-17T22:22:09+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\\\/23\\\/wikibase-datamodel-released\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"Wikibase DataModel released!\",\"datePublished\":\"2013-12-23T21:15:00+00:00\",\"dateModified\":\"2014-03-17T22:22:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/\"},\"wordCount\":884,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"keywords\":[\"Component\",\"Open Source\",\"PHP\",\"Refactoring\",\"Release\",\"Software design\",\"Wikibase\",\"Wikibase DataModel\",\"wikidata\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/\",\"name\":\"Wikibase DataModel released! - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"datePublished\":\"2013-12-23T21:15:00+00:00\",\"dateModified\":\"2014-03-17T22:22:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2013\\\/12\\\/23\\\/wikibase-datamodel-released\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wikibase DataModel 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":"Wikibase DataModel 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\/23\/wikibase-datamodel-released\/","og_locale":"en_US","og_type":"article","og_title":"Wikibase DataModel released! - Blog of Jeroen De Dauw","og_description":"I\u2019m happy to announce the 0.6 release of Wikibase DataModel. This is the first real release of this component. DataModel?&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2013-12-23T21:15:00+00:00","article_modified_time":"2014-03-17T22:22:09+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\/23\/wikibase-datamodel-released\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"Wikibase DataModel released!","datePublished":"2013-12-23T21:15:00+00:00","dateModified":"2014-03-17T22:22:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/"},"wordCount":884,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"keywords":["Component","Open Source","PHP","Refactoring","Release","Software design","Wikibase","Wikibase DataModel","wikidata"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/","url":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/","name":"Wikibase DataModel released! - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"datePublished":"2013-12-23T21:15:00+00:00","dateModified":"2014-03-17T22:22:09+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/23\/wikibase-datamodel-released\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"Wikibase DataModel 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-iN","jetpack-related-posts":[{"id":1401,"url":"https:\/\/www.entropywins.wtf\/blog\/2014\/09\/02\/wikibase-datamodel-1-0\/","url_meta":{"origin":1165,"position":0},"title":"Wikibase DataModel 1.0","author":"Jeroen","date":"2014-09-02","format":false,"excerpt":"I'm happy to announce the 1.0 release of Wikibase DataModel.\u00a0Wikibase DataModel is the canonical PHP implementation of the Data Model at the heart of the Wikibase software. This is a big release which has been some time in the making, even though many additions have been split of and included\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":1453,"url":"https:\/\/www.entropywins.wtf\/blog\/2015\/08\/11\/wikibase-datamodel-services\/","url_meta":{"origin":1165,"position":1},"title":"Wikibase DataModel Services","author":"Jeroen","date":"2015-08-11","format":false,"excerpt":"I'm happy to announce the immediate availability of a new Wikibase library: Wikibase DataModel Services (which I'll in this blog post refer to as DMS). Rationale behind the library The main motivation for introducing this new library is to reduce technical debt and draw more solid architectural boundaries in the\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":1306,"url":"https:\/\/www.entropywins.wtf\/blog\/2014\/04\/14\/wikibase-datamodel-0-7-3-released\/","url_meta":{"origin":1165,"position":2},"title":"Wikibase DataModel 0.7.3 released","author":"Jeroen","date":"2014-04-14","format":false,"excerpt":"I am happy to announce the 0.7.3 release of Wikibase DataModel. Wikibase DataModel is the canonical PHP implementation of the Data Model at the heart of the Wikibase software. It is primarily used by the Wikibase MediaWiki extensions, though has no dependencies whatsoever on these or on MediaWiki itself. This\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2014\/04\/dm-complexity.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1327,"url":"https:\/\/www.entropywins.wtf\/blog\/2014\/04\/30\/wikibase-datamodel-entity-v2\/","url_meta":{"origin":1165,"position":3},"title":"Wikibase DataModel: Entity v2","author":"Jeroen","date":"2014-04-30","format":false,"excerpt":"In a recent blog post I introduced the new Term classes introduced in Wikibase DataModel 0.7.3. It also outlined plans for making some big changes to the Entity class and it's derivatives. We have now taken the most difficult step in the process, which is already resulting in much nicer\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"dm-complexity","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2014\/04\/dm-complexity.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1484,"url":"https:\/\/www.entropywins.wtf\/blog\/2015\/11\/08\/wikidata-wikibase-json-dump-reader\/","url_meta":{"origin":1165,"position":4},"title":"Wikidata\/Wikibase Json Dump Reader","author":"Jeroen","date":"2015-11-08","format":false,"excerpt":"I've created a small PHP library to read from, and iterate through, Wikidata\/Wikibase JSON dumps. Wikidata is the free knowledge base that anyone can edit, and serves as a central data repository for Wikipedia and associated projects. Wikibase is a set of free open source software that powers Wikidata. You\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":1524,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/25\/replicator-a-cli-tool-for-wikidata\/","url_meta":{"origin":1165,"position":5},"title":"Replicator: Wikidata import tool","author":"Jeroen","date":"2016-01-25","format":false,"excerpt":"I'm happy to announce the first release of Replicator, a CLI tool for importing entities from Wikidata. Replicator was created for importing data from Wikidata into the QueryR REST API persistence. It has two big conceptual components: getting entities from a specified source, and then doing something with said entities.\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":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1165","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=1165"}],"version-history":[{"count":2,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1165\/revisions"}],"predecessor-version":[{"id":1257,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1165\/revisions\/1257"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=1165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=1165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=1165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}