You are here

public function EasyRdf_Graph::all in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php \EasyRdf_Graph::all()

Get all values for a property path

This method will return an empty array if the property does not exist.

Parameters

string $resource The URI of the resource (e.g. http://example.com/joe#me):

string $propertyPath A valid property path:

string $type The type of value to filter by (e.g. literal):

string $lang The language to filter by (e.g. en):

Return value

array An array of values associated with the property

7 calls to EasyRdf_Graph::all()
EasyRdf_Graph::allLiterals in vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php
Get all literal values for a property of a resource
EasyRdf_Graph::allOfType in vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php
Get all the resources in the graph of a certain type
EasyRdf_Graph::allResources in vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php
Get all resources for a property of a resource
EasyRdf_Graph::countValues in vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php
Count the number of values for a property of a resource
EasyRdf_Graph::isA in vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php
Check if a resource is of the specified type

... See full list

File

vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php, line 743

Class

EasyRdf_Graph
Container for collection of EasyRdf_Resources.

Code

public function all($resource, $propertyPath, $type = null, $lang = null) {
  $this
    ->checkResourceParam($resource);
  if (is_object($propertyPath) and $propertyPath instanceof EasyRdf_Resource) {
    return $this
      ->allForSingleProperty($resource, $propertyPath
      ->getUri(), $type, $lang);
  }
  elseif (is_string($propertyPath) and preg_match('|^(\\^?)<(.+)>|', $propertyPath, $matches)) {
    return $this
      ->allForSingleProperty($resource, "{$matches[1]}{$matches[2]}", $type, $lang);
  }
  elseif ($propertyPath === null or !is_string($propertyPath)) {
    throw new InvalidArgumentException("\$propertyPath should be a string or EasyRdf_Resource and cannot be null");
  }
  elseif ($propertyPath === '') {
    throw new InvalidArgumentException("\$propertyPath cannot be an empty string");
  }
  $objects = array(
    $resource,
  );

  // Loop through each component in the path
  foreach (explode('/', $propertyPath) as $part) {
    $results = array();
    foreach (explode('|', $part) as $p) {
      foreach ($objects as $o) {

        // Ignore literals found earlier in path
        if ($o instanceof EasyRdf_Literal) {
          continue;
        }
        $results = array_merge($results, $this
          ->allForSingleProperty($o, $p, $type, $lang));
      }
    }

    // Stop if we don't have anything
    if (empty($objects)) {
      break;
    }

    // Use the results as the input to the next iteration
    $objects = $results;
  }
  return $results;
}