app/DoctrineMigrations/Version20140129151724.php
author cavaliet
Mon, 03 Feb 2014 12:28:21 +0100
changeset 110 7602e5ca9c30
parent 109 fc56f9e28cdb
child 113 e4f8c2479e78
permissions -rw-r--r--
enhance migration for dbpedia uri
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
108
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     1
<?php
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     2
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     3
namespace Application\Migrations;
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     4
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     5
use Doctrine\DBAL\Migrations\AbstractMigration,
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     6
    Doctrine\DBAL\Schema\Schema,
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     7
	IRI\Bundle\WikiTagBundle\Utils\WikiTagUtils;
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     8
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
     9
/**
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    10
 * Migration for WikiTagBundle <= V00.13
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    11
 * This migration takes every tag label and search the REAL dbpedia uri associated to this label.
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    12
 * Before, the dbpedia uri was manually generated by http://dbpedia.org/resource/ + english_label.
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    13
 * Now we get the dbpedia uri by requesting http://LANG_CODE.dbpedia.org/sparql with the current label.
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    14
 * 
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    15
 */
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    16
class Version20140129151724 extends AbstractMigration
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    17
{
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    18
    public function up(Schema $schema)
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    19
    {
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    20
        // this up() migration is autogenerated, please modify it to your needs
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    21
        $this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    22
        
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    23
        
108
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    24
        // First we get all tags.
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    25
        $em = $GLOBALS["kernel"]->getContainer()->get( 'doctrine.orm.entity_manager' );
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    26
        // Avoid php annoying memory leaks
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    27
        $em->getConnection()->getConfiguration()->setSQLLogger(null);
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    28
        
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    29
        // First step : we populate the dbpedia uris thanks to the dbpedia-owl:wikiPageID
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    30
        echo "\nFIRST STEP";
110
7602e5ca9c30 enhance migration for dbpedia uri
cavaliet
parents: 109
diff changeset
    31
        $query = $em->createQuery('SELECT t FROM WikiTagBundle:Tag t WHERE t.wikipediaPageId IS NOT NULL ORDER BY t.label ASC');//->setMaxResults(240)->setFirstResult(500);
108
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    32
        $tags = $query->getResult();
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    33
        $i = 1;
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    34
        $nb_set = 0;
110
7602e5ca9c30 enhance migration for dbpedia uri
cavaliet
parents: 109
diff changeset
    35
        echo "\n".count($tags)." tags to search.";
108
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    36
        foreach($tags as $tag){
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    37
        	$l = $tag->getLabel();
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    38
        	$uri = WikiTagUtils::getDbpediaUri($tag->getWikipediaPageId(), [], false, "pageid");
108
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    39
        	$tag->setDbpediaUri($uri);
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    40
        	$em->persist($tag);
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    41
         if($uri!=NULL && $uri!=""){
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    42
             $nb_set++;
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    43
         }
108
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    44
        	if( $i % 50 == 0 ){
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    45
        		$em->flush();
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    46
        		echo "\n    FLUSH";
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    47
        	}
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    48
        	$i++;
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    49
        	echo "\n$i : $l \t\t: $uri";
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    50
        }
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
    51
        $em->flush();
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    52
        echo "\nFIRST STEP : $nb_set uris found";
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    53
        
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    54
        
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    55
        // Second step : we populate the dbpedia uris not found thanks to the foaf:isPrimaryTopicOf
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    56
        echo "\nSECOND STEP";
110
7602e5ca9c30 enhance migration for dbpedia uri
cavaliet
parents: 109
diff changeset
    57
        $query = $em->createQuery('SELECT t FROM WikiTagBundle:Tag t WHERE (t.wikipediaUrl!=\'\' AND t.wikipediaUrl IS NOT NULL AND (t.dbpediaUri=\'\' OR t.dbpediaUri IS NULL)) ORDER BY t.label ASC');//->setMaxResults(240);
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    58
        $tags = $query->getResult();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    59
        $i = 1;
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    60
        $nb_set = 0;
110
7602e5ca9c30 enhance migration for dbpedia uri
cavaliet
parents: 109
diff changeset
    61
        echo "\n".count($tags)." tags to search.";
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    62
        foreach($tags as $tag){
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    63
        	$l = $tag->getLabel();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    64
        	$uri = WikiTagUtils::getDbpediaUri($tag->getWikipediaUrl(), [], false, "wikiurl");
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    65
        	$tag->setDbpediaUri($uri);
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    66
        	$em->persist($tag);
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    67
            if($uri!=NULL && $uri!=""){
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    68
                $nb_set++;
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    69
            }
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    70
        	if( $i % 50 == 0 ){
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    71
        		$em->flush();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    72
        		echo "\n    FLUSH";
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    73
        	}
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    74
        	$i++;
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    75
        	echo "\n$i : $l \t\t: $uri";
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    76
        }
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    77
        $em->flush();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    78
        echo "\nSECOND STEP : $nb_set uris found";
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    79
        
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    80
        
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    81
        // Third step : we populate the dbpedia uris not found thanks to the rdfs:label
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    82
        echo "\nTHIRD STEP";
110
7602e5ca9c30 enhance migration for dbpedia uri
cavaliet
parents: 109
diff changeset
    83
        $query = $em->createQuery('SELECT t FROM WikiTagBundle:Tag t WHERE (t.wikipediaUrl!=\'\' AND t.wikipediaUrl IS NOT NULL AND (t.dbpediaUri=\'\' OR t.dbpediaUri IS NULL)) ORDER BY t.label ASC');//->setMaxResults(240);
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    84
        $tags = $query->getResult();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    85
        $i = 1;
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    86
        $nb_set = 0;
110
7602e5ca9c30 enhance migration for dbpedia uri
cavaliet
parents: 109
diff changeset
    87
        echo "\n".count($tags)." tags to search.";
109
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    88
        foreach($tags as $tag){
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    89
        	$l = $tag->getLabel();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    90
        	$uri = WikiTagUtils::getDbpediaUri($tag->getLabel(), [], false);
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    91
        	$tag->setDbpediaUri($uri);
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    92
        	$em->persist($tag);
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    93
            if($uri!=NULL && $uri!=""){
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    94
                $nb_set++;
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    95
            }
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    96
        	if( $i % 50 == 0 ){
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    97
        		$em->flush();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    98
        		echo "\n    FLUSH";
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
    99
        	}
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
   100
        	$i++;
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
   101
        	echo "\n$i : $l \t\t: $uri";
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
   102
        }
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
   103
        $em->flush();
fc56f9e28cdb better migration for dbpedia uri
cavaliet
parents: 108
diff changeset
   104
        echo "\nTHIRD STEP : $nb_set uris found";
108
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   105
    }
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   106
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   107
    public function down(Schema $schema)
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   108
    {
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   109
        // this down() migration is autogenerated, please modify it to your needs
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   110
        $this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   111
    }
48af4fad8a44 migration to real dbpedia uri
cavaliet
parents:
diff changeset
   112
}