blob: c6a4f4040ca8dccd7bebfaab04c45a48d8ec3ce1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
<?php
namespace SMW\SPARQLStore\QueryEngine\Condition;
/**
* Abstract class that represents a SPARQL (sub-)pattern and relevant pieces
* of associated information for using it in query building.
*
* @ingroup SMWStore
*
* @license GNU GPL v2+
* @since 1.6
*
* @author Markus Krötzsch
*/
abstract class Condition {
/**
* If results could be ordered by the things that this condition
* matches, then this is the name of the variable to use in ORDER BY.
* Otherwise it is ''.
* @note SPARQL variable names do not include the initial "?" or "$".
* @var string
*/
public $orderByVariable = '';
/**
* Array that relates sortkeys (given by the users, i.e. property
* names) to variable names in the generated SPARQL query.
* Format sortkey => variable name
* @var array
*/
public $orderVariables = array();
/**
* Associative array of additional conditions that should not narrow
* down the set of results, but that introduce some relevant variable,
* typically for ordering. For instance, selecting the sortkey of a
* page needs only be done once per query. The array is indexed by the
* name of the (main) selected variable, e.g. "v42sortkey" to allow
* elimination of duplicate weak conditions that aim to introduce this
* variable.
* @var array of format "condition identifier" => "condition"
*/
public $weakConditions = array();
/**
* Associative array of additional namespaces that this condition
* requires to be declared
* @var array of format "shortName" => "namespace URI"
*/
public $namespaces = array();
/**
* Get the SPARQL condition string that this object represents. This
* does not inlcude the weak conditions, or additional formulations to
* match singletons (see SMWSparqlSingletonCondition).
*
* @return string
*/
abstract public function getCondition();
/**
* Tell whether the condition string returned by getCondition() is safe
* in the sense that it can be used alone in a SPARQL query. This
* requires that all filtered variables occur in some graph pattern,
* and that the condition is not empty.
*
* @return boolean
*/
abstract public function isSafe();
public function getWeakConditionString() {
return implode( '', $this->weakConditions );
}
}
|