private function addTsvStatement($statement) { //Parse Statement $fullStatement = $this->statementParser->parseTsvStatement($statement); $subject = $fullStatement->getSubjectId(); $statement = $fullStatement->getStatement(); //Get existing statements $entityRevision = $this->wikibaseFactory->newRevisionGetter()->getFromId($subject); if ($entityRevision === false) { throw new Exception('Entity does not exists'); } $entity = $entityRevision->getContent()->getData(); $samePropertyStatements = $entity->getStatements()->getByPropertyId($statement->getMainSnak()->getPropertyId()); //Looks for existing statements if ($this->hasClaim($samePropertyStatements, $statement)) { return; } try { $subStatement = $this->findSubStatement($samePropertyStatements, $statement); $statement->setGuid($subStatement->getGuid()); if ($this->hasMeaningfulReference($subStatement)) { throw new Exception('Substatement with meaningful reference'); } } catch (OutOfBoundsException $e) { if (!$samePropertyStatements->isEmpty()) { throw new Exception('Contradictory statement'); } } //Add reference "imported from" "Freebase data dump" $statement->addNewReference(new PropertyValueSnak(new PropertyId('P143'), new EntityIdValue(new ItemId('Q15241312')))); //Save $this->statementSaver->addStatementToEntity($statement, $entity->getId(), $entityRevision->getId()); }
function CI_EstatementParser($filepath, $filenm) { parent::__construct($filepath, $filenm); }