Example #1
0
 /**
  * @todo Implement testGetLocalName().
  */
 public function testGetLocalName()
 {
     $should = 'resource1';
     $is = $this->_object->getLocalName();
     $this->assertEquals($should, $is);
 }
 public function __construct($resourceUri)
 {
     $owApp = OntoWiki::getInstance();
     $store = $owApp->erfurt->getStore();
     $model = $owApp->selectedModel;
     $resource = new Erfurt_Sparql_Query2_IriRef($resourceUri);
     $ontology = new Erfurt_Sparql_Query2_IriRef(EF_OWL_ONTOLOGY);
     $fetchFrom = new Erfurt_Sparql_Query2_IriRef(static::SITE_FETCH_OPTIONS_FROM);
     // fetch options from this resource
     $query = new Erfurt_Sparql_Query2();
     list($key, $value, $class, $dataset) = $this->_queryAddVars($query, array('key', 'value', 'class', 'dataset'));
     $union = new Erfurt_Sparql_Query2_GroupOrUnionGraphPattern();
     // resource options
     $group = new Erfurt_Sparql_Query2_GroupGraphPattern();
     $group->addTriple($resource, $key, $value);
     $union->addElement($group);
     // class options
     $group = new Erfurt_Sparql_Query2_GroupGraphPattern();
     $group->addTriple($resource, EF_RDF_TYPE, $class);
     $group->addTriple($class, $key, $value);
     $union->addElement($group);
     // dataset options
     $group = new Erfurt_Sparql_Query2_GroupGraphPattern();
     $group->addTriple($dataset, EF_RDF_TYPE, new Erfurt_Sparql_Query2_IriRef(EF_OWL_ONTOLOGY));
     $group->addTriple($dataset, $key, $value);
     $union->addElement($group);
     $query->addElement($union);
     $query->addTriple($key, EF_RDF_TYPE, new Erfurt_Sparql_Query2_IriRef(static::SITE_TEMPLATE_OPTION));
     $results = $model->sparqlQuery($query);
     foreach ($results as $result) {
         $arrayKey = $result[$key->getName()];
         $this->_options[$arrayKey][$this->_getPriority($result)][] = $result[$value->getName()];
         $templateOption = new Erfurt_Rdf_Resource($arrayKey, $model);
         $arrayKeyLocalName = $templateOption->getLocalName();
         $this->_optionLocalNames[$arrayKeyLocalName][] = $arrayKey;
     }
     // fetch options from linked resources
     $query = new Erfurt_Sparql_Query2();
     list($other, $class, $dataset) = $this->_queryAddVars($query, array('other', 'class', 'dataset'));
     $union = new Erfurt_Sparql_Query2_GroupOrUnionGraphPattern();
     // resource links
     $group = new Erfurt_Sparql_Query2_GroupGraphPattern();
     $group->addTriple($resource, $fetchFrom, $other);
     $union->addElement($group);
     // class links
     $group = new Erfurt_Sparql_Query2_GroupGraphPattern();
     $group->addTriple($resource, EF_RDF_TYPE, $class);
     $group->addTriple($class, $fetchFrom, $other);
     $union->addElement($group);
     // dataset links
     $group = new Erfurt_Sparql_Query2_GroupGraphPattern();
     $group->addTriple($dataset, EF_RDF_TYPE, $ontology);
     $group->addTriple($dataset, $fetchFrom, $other);
     $union->addElement($group);
     $query->addElement($union);
     $results = $model->sparqlQuery($query);
     foreach ($results as $result) {
         $options = new TemplateOptionsClass($result[$other->getName()]);
         foreach ($options->_options as $arrayKey => $priorities) {
             foreach ($priorities as $priority => $values) {
                 $floor = floor($priority);
                 $this->_options[$arrayKey][(string) ($floor + 0.1 * $this->_getPriority($result) + 0.1 * ($priority - $floor))] = $values;
             }
         }
         foreach ($options->_optionLocalNames as $arrayKeyLocalName => $keys) {
             foreach ($keys as $key) {
                 if (!isset($this->_optionLocalNames[$arrayKeyLocalName]) || !in_array($key, $this->_optionLocalNames[$arrayKeyLocalName])) {
                     $this->_optionLocalNames[$arrayKeyLocalName][] = $key;
                 }
             }
         }
     }
     foreach (array_keys($this->_options) as $key) {
         ksort($this->_options[$key]);
     }
 }