fragment_downloaded_cb({"url":"tutorial.html#property-paths","fragment":"Property paths\nUp till now, we have been defining triples in the graph pattern as\nsets of subject predicate object. A single predicate like that\nis the simplest property path there is, it relates subject and object\ndirectly via a labeled arrow.\n\nProperty paths make it possible to define more complex connections\nbetween subject and object (literally, paths of properties). The /\noperator may be used for concatenation:\nThe | operator may be used for providing optional paths:\nThe unary * and + operators may be used to define recursive paths,\n* allows a 0-length property path (essentially, subject equals object),\nwhile + requires that the property path should happen at least once.\nThe unary ? operator makes portions of the property path optional,\nmatching paths with either length 0 or 1:\nThe ^ operator inverts the direction of the relation expressed\nby the property path:\nThe ! operator inverts the meaning of the match:\nThese operators may be all nested with ( ), allowing full\nexpressiveness when defining the ways subject and object are\ninterrelated.\n"});