danielebarchiesi@4: srx = 'http://www.w3.org/2005/sparql-results#'; danielebarchiesi@4: $this->nsp[$this->srx] = 'srx'; danielebarchiesi@4: $this->allowCDataNodes = 0; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /* */ danielebarchiesi@4: danielebarchiesi@4: function done() { danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /* */ danielebarchiesi@4: danielebarchiesi@4: function getVariables() { danielebarchiesi@4: $r = array(); danielebarchiesi@4: foreach ($this->nodes as $node) { danielebarchiesi@4: if ($node['tag'] == $this->srx . 'variable') { danielebarchiesi@4: $r[] = $node['a']['name']; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: return $r; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: function getRows() { danielebarchiesi@4: $r = array(); danielebarchiesi@4: $index = $this->getNodeIndex(); danielebarchiesi@4: foreach ($this->nodes as $node) { danielebarchiesi@4: if ($node['tag'] == $this->srx . 'result') { danielebarchiesi@4: $row = array(); danielebarchiesi@4: $row_id = $node['id']; danielebarchiesi@4: $bindings = isset($index[$row_id])? $index[$row_id] : array(); danielebarchiesi@4: foreach ($bindings as $binding) { danielebarchiesi@4: $row = array_merge($row, $this->getBinding($binding)); danielebarchiesi@4: } danielebarchiesi@4: if ($row) { danielebarchiesi@4: $r[] = $row; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: return $r; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: function getBinding($node) { danielebarchiesi@4: $r = array(); danielebarchiesi@4: $index = $this->getNodeIndex(); danielebarchiesi@4: $var = $node['a']['name']; danielebarchiesi@4: $term = $index[$node['id']][0]; danielebarchiesi@4: $r[$var . ' type'] = preg_replace('/^uri$/', 'uri', substr($term['tag'], strlen($this->srx))); danielebarchiesi@4: $r[$var] = ($r[$var . ' type'] == 'bnode') ? '_:' . $term['cdata'] : $term['cdata']; danielebarchiesi@4: if (isset($term['a']['datatype'])) { danielebarchiesi@4: $r[$var . ' datatype'] = $term['a']['datatype']; danielebarchiesi@4: } danielebarchiesi@4: elseif (isset($term['a'][$this->xml . 'lang'])) { danielebarchiesi@4: $r[$var . ' lang'] = $term['a'][$this->xml . 'lang']; danielebarchiesi@4: } danielebarchiesi@4: return $r; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: function getBooleanInsertedDeleted() { danielebarchiesi@4: foreach ($this->nodes as $node) { danielebarchiesi@4: if ($node['tag'] == $this->srx . 'boolean') { danielebarchiesi@4: return ($node['cdata'] == 'true') ? array('boolean' => true) : array('boolean' => false); danielebarchiesi@4: } danielebarchiesi@4: elseif ($node['tag'] == $this->srx . 'inserted') { danielebarchiesi@4: return array('inserted' => $node['cdata']); danielebarchiesi@4: } danielebarchiesi@4: elseif ($node['tag'] == $this->srx . 'deleted') { danielebarchiesi@4: return array('deleted' => $node['cdata']); danielebarchiesi@4: } danielebarchiesi@4: elseif ($node['tag'] == $this->srx . 'results') { danielebarchiesi@4: return ''; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: return ''; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /* */ danielebarchiesi@4: danielebarchiesi@4: function getStructure() { danielebarchiesi@4: $r = array('variables' => $this->getVariables(), 'rows' => $this->getRows()); danielebarchiesi@4: /* boolean|inserted|deleted */ danielebarchiesi@4: if ($sub_r = $this->getBooleanInsertedDeleted()) { danielebarchiesi@4: foreach ($sub_r as $k => $v) { danielebarchiesi@4: $r[$k] = $v; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: return $r; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /* */ danielebarchiesi@4: danielebarchiesi@4: danielebarchiesi@4: }