WikidataBuilder has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/220729

Change subject: New Wikidata Build - 2015-06-25T10:00:01+0000
......................................................................

New Wikidata Build - 2015-06-25T10:00:01+0000

Change-Id: I5e8658e804c7ca652a1cf66df93e7aae5a76f7a8
---
M composer.lock
A extensions/Wikibase/client/i18n/ase.json
M extensions/Wikibase/client/i18n/en.json
M extensions/Wikibase/client/i18n/luz.json
M extensions/Wikibase/client/i18n/mk.json
M 
extensions/Wikibase/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
M extensions/Wikibase/client/includes/specials/SpecialUnconnectedPages.php
M extensions/Wikibase/client/maintenance/populateEntityUsage.php
A extensions/Wikibase/lib/i18n/ase.json
M extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
M extensions/Wikibase/repo/Wikibase.hooks.php
A extensions/Wikibase/repo/i18n/ase.json
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpFactoryProvider.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpRemoveStatement.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatement.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
M extensions/Wikibase/repo/includes/ChangeOp/ClaimChangeOpFactory.php
M extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php
M extensions/Wikibase/repo/includes/EntityParserOutputGeneratorFactory.php
M extensions/Wikibase/repo/includes/WikibaseRepo.php
M extensions/Wikibase/repo/includes/api/CreateClaim.php
M extensions/Wikibase/repo/includes/api/GetClaims.php
M extensions/Wikibase/repo/includes/api/ModifyClaim.php
M extensions/Wikibase/repo/includes/rdf/RdfVocabulary.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpStatementTest.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/EntityParserOutputGeneratorTest.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/WikibaseRepoTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/rdf/RdfBuilderTestData.php
M 
extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
M vendor/composer/installed.json
39 files changed, 391 insertions(+), 294 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/29/220729/1

diff --git a/composer.lock b/composer.lock
index 04f7ce4..b914fc8 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1326,12 +1326,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "3581172e065795559f80d7cebf4291123dd30018"
+                "reference": "df4d4e61295461858bd8c07928e2eaf7207b3910"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3581172e065795559f80d7cebf4291123dd30018";,
-                "reference": "3581172e065795559f80d7cebf4291123dd30018",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/df4d4e61295461858bd8c07928e2eaf7207b3910";,
+                "reference": "df4d4e61295461858bd8c07928e2eaf7207b3910",
                 "shasum": ""
             },
             "require": {
@@ -1396,7 +1396,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2015-06-24 09:22:11"
+            "time": "2015-06-25 07:24:51"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Wikibase/client/i18n/ase.json 
b/extensions/Wikibase/client/i18n/ase.json
new file mode 100644
index 0000000..5ce72b2
--- /dev/null
+++ b/extensions/Wikibase/client/i18n/ase.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Icemandeaf"
+               ]
+       },
+       "wikibase-editlinks": 
"M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 
M521x525S1ce10499x476S1ce48479x476S20a00491x510",
+       "wikibase-rc-hide-wikidata": "$1 {{WBREPONAME}}",
+       "wikibase-rc-hide-wikidata-show": 
"M521x531S10012491x516S15a18479x503S26620486x469",
+       "wikibase-rc-wikibase-edit-letter": "M508x515S10120492x485",
+       "wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} 
M521x532S10609498x496S10621487x512S21100500x483S2df20479x468"
+}
diff --git a/extensions/Wikibase/client/i18n/en.json 
b/extensions/Wikibase/client/i18n/en.json
index 7c06e5a..2bb6798 100644
--- a/extensions/Wikibase/client/i18n/en.json
+++ b/extensions/Wikibase/client/i18n/en.json
@@ -63,7 +63,7 @@
        "wikibase-error-serialize-error": "Failed to serialize data.",
        "wikibase-error-invalid-entity-id": "The ID entered is unknown to the 
system. Please use a valid entity ID.",
        "unconnectedpages": "Pages not connected to items",
-       "unconnectedpages-summary": "This page lists pages with no connected 
item. The list is limited to namespaces that support connected items.",
+       "unconnectedpages-summary": "This page lists pages with no connected 
data item (in namespaces that support connected items). The list is sorted by 
descending page ID, so that newer pages are listed first.",
        "wikibase-unconnectedpages-page": "Start result list with page:",
        "wikibase-unconnectedpages-submit": "Go",
        "wikibase-unconnectedpages-invalid-language": "\"$1\" is not a valid 
language code.",
diff --git a/extensions/Wikibase/client/i18n/luz.json 
b/extensions/Wikibase/client/i18n/luz.json
index ed46b6e..4d6319d 100644
--- a/extensions/Wikibase/client/i18n/luz.json
+++ b/extensions/Wikibase/client/i18n/luz.json
@@ -4,11 +4,11 @@
                        "علی ساکی لرستانی"
                ]
        },
-       "tooltip-t-wikibase": "لینک متصل به داده آیتم مخزن",
-       "wikibase-comment-update": "{{WBREPONAME}} مورد تغییر وابیده",
-       "wikibase-dataitem": "{{WBREPONAME}} مورد",
-       "wikibase-editlinks": "اصلاح لینک یل",
-       "wikibase-editlinkstitle": "اصلاح لینک یل زوون یل بین المللی",
+       "tooltip-t-wikibase": "لینک متصل ۉھ دادھ مۉرد مخزن",
+       "wikibase-comment-update": "{{WBREPONAME}} مۉرد تغییر ۉابیدھ",
+       "wikibase-dataitem": "{{WBREPONAME}} مۉرد",
+       "wikibase-editlinks": "اصلاح لینکل",
+       "wikibase-editlinkstitle": "اصلاح لینکل زۉۉنل بین المللی",
        "wikibase-rc-hide-wikidata": "$1 {{WBREPONAME}}",
        "wikibase-rc-hide-wikidata-hide": "قائم کردن",
        "wikibase-rc-hide-wikidata-show": "نشو دائن",
diff --git a/extensions/Wikibase/client/i18n/mk.json 
b/extensions/Wikibase/client/i18n/mk.json
index e15c670..9b4a30a 100644
--- a/extensions/Wikibase/client/i18n/mk.json
+++ b/extensions/Wikibase/client/i18n/mk.json
@@ -57,8 +57,8 @@
        "wikibase-error-deserialize-error": "Не успеав да ги децентрализирам 
податоците",
        "wikibase-error-serialize-error": "Не успеав да ги серијализирам 
податоците",
        "wikibase-error-invalid-entity-id": "Назнаката не му е позната на 
системот. Внесете важечка назнака.",
-       "special-unconnectedpages": "Страници што не се врзани со предмети",
-       "wikibase-unconnectedpages-legend": "Можности за неврзани страници",
+       "unconnectedpages": "Страници што не се врзани со предмети",
+       "unconnectedpages-summary": "Оваа страница без сврзан предмет. Списокот 
е ограничен на именските простори што поддржуваат сврзани предмети.",
        "wikibase-unconnectedpages-page": "Почни го списокот на резултати со 
страницата:",
        "wikibase-unconnectedpages-submit": "Оди",
        "wikibase-unconnectedpages-invalid-language": "„$1“ не претставува 
важечки јазичен код.",
diff --git 
a/extensions/Wikibase/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
 
b/extensions/Wikibase/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
index b3c8efd..75bddd4 100644
--- 
a/extensions/Wikibase/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
+++ 
b/extensions/Wikibase/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
@@ -176,7 +176,7 @@
                );
 
                $snakDeserializer = 
$wikibaseClient->getDeserializerFactory()->newSnakDeserializer();
-               $snaksDeserializer = 
$wikibaseClient->getDeserializerFactory()->newSnaksDeserializer();
+               $snaksDeserializer = 
$wikibaseClient->getDeserializerFactory()->newSnakListDeserializer();
 
                return new SnakSerializationRenderer(
                        $snakFormatter,
diff --git 
a/extensions/Wikibase/client/includes/specials/SpecialUnconnectedPages.php 
b/extensions/Wikibase/client/includes/specials/SpecialUnconnectedPages.php
index c27fa82..95c5db6 100644
--- a/extensions/Wikibase/client/includes/specials/SpecialUnconnectedPages.php
+++ b/extensions/Wikibase/client/includes/specials/SpecialUnconnectedPages.php
@@ -120,7 +120,6 @@
                        'tables' => array(
                                'page',
                                'page_props',
-                               'langlinks'
                        ),
                        'fields' => array(
                                'value' => 'page_id',
@@ -129,38 +128,15 @@
                                'page_id',
                                'page_len',
                                'page_is_redirect',
-                               'page_num_iwlinks' => 'count(ll_from)'
+                               'page_num_iwlinks' => '0', // placeholder, 
we'll get this from page_props in the future
                        ),
                        'conds' => $conds,
-                       'options' => array(
-                               'GROUP BY' => 'page_namespace, page_title',
-                               'ORDER BY' => 'page_namespace, page_title',
-                               'USE INDEX' => array( 'page' => 'name_title' )
-                       ),
+                       'options' => array(), // sorting is determined 
getOrderFields(), which returns array( 'value' ) per default.
                        'join_conds' => array(
-                               // FIXME: Should 'wikibase_item' really be 
hardcoded here?
+                               // TODO: also get explicit_langlink_count from 
page_props once that is populated. Could even filter or sort by it via 
pp_sortkey.
                                'page_props' => array( 'LEFT JOIN', array( 
'page_id = pp_page', "pp_propname = 'wikibase_item'" ) ),
-                               'langlinks' => array( 'LEFT JOIN', 'll_from = 
page_id' )
                        )
                );
-       }
-
-       /**
-        * @see QueryPage::getOrderFields
-        *
-        * @return string[]
-        */
-       function getOrderFields() {
-               return array( 'value' );
-       }
-
-       /**
-        * @see QueryPage::sortDescending
-        *
-        * @return bool Always false for this page.
-        */
-       function sortDescending() {
-               return false;
        }
 
        /**
diff --git a/extensions/Wikibase/client/maintenance/populateEntityUsage.php 
b/extensions/Wikibase/client/maintenance/populateEntityUsage.php
index 745dfcc..7d41e0f 100644
--- a/extensions/Wikibase/client/maintenance/populateEntityUsage.php
+++ b/extensions/Wikibase/client/maintenance/populateEntityUsage.php
@@ -4,7 +4,6 @@
 
 use LoggedUpdateMaintenance;
 use Wikibase\Client\Usage\Sql\EntityUsageTableBuilder;
-use Wikibase\Client\Usage\Sql\SqlUsageTracker;
 use Wikibase\Client\WikibaseClient;
 use Wikibase\Lib\Reporting\ObservableMessageReporter;
 use Wikibase\Lib\Reporting\ReportingExceptionHandler;
diff --git a/extensions/Wikibase/lib/i18n/ase.json 
b/extensions/Wikibase/lib/i18n/ase.json
new file mode 100644
index 0000000..c4ed918
--- /dev/null
+++ b/extensions/Wikibase/lib/i18n/ase.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Icemandeaf"
+               ]
+       },
+       "wikibase-sitelinks-wikipedia": 
"M518x616S18620496x384S19220497x417S14020483x440S19220497x474S14051484x497S14a20497x525S10120497x544S19220497x578S1f720492x601"
+}
diff --git a/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php 
b/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
index 6ee34e3..ed07232 100644
--- a/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
+++ b/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
@@ -26,16 +26,13 @@
         */
        public abstract function getTermIndex();
 
-       public function testGetMatchingIDs() {
-               $lookup = $this->getTermIndex();
-
+       public function provideGetMatchingIds() {
                $id0 = new ItemId( 'Q10' );
                $item0 = new Item( $id0 );
 
                $item0->setLabel( 'en', 'foobar' );
                $item0->setLabel( 'de', 'foobar' );
                $item0->setLabel( 'nl', 'baz' );
-               $lookup->saveTermsOfEntity( $item0 );
 
                $item1 = $item0->copy();
                $id1 = new ItemId( 'Q11' );
@@ -43,26 +40,39 @@
 
                $item1->setLabel( 'nl', 'o_O' );
                $item1->setDescription( 'en', 'foo bar baz' );
-               $lookup->saveTermsOfEntity( $item1 );
 
-               $foobar = new TermIndexEntry( array( 'termType' => 
TermIndexEntry::TYPE_LABEL, 'termText' => 'foobar' ) );
-               $bazNl= new TermIndexEntry( array( 'termType' => 
TermIndexEntry::TYPE_LABEL, 'termText' => 'baz', 'termLanguage' => 'nl' ) );
-               $froggerNl = new TermIndexEntry( array( 'termType' => 
TermIndexEntry::TYPE_LABEL, 'termText' => 'o_O', 'termLanguage' => 'nl' ) );
+               return array(
+                       array(
+                               array( $item0, $item1 ),
+                               array( new TermIndexEntry( array( 'termType' => 
TermIndexEntry::TYPE_LABEL, 'termText' => 'foobar' ) ) ),
+                               array( $id0, $id1 ),
+                       ),
+                       array(
+                               array( $item0, $item1 ),
+                               array( new TermIndexEntry( array( 'termType' => 
TermIndexEntry::TYPE_LABEL, 'termText' => 'baz', 'termLanguage' => 'nl' ) ) ),
+                               array( $id0 ),
+                       ),
+                       array(
+                               array( $item0, $item1 ),
+                               array( new TermIndexEntry( array( 'termType' => 
TermIndexEntry::TYPE_LABEL, 'termText' => 'o_O', 'termLanguage' => 'nl' ) ) ),
+                               array( $id1 ),
+                       ),
+               );
+       }
 
-               $ids = $lookup->getMatchingIDs( array( $foobar ), 
Item::ENTITY_TYPE );
+       /**
+        * @dataProvider provideGetMatchingIds
+        */
+       public function testGetMatchingIDs( $items, $terms, $expectedIds ) {
+               $lookup = $this->getTermIndex();
+               foreach( $items as $item ) {
+                       $lookup->saveTermsOfEntity( $item );
+               }
+
+               $ids = $lookup->getMatchingIDs( $terms, Item::ENTITY_TYPE );
                $this->assertInternalType( 'array', $ids );
                $this->assertContainsOnlyInstancesOf( 
'\Wikibase\DataModel\Entity\ItemId', $ids );
-               $this->assertArrayEquals( array( $id0, $id1 ), $ids );
-
-               $ids = $lookup->getMatchingIDs( array( $bazNl ), 
Item::ENTITY_TYPE );
-               $this->assertInternalType( 'array', $ids );
-               $this->assertContainsOnlyInstancesOf( 
'\Wikibase\DataModel\Entity\ItemId', $ids );
-               $this->assertArrayEquals( array( $id0 ), $ids );
-
-               $ids = $lookup->getMatchingIDs( array( $froggerNl ), 
Item::ENTITY_TYPE );
-               $this->assertInternalType( 'array', $ids );
-               $this->assertContainsOnlyInstancesOf( 
'\Wikibase\DataModel\Entity\ItemId', $ids );
-               $this->assertArrayEquals( array( $id1 ), $ids );
+               $this->assertArrayEquals( $expectedIds, $ids );
        }
 
        public function getTermKey( TermIndexEntry $term ) {
diff --git a/extensions/Wikibase/repo/Wikibase.hooks.php 
b/extensions/Wikibase/repo/Wikibase.hooks.php
index b1c2b40..3557c36 100644
--- a/extensions/Wikibase/repo/Wikibase.hooks.php
+++ b/extensions/Wikibase/repo/Wikibase.hooks.php
@@ -897,6 +897,14 @@
                        $out->setProperty( 'wikibase-titletext', $titleText );
                }
 
+               // Array with <link rel="alternate"> tags for the page HEAD.
+               $alternateLinks = $parserOutput->getExtensionData( 
'wikibase-alternate-links' );
+               if ( $alternateLinks !== null ) {
+                       foreach ( $alternateLinks as $link ) {
+                               $out->addLink( $link );
+                       }
+               }
+
                return true;
        }
 
diff --git a/extensions/Wikibase/repo/i18n/ase.json 
b/extensions/Wikibase/repo/i18n/ase.json
new file mode 100644
index 0000000..ed2c936
--- /dev/null
+++ b/extensions/Wikibase/repo/i18n/ase.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Icemandeaf"
+               ]
+       },
+       "wikibase-edit": 
"M521x532S10609498x496S10621487x512S21100500x483S2df20479x468"
+}
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpFactoryProvider.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpFactoryProvider.php
index 2148f01..631c8be 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpFactoryProvider.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpFactoryProvider.php
@@ -3,7 +3,7 @@
 namespace Wikibase\ChangeOp;
 
 use SiteLookup;
-use Wikibase\DataModel\Claim\ClaimGuidParser;
+use Wikibase\DataModel\Statement\StatementGuidParser;
 use Wikibase\Lib\ClaimGuidGenerator;
 use Wikibase\Lib\ClaimGuidValidator;
 use Wikibase\Validators\EntityConstraintProvider;
@@ -36,7 +36,7 @@
        private $guidValidator;
 
        /**
-        * @var ClaimGuidParser
+        * @var StatementGuidParser
         */
        private $guidParser;
 
@@ -59,7 +59,7 @@
         * @param EntityConstraintProvider $constraintProvider
         * @param ClaimGuidGenerator $guidGenerator
         * @param ClaimGuidValidator $guidValidator
-        * @param ClaimGuidParser $guidParser
+        * @param StatementGuidParser $guidParser
         * @param SnakValidator $snakValidator
         * @param TermValidatorFactory $termValidatorFactory
         * @param SiteLookup $siteLookup
@@ -68,7 +68,7 @@
                EntityConstraintProvider $constraintProvider,
                ClaimGuidGenerator $guidGenerator,
                ClaimGuidValidator $guidValidator,
-               ClaimGuidParser $guidParser,
+               StatementGuidParser $guidParser,
                SnakValidator $snakValidator,
                TermValidatorFactory $termValidatorFactory,
                SiteLookup $siteLookup
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
index 8cfa3b8..d28edd1 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
@@ -4,10 +4,10 @@
 
 use InvalidArgumentException;
 use ValueValidators\Result;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Snak\Snak;
 use Wikibase\DataModel\Snak\SnakList;
+use Wikibase\DataModel\Statement\StatementListHolder;
 use Wikibase\Summary;
 use Wikibase\Validators\SnakValidator;
 
@@ -26,7 +26,7 @@
         *
         * @var string
         */
-       protected $claimGuid;
+       protected $statementGuid;
 
        /**
         * @since 0.4
@@ -52,23 +52,23 @@
         *
         * @since 0.4
         *
-        * @param string $claimGuid
+        * @param string $statementGuid
         * @param Snak $snak
         * @param string $snakHash
         * @param SnakValidator $snakValidator
         *
         * @throws InvalidArgumentException
         */
-       public function __construct( $claimGuid, Snak $snak, $snakHash, 
SnakValidator $snakValidator ) {
-               if ( !is_string( $claimGuid ) || $claimGuid === '' ) {
-                       throw new InvalidArgumentException( '$claimGuid needs 
to be a string and must not be empty' );
+       public function __construct( $statementGuid, Snak $snak, $snakHash, 
SnakValidator $snakValidator ) {
+               if ( !is_string( $statementGuid ) || $statementGuid === '' ) {
+                       throw new InvalidArgumentException( '$statementGuid 
needs to be a string and must not be empty' );
                }
 
                if ( !is_string( $snakHash ) ) {
                        throw new InvalidArgumentException( '$snakHash needs to 
be a string' );
                }
 
-               $this->claimGuid = $claimGuid;
+               $this->statementGuid = $statementGuid;
                $this->snak = $snak;
                $this->snakHash = $snakHash;
                $this->snakValidator = $snakValidator;
@@ -80,14 +80,18 @@
         * - the qualifier gets set to $snak when $snakHash and $snak are set
         */
        public function apply( Entity $entity, Summary $summary = null ) {
-               $claims = new Claims( $entity->getClaims() );
-               $claim = $claims->getClaimWithGuid( $this->claimGuid );
-
-               if ( $claim === null ) {
-                       throw new ChangeOpException( "Entity does not have 
claim with GUID $this->claimGuid" );
+               if ( !( $entity instanceof StatementListHolder ) ) {
+                       throw new InvalidArgumentException( '$entity must be a 
StatementListHolder' );
                }
 
-               $qualifiers = $claim->getQualifiers();
+               $statements = $entity->getStatements();
+               $statement = $statements->getFirstStatementWithGuid( 
$this->statementGuid );
+
+               if ( $statement === null ) {
+                       throw new ChangeOpException( "Entity does not have a 
statement with GUID $this->statementGuid" );
+               }
+
+               $qualifiers = $statement->getQualifiers();
 
                if ( $this->snakHash === '' ) {
                        $this->addQualifier( $qualifiers, $summary );
@@ -95,8 +99,8 @@
                        $this->setQualifier( $qualifiers, $summary );
                }
 
-               $claim->setQualifiers( $qualifiers );
-               $entity->setClaims( $claims );
+               $statement->setQualifiers( $qualifiers );
+               $entity->setStatements( $statements );
 
                return true;
        }
@@ -111,7 +115,7 @@
         */
        protected function addQualifier( SnakList $qualifiers, Summary $summary 
= null ) {
                if ( $qualifiers->hasSnak( $this->snak ) ) {
-                       throw new ChangeOpException( 'Claim has already a 
qualifier with hash ' . $this->snak->getHash() );
+                       throw new ChangeOpException( 'The statement has already 
a qualifier with hash ' . $this->snak->getHash() );
                }
                $qualifiers->addSnak( $this->snak );
                //TODO: add the mainsnak as autocomment-arg & change messages
@@ -131,7 +135,7 @@
                        throw new ChangeOpException( "Qualifier with hash 
$this->snakHash does not exist" );
                }
                if ( $qualifiers->hasSnak( $this->snak ) ) {
-                       throw new ChangeOpException( 'Claim has already a 
qualifier with hash ' . $this->snak->getHash() );
+                       throw new ChangeOpException( 'The statement has already 
a qualifier with hash ' . $this->snak->getHash() );
                }
                $qualifiers->removeSnakHash( $this->snakHash );
                $qualifiers->addSnak( $this->snak );
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
index b495312..5d3535c 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
@@ -4,10 +4,10 @@
 
 use InvalidArgumentException;
 use ValueValidators\Result;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Snak\Snak;
 use Wikibase\DataModel\Snak\SnakList;
+use Wikibase\DataModel\Statement\StatementListHolder;
 use Wikibase\Summary;
 
 /**
@@ -24,7 +24,7 @@
         *
         * @var string
         */
-       protected $claimGuid;
+       protected $statementGuid;
 
        /**
         * @since 0.5
@@ -38,21 +38,21 @@
         *
         * @since 0.5
         *
-        * @param string $claimGuid
+        * @param string $statementGuid
         * @param string $snakHash
         *
         * @throws InvalidArgumentException
         */
-       public function __construct( $claimGuid, $snakHash ) {
-               if ( !is_string( $claimGuid ) || $claimGuid === '' ) {
-                       throw new InvalidArgumentException( '$claimGuid needs 
to be a string and must not be empty' );
+       public function __construct( $statementGuid, $snakHash ) {
+               if ( !is_string( $statementGuid ) || $statementGuid === '' ) {
+                       throw new InvalidArgumentException( '$statementGuid 
needs to be a string and must not be empty' );
                }
 
                if ( !is_string( $snakHash ) || $snakHash === ''  ) {
                        throw new InvalidArgumentException( '$snakHash needs to 
be a string and must not be empty' );
                }
 
-               $this->claimGuid = $claimGuid;
+               $this->statementGuid = $statementGuid;
                $this->snakHash = $snakHash;
        }
 
@@ -60,19 +60,23 @@
         * @see ChangeOp::apply()
         */
        public function apply( Entity $entity, Summary $summary = null ) {
-               $claims = new Claims( $entity->getClaims() );
-               $claim = $claims->getClaimWithGuid( $this->claimGuid );
-
-               if ( $claim === null ) {
-                       throw new ChangeOpException( "Entity does not have 
claim with GUID $this->claimGuid" );
+               if ( !( $entity instanceof StatementListHolder ) ) {
+                       throw new InvalidArgumentException( '$entity must be a 
StatementListHolder' );
                }
 
-               $qualifiers = $claim->getQualifiers();
+               $statements = $entity->getStatements();
+               $statement = $statements->getFirstStatementWithGuid( 
$this->statementGuid );
+
+               if ( $statement === null ) {
+                       throw new ChangeOpException( "Entity does not have a 
statement with GUID $this->statementGuid" );
+               }
+
+               $qualifiers = $statement->getQualifiers();
 
                $this->removeQualifier( $qualifiers, $summary );
 
-               $claim->setQualifiers( $qualifiers );
-               $entity->setClaims( $claims );
+               $statement->setQualifiers( $qualifiers );
+               $entity->setStatements( $statements );
 
                return true;
        }
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
index eb38a09..01e02a2 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
@@ -4,12 +4,11 @@
 
 use InvalidArgumentException;
 use ValueValidators\Result;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Reference;
 use Wikibase\DataModel\ReferenceList;
 use Wikibase\DataModel\Snak\Snak;
-use Wikibase\DataModel\Statement\Statement;
+use Wikibase\DataModel\Statement\StatementListHolder;
 use Wikibase\Summary;
 use Wikibase\Validators\SnakValidator;
 
@@ -28,7 +27,7 @@
         *
         * @var string
         */
-       protected $claimGuid;
+       protected $statementGuid;
 
        /**
         * @since 0.4
@@ -61,7 +60,7 @@
         *
         * @since 0.4
         *
-        * @param string $claimGuid
+        * @param string $statementGuid
         * @param Reference $reference
         * @param string $referenceHash (if empty '' a new reference will be 
created)
         * @param SnakValidator $snakValidator
@@ -70,14 +69,14 @@
         * @throws InvalidArgumentException
         */
        public function __construct(
-               $claimGuid,
+               $statementGuid,
                Reference $reference,
                $referenceHash,
                SnakValidator $snakValidator,
                $index = null
        ) {
-               if ( !is_string( $claimGuid ) || $claimGuid === '' ) {
-                       throw new InvalidArgumentException( '$claimGuid needs 
to be a string and must not be empty' );
+               if ( !is_string( $statementGuid ) || $statementGuid === '' ) {
+                       throw new InvalidArgumentException( '$statementGuid 
needs to be a string and must not be empty' );
                }
 
                if ( !is_string( $referenceHash ) ) {
@@ -92,7 +91,7 @@
                        throw new InvalidArgumentException( '$index must be an 
integer or null' );
                }
 
-               $this->claimGuid = $claimGuid;
+               $this->statementGuid = $statementGuid;
                $this->reference = $reference;
                $this->referenceHash = $referenceHash;
                $this->index = $index;
@@ -105,18 +104,18 @@
         * - the reference gets set to $reference when $referenceHash and 
$reference are set
         */
        public function apply( Entity $entity, Summary $summary = null ) {
-               $claims = new Claims( $entity->getClaims() );
-               $claim = $claims->getClaimWithGuid( $this->claimGuid );
-
-               if ( $claim === null ) {
-                       throw new ChangeOpException( "Entity does not have 
claim with GUID $this->claimGuid" );
+               if ( !( $entity instanceof StatementListHolder ) ) {
+                       throw new InvalidArgumentException( '$entity must be a 
StatementListHolder' );
                }
 
-               if ( !( $claim instanceof Statement ) ) {
-                       throw new ChangeOpException( 'The referenced claim is 
not a statement and thus cannot have references' );
+               $statements = $entity->getStatements();
+               $statement = $statements->getFirstStatementWithGuid( 
$this->statementGuid );
+
+               if ( $statement === null ) {
+                       throw new ChangeOpException( "Entity does not have a 
statement with GUID $this->statementGuid" );
                }
 
-               $references = $claim->getReferences();
+               $references = $statement->getReferences();
 
                if ( $this->referenceHash === '' ) {
                        $this->addReference( $references, $summary );
@@ -125,11 +124,11 @@
                }
 
                if ( $summary !== null ) {
-                       $summary->addAutoSummaryArgs( 
$this->getSnakSummaryArgs( $claim->getMainSnak() ) );
+                       $summary->addAutoSummaryArgs( 
$this->getSnakSummaryArgs( $statement->getMainSnak() ) );
                }
 
-               $claim->setReferences( $references );
-               $entity->setClaims( $claims );
+               $statement->setReferences( $references );
+               $entity->setStatements( $statements );
 
                return true;
        }
@@ -145,7 +144,7 @@
        protected function addReference( ReferenceList $references, Summary 
$summary = null ) {
                if ( $references->hasReference( $this->reference ) ) {
                        $hash = $this->reference->getHash();
-                       throw new ChangeOpException( "Claim has already a 
reference with hash $hash" );
+                       throw new ChangeOpException( "The statement has already 
a reference with hash $hash" );
                }
                $references->addReference( $this->reference, $this->index );
                $this->updateSummary( $summary, 'add' );
@@ -173,7 +172,7 @@
                }
 
                if ( $references->hasReference( $this->reference ) && 
$this->index === $currentIndex ) {
-                       throw new ChangeOpException( 'Claim has already a 
reference with hash '
+                       throw new ChangeOpException( 'The statement has already 
a reference with hash '
                        . $this->reference->getHash() . ' and index (' . 
$currentIndex . ') is not changed' );
                }
                $references->removeReferenceHash( $this->referenceHash );
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
index 812729d..b990237 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
@@ -4,11 +4,10 @@
 
 use InvalidArgumentException;
 use ValueValidators\Result;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\ReferenceList;
 use Wikibase\DataModel\Snak\Snak;
-use Wikibase\DataModel\Statement\Statement;
+use Wikibase\DataModel\Statement\StatementListHolder;
 use Wikibase\Summary;
 
 /**
@@ -25,7 +24,7 @@
         *
         * @var string
         */
-       protected $claimGuid;
+       protected $statementGuid;
 
        /**
         * @since 0.5
@@ -39,21 +38,21 @@
         *
         * @since 0.5
         *
-        * @param string $claimGuid
+        * @param string $statementGuid
         * @param string $referenceHash
         *
         * @throws InvalidArgumentException
         */
-       public function __construct( $claimGuid, $referenceHash ) {
-               if ( !is_string( $claimGuid ) || $claimGuid === '' ) {
-                       throw new InvalidArgumentException( '$claimGuid needs 
to be a string and must not be empty' );
+       public function __construct( $statementGuid, $referenceHash ) {
+               if ( !is_string( $statementGuid ) || $statementGuid === '' ) {
+                       throw new InvalidArgumentException( '$statementGuid 
needs to be a string and must not be empty' );
                }
 
                if ( !is_string( $referenceHash ) || $referenceHash === '' ) {
                        throw new InvalidArgumentException( '$referenceHash 
needs to be a string and must not be empty' );
                }
 
-               $this->claimGuid = $claimGuid;
+               $this->statementGuid = $statementGuid;
                $this->referenceHash = $referenceHash;
        }
 
@@ -61,26 +60,27 @@
         * @see ChangeOp::apply()
         */
        public function apply( Entity $entity, Summary $summary = null ) {
-               $claims = new Claims( $entity->getClaims() );
-               $claim = $claims->getClaimWithGuid( $this->claimGuid );
-
-               if ( $claim === null ) {
-                       throw new ChangeOpException( "Entity does not have 
claim with GUID $this->claimGuid" );
+               if ( !( $entity instanceof StatementListHolder ) ) {
+                       throw new InvalidArgumentException( '$entity must be a 
StatementListHolder' );
                }
 
-               if ( !( $claim instanceof Statement ) ) {
-                       throw new ChangeOpException( 'The referenced claim is 
not a statement and thus cannot have references' );
+               $statements = $entity->getStatements();
+               $statement = $statements->getFirstStatementWithGuid( 
$this->statementGuid );
+
+               if ( $statement === null ) {
+                       throw new ChangeOpException( "Entity does not have 
claim with GUID $this->statementGuid" );
                }
 
-               $references = $claim->getReferences();
+               $references = $statement->getReferences();
                $this->removeReference( $references, $summary );
 
                if ( $summary !== null ) {
-                       $summary->addAutoSummaryArgs( 
$this->getSnakSummaryArgs( $claim->getMainSnak() ) );
+                       $summary->addAutoSummaryArgs( 
$this->getSnakSummaryArgs( $statement->getMainSnak() ) );
                }
 
-               $claim->setReferences( $references );
-               $entity->setClaims( $claims );
+               $statement->setReferences( $references );
+               $entity->setStatements( $statements );
+
                return true;
        }
 
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpRemoveStatement.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpRemoveStatement.php
index d1c34d8..6e339ce 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpRemoveStatement.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpRemoveStatement.php
@@ -5,12 +5,9 @@
 use InvalidArgumentException;
 use ValueValidators\Result;
 use Wikibase\DataModel\Entity\Entity;
-use Wikibase\DataModel\Entity\Item;
-use Wikibase\DataModel\Entity\Property;
 use Wikibase\DataModel\Snak\Snak;
-use Wikibase\DataModel\Statement\Statement;
 use Wikibase\DataModel\Statement\StatementList;
-use Wikibase\DataModel\Statement\StatementListProvider;
+use Wikibase\DataModel\Statement\StatementListHolder;
 use Wikibase\Summary;
 
 /**
@@ -62,61 +59,24 @@
         * @return bool
         */
        public function apply( Entity $entity, Summary $summary = null ) {
-               if ( !( $entity instanceof StatementListProvider ) ) {
-                       throw new InvalidArgumentException( '$entity must be a 
StatementListProvider' );
+               if ( !( $entity instanceof StatementListHolder ) ) {
+                       throw new InvalidArgumentException( '$entity must be a 
StatementListHolder' );
                }
 
-               $statements = $this->removeStatement( 
$entity->getStatements()->toArray(), $summary );
-               $this->setStatements( $entity, $statements );
+               $statements = $entity->getStatements();
+               $statement = $statements->getFirstStatementWithGuid( 
$this->guid );
 
-               return true;
-       }
-
-       /**
-        * @param Statement[] $statements
-        * @param Summary|null $summary
-        *
-        * @throws ChangeOpException
-        * @return Statement[]
-        */
-       private function removeStatement( array $statements, Summary $summary = 
null ) {
-               $newStatements = array();
-               $removedStatement = null;
-
-               foreach ( $statements as $statement ) {
-                       if ( $statement->getGuid() === $this->guid && 
$removedStatement === null ) {
-                               $removedStatement = $statement;
-                       } else {
-                               $newStatements[] = $statement;
-                       }
-               }
-
-               if ( $removedStatement === null ) {
+               if ( $statement === null ) {
                        throw new ChangeOpException( "Entity does not have 
statement with GUID $this->guid" );
                }
 
-               $removedSnak = $removedStatement->getMainSnak();
+               $statements->removeStatementsWithGuid( $this->guid );
+               $entity->setStatements( $statements );
+
+               $removedSnak = $statement->getMainSnak();
                $this->updateSummary( $summary, 'remove', '', 
$this->getSummaryArgs( $removedSnak ) );
 
-               return $newStatements;
-       }
-
-       /**
-        * @param Entity $entity
-        * @param Statement[] $statements
-        *
-        * @throws InvalidArgumentException
-        */
-       private function setStatements( Entity $entity, array $statements ) {
-               $statementList = new StatementList( $statements );
-
-               if ( $entity instanceof Item ) {
-                       $entity->setStatements( $statementList );
-               } elseif ( $entity instanceof Property ) {
-                       $entity->setStatements( $statementList );
-               } else {
-                       throw new InvalidArgumentException( '$entity must be an 
Item or Property' );
-               }
+               return true;
        }
 
        /**
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatement.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatement.php
index 6adb591..b176875 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatement.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatement.php
@@ -6,13 +6,11 @@
 use OutOfBoundsException;
 use ValueValidators\Result;
 use Wikibase\DataModel\ByPropertyIdArray;
-use Wikibase\DataModel\Claim\ClaimGuidParser;
 use Wikibase\DataModel\Entity\Entity;
-use Wikibase\DataModel\Entity\Item;
-use Wikibase\DataModel\Entity\Property;
 use Wikibase\DataModel\Statement\Statement;
+use Wikibase\DataModel\Statement\StatementGuidParser;
 use Wikibase\DataModel\Statement\StatementList;
-use Wikibase\DataModel\Statement\StatementListProvider;
+use Wikibase\DataModel\Statement\StatementListHolder;
 use Wikibase\Lib\ClaimGuidGenerator;
 use Wikibase\Lib\ClaimGuidValidator;
 use Wikibase\Summary;
@@ -46,7 +44,7 @@
        private $guidValidator;
 
        /**
-        * @var ClaimGuidParser
+        * @var StatementGuidParser
         */
        private $guidParser;
 
@@ -64,7 +62,7 @@
         * @param Statement $statement
         * @param ClaimGuidGenerator $guidGenerator
         * @param ClaimGuidValidator $guidValidator
-        * @param ClaimGuidParser $guidParser
+        * @param StatementGuidParser $guidParser
         * @param SnakValidator $snakValidator
         * @param int|null $index Where the claim should be placed among the 
other claims.
         *
@@ -74,7 +72,7 @@
                Statement $statement,
                ClaimGuidGenerator $guidGenerator,
                ClaimGuidValidator $guidValidator,
-               ClaimGuidParser $guidParser,
+               StatementGuidParser $guidParser,
                SnakValidator $snakValidator,
                $index = null
        ) {
@@ -124,13 +122,13 @@
         * @throws InvalidArgumentException
         */
        private function applyClaimToEntity( Entity $entity, Summary $summary = 
null ) {
-               if ( !( $entity instanceof StatementListProvider ) ) {
-                       throw new InvalidArgumentException( '$entity must be a 
StatementListProvider' );
+               if ( !( $entity instanceof StatementListHolder ) ) {
+                       throw new InvalidArgumentException( '$entity must be a 
StatementListHolder' );
                }
 
                $statements = $this->removeStatement( 
$entity->getStatements()->toArray(), $summary );
                $statements = $this->addStatement( $statements );
-               $this->setStatements( $entity, $statements );
+               $entity->setStatements( new StatementList( $statements ) );
        }
 
        /**
@@ -212,24 +210,6 @@
                }
 
                return $statements;
-       }
-
-       /**
-        * @param Entity $entity
-        * @param Statement[] $statements
-        *
-        * @throws InvalidArgumentException
-        */
-       private function setStatements( Entity $entity, array $statements ) {
-               $statementList = new StatementList( $statements );
-
-               if ( $entity instanceof Item ) {
-                       $entity->setStatements( $statementList );
-               } elseif ( $entity instanceof Property ) {
-                       $entity->setStatements( $statementList );
-               } else {
-                       throw new InvalidArgumentException( '$entity must be an 
Item or Property' );
-               }
        }
 
        /**
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
index 5ee7fd8..be22e00 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
@@ -4,10 +4,9 @@
 
 use InvalidArgumentException;
 use ValueValidators\Result;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Snak\Snak;
-use Wikibase\DataModel\Statement\Statement;
+use Wikibase\DataModel\Statement\StatementListHolder;
 use Wikibase\Lib\Serializers\ClaimSerializer;
 use Wikibase\Summary;
 
@@ -25,7 +24,7 @@
         *
         * @var string
         */
-       protected $claimGuid;
+       protected $statementGuid;
 
        /**
         * @since 0.4
@@ -39,21 +38,21 @@
         *
         * @since 0.4
         *
-        * @param string $claimGuid
+        * @param string $statementGuid
         * @param integer $rank
         *
         * @throws InvalidArgumentException
         */
-       public function __construct( $claimGuid, $rank ) {
-               if ( !is_string( $claimGuid ) ) {
-                       throw new InvalidArgumentException( '$claimGuid needs 
to be a string' );
+       public function __construct( $statementGuid, $rank ) {
+               if ( !is_string( $statementGuid ) ) {
+                       throw new InvalidArgumentException( '$statementGuid 
needs to be a string' );
                }
 
                if ( !is_integer( $rank ) ) {
                        throw new InvalidArgumentException( '$rank needs to be 
an integer' );
                }
 
-               $this->claimGuid = $claimGuid;
+               $this->statementGuid = $statementGuid;
                $this->rank = $rank;
        }
 
@@ -61,20 +60,20 @@
         * @see ChangeOp::apply()
         */
        public function apply( Entity $entity, Summary $summary = null ) {
-               $claims = new Claims( $entity->getClaims() );
-               $claim = $claims->getClaimWithGuid( $this->claimGuid );
-
-               if ( $claim === null ) {
-                       throw new ChangeOpException( "Entity does not have 
claim with GUID $this->claimGuid" );
+               if ( !( $entity instanceof StatementListHolder ) ) {
+                       throw new InvalidArgumentException( '$entity must be a 
StatementListHolder' );
                }
 
-               if ( !( $claim instanceof Statement ) ) {
-                       throw new ChangeOpException( 'The referenced claim is 
not a statement and thus cannot have a rank' );
+               $statements = $entity->getStatements();
+               $statement = $statements->getFirstStatementWithGuid( 
$this->statementGuid );
+
+               if ( $statement === null ) {
+                       throw new ChangeOpException( "Entity does not have a 
statement with GUID $this->statementGuid" );
                }
 
-               $oldRank = $claim->getRank();
-               $claim->setRank( $this->rank );
-               $this->updateSummary( $summary, null, '', 
$this->getSnakSummaryArgs( $claim->getMainSnak() ) );
+               $oldRank = $statement->getRank();
+               $statement->setRank( $this->rank );
+               $this->updateSummary( $summary, null, '', 
$this->getSnakSummaryArgs( $statement->getMainSnak() ) );
 
                if ( $summary !== null ) {
                        $summary->addAutoCommentArgs(
@@ -82,7 +81,7 @@
                        );
                }
 
-               $entity->setClaims( $claims );
+               $entity->setStatements( $statements );
 
                return true;
        }
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/ClaimChangeOpFactory.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ClaimChangeOpFactory.php
index 845a56f..da5eb07 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ClaimChangeOpFactory.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ClaimChangeOpFactory.php
@@ -4,7 +4,7 @@
 
 use InvalidArgumentException;
 use Wikibase\DataModel\Claim\Claim;
-use Wikibase\DataModel\Claim\ClaimGuidParser;
+use Wikibase\DataModel\Statement\StatementGuidParser;
 use Wikibase\DataModel\Snak\Snak;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\Lib\ClaimGuidGenerator;
@@ -30,7 +30,7 @@
        private $guidValidator;
 
        /**
-        * @var ClaimGuidParser
+        * @var StatementGuidParser
         */
        private $guidParser;
 
@@ -42,13 +42,13 @@
        /**
         * @param ClaimGuidGenerator $guidGenerator
         * @param ClaimGuidValidator $guidValidator
-        * @param ClaimGuidParser $guidParser
+        * @param StatementGuidParser $guidParser
         * @param SnakValidator $snakValidator
         */
        public function __construct(
                ClaimGuidGenerator $guidGenerator,
                ClaimGuidValidator $guidValidator,
-               ClaimGuidParser $guidParser,
+               StatementGuidParser $guidParser,
                SnakValidator $snakValidator
        ) {
                $this->guidGenerator = $guidGenerator;
diff --git a/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php 
b/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php
index e3883d2..02d5ca1 100644
--- a/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php
+++ b/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php
@@ -6,6 +6,7 @@
 use LinkBatch;
 use ParserOptions;
 use ParserOutput;
+use SpecialPage;
 use Title;
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Entity\EntityId;
@@ -20,6 +21,7 @@
 use Wikibase\Lib\Store\EntityInfoTermLookup;
 use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookup;
+use Wikibase\Repo\LinkedData\EntityDataFormatProvider;
 use Wikibase\Repo\View\RepoSpecialPageLinker;
 use Wikibase\View\EmptyEditSectionGenerator;
 use Wikibase\View\EntityViewFactory;
@@ -85,6 +87,11 @@
         */
        private $templateFactory;
 
+       /**
+        * @var EntityDataFormatProvider
+        */
+       private $entityDataFormatProvider;
+
        public function __construct(
                EntityViewFactory $entityViewFactory,
                ParserOutputJsConfigBuilder $configBuilder,
@@ -94,7 +101,8 @@
                LanguageFallbackChain $languageFallbackChain,
                $languageCode,
                ReferencedEntitiesFinder $referencedEntitiesFinder,
-               TemplateFactory $templateFactory
+               TemplateFactory $templateFactory,
+               EntityDataFormatProvider $entityDataFormatProvider
        ) {
                $this->entityViewFactory = $entityViewFactory;
                $this->configBuilder = $configBuilder;
@@ -105,6 +113,7 @@
                $this->languageCode = $languageCode;
                $this->referencedEntitiesFinder = $referencedEntitiesFinder;
                $this->templateFactory = $templateFactory;
+               $this->entityDataFormatProvider = $entityDataFormatProvider;
        }
 
        /**
@@ -190,6 +199,8 @@
                //       So, for now, we leave it to the caller to override the 
display title, if desired.
                // set the display title
                //$parserOutput->setTitleText( $entity>getLabel( $langCode ) );
+
+               $this->addAlternateLinks( $parserOutput, $entity->getId() );
 
                return $parserOutput;
        }
@@ -397,4 +408,33 @@
                $parserOutput->addModules( 'wikibase.ui.entityViewInit' );
        }
 
+       /**
+        * Add alternate links as extension data.
+        * OutputPageBeforeHTMLHookHandler will add these to the OutputPage.
+        *
+        * @param ParserOutput $parserOutput
+        * @param EntityId $entityId
+        */
+       private function addAlternateLinks( ParserOutput $parserOutput, 
EntityId $entityId ) {
+               $entityDataFormatProvider = $this->entityDataFormatProvider;
+               $subPagePrefix = $entityId->getSerialization() . '.';
+
+               $links = array();
+
+               foreach ( $entityDataFormatProvider->getSupportedFormats() as 
$format ) {
+                       $ext = $entityDataFormatProvider->getExtension( $format 
);
+
+                       if ( $ext !== null ) {
+                               $entityDataTitle = SpecialPage::getTitleFor( 
'EntityData', $subPagePrefix . $ext );
+
+                               $links[] = array(
+                                       'rel' => 'alternate',
+                                       'href' => 
$entityDataTitle->getCanonicalURL(),
+                                       'type' => 
$entityDataFormatProvider->getMimeType( $format )
+                               );
+                       }
+               }
+
+               $parserOutput->setExtensionData( 'wikibase-alternate-links', 
$links );
+       }
 }
diff --git 
a/extensions/Wikibase/repo/includes/EntityParserOutputGeneratorFactory.php 
b/extensions/Wikibase/repo/includes/EntityParserOutputGeneratorFactory.php
index fe3b5e9..c3f4153 100644
--- a/extensions/Wikibase/repo/includes/EntityParserOutputGeneratorFactory.php
+++ b/extensions/Wikibase/repo/includes/EntityParserOutputGeneratorFactory.php
@@ -9,6 +9,7 @@
 use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\View\EntityViewFactory;
 use Wikibase\View\Template\TemplateFactory;
+use Wikibase\Repo\LinkedData\EntityDataFormatProvider;
 
 /**
  * @since 0.5
@@ -53,6 +54,11 @@
         */
        private $languageFallbackChainFactory;
 
+       /**
+        * @var EntityDataFormatProvider
+        */
+       private $entityDataFormatProvider;
+
        public function __construct(
                EntityViewFactory $entityViewFactory,
                EntityInfoBuilderFactory $entityInfoBuilderFactory,
@@ -60,7 +66,8 @@
                ValuesFinder $valuesFinder,
                LanguageFallbackChainFactory $languageFallbackChainFactory,
                ReferencedEntitiesFinder $referencedEntitiesFinder,
-               TemplateFactory $templateFactory
+               TemplateFactory $templateFactory,
+               EntityDataFormatProvider $entityDataFormatProvider
        ) {
                $this->entityViewFactory = $entityViewFactory;
                $this->entityInfoBuilderFactory = $entityInfoBuilderFactory;
@@ -69,6 +76,7 @@
                $this->languageFallbackChainFactory = 
$languageFallbackChainFactory;
                $this->referencedEntitiesFinder = $referencedEntitiesFinder;
                $this->templateFactory = $templateFactory;
+               $this->entityDataFormatProvider = $entityDataFormatProvider;
        }
 
        /**
@@ -90,7 +98,8 @@
                        $this->getLanguageFallbackChain( $languageCode ),
                        $languageCode,
                        $this->referencedEntitiesFinder,
-                       $this->templateFactory
+                       $this->templateFactory,
+                       $this->entityDataFormatProvider
                );
        }
 
diff --git a/extensions/Wikibase/repo/includes/WikibaseRepo.php 
b/extensions/Wikibase/repo/includes/WikibaseRepo.php
index 2b89b7e..d9e2137 100644
--- a/extensions/Wikibase/repo/includes/WikibaseRepo.php
+++ b/extensions/Wikibase/repo/includes/WikibaseRepo.php
@@ -18,7 +18,7 @@
 use ValueFormatters\ValueFormatter;
 use Wikibase\Api\ApiHelperFactory;
 use Wikibase\ChangeOp\ChangeOpFactoryProvider;
-use Wikibase\DataModel\Claim\ClaimGuidParser;
+use Wikibase\DataModel\Statement\StatementGuidParser;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
 use Wikibase\DataModel\Entity\Diff\EntityDiffer;
 use Wikibase\DataModel\Entity\DispatchingEntityIdParser;
@@ -71,6 +71,7 @@
 use Wikibase\Repo\Content\PropertyHandler;
 use Wikibase\Repo\Hooks\EditFilterHookRunner;
 use Wikibase\Repo\Interactors\RedirectCreationInteractor;
+use Wikibase\Repo\LinkedData\EntityDataFormatProvider;
 use Wikibase\Repo\Localizer\ChangeOpValidationExceptionLocalizer;
 use Wikibase\Repo\Localizer\MessageParameterFormatter;
 use Wikibase\Repo\Notifications\ChangeNotifier;
@@ -427,10 +428,10 @@
        /**
         * @since 0.5
         *
-        * @return ClaimGuidParser
+        * @return StatementGuidParser
         */
-       public function getClaimGuidParser() {
-               return new ClaimGuidParser( $this->getEntityIdParser() );
+       public function getStatementGuidParser() {
+               return new StatementGuidParser( $this->getEntityIdParser() );
        }
 
        /**
@@ -443,7 +444,7 @@
                        $this->getEntityConstraintProvider(),
                        new ClaimGuidGenerator(),
                        $this->getClaimGuidValidator(),
-                       $this->getClaimGuidParser(),
+                       $this->getStatementGuidParser(),
                        $this->getSnakValidator(),
                        $this->getTermValidatorFactory(),
                        $this->getSiteStore()
@@ -1093,6 +1094,10 @@
                        $this->getSettings()->getSetting( 'badgeItems' )
                );
 
+               $entityDataFormatProvider = new EntityDataFormatProvider();
+               $formats = $this->getSettings()->getSetting( 
'entityDataFormats' );
+               $entityDataFormatProvider->setFormatWhiteList( $formats );
+
                return new EntityParserOutputGeneratorFactory(
                        $entityViewFactory,
                        $this->getStore()->getEntityInfoBuilderFactory(),
@@ -1100,7 +1105,8 @@
                        new ValuesFinder( $this->getPropertyDataTypeLookup() ),
                        $this->getLanguageFallbackChainFactory(),
                        new ReferencedEntitiesFinder( 
$this->getLocalEntityUriParser() ),
-                       $templateFactory
+                       $templateFactory,
+                       $entityDataFormatProvider
                );
        }
 
diff --git a/extensions/Wikibase/repo/includes/api/CreateClaim.php 
b/extensions/Wikibase/repo/includes/api/CreateClaim.php
index 9c2f8b2..d9e66a1 100644
--- a/extensions/Wikibase/repo/includes/api/CreateClaim.php
+++ b/extensions/Wikibase/repo/includes/api/CreateClaim.php
@@ -6,7 +6,6 @@
 use ApiMain;
 use Wikibase\ChangeOp\ChangeOpMainSnak;
 use Wikibase\ChangeOp\ClaimChangeOpFactory;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\Repo\WikibaseRepo;
 
@@ -70,12 +69,11 @@
 
                $this->modificationHelper->applyChangeOp( $changeOp, $entity, 
$summary );
 
-               $claims = new Claims( $entity->getClaims() );
-               $claim = $claims->getClaimWithGuid( $changeOp->getClaimGuid() );
+               $statement = 
$entity->getStatements()->getFirstStatementWithGuid( $changeOp->getClaimGuid() 
);
 
                $this->saveChanges( $entity, $summary );
                $this->getResultBuilder()->markSuccess();
-               $this->getResultBuilder()->addClaim( $claim );
+               $this->getResultBuilder()->addClaim( $statement );
        }
 
        /**
diff --git a/extensions/Wikibase/repo/includes/api/GetClaims.php 
b/extensions/Wikibase/repo/includes/api/GetClaims.php
index c8e8b16..c7a71e7 100644
--- a/extensions/Wikibase/repo/includes/api/GetClaims.php
+++ b/extensions/Wikibase/repo/includes/api/GetClaims.php
@@ -50,7 +50,7 @@
 
                //TODO: provide a mechanism to override the services
                $this->guidValidator = 
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
-               $this->guidParser = 
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
+               $this->guidParser = 
WikibaseRepo::getDefaultInstance()->getStatementGuidParser();
        }
 
        /**
diff --git a/extensions/Wikibase/repo/includes/api/ModifyClaim.php 
b/extensions/Wikibase/repo/includes/api/ModifyClaim.php
index da2acb2..5e41650 100644
--- a/extensions/Wikibase/repo/includes/api/ModifyClaim.php
+++ b/extensions/Wikibase/repo/includes/api/ModifyClaim.php
@@ -4,7 +4,7 @@
 
 use ApiBase;
 use ApiMain;
-use Wikibase\DataModel\Claim\ClaimGuidParser;
+use Wikibase\DataModel\Statement\StatementGuidParser;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Summary;
@@ -30,7 +30,7 @@
        /**
         * @since 0.5
         *
-        * @var ClaimGuidParser
+        * @var StatementGuidParser
         */
        protected $guidParser;
 
@@ -51,7 +51,7 @@
                        $this->getErrorReporter()
                );
 
-               $this->guidParser = 
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
+               $this->guidParser = 
WikibaseRepo::getDefaultInstance()->getStatementGuidParser();
        }
 
        /**
diff --git a/extensions/Wikibase/repo/includes/rdf/RdfVocabulary.php 
b/extensions/Wikibase/repo/includes/rdf/RdfVocabulary.php
index 7ed998d..3bc09ea 100644
--- a/extensions/Wikibase/repo/includes/rdf/RdfVocabulary.php
+++ b/extensions/Wikibase/repo/includes/rdf/RdfVocabulary.php
@@ -97,8 +97,8 @@
         * @param string $dataUri Base URI for entity description URIs.
         */
        public function __construct( $baseUri, $dataUri ) {
-               $this->baseUri = $baseUri;
-               $this->dataUri = $dataUri;
+               $this->baseUri = self::alwaysHTTP( $baseUri );
+               $this->dataUri = self::alwaysHTTP( $dataUri );
 
                if( substr($this->baseUri, -7) === 'entity/') {
                        $topUri = substr($this->baseUri, 0, -7);
@@ -215,4 +215,17 @@
                return self::COMMONS_URI . rawurlencode( $file );
        }
 
+       /**
+        * Returns URI that is always http: even if the passed URI is https
+        * @param string $uri
+        * @return string
+        */
+       public static function alwaysHTTP( $uri ) {
+               if( strncasecmp( $uri, 'https://', 8 ) === 0 ) {
+                       // https: becomes http:
+                       $uri = 'http' . substr( $uri, 5 );
+               }
+               return $uri;
+       }
+
 }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpStatementTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpStatementTest.php
index 6f9281f..d71fb8a 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpStatementTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpStatementTest.php
@@ -5,7 +5,6 @@
 use DataValues\NumberValue;
 use DataValues\StringValue;
 use Wikibase\ChangeOp\ChangeOpStatement;
-use Wikibase\DataModel\Claim\ClaimGuidParser;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Entity\Item;
@@ -20,6 +19,7 @@
 use Wikibase\DataModel\Snak\Snak;
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\DataModel\Statement\Statement;
+use Wikibase\DataModel\Statement\StatementGuidParser;
 use Wikibase\DataModel\Statement\StatementList;
 use Wikibase\Lib\ClaimGuidGenerator;
 use Wikibase\Lib\ClaimGuidValidator;
@@ -273,7 +273,7 @@
                        $statement,
                        new ClaimGuidGenerator(),
                        new ClaimGuidValidator( $idParser ),
-                       new ClaimGuidParser( $idParser ),
+                       new StatementGuidParser( $idParser ),
                        $this->mockProvider->getMockSnakValidator(),
                        $index
                );
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
index d635d38..789629e 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
@@ -14,7 +14,7 @@
 use ValueValidators\Result;
 use ValueValidators\ValueValidator;
 use Wikibase\DataModel\Claim\Claim;
-use Wikibase\DataModel\Claim\ClaimGuidParser;
+use Wikibase\DataModel\Statement\StatementGuidParser;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\Item;
@@ -249,12 +249,12 @@
        }
 
        /**
-        * Returns a mock ClaimGuidParser that will return the same ClaimGuid 
for
+        * Returns a mock StatementGuidParser that will return the same 
ClaimGuid for
         * all input strings.
         *
         * @param EntityId $entityId
         *
-        * @return ClaimGuidParser
+        * @return StatementGuidParser
         */
        public function getMockGuidParser( EntityId $entityId ) {
                $mockClaimGuid = $this->getMockBuilder( 
'Wikibase\DataModel\Claim\ClaimGuid' )
@@ -267,7 +267,7 @@
                        ->method( 'getEntityId' )
                        ->will( PHPUnit_Framework_TestCase::returnValue( 
$entityId ) );
 
-               $mock = $this->getMockBuilder( 
'Wikibase\DataModel\Claim\ClaimGuidParser' )
+               $mock = $this->getMockBuilder( 
'Wikibase\DataModel\Statement\StatementGuidParser' )
                        ->disableOriginalConstructor()
                        ->getMock();
                $mock->expects( PHPUnit_Framework_TestCase::any() )
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityParserOutputGeneratorTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/EntityParserOutputGeneratorTest.php
index 38624e1..1fa9f60 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityParserOutputGeneratorTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/EntityParserOutputGeneratorTest.php
@@ -6,6 +6,7 @@
 use Language;
 use MediaWikiTestCase;
 use ParserOptions;
+use SpecialPage;
 use Title;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
 use Wikibase\DataModel\Entity\EntityId;
@@ -17,6 +18,7 @@
 use Wikibase\EntityParserOutputGenerator;
 use Wikibase\EntityRevision;
 use Wikibase\Lib\Store\Sql\SqlEntityInfoBuilderFactory;
+use Wikibase\Repo\LinkedData\EntityDataFormatProvider;
 use Wikibase\ReferencedEntitiesFinder;
 use Wikibase\ValuesFinder;
 use Wikibase\View\Template\TemplateFactory;
@@ -89,6 +91,26 @@
                        $missingOptions,
                        'Missing cache-split flags: ' . join( '|', 
$missingOptions ) . '. Options: ' . join( '|', $actualOptions )
                );
+
+               $jsonHref = SpecialPage::getTitleFor( 'EntityData', 
$item->getId()->getSerialization() . '.json' )->getCanonicalURL();
+               $ntHref = SpecialPage::getTitleFor( 'EntityData', 
$item->getId()->getSerialization() . '.nt' )->getCanonicalURL();
+
+               $this->assertEquals(
+                       array(
+                               array(
+                                       'rel' => 'alternate',
+                                       'href' => $jsonHref,
+                                       'type' => 'application/json'
+                               ),
+                               array(
+                                       'rel' => 'alternate',
+                                       'href' => $ntHref,
+                                       'type' => 'application/n-triples'
+                               )
+                       ),
+                       $parserOutput->getExtensionData( 
'wikibase-alternate-links' ),
+                       'alternate links (extension data)'
+               );
        }
 
        public function testTitleText_ItemHasNolabel() {
@@ -112,6 +134,10 @@
        private function newEntityParserOutputGenerator() {
                $templateFactory = TemplateFactory::getDefaultInstance();
                $referencedEntitiesFinder = new ReferencedEntitiesFinder( new 
BasicEntityIdParser() );
+               $entityDataFormatProvider = new EntityDataFormatProvider();
+
+               $formats = array( 'json', 'ntriples' );
+               $entityDataFormatProvider->setFormatWhiteList( $formats );
 
                return new EntityParserOutputGenerator(
                        $this->getEntityViewFactory(),
@@ -122,7 +148,8 @@
                        $this->newLanguageFallbackChain(),
                        'en',
                        $referencedEntitiesFinder,
-                       $templateFactory
+                       $templateFactory,
+                       $entityDataFormatProvider
                );
        }
 
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
index c771bd8..9558d53 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
@@ -27,9 +27,9 @@
 class OutputPageBeforeHTMLHookHandlerTest extends PHPUnit_Framework_TestCase {
 
        /**
-        * Integration test mostly testing that things don't fatal/ throw.
+        * @return OutputPageBeforeHTMLHookHandler
         */
-       public function testOutputPageBeforeHTMLHookHandler() {
+       private function getHookHandler() {
                $userLanguageLookup = $this->getMock( 
'Wikibase\Lib\UserLanguageLookup' );
                $userLanguageLookup->expects( $this->once() )
                        ->method( 'getUserSpecifiedLanguages' )
@@ -50,6 +50,15 @@
                        new EntityContentFactory( array() )
                );
 
+               return $outputPageBeforeHTMLHookHandler;
+       }
+
+       /**
+        * Integration test mostly testing that things don't fatal/ throw.
+        */
+       public function testOutputPageBeforeHTMLHookHandler() {
+               $outputPageBeforeHTMLHookHandler = $this->getHookHandler();
+
                $html = '';
                $context = new DerivativeContext( RequestContext::getMain() );
                $out = new OutputPage( $context );
diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
index 22f30a3..81b9211 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
@@ -2,9 +2,12 @@
 
 namespace Wikibase\Tests;
 
-use ImportStringSource;
 use ConfigFactory;
+use DerivativeContext;
 use Exception;
+use ImportStringSource;
+use OutputPage;
+use RequestContext;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\RepoHooks;
 use WikiImporter;
@@ -163,4 +166,35 @@
                $this->assertTrue( true ); // make PHPUnit happy
        }
 
+       public function testOnOutputPageParserOutput() {
+               $altLinks = array( array( 'a' => 'b' ), array( 'c', 'd' ) );
+
+               $context = new DerivativeContext( RequestContext::getMain() );
+               $out = new OutputPage( $context );
+
+               $parserOutput = $this->getMock( 'ParserOutput' );
+               $parserOutput->expects( $this->exactly( 3 ) )
+                       ->method( 'getExtensionData' )
+                       ->will( $this->returnCallback( function ( $key ) use ( 
$altLinks ) {
+                               if ( $key === 'wikibase-alternate-links' ) {
+                                       return $altLinks;
+                               } else {
+                                       return $key;
+                               }
+                       } ) );
+
+               RepoHooks::onOutputPageParserOutput( $out, $parserOutput );
+
+               $this->assertSame(
+                       'wikibase-view-chunks',
+                       $out->getProperty( 'wikibase-view-chunks' )
+               );
+
+               $this->assertSame(
+                       'wikibase-titletext',
+                       $out->getProperty( 'wikibase-titletext' )
+               );
+
+               $this->assertSame( $altLinks, $out->getLinkTags() );
+       }
 }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseRepoTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseRepoTest.php
index d679229..5d88e42 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseRepoTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseRepoTest.php
@@ -79,9 +79,9 @@
                $this->assertInstanceOf( 
'Wikibase\DataModel\Entity\EntityIdParser', $returnValue );
        }
 
-       public function testGetClaimGuidParser() {
-               $returnValue = $this->getWikibaseRepo()->getClaimGuidParser();
-               $this->assertInstanceOf( 
'Wikibase\DataModel\Claim\ClaimGuidParser', $returnValue );
+       public function testGetStatementGuidParser() {
+               $returnValue = 
$this->getWikibaseRepo()->getStatementGuidParser();
+               $this->assertInstanceOf( 
'Wikibase\DataModel\Statement\StatementGuidParser', $returnValue );
        }
 
        public function testGetLanguageFallbackChainFactory() {
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
index 13e4d14..b6338a7 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
@@ -151,13 +151,14 @@
 
        public function providePageProperties() {
                $cases = array();
+               $emptyContent = $this->newEmpty( $this->getDummyId() );
 
                $cases['empty'] = array(
-                       $this->newEmpty(),
+                       $emptyContent,
                        array( 'wb-status' => EntityContent::STATUS_EMPTY, 
'wb-claims' => 0 )
                );
 
-               $contentWithLabel = $this->newEmpty();
+               $contentWithLabel = $this->newEmpty( $this->getDummyId() );
                $contentWithLabel->getEntity()->setLabel( 'en', 'Foo' );
 
                $cases['labels'] = array(
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
index 2c00a6b..56190ef 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
@@ -99,7 +99,7 @@
        public function providePageProperties() {
                $cases = parent::providePageProperties();
 
-               $contentLinkStub = ItemContent::newEmpty();
+               $contentLinkStub = $this->newEmpty( $this->getDummyId() );
                
$contentLinkStub->getEntity()->getSiteLinkList()->addNewSiteLink( 'enwiki', 
'Foo' );
 
                $cases['sitelinks'] = array(
@@ -109,7 +109,7 @@
 
                // @todo this is needed in PropertyContentTest as well
                //       once we have statements in properties
-               $contentWithClaim = $this->newEmpty();
+               $contentWithClaim = $this->newEmpty( $this->getDummyId() );
                $snak = new PropertyNoValueSnak( 83 );
                $guid = '$testing$';
                
$contentWithClaim->getEntity()->getStatements()->addNewStatement( $snak, null, 
null, $guid );
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/rdf/RdfBuilderTestData.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/rdf/RdfBuilderTestData.php
index 90b9791..b3b4b90 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/rdf/RdfBuilderTestData.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/rdf/RdfBuilderTestData.php
@@ -31,7 +31,7 @@
 class RdfBuilderTestData {
 
        const URI_BASE = 'http://acme.test/';
-       const URI_DATA = 'http://data.acme.test/';
+       const URI_DATA = 'https://data.acme.test/';
 
        /**
         * @var EntityContentDataCodec|null
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
index 3dbaf4c..12dc291 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
@@ -118,13 +118,6 @@
        _rankSelector: null,
 
        /**
-        * Shortcut to the `ListItemAdapter` in use in the `listview` managing 
the `referenceview`s.
-        * @property {jQuery.wikibase.listview.ListItemAdapter}
-        * @private
-        */
-       _referenceviewLia: null,
-
-       /**
         * Shortcut to the `listview` managing the `referenceview`s.
         * @property {jQuery.wikibase.listview}
         * @private
@@ -343,7 +336,7 @@
 
                this._referencesListview = $listview.data( 'listview' );
 
-               this._referenceviewLia = 
this._referencesListview.listItemAdapter();
+               var lia = this._referencesListview.listItemAdapter();
 
                $listview
                .on( 'listviewitemadded listviewitemremoved', function( event, 
value, $li ) {
@@ -357,10 +350,9 @@
                        }
 
                        // Enter first item into the referenceview.
-                       self._referenceviewLia.liInstance( $newLi 
).enterNewItem();
+                       lia.liInstance( $newLi ).enterNewItem();
 
-                       var lia = self._referenceviewLia,
-                               liInstance = lia.liInstance( $newLi );
+                       var liInstance = lia.liInstance( $newLi );
 
                        if ( !liInstance.value() ) {
                                $newLi
@@ -562,8 +554,7 @@
         * @return {wikibase.datamodel.Reference[]}
         */
        _getReferences: function() {
-               var self = this,
-                       references = [];
+               var references = [];
 
                // If the statement is pending (not yet stored), the listview 
widget for the references is
                // not defined.
@@ -571,8 +562,10 @@
                        return references;
                }
 
+               var lia = this._referencesListview.listItemAdapter();
+
                $.each( this._referencesListview.items(), function( i, item ) {
-                       var referenceview = self._referenceviewLia.liInstance( 
$( item ) ),
+                       var referenceview = lia.liInstance( $( item ) ),
                                reference = referenceview ? 
referenceview.value() : null;
                        if( reference ) {
                                references.push( reference );
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index e895af8..6322520 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1165,12 +1165,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "3581172e065795559f80d7cebf4291123dd30018"
+            "reference": "df4d4e61295461858bd8c07928e2eaf7207b3910"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3581172e065795559f80d7cebf4291123dd30018";,
-            "reference": "3581172e065795559f80d7cebf4291123dd30018",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/df4d4e61295461858bd8c07928e2eaf7207b3910";,
+            "reference": "df4d4e61295461858bd8c07928e2eaf7207b3910",
             "shasum": ""
         },
         "require": {
@@ -1197,7 +1197,7 @@
         "conflict": {
             "mediawiki/mediawiki": "<1.23"
         },
-        "time": "2015-06-24 09:22:11",
+        "time": "2015-06-25 07:24:51",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

-- 
To view, visit https://gerrit.wikimedia.org/r/220729
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5e8658e804c7ca652a1cf66df93e7aae5a76f7a8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to