/**
  * @param StatementList $statements
  *
  * @return StatementGrouper
  */
 private function guessStatementGrouper(StatementList $statements)
 {
     foreach ($statements->toArray() as $statement) {
         $entityType = $this->getEntityType($statement);
         if (array_key_exists($entityType, $this->statementGroupers)) {
             return $this->statementGroupers[$entityType];
         }
         // FIXME: Check all statements and fail if they don't share the same entity type?
     }
     return new NullStatementGrouper();
 }
 /**
  * @param StatementList $statements
  *
  * @return StatementList[] An associative array, mapping property id serializations to
  *  StatementList objects.
  */
 public function groupStatements(StatementList $statements)
 {
     /** @var StatementList[] $groups */
     $groups = array();
     foreach ($statements->toArray() as $statement) {
         $id = $statement->getPropertyId()->getSerialization();
         if (!isset($groups[$id])) {
             $groups[$id] = new StatementList();
         }
         $groups[$id]->addStatement($statement);
     }
     return $groups;
 }
 private function getSerialized(StatementList $statementList)
 {
     $serialization = array();
     foreach ($statementList->toArray() as $statement) {
         $idSerialization = $statement->getPropertyId()->getSerialization();
         if (!array_key_exists($idSerialization, $serialization)) {
             $serialization[$idSerialization] = array();
         }
         $serialization[$idSerialization][] = $this->statementSerializer->serialize($statement);
     }
     if ($this->useObjectsForMaps) {
         $serialization = (object) $serialization;
     }
     return $serialization;
 }
 /**
  * @param StatementList $statements
  *
  * @return StatementList[] An associative array, mapping statement group identifiers to
  *  StatementList objects. All identifiers given in the constructor are guaranteed to be in the
  *  result.
  */
 public function groupStatements(StatementList $statements)
 {
     $groups = $this->getEmptyGroups();
     foreach ($statements->toArray() as $statement) {
         $key = $this->getKey($statement);
         $groups[$key]->addStatement($statement);
     }
     return $groups;
 }
Beispiel #5
0
 /**
  * @deprecated since 1.0, use getStatements()->toArray() instead.
  *
  * @return Statement[]
  */
 public function getClaims()
 {
     return $this->statements->toArray();
 }
 public function testCanConstructWithTraversableContainingOnlyStatements()
 {
     $statementArray = array($this->getStatementWithSnak(1, 'foo'), $this->getStatementWithSnak(2, 'bar'));
     $object = new ArrayObject($statementArray);
     $list = new StatementList($object);
     $this->assertEquals($statementArray, array_values($list->toArray()));
 }
 /**
  * Adds Statements to the RDF graph.
  *
  * @param EntityId $entityId
  * @param StatementList $statementList
  */
 public function addStatements(EntityId $entityId, StatementList $statementList)
 {
     $bestList = array();
     // FIXME: This is expensive, share the result with TruthyStatementRdfBuilder!
     foreach ($statementList->getPropertyIds() as $propertyId) {
         $bestStatements = $statementList->getByPropertyId($propertyId)->getBestStatements();
         foreach ($bestStatements->toArray() as $statement) {
             $bestList[$statement->getGuid()] = true;
         }
     }
     foreach ($statementList->toArray() as $statement) {
         $this->addStatement($entityId, $statement, isset($bestList[$statement->getGuid()]));
     }
 }