The Open Source Library RXQ was the first RESTXQ implementation for MarkLogic Server. It was / is a hobby project by Jim Fuller who worked for MarkLogic at the time of creating the library. RXQ was used successfully on many commercial projects by MarkLogic Customers.

This page shows a comparison of features supported by XQRS and RXQ. Including a breakdown of RESTXQ Specification Support as well as additional features useful for creating RESTful Applications on MarkLogic Server. This document is dated 16th October 2018 and does not take into consideration any updates / enhancements added to RXQ that have taken place after this date.

RESTXQ Specification 1.0 (21st March 2016) Support XQRS 1.0 RXQ 1.0.3
Path Annotation Yes Partial1
Method Annotation Yes Partial2
Consumes Annotation Yes No
Produces Annotation Yes Partial3
Query Parameter Annotation Yes No
Form Parameter Annotation Yes No
Header Parameter Annotation Yes No
Cookie Parameter Annotation Yes No
Output Serialization for XML / HTML Yes Yes
Response XML Processing Yes No
RESTXQ Function Module Yes Yes
Other Features XQRS 1.0 RXQ 1.0.3
Path Annotations using Regular Expressions Yes Yes1
Multi-Statement Transactions Yes No4
Read-Only Functions Yes No5
Multipart Mixed Message Upload (multipart/mixed) Yes No
HTML Form File Uploads (multipart/form-data) Yes No
Custom Error Handler Functions Yes No
JSON Upload and Serialization Support Yes No
RDF Upload and Serialization Support Yes No
SPARQL Results Serialization Support Yes No
  • 1 RXQ supports extracting Path Segments via Regular Expressions which map to function parameters in the order in which they appear in the path, it does not however support mapping path segments defined by Annotation Template Grammars to function parameters
  • 2 RXQ does not support receiving a HTTP Body containing something like a XML or JSON document via POST or PUT requests
  • 3 RXQ does not support multiple Media Types in a Produces Annotation
  • 4 RXQ does not support Multi-statement Transactions. See the GitHub issue 11 for more details
  • 5 RXQ executes all operations with xdmp:update set to true, this means that write locks are obtained on any document that is read from. This can cause performance issues and XDMP-DEADLOCK exceptions. See GitHub issue 25 for more details