Hacker News new | ask | show | jobs
by fnordsensei 1149 days ago
It's a different way of expressing queries. The smallest example I can think of is a simple navigation, like this:

  Find: ?friend-name, given: ?person
  
  [[?person :person/friends ?friend]
   [?friend :person/name ?friend-name]]
Given a person, get a set of the names of that person's friends.

Incidentally, all variables (prefixed with ? by convention, not requirement) are valid inputs or outputs from the query. So for the same query, you could give `?friend-name` and extract `?person`, to get the IDs of the people who are friends with a person of a particular name. This just requires a change in the inputs and outputs, not in the query itself.

The format is [ID field value]. If `value` happens to be an ID, you can navigate by it.

There's a lot more to it than this, of course.