Aude has uploaded a new change for review.
https://gerrit.wikimedia.org/r/174800
Change subject: Update Wikidata (property suggester)
......................................................................
Update Wikidata (property suggester)
Change-Id: I4444353beef8671105898c247bc2cedfabf960fb
---
M composer.json
M composer.lock
M extensions/PropertySuggester/.travis.yml
M extensions/PropertySuggester/PropertySuggester.php
M extensions/PropertySuggester/README.md
M extensions/PropertySuggester/build/travis/after_script.sh
M extensions/PropertySuggester/build/travis/before_script.sh
M extensions/PropertySuggester/build/travis/script.sh
M extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
M
extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
M
extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
M
extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
M
extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
M
extensions/PropertySuggester/tests/phpunit/PropertySuggester/UpdateTable/UpdateTableTest.php
M vendor/composer/installed.json
15 files changed, 143 insertions(+), 107 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata
refs/changes/00/174800/1
diff --git a/composer.json b/composer.json
index 419c9d1..b90ee8d 100644
--- a/composer.json
+++ b/composer.json
@@ -4,10 +4,6 @@
"repositories": [
{
"type": "vcs",
- "url":
"https://git.wikimedia.org/git/mediawiki/extensions/Wikibase.git"
- },
- {
- "type": "vcs",
"url": "https://github.com/wmde/Wikidata.org.git"
},
{
@@ -21,7 +17,7 @@
],
"require": {
"php": ">=5.3.0",
- "propertysuggester/property-suggester": "~1.1.4",
+ "propertysuggester/property-suggester": "~2.0.1",
"wikibase/wikibase": "dev-wmf/1.25wmf8",
"wikibase/wikimedia-badges": "dev-master",
"wikibase/Wikidata.org": "dev-master"
diff --git a/composer.lock b/composer.lock
index c4891f1..944f011 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at
http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "212a0758023436b3e764996d7d305cdb",
+ "hash": "a5be434fdca7130d9322a8d1b5190cc7",
"packages": [
{
"name": "composer/installers",
@@ -747,16 +747,16 @@
},
{
"name": "propertysuggester/property-suggester",
- "version": "1.1.5",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/Wikidata-lib/PropertySuggester.git",
- "reference": "0d106a6cb2e30a34cdec2e0eda52cca66a479733"
+ "reference": "7a5279ed5a7f87da6ecf40928d6aabda23d043f9"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/0d106a6cb2e30a34cdec2e0eda52cca66a479733",
- "reference": "0d106a6cb2e30a34cdec2e0eda52cca66a479733",
+ "url":
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/7a5279ed5a7f87da6ecf40928d6aabda23d043f9",
+ "reference": "7a5279ed5a7f87da6ecf40928d6aabda23d043f9",
"shasum": ""
},
"require": {
@@ -771,9 +771,7 @@
"psr-4": {
"PropertySuggester\\": "src/PropertySuggester/"
},
- "files": [
-
- ],
+ "files": [],
"classmap": [
"PropertySuggesterHooks.php",
"maintenance/UpdateTable.php"
@@ -790,7 +788,7 @@
"wikibase",
"wikidata"
],
- "time": "2014-11-10 15:13:08"
+ "time": "2014-11-11 11:23:20"
},
{
"name": "serialization/serialization",
@@ -1259,7 +1257,7 @@
"issues": "https://bugzilla.wikimedia.org/",
"irc": "irc://irc.freenode.net/wikidata"
},
- "time": "2014-11-19 17:29:23"
+ "time": "2014-11-19 17:15:03"
},
{
"name": "wikibase/wikimedia-badges",
@@ -1312,12 +1310,8 @@
"time": "2014-11-11 18:42:07"
}
],
- "packages-dev": [
-
- ],
- "aliases": [
-
- ],
+ "packages-dev": [],
+ "aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"wikibase/wikibase": 20,
@@ -1328,7 +1322,5 @@
"platform": {
"php": ">=5.3.0"
},
- "platform-dev": [
-
- ]
+ "platform-dev": []
}
diff --git a/extensions/PropertySuggester/.travis.yml
b/extensions/PropertySuggester/.travis.yml
index 9b49f98..0b4da66 100644
--- a/extensions/PropertySuggester/.travis.yml
+++ b/extensions/PropertySuggester/.travis.yml
@@ -8,6 +8,8 @@
- 5.4
- 5.5
- 5.6
+ - hhvm
+ - hhvm-nightly
before_script:
- bash ./build/travis/before_script.sh
diff --git a/extensions/PropertySuggester/PropertySuggester.php
b/extensions/PropertySuggester/PropertySuggester.php
index 162ba97..619ea51 100644
--- a/extensions/PropertySuggester/PropertySuggester.php
+++ b/extensions/PropertySuggester/PropertySuggester.php
@@ -9,7 +9,7 @@
return;
}
-define( 'PropertySuggester_VERSION', '1.1.5' );
+define( 'PropertySuggester_VERSION', '2.0.1' );
if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
require_once __DIR__ . '/vendor/autoload.php';
@@ -51,10 +51,15 @@
'remoteExtPath' => $remoteExtPathParts[1],
);
-
global $wgPropertySuggesterDeprecatedIds;
$wgPropertySuggesterDeprecatedIds = array(
107 // ( DEPRECATED main type )
);
+
+global $wgPropertySuggesterClassifyingPropertyIds;
+$wgPropertySuggesterClassifyingPropertyIds = array(
+ 31 // instance of
+);
+
global $wgPropertySuggesterMinProbability;
$wgPropertySuggesterMinProbability = 0.05;
diff --git a/extensions/PropertySuggester/README.md
b/extensions/PropertySuggester/README.md
index 8668f6f..01b756e 100644
--- a/extensions/PropertySuggester/README.md
+++ b/extensions/PropertySuggester/README.md
@@ -44,11 +44,15 @@
## Release notes
-### 1.1.5 (2014-11-10)
-* Adjust to new version of DataModel JavaScript
+### 2.0.1 (2014-11-11)
+Adjust to new version of DataModel-JavaScript
+
+### 2.0.0 (2014-11-10)
+* Consider classifying properties (needs version 2.0.0 of
PropertySuggester-Python)
### 1.1.4 (2014-10-22)
* Replace usage of Wikibase\NamespaceUtils for compatibility with Wikibase
Repo.
+* Specified GPL-2.0+ license
### 1.1.3 (2014-10-17)
* Wikibase Data Model 2.0 compatibility fixes.
diff --git a/extensions/PropertySuggester/build/travis/after_script.sh
b/extensions/PropertySuggester/build/travis/after_script.sh
old mode 100644
new mode 100755
diff --git a/extensions/PropertySuggester/build/travis/before_script.sh
b/extensions/PropertySuggester/build/travis/before_script.sh
old mode 100644
new mode 100755
index f45a1ca..193a996
--- a/extensions/PropertySuggester/build/travis/before_script.sh
+++ b/extensions/PropertySuggester/build/travis/before_script.sh
@@ -27,6 +27,7 @@
mysql -e 'CREATE DATABASE its_a_mw;'
fi
+composer install --no-dev
php maintenance/install.php --dbtype $DBTYPE --dbuser root --dbname its_a_mw
--dbpath $(pwd) --pass nyan TravisWiki admin
cd extensions
diff --git a/extensions/PropertySuggester/build/travis/script.sh
b/extensions/PropertySuggester/build/travis/script.sh
old mode 100644
new mode 100755
diff --git
a/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
b/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
index e287f03..006ae8e 100644
--- a/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
+++ b/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
@@ -51,6 +51,7 @@
parent::__construct( $main, $name, $prefix );
global $wgPropertySuggesterDeprecatedIds;
global $wgPropertySuggesterMinProbability;
+ global $wgPropertySuggesterClassifyingPropertyIds;
$store = WikibaseRepo::getDefaultInstance()->getStore();
$this->termIndex = $store->getTermIndex();
@@ -59,6 +60,7 @@
$this->suggester = new SimpleSuggester( wfGetLB() );
$this->suggester->setDeprecatedPropertyIds(
$wgPropertySuggesterDeprecatedIds );
+ $this->suggester->setClassifyingPropertyIds(
$wgPropertySuggesterClassifyingPropertyIds );
$this->paramsParser = new SuggesterParamsParser( 500,
$wgPropertySuggesterMinProbability );
}
diff --git
a/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
b/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
index afbe9c1..bd50067 100644
---
a/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
+++
b/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
@@ -5,11 +5,9 @@
use LoadBalancer;
use ProfileSection;
use InvalidArgumentException;
-use Wikibase\DataModel\Claim\Claim;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\PropertyId;
use ResultWrapper;
-use Wikibase\DataModel\Snak\Snak;
/**
* a Suggester implementation that creates suggestion via MySQL
@@ -23,6 +21,11 @@
* @var int[]
*/
private $deprecatedPropertyIds = array();
+
+ /**
+ * @var int[]
+ */
+ private $classifyingPropertyIds = array();
/**
* @var LoadBalancer
@@ -44,14 +47,22 @@
}
/**
+ * @param int[] $classifyingPropertyIds
+ */
+ public function setClassifyingPropertyIds( array
$classifyingPropertyIds ) {
+ $this->classifyingPropertyIds = array_flip(
$classifyingPropertyIds );
+ }
+
+ /**
* @param int[] $propertyIds
+ * @param string[] $idTuples
* @param int $limit
* @param float $minProbability
* @param string $context
* @throws InvalidArgumentException
* @return Suggestion[]
*/
- protected function getSuggestions( array $propertyIds, $limit,
$minProbability, $context ) {
+ protected function getSuggestions( array $propertyIds, array $idTuples,
$limit, $minProbability, $context ) {
$profiler = new ProfileSection( __METHOD__ );
if ( !is_int( $limit ) ) {
throw new InvalidArgumentException( '$limit must be
int!' );
@@ -67,11 +78,16 @@
$count = count( $propertyIds );
$dbr = $this->lb->getConnection( DB_SLAVE );
+ if ( empty( $idTuples ) ){
+ $condition = 'pid1 IN (' . $dbr->makeList( $propertyIds
) . ')';
+ }
+ else{
+ $condition = $dbr->makeList( $idTuples, LIST_OR );
+ }
$res = $dbr->select(
'wbs_propertypairs',
array( 'pid' => 'pid2', 'prob' =>
"sum(probability)/$count" ),
- array( 'pid1 IN (' . $dbr->makeList( $propertyIds ) .
')',
- 'qid1' => null,
+ array( $condition,
'pid2 NOT IN (' . $dbr->makeList(
$excludedIds ) . ')',
'context' => $context ),
__METHOD__,
@@ -80,8 +96,8 @@
'ORDER BY' => 'prob DESC',
'LIMIT' => $limit,
'HAVING' => 'prob > ' . floatval(
$minProbability )
- )
- );
+ )
+ );
$this->lb->reuseConnection( $dbr );
return $this->buildResult( $res );
@@ -98,8 +114,7 @@
*/
public function suggestByPropertyIds( array $propertyIds, $limit,
$minProbability, $context ) {
$numericIds = array_map( array( $this,
'getNumericIdFromPropertyId' ), $propertyIds );
-
- return $this->getSuggestions( $numericIds, $limit,
$minProbability, $context );
+ return $this->getSuggestions( $numericIds, array(), $limit,
$minProbability, $context );
}
/**
@@ -107,14 +122,39 @@
*
* @param Item $item
* @param int $limit
- * @param float $minProbability
+ * @param float $minProbability
* @param string $context
* @return Suggestion[]
*/
public function suggestByItem( Item $item, $limit, $minProbability,
$context ) {
- $claims = $item->getClaims();
- $numericIds = array_unique( array_map( array( $this,
'getNumericIdFromClaim' ), $claims ) );
- return $this->getSuggestions( $numericIds, $limit,
$minProbability, $context );
+ $statements = $item->getStatements()->toArray();
+ $ids = array();
+ $idTuples = array();
+ foreach ( $statements as $statement ) {
+ $numericPropertyId = $this->getNumericIdFromPropertyId(
$statement->getMainSnak()->getPropertyId() );
+ $ids[] = $numericPropertyId;
+ if ( !isset(
$this->classifyingPropertyIds[$numericPropertyId] ) ) {
+ $idTuples[] = $this->buildTupleCondition(
$numericPropertyId, '0' );
+ }
+ else {
+ if ( $statement->getMainSnak()->getType() ===
"value" ) {
+ $dataValue =
$statement->getMainSnak()->getDataValue();
+ $numericEntityId = ( int )substr(
$dataValue->getEntityId()->getSerialization(), 1 );
+ $idTuples[] =
$this->buildTupleCondition( $numericPropertyId, $numericEntityId );
+ }
+ }
+ }
+ return $this->getSuggestions( $ids, $idTuples, $limit,
$minProbability, $context );
+ }
+
+ /**
+ * @param int $a
+ * @param int $b
+ * @return string
+ */
+ private function buildTupleCondition( $pid, $qid ){
+ $tuple = '(pid1 = '. ( int )$pid .' AND qid1 = '. ( int )$qid
.')';
+ return $tuple;
}
/**
@@ -131,10 +171,6 @@
$resultArray[] = $suggestion;
}
return $resultArray;
- }
-
- private function getNumericIdFromClaim( Claim $claim ) {
- return $claim->getMainSnak()->getPropertyId()->getNumericId();
}
private function getNumericIdFromPropertyId( PropertyId $propertyId ) {
diff --git
a/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
b/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
index 7b2d36a..82f3f8e 100644
---
a/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
+++
b/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
@@ -67,7 +67,7 @@
}
}
- $qid1 = is_numeric( $data[1] ) ? $data[1] : null;
+ $qid1 = is_numeric( $data[1] ) ? $data[1] : 0;
$accumulator[] = array( 'pid1' => $data[0], 'qid1' =>
$qid1, 'pid2' => $data[2], 'count' => $data[3],
'probability' => $data[4], 'context' => $data[5] );
diff --git
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
index dca8579..f4f6734 100644
---
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
+++
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
@@ -72,7 +72,7 @@
$ip56 = (int)substr( $p56, 1 );
$ip72 = (int)substr( $p72, 1 );
- $row = array( 'pid1' => $ip56, 'qid1' => null, 'pid2' => $ip72,
'count' => 1,
+ $row = array( 'pid1' => $ip56, 'qid1' => 0, 'pid2' => $ip72,
'count' => 1,
'probability' => 0.3, 'context' => 'item' );
$this->db->insert( 'wbs_propertypairs', array( $row ) );
diff --git
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
index 9119d0b..c14ca7a 100644
---
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
+++
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
@@ -34,11 +34,11 @@
public function addDBData() {
$rows = array();
- $rows[] = $this->row( 1, null, 2, 100, 0.1, 'item' );
- $rows[] = $this->row( 1, null, 3, 50, 0.05, 'item' );
- $rows[] = $this->row( 2, null, 3, 100, 0.3, 'item' );
- $rows[] = $this->row( 2, null, 4, 200, 0.2, 'item' );
- $rows[] = $this->row( 3, null, 1, 100, 0.5, 'item' );
+ $rows[] = $this->row( 1, 0, 2, 100, 0.1, 'item' );
+ $rows[] = $this->row( 1, 0, 3, 50, 0.05, 'item' );
+ $rows[] = $this->row( 2, 0, 3, 100, 0.3, 'item' );
+ $rows[] = $this->row( 2, 0, 4, 200, 0.2, 'item' );
+ $rows[] = $this->row( 3, 0, 1, 100, 0.5, 'item' );
$this->db->insert( 'wbs_propertypairs', $rows );
}
diff --git
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/UpdateTable/UpdateTableTest.php
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/UpdateTable/UpdateTableTest.php
index 5f1a0aa..d44c589 100644
---
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/UpdateTable/UpdateTableTest.php
+++
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/UpdateTable/UpdateTableTest.php
@@ -30,16 +30,16 @@
public function getRows() {
$rows1 = array(
- array( 1, null, 2, 100, 0.1, 'item' ),
- array( 1, null, 3, 50, 0.05, 'item' ),
- array( 2, null, 3, 100, 0.1, 'item' ),
- array( 2, null, 4, 200, 0.2, 'item' ),
- array( 3, null, 1, 123, 0.5, 'item' )
+ array( 1, 0, 2, 100, 0.1, 'item' ),
+ array( 1, 0, 3, 50, 0.05, 'item' ),
+ array( 2, 0, 3, 100, 0.1, 'item' ),
+ array( 2, 0, 4, 200, 0.2, 'item' ),
+ array( 3, 0, 1, 123, 0.5, 'item' )
);
$rows2 = array();
for ($i=0; $i<1100; $i++) {
- $rows2[] = array( $i, null, 2, 100, 0.1, 'item' );
+ $rows2[] = array( $i, 0, 2, 100, 0.1, 'item' );
}
return array(
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 0b370c8..5af6f64 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -193,55 +193,6 @@
}
},
{
- "name": "propertysuggester/property-suggester",
- "version": "1.1.5",
- "version_normalized": "1.1.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Wikidata-lib/PropertySuggester.git",
- "reference": "0d106a6cb2e30a34cdec2e0eda52cca66a479733"
- },
- "dist": {
- "type": "zip",
- "url":
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/0d106a6cb2e30a34cdec2e0eda52cca66a479733",
- "reference": "0d106a6cb2e30a34cdec2e0eda52cca66a479733",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "3.7.*",
- "satooshi/php-coveralls": "dev-master"
- },
- "time": "2014-11-10 15:13:08",
- "type": "mediawiki-extension",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PropertySuggester\\": "src/PropertySuggester/"
- },
- "files": [
-
- ],
- "classmap": [
- "PropertySuggesterHooks.php",
- "maintenance/UpdateTable.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0+"
- ],
- "description": "Extension for Wikibase to provide usefull suggestions
for new properties",
- "homepage": "https://github.com/Wikidata-lib/PropertySuggester",
- "keywords": [
- "propertysuggester",
- "wikibase",
- "wikidata"
- ]
- },
- {
"name": "wikibase/easyrdf_lite",
"version": "0.8.1",
"version_normalized": "0.8.1.0",
@@ -1351,5 +1302,52 @@
"source": "https://github.com/DataValues/Geo/tree/1.1.3",
"issues": "https://github.com/DataValues/Geo/issues"
}
+ },
+ {
+ "name": "propertysuggester/property-suggester",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Wikidata-lib/PropertySuggester.git",
+ "reference": "7a5279ed5a7f87da6ecf40928d6aabda23d043f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url":
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/7a5279ed5a7f87da6ecf40928d6aabda23d043f9",
+ "reference": "7a5279ed5a7f87da6ecf40928d6aabda23d043f9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*",
+ "satooshi/php-coveralls": "dev-master"
+ },
+ "time": "2014-11-11 11:23:20",
+ "type": "mediawiki-extension",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PropertySuggester\\": "src/PropertySuggester/"
+ },
+ "files": [],
+ "classmap": [
+ "PropertySuggesterHooks.php",
+ "maintenance/UpdateTable.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "description": "Extension for Wikibase to provide usefull suggestions
for new properties",
+ "homepage": "https://github.com/Wikidata-lib/PropertySuggester",
+ "keywords": [
+ "propertysuggester",
+ "wikibase",
+ "wikidata"
+ ]
}
]
--
To view, visit https://gerrit.wikimedia.org/r/174800
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4444353beef8671105898c247bc2cedfabf960fb
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: wmf/1.25wmf8
Gerrit-Owner: Aude <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits