public function testAttachValueNode()
 {
     $vocab = new RdfVocabulary('http://acme.com/item/', 'http://acme.com/data/');
     $snakWriter = new NTriplesRdfWriter();
     $snakWriter->prefix('www', "http://www/");
     $snakWriter->prefix(RdfVocabulary::NSP_CLAIM_VALUE, "http://acme/statement/value/");
     $snakWriter->prefix(RdfVocabulary::NS_VALUE, "http://acme/value/");
     $valueWriter = new NTriplesRdfWriter();
     $valueWriter->prefix(RdfVocabulary::NS_VALUE, "http://acme/value/");
     $valueWriter->prefix(RdfVocabulary::NS_ONTOLOGY, "http://acme/onto/");
     $helper = new ComplexValueRdfHelper($vocab, $valueWriter, new HashDedupeBag());
     // check we get the correct value writer
     $this->assertSame($valueWriter, $helper->getValueNodeWriter());
     $snakWriter->start();
     $snakWriter->about('www', 'Q1');
     $valueWriter->start();
     // attach a value node
     $value = new StringValue('http://en.wikipedia.org/wiki/Wikidata');
     $lvalue = $helper->attachValueNode($snakWriter, RdfVocabulary::NSP_CLAIM_STATEMENT, 'testing', 'DUMMY', $value);
     $this->assertEquals('e93b68fef814eb52e813bb72e6867432', $lvalue);
     // do it again, tests dedupe
     $snakWriter->about('www', 'Q2');
     $lvalue = $helper->attachValueNode($snakWriter, RdfVocabulary::NSP_CLAIM_STATEMENT, 'testing', 'DUMMY', $value);
     $this->assertNull($lvalue, 'lvalue produced by adding a value a second time should be null');
     // check the triples written to the snak writer
     $expected = array('<http://www/Q1> <http://acme/statement/value/testing> <http://acme/value/e93b68fef814eb52e813bb72e6867432> .', '<http://www/Q2> <http://acme/statement/value/testing> <http://acme/value/e93b68fef814eb52e813bb72e6867432> .');
     $this->helper->assertNTriplesEquals($expected, $snakWriter->drain());
     // check the triples written to the value writer
     $expected = '<http://acme/value/e93b68fef814eb52e813bb72e6867432> ' . '<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ' . '<http://acme/onto/StringValue> .';
     $this->helper->assertNTriplesEquals($expected, $valueWriter->drain());
 }
 private function assertOrCreateNTriples($dataSetName, RdfWriter $writer)
 {
     $actual = $writer->drain();
     $expected = $this->getTestData()->getNTriples($dataSetName);
     if ($expected === null) {
         $this->getTestData()->putTestData($dataSetName, $actual, '.actual');
         $this->fail("Data set {$dataSetName} not found! Created file with the current data using" . " the suffix .actual");
     }
     $this->helper->assertNTriplesEquals($expected, $actual, "Data set {$dataSetName}");
 }
 /**
  * @dataProvider provideAddValue
  */
 public function testAddValue($typeBase, $typeLocal, PropertyValueSnak $snak, $expected)
 {
     $builder = new LiteralValueRdfBuilder($typeBase, $typeLocal);
     $writer = new NTriplesRdfWriter();
     $writer->prefix('www', "http://www/");
     $writer->prefix('acme', "http://acme/");
     $writer->prefix($typeBase, "http://{$typeBase}/");
     $writer->start();
     $writer->about('www', 'Q1');
     $builder->addValue($writer, 'acme', 'testing', 'DUMMY', $snak);
     $this->helper->assertNTriplesEquals($expected, $writer->drain());
 }
 public function testAddValue()
 {
     $builder = new ObjectUriRdfBuilder();
     $writer = new NTriplesRdfWriter();
     $writer->prefix('www', "http://www/");
     $writer->prefix('acme', "http://acme/");
     $writer->start();
     $writer->about('www', 'Q1');
     $snak = new PropertyValueSnak(new PropertyId('P1'), new StringValue('http://en.wikipedia.org/wiki/Wikidata'));
     $builder->addValue($writer, 'acme', 'testing', 'DUMMY', $snak);
     $expected = '<http://www/Q1> <http://acme/testing> <http://en.wikipedia.org/wiki/Wikidata> .';
     $this->helper->assertNTriplesEquals($expected, $writer->drain());
 }
 public function testAddValue()
 {
     $builder = new MonolingualTextRdfBuilder();
     $writer = new NTriplesRdfWriter();
     $writer->prefix('www', "http://www/");
     $writer->prefix('acme', "http://acme/");
     $writer->start();
     $writer->about('www', 'Q1');
     $snak = new PropertyValueSnak(new PropertyId('P1'), new MonolingualTextValue('de', 'Hallo Welt'));
     $builder->addValue($writer, 'acme', 'testing', 'DUMMY', $snak);
     $expected = '<http://www/Q1> <http://acme/testing> "Hallo Welt"@de .';
     $this->helper->assertNTriplesEquals($expected, $writer->drain());
 }
 public function testAddValue()
 {
     $vocab = new RdfVocabulary('http://test/item/', 'http://test/data/');
     $builder = new CommonsMediaRdfBuilder($vocab);
     $writer = new NTriplesRdfWriter();
     $writer->prefix('www', "http://www/");
     $writer->prefix('acme', "http://acme/");
     $writer->start();
     $writer->about('www', 'Q1');
     $snak = new PropertyValueSnak(new PropertyId('P1'), new StringValue('Bunny.jpg'));
     $builder->addValue($writer, 'acme', 'testing', 'DUMMY', $snak);
     $expected = '<http://www/Q1> <http://acme/testing> <http://commons.wikimedia.org/wiki/Special:FilePath/Bunny.jpg> .';
     $this->helper->assertNTriplesEquals($expected, $writer->drain());
 }
 public function testAddValue()
 {
     $vocab = new RdfVocabulary('http://test/item/', 'http://test/data/');
     $builder = new EntityIdRdfBuilder($vocab, new NullEntityMentionListener());
     $writer = new NTriplesRdfWriter();
     $writer->prefix('www', "http://www/");
     $writer->prefix('acme', "http://acme/");
     $writer->prefix(RdfVocabulary::NS_ENTITY, 'http://test/item/');
     $writer->start();
     $writer->about('www', 'Q1');
     $snak = new PropertyValueSnak(new PropertyId('P1'), new EntityIdValue(new ItemId('Q23')));
     $builder->addValue($writer, 'acme', 'testing', 'DUMMY', $snak);
     $expected = '<http://www/Q1> <http://acme/testing> <http://test/item/Q23> .';
     $this->helper->assertNTriplesEquals($expected, $writer->drain());
 }
 public function testAddSnakValue_novalue()
 {
     $propertyId = new PropertyId('P2');
     $snak = new PropertyNoValueSnak($propertyId);
     $writer = $this->getTestData()->getNTriplesWriter();
     $writer->about(RdfVocabulary::NS_ENTITY, 'Q11');
     $builder = $this->newBuilder(RdfVocabulary::NSP_DIRECT_CLAIM, $propertyId->getSerialization(), 'wikibase-item');
     $expectedTriples = array('<http://acme.test/Q11> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://acme.test/prop/novalue/P2> .');
     $builder->addSnak($writer, $snak, RdfVocabulary::NSP_DIRECT_CLAIM);
     $this->helper->assertNTriplesEquals($expectedTriples, $writer->drain());
 }
 public function testDeduplication()
 {
     $bag = new HashDedupeBag();
     $builder = $this->newRdfBuilder(RdfProducer::PRODUCE_ALL, $bag);
     $builder->addEntity($this->getEntityData('Q7'));
     $data1 = $builder->getRDF();
     $builder = $this->newRdfBuilder(RdfProducer::PRODUCE_ALL, $bag);
     $builder->addEntity($this->getEntityData('Q9'));
     $data2 = $builder->getRDF();
     $expected = $this->getTestData()->getNTriples('Q7_Q9_dedup');
     $this->helper->assertNTriplesEquals($expected, $data1 . $data2);
 }
 /**
  * @dataProvider provideAddValue
  */
 public function testAddValue(PropertyValueSnak $snak, $complex, array $expected)
 {
     $vocab = new RdfVocabulary('http://acme.com/item/', 'http://acme.com/data/');
     $snakWriter = new NTriplesRdfWriter();
     $snakWriter->prefix('www', "http://www/");
     $snakWriter->prefix('acme', "http://acme/");
     $snakWriter->prefix(RdfVocabulary::NSP_CLAIM_VALUE, "http://acme/statement/value/");
     $snakWriter->prefix(RdfVocabulary::NSP_CLAIM_STATEMENT, "http://acme/statement/");
     $snakWriter->prefix(RdfVocabulary::NS_VALUE, "http://acme/value/");
     $snakWriter->prefix(RdfVocabulary::NS_ONTOLOGY, "http://acme/onto/");
     if ($complex) {
         $valueWriter = $snakWriter->sub();
         $helper = new ComplexValueRdfHelper($vocab, $valueWriter, new HashDedupeBag());
     } else {
         $helper = null;
     }
     $builder = new QuantityRdfBuilder($helper);
     $snakWriter->start();
     $snakWriter->about('www', 'Q1');
     $builder->addValue($snakWriter, RdfVocabulary::NSP_CLAIM_STATEMENT, $vocab->getEntityLName($snak->getPropertyid()), 'DUMMY', $snak);
     $this->helper->assertNTriplesEquals($expected, $snakWriter->drain());
 }
 /**
  * @dataProvider loadDataProvider
  * @param EntityId[] $ids
  * @param string $dumpname
  */
 public function testReferenceDedup(array $ids, $dumpname)
 {
     $entities = array();
     $rdfTest = new RdfBuilderTest();
     foreach ($ids as $id) {
         $id = $id->getSerialization();
         $entities[$id] = $rdfTest->getEntityData($id);
     }
     $dumper = $this->newDumpGenerator($entities);
     $dumper->setTimestamp(1000000);
     $jsonTest = new JsonDumpGeneratorTest();
     $pager = $jsonTest->makeIdPager($ids);
     ob_start();
     $dumper->generateDump($pager);
     $actual = ob_get_clean();
     $expected = $this->getTestData()->getNTriples($dumpname);
     $this->helper->assertNTriplesEquals($expected, $actual);
 }
 /**
  * @param string $datasetName
  * @param string[]|string $actual
  */
 private function assertOutputLines($datasetName, $actual)
 {
     $path = __DIR__ . '/../data/' . $datasetName . '.' . $this->getFileSuffix();
     $this->helper->assertNTriplesEquals(file_get_contents($path), $actual, "Result mismatches data in {$path}");
 }