Table of Contents
This page lists all of the comparison predicates that Titan supports in global graph search and local traversals.
Compare enum specifies the following self-explanatory comparison predicates used for index query construction and used in the examples above:
Text enum specifies the search operator used to query for matching text or string values. We differentiate between two types of predicates:
Text search predicates which match against the individual words inside a text string after it has been tokenized. These predicates are not case sensitive.
- CONTAINS: is true if (at least) one word inside the text string matches the query string
- CONTAINS_PREFIX: is true if (at least) one word inside the text string begins with the query string
- CONTAINS_REGEX: is true if (at least) one word inside the text string matches the given regular expression
String search predicates which match against the entire string value
- PREFIX: if the string value starts with the given query string
- REGEX: if the string value matches the given regular expression in its entirety
See Section 20.1, “Full-Text Search” for more information about full-text and string search.
Geo enum specifies the geo-location predicate
Geo.WITHIN which holds true if one geometric object contains the other.
The following query examples demonstrate some of the predicates on the tutorial graph.
g.V.has("name","hercules") // 2) Find all vertices with an age greater than 50 g.V.has("age",gt,50) // or find all vertices between 1000 (inclusive) and 5000 (exclusive) years of age and order by increasing age g.V.has("age",gte,1000).has("age",lt,5000).orderBy("age",incr) // which returns the same result set as the following query but in reverse order g.V.interval("age",1000,5000).orderBy("age",decr) // 3) Find all edges where the place is at most 50 kilometers from the given latitude-longitude pair g.E.has("place",WITHIN,Geoshape.circle(37.97,23.72,50)) // 4) Find all edges where reason contains the word "loves" g.E.has("reason",CONTAINS,"loves") // or all edges which contain two words (need to chunk into individual words) g.E.has("reason",CONTAINS,"loves").has("reason",CONTAINS,"breezes") // or all edges which contain words that start with "lov" g.E.has("reason",CONTAINS_PREFIX,"lov") // or all edges which contain words that match the regular expression "br[ez]*s" in their entirety g.E.has("reason",CONTAINS_REGEX,"br[ez]*s") // 5) Find all vertices older than a thousand years and named "saturn" g.V.has("age",gt,1000).has("name","saturn")