public function build()
 {
     global $wgRightsUrl;
     $rdf = MwRdf::Vocabulary('rdf');
     $cc = MwRdf::Vocabulary('cc');
     $model = MwRdf::Model();
     $tr = $this->Agent->titleResource();
     $model->addStatement(MwRdf::Statement($tr, $rdf->a, $cc->Work));
     if (!isset($wgRightsUrl)) {
         return $model;
     }
     $lr = MwRdf::UriNode($wgRightsUrl);
     $model->addStatement(MwRdf::Statement($tr, $cc->license, $lr));
     $model->addStatement(MwRdf::Statement($lr, $rdf->a, $cc->License));
     $terms = MwRdf::GetCcTerms($wgRightsUrl);
     if (!isset($terms)) {
         return $model;
     }
     foreach ($terms as $term) {
         switch ($term) {
             case 're':
                 $model->addStatement(MwRdf::Statement($lr, $cc->permits, $cc->Reproduction));
                 break;
             case 'di':
                 $model->addStatement(MwRdf::Statement($lr, $cc->permits, $cc->Distribution));
                 break;
             case 'de':
                 $model->addStatement(MwRdf::Statement($lr, $cc->permits, $cc->DerivativeWorks));
                 break;
             case 'nc':
                 $model->addStatement(MwRdf::Statement($lr, $cc->prohibits, $cc->CommercialUse));
                 break;
             case 'no':
                 $model->addStatement(MwRdf::Statement($lr, $cc->requires, $cc->Notice));
                 break;
             case 'by':
                 $model->addStatement(MwRdf::Statement($lr, $cc->requires, $cc->Attribution));
                 break;
             case 'sa':
                 $model->addStatement(MwRdf::Statement($lr, $cc->requires, $cc->ShareAlike));
                 break;
             case 'sc':
                 $model->addStatement(MwRdf::Statement($lr, $cc->requires, $cc->SourceCode));
                 break;
         }
     }
     return $model;
 }
 public function testGetCcTerms()
 {
     $license = 'http://creativecommons.org/licenses/by-sa/1.0/';
     $terms = MwRdf::GetCcTerms($license);
     $this->assertType('array', $terms, $license);
     $this->assertContains('re', $terms);
     $this->assertContains('di', $terms);
     $this->assertContains('de', $terms);
     $this->assertContains('no', $terms);
     $this->assertContains('by', $terms);
     $this->assertContains('sa', $terms);
     $license = 'http://creativecommons.org/licenses/by-nc-sa/1.0/';
     $terms = MwRdf::GetCcTerms($license);
     $this->assertType('array', $terms, $license);
     $this->assertContains('re', $terms);
     $this->assertContains('di', $terms);
     $this->assertContains('de', $terms);
     $this->assertContains('no', $terms);
     $this->assertContains('by', $terms);
     $this->assertContains('sa', $terms);
     $this->assertContains('nc', $terms);
     $license = 'http://creativecommons.org/licenses/GPL/2.0/';
     $terms = MwRdf::GetCcTerms($license);
     $this->assertType('array', $terms, $license);
     $this->assertContains('de', $terms);
     $this->assertContains('re', $terms);
     $this->assertContains('di', $terms);
     $this->assertContains('no', $terms);
     $this->assertContains('sa', $terms);
     $this->assertContains('sc', $terms);
     $license = 'http://creativecommons.org/licenses/LGPL/2.1/';
     $terms = MwRdf::GetCcTerms($license);
     $this->assertType('array', $terms, $license);
     $this->assertContains('de', $terms);
     $this->assertContains('re', $terms);
     $this->assertContains('di', $terms);
     $this->assertContains('no', $terms);
     $this->assertContains('sa', $terms);
     $this->assertContains('sc', $terms);
     $license = 'http://www.gnu.org/copyleft/fdl.html';
     $terms = MwRdf::GetCcTerms($license);
     $this->assertType('array', $terms, $license);
     $this->assertContains('de', $terms);
     $this->assertContains('re', $terms);
     $this->assertContains('di', $terms);
     $this->assertContains('no', $terms);
     $this->assertContains('sa', $terms);
     $this->assertContains('sc', $terms);
 }