/** * @dataProvider valueDescriptionProvider */ public function testCommonMethods($dataItem, $property, $comparator, $expected) { $instance = new ValueDescription($dataItem, $property, $comparator); $this->assertEquals($expected['comparator'], $instance->getComparator()); $this->assertEquals($expected['dataItem'], $instance->getDataItem()); $this->assertEquals($expected['property'], $instance->getProperty()); $this->assertEquals($expected['queryString'], $instance->getQueryString()); $this->assertEquals($expected['queryStringAsValue'], $instance->getQueryString(true)); $this->assertEquals($expected['isSingleton'], $instance->isSingleton()); $this->assertEquals(array(), $instance->getPrintRequests()); $this->assertEquals(1, $instance->getSize()); $this->assertEquals(0, $instance->getDepth()); $this->assertEquals(0, $instance->getQueryFeatures()); }
/** * @since 2.2 * * @param ValueDescription $description * @param string &$value * * @return string * @throws RuntimeException */ public function mapComparator(ValueDescription $description, &$value) { $comparatorMap = array(SMW_CMP_EQ => '=', SMW_CMP_LESS => '<', SMW_CMP_GRTR => '>', SMW_CMP_LEQ => '<=', SMW_CMP_GEQ => '>=', SMW_CMP_NEQ => '!=', SMW_CMP_LIKE => ' LIKE ', SMW_CMP_NLKE => ' NOT LIKE '); $comparator = $description->getComparator(); if (!isset($comparatorMap[$comparator])) { throw new RuntimeException("Unsupported comparator '" . $comparator . "' in value description."); } if ($comparator === SMW_CMP_LIKE || $comparator === SMW_CMP_NLKE) { if ($description->getDataItem() instanceof DIUri) { $value = str_replace(array('http://', 'https://', '%2A'), array('', '', '*'), $value); } // Escape to prepare string matching: $value = str_replace(array('\\', '%', '_', '*', '?'), array('\\\\', '\\%', '\\_', '%', '_'), $value); } return $comparatorMap[$comparator]; }
private function doMapValueDescription(ValueDescription $description, &$exact) { if ($description->getComparator() === SMW_CMP_EQ) { $result = $this->exporter->getDataItemExpElement($description->getDataItem()); } else { // OWL cannot represent <= and >= ... $exact = false; $result = false; } return $result; }