예제 #1
0
 public function groupGraphPattern()
 {
     $value = null;
     $t1 = null;
     $v = null;
     $t2 = null;
     $value = new Erfurt_Sparql_Query2_GroupGraphPattern();
     try {
         $this->match($this->input, $this->getToken('OPEN_CURLY_BRACE'), self::$FOLLOW_OPEN_CURLY_BRACE_in_groupGraphPattern691);
         // Sparql10.g:127:22: (t1= triplesBlock )?
         $alt25 = 2;
         $alt25 = $this->dfa25->predict($this->input);
         switch ($alt25) {
             case 1:
                 $this->pushFollow(self::$FOLLOW_triplesBlock_in_groupGraphPattern696);
                 $t1 = $this->triplesBlock();
                 $this->state->_fsp--;
                 $value->addElements($t1);
                 break;
         }
         // Sparql10.g:128:3: ( (v= graphPatternNotTriples | v= filter ) ( DOT )? (t2= triplesBlock )? )*
         //loop29:
         do {
             $alt29 = 2;
             $LA29_0 = $this->input->LA(1);
             if ($LA29_0 >= $this->getToken('OPTIONAL') && $LA29_0 <= $this->getToken('GRAPH') || $LA29_0 == $this->getToken('FILTER') || $LA29_0 == $this->getToken('OPEN_CURLY_BRACE')) {
                 $alt29 = 1;
             }
             switch ($alt29) {
                 case 1:
                     // Sparql10.g:128:5: (v= graphPatternNotTriples | v= filter )
                     $alt26 = 2;
                     $LA26_0 = $this->input->LA(1);
                     if ($LA26_0 >= $this->getToken('OPTIONAL') && $LA26_0 <= $this->getToken('GRAPH') || $LA26_0 == $this->getToken('OPEN_CURLY_BRACE')) {
                         $alt26 = 1;
                     } else {
                         if ($LA26_0 == $this->getToken('FILTER')) {
                             $alt26 = 2;
                         } else {
                             $nvae = new NoViableAltException("", 26, 0, $this->input);
                             throw $nvae;
                         }
                     }
                     switch ($alt26) {
                         case 1:
                             $this->pushFollow(self::$FOLLOW_graphPatternNotTriples_in_groupGraphPattern710);
                             $v = $this->graphPatternNotTriples();
                             $this->state->_fsp--;
                             break;
                         case 2:
                             $this->pushFollow(self::$FOLLOW_filter_in_groupGraphPattern716);
                             $v = $this->filter();
                             $this->state->_fsp--;
                             break;
                     }
                     $value->addElement($v);
                     // Sparql10.g:129:13: ( DOT )?
                     $alt27 = 2;
                     $alt27 = $this->dfa27->predict($this->input);
                     switch ($alt27) {
                         case 1:
                             $this->match($this->input, $this->getToken('DOT'), self::$FOLLOW_DOT_in_groupGraphPattern734);
                             break;
                     }
                     // Sparql10.g:129:18: (t2= triplesBlock )?
                     $alt28 = 2;
                     $alt28 = $this->dfa28->predict($this->input);
                     switch ($alt28) {
                         case 1:
                             $this->pushFollow(self::$FOLLOW_triplesBlock_in_groupGraphPattern740);
                             $t2 = $this->triplesBlock();
                             $this->state->_fsp--;
                             $value->addElements($t2);
                             break;
                     }
                     break;
                 default:
                     break 2;
                     //loop29;
             }
         } while (true);
         $this->match($this->input, $this->getToken('CLOSE_CURLY_BRACE'), self::$FOLLOW_CLOSE_CURLY_BRACE_in_groupGraphPattern749);
     } catch (RecognitionException $re) {
         $this->reportError($re);
         $this->recover($this->input, $re);
     } catch (Exception $e) {
         throw $e;
     }
     return $value;
 }
 protected function _buildSubCheckQuery($uri, $setup)
 {
     $subVar = new Erfurt_Sparql_Query2_Var('subResourceUri');
     $searchVar = new Erfurt_Sparql_Query2_Var('resourceUri');
     //$classVar = new Erfurt_Sparql_Query2_Var('classUri');
     $query = new Erfurt_Sparql_Query2();
     $query->addProjectionVar($subVar);
     $query->setDistinct();
     $this->_owApp->logger->info("data: " . print_r($query, true));
     $elements = array();
     $in = array();
     $out = array();
     if (isset($setup->config->hierarchyRelations->in)) {
         if (count($setup->config->hierarchyRelations->in) > 1) {
             // init union var
             $unionSub = new Erfurt_Sparql_Query2_GroupOrUnionGraphPattern();
             // parse config gile
             foreach ($setup->config->hierarchyRelations->in as $rel) {
                 // sub stuff
                 $groupPattern = new Erfurt_Sparql_Query2_GroupGraphPattern();
                 // add triplen
                 $groupPattern->addTriple($subVar, new Erfurt_Sparql_Query2_IriRef($rel), $searchVar);
                 // add triplet to union var
                 $unionSub->addElement($groupPattern);
             }
             $in[] = $unionSub;
         } else {
             $rel = $setup->config->hierarchyRelations->in;
             // add optional sub relation
             // create optional graph to load sublacsses of selected class
             $queryOptional = new Erfurt_Sparql_Query2_GroupGraphPattern();
             $queryOptional->addTriple($subVar, new Erfurt_Sparql_Query2_IriRef($rel[0]), $searchVar);
             $in[] = $queryOptional;
         }
     }
     if (isset($setup->config->hierarchyRelations->out)) {
         if (count($setup->config->hierarchyRelations->out) > 1) {
             // init union var
             $unionSub = new Erfurt_Sparql_Query2_GroupGraphPattern();
             // parse config gile
             foreach ($setup->config->hierarchyRelations->out as $rel) {
                 // sub stuff
                 $optPattern = new Erfurt_Sparql_Query2_OptionalGraphPattern();
                 // add triple
                 $optPattern->addTriple($searchVar, new Erfurt_Sparql_Query2_IriRef($rel), $subVar);
                 // add triplet to union var
                 $unionSub->addElement($optPattern);
             }
             $out[] = $unionSub;
         } else {
             $rel = $setup->config->hierarchyRelations->out;
             // add optional sub relation
             // create optional graph to load sublacsses of selected class
             $queryOptional = new Erfurt_Sparql_Query2_GroupGraphPattern();
             $queryOptional->addTriple($searchVar, new Erfurt_Sparql_Query2_IriRef($rel[0]), $subVar);
             $out[] = $queryOptional;
         }
     }
     $inout = new Erfurt_Sparql_Query2_GroupOrUnionGraphPattern();
     $inout->addElements($in);
     $inout->addElements($out);
     $elements[] = $inout;
     /*$elements[] = new Erfurt_Sparql_Query2_Triple(
           $searchVar,
           new Erfurt_Sparql_Query2_IriRef(EF_RDF_TYPE),
           $classVar
       );*/
     // add filter
     $elements[] = new Erfurt_Sparql_Query2_Filter(new Erfurt_Sparql_Query2_sameTerm($searchVar, new Erfurt_Sparql_Query2_IriRef($uri)));
     $query->addElements($elements);
     $query->setLimit(1);
     // log results
     $this->_owApp->logger->info('NavigationController CHECK SUB: ' . PHP_EOL . $query->__toString());
     return $query;
 }