You are here

public function EasyRdf_Graph::resourcesMatching in Zircon Profile 8.0

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

Get an arry of resources matching a certain property and optional value.

For example this routine could be used as a way of getting everyone who has name: $people = $graph->resourcesMatching('foaf:name')

Or everyone who is male: $people = $graph->resourcesMatching('foaf:gender', 'male');

Or all homepages: $people = $graph->resourcesMatching('^foaf:homepage');

Parameters

string $property The property to check.:

mixed $value Optional, the value of the propery to check for.:

Return value

array Array of EasyRdf_Resource

File

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

Class

EasyRdf_Graph
Container for collection of EasyRdf_Resources.

Code

public function resourcesMatching($property, $value = null) {
  $this
    ->checkSinglePropertyParam($property, $inverse);
  $this
    ->checkValueParam($value);

  // Use the reverse index if it is an inverse property
  if ($inverse) {
    $index =& $this->revIndex;
  }
  else {
    $index =& $this->index;
  }
  $matched = array();
  foreach ($index as $subject => $props) {
    if (isset($index[$subject][$property])) {
      if (isset($value)) {
        foreach ($this->index[$subject][$property] as $v) {
          if ($v['type'] == $value['type'] and $v['value'] == $value['value']) {
            $matched[] = $this
              ->resource($subject);
            break;
          }
        }
      }
      else {
        $matched[] = $this
          ->resource($subject);
      }
    }
  }
  return $matched;
}