public function build() { global $wgSitename, $wgContLanguageCode; $article = $this->Agent->getArticle(); $model = MwRdf::Model(); $rdf = MwRdf::Vocabulary('rdf'); $dc = MwRdf::Vocabulary('dc'); $dctype = MwRdf::Vocabulary('dctype'); $artres = $this->Agent->titleResource(); $model->addStatement(MwRdf::Statement($artres, $dc->title, MwRdf::LiteralNode($this->Agent->getTitle()->getText()))); $model->addStatement(MwRdf::Statement($artres, $dc->publisher, MwRdf::PageOrString(wfMsg('aboutpage'), $wgSitename))); $model->addStatement(MwRdf::Statement($artres, $dc->language, MwRdf::Language($wgContLanguageCode))); $model->addStatement(MwRdf::Statement($artres, $dc->type, $dctype->Text)); $model->addStatement(MwRdf::Statement($artres, $dc->format, MwRdf::MediaType('text/html'))); if ($this->Agent->getTimestampResource()) { $model->addStatement(MwRdf::Statement($artres, $dc->date, $this->Agent->getTimestampResource())); } if (MWNamespace::isTalk($this->Agent->getTitle()->getNamespace())) { $model->addStatement(MwRdf::Statement($artres, $dc->subject, $this->Agent->subjectResource())); } else { $talk = MwRdf::ModelingAgent($this->Agent->getTitle()->getTalkPage()); $model->addStatement(MwRdf::Statement($talk->titleResource(), $dc->subject, $artres)); } # 'Creator' is responsible for this version $creator = MwRdf::PersonToResource($article->getUser()); $model->addStatement(MwRdf::Statement($artres, $dc->creator, $creator)); # 'Contributors' are all other version authors $contributors = $article->getContributors(); foreach ($contributors as $user_parts) { $contributor = MwRdf::PersonToResource($user_parts[0], $user_parts[1], $user_parts[2]); $model->addStatement(MwRdf::Statement($artres, $dc->contributor, $contributor)); } # Rights notification global $wgRightsPage, $wgRightsUrl, $wgRightsText; $rights = MwRdf::RightsResource(); if ($rights) { $model->addStatement(MwRdf::Statement($artres, $dc->rights, $rights)); } return $model; }
public function testLoad() { $agent = MwRdf::ModelingAgent($this->title); for ($i = 0; $i < 10000; $i++) { $model = $agent->retrieveModel('inpage'); $this->assertType('object', $model); $this->assertTrue($model instanceof LibRDF_Model); $statement = MwRdf::Statement(MwRdf::UriNode('http://www.w3.org/TR/rdf-syntax-grammar'), MwRdf::UriNode('http://purl.org/dc/elements/1.1/title'), MwRdf::LiteralNode('RDF/XML Syntax Specification (Revised)')); $this->assertTrue($model->hasStatement($statement)); $statements = $model->findStatements(MwRdf::UriNode('http://www.w3.org/TR/rdf-syntax-grammar'), MwRdf::UriNode('http://example.org/stuff/1.0/editor'), null); $this->assertType('object', $statements); $this->assertTrue($statements instanceof LibRDF_StreamIterator); $statement = $statements->current(); $this->assertTrue($statement instanceof LibRdf_Statement); $editor = $statement->getObject(); $this->assertTrue($editor instanceof LibRdf_BlankNode); $statement = MwRdf::Statement($editor, MwRdf::UriNode('http://example.org/stuff/1.0/fullname'), MwRdf::LiteralNode("Dave Beckett")); $this->assertTrue($model->hasStatement($statement)); $statement = MwRdf::Statement($editor, MwRdf::UriNode('http://example.org/stuff/1.0/homePage'), MwRdf::UriNode('http://purl.org/net/dajobe/')); $this->assertTrue($model->hasStatement($statement)); $model->rewind(); } }
public function testTypedLiteral() { $ns = MwRdf::getNamespace('dc'); $n = MwRdf::LiteralNode('en', $ns . 'ISO639-2'); $this->assertTrue($n instanceof LibRDF_LiteralNode); $this->assertEquals($ns . 'ISO639-2', $n->getDatatype()); }