Example #1
0
 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);
 }