/** * @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; }
/** * @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()])); } }