summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--README.md30
1 files changed, 28 insertions, 2 deletions
diff --git a/README.md b/README.md
index 317fa3c..9567cbc 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,34 @@
 Datafu
 ======
 
-A Rust library for extracting data from config objects and other arbitrary
-object graphs, using a custom query language.
+Datafu is a Rust library for extracting data from config objects and other
+arbitrary object graphs, using a custom query language. As a query language,
+it takes on aspects of both XPath and jq, but differs significantly in scope.
+As a library, it attempts to keep things relatively straightforward.
+
+Comparison with XPath
+---------------------
+
+XPath is more-or-less standard. While it is primarily designed for XML, there
+are implementations of XPath that can work with JSON and other formats. It's
+also more or less type-aware and can do operations like numeric range checks
+without the use of user callbacks.
+
+Unlike XPath, Datafu is not primarily designed for XML, but rather as a more
+general-purpose tool that can also be used for XML. It even supports cyclic
+graphs, such as those which can be found in Lua tables.
+
+Comparison with jq
+------------------
+
+jq is first and foremost a CLI tool. It's also Turing-complete. If an
+[undecidable schema][halting_problem] isn't your thing, and the previous
+section of this README didn't convince you to use XPath, then Datafu should be
+your tool of choice.
+
+[halting_problem]:
+    https://en.wikipedia.org/wiki/Halting_problem
+    "Halting problem (Wikipedia)"
 
 License
 -------