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());
 }
Example #2
0
 function CI_EstatementParser($filepath, $filenm)
 {
     parent::__construct($filepath, $filenm);
 }