public function geefElementenInSituatie() { $connectie = new SPARQLConnection(); $items = array(); $verbanden = array(); $data = Model::geefElementenUitContextEnSubcontexten($this->situatie_uri); if ($data['@graph']) { foreach ($data['@graph'] as $item) { // Bepaal type IE switch ($item['Eigenschap-3AIntentional_Element_type']) { case 'Activity': $obj = new Activity($item['@id']); break; case 'Outcome': $obj = new Outcome($item['@id']); break; case 'Goal': $obj = new Goal($item['@id']); break; case 'Belief': $obj = new Belief($item['@id']); break; case 'Condition': $obj = new Condition($item['@id']); break; default: $obj = new IntentionalElement($item['@id']); } if ($item['Eigenschap-3AHeading_nl'] != "") { $obj->setHeading($item['Eigenschap-3AHeading_nl']); } elseif ($item['Eigenschap-3AHeading_en'] != "") { $obj->setHeading($item['Eigenschap-3AHeading_en']); } else { $obj->setHeading(Uri::SMWuriNaarLeesbareTitel($item['@id'])); } foreach ($item as $key => $value) { if (is_array($value)) { foreach ($value as $singlevalue) { $verbanden = self::verwerkIEEigenschap($item, $key, $singlevalue, $verbanden); } } else { if ($value == 'Eigenschap-3AIntentional_Element_decomposition_type') { $obj->setDecompositionType($value); } else { $verbanden = self::verwerkIEEigenschap($item, $key, $value, $verbanden); } } } $query = 'DESCRIBE ?s WHERE { ?s property:Element_back_link % }'; $resultaat = $connectie->escapedQueryAsMultidimensionalPHPArray($query, array($item['@id'])); if ($resultaat) { foreach ($resultaat as $deelresultaat) { if (@array_key_exists(0, $deelresultaat)) { foreach ($deelresultaat as $koppeling) { $verbanden['ccd'][] = array('source' => $item['@id'], 'ccdkoppeling' => $koppeling); } } } } $items[$item['@id']] = $obj; } } /** * Maak voor alle mee te nemen Contexten een object aan */ $contexten = array(); foreach (Model::geefUrisVanContextEnSubcontexten($this->situatie_uri) as $context_uri) { $context_uri = Uri::deescape_uri($context_uri); $nieuwecontext = new Context($context_uri); $nieuwecontext->setDescription(self::geefContextbeschrijving($context_uri)); $contexten[$context_uri] = $nieuwecontext; } /** * Leg de verbanden tussen de Contexten */ foreach ($contexten as $context_uri => $context_object) { $supercontexten = $connectie->escapedQueryAsMultidimensionalPHPArray('DESCRIBE ?supercontext WHERE { % property:Supercontext ?supercontext}', array($context_uri)); if (array_key_exists('@graph', $supercontexten)) { foreach ($supercontexten['@graph'] as $supercontext) { if (array_key_exists($supercontext['@id'], $contexten)) { try { @$context_object->addSupercontext($contexten[$supercontext['@id']]); $contexten[$context_uri] = $context_object; } catch (Exception $e) { // Supercontext blijkbaar niet in scope } } } } } foreach ($verbanden as $type => $verbanden2) { foreach ($verbanden2 as $verband) { try { switch ($type) { case 'produces': @$items[$verband['source']]->addProduces($items[$verband['target']]); break; case 'consumes': @$items[$verband['source']]->addConsumes($items[$verband['target']]); break; case 'partOf': @$items[$verband['source']]->addPartOf($items[$verband['target']]); break; case 'instanceOf': @$items[$verband['source']]->addInstanceOf($items[$verband['target']]); break; case 'context': @$items[$verband['source']]->addContext($contexten[$verband['target']]); break; case 'ccd': $items[$verband['source']] = self::verwerkKoppeling($verband['ccdkoppeling'], $items[$verband['source']], $items); break; default: } } catch (Exception $e) { } } } return array_merge($items, $contexten); }