Hi Christian,
I went through it's user manual to summarize some of it (wherever I said "node" before I now use "member" as Qizx manual does).
- There are system properties that every node has (nature = collection|document and path eg. /foo/bar/baz.xml). - There are custom properties. - Property keys are strings - Property values are of a type: boolean, long integer, double, string, date, a node (eg. element), any serializable Java object.
Querying on properties is fast, that's what I know (not sure how it is worked into indexes so I shouldn't speak about it's implementation :-)
Extension functions for property handling (ns xlib):
xlib:property-names($member) as xs:string* => list of property names on the member
xlib:get-property($member, $prop-name as xs:string) as item()? => value of the property
xlib:set-property($member, $name as xs:string, $value as item()) => sets a property (empty sequence clears a property)
xlib:commit() for commiting property changes. xlib:rollback()
How to use in search:
xlib:query-properties($path, prop1=true())//foo/bar
xlib:query-properties resolves into a sequence of members which can then be queried further using regular xpath.
note that the seoncd argument can be more complex xpath expressions, here's one I lifted from the manual to show it in XQuery context.
for $doc in xlib:query-properties ("/2005/propositions/*", creation-date > xs:date("2003-03-03") and x:fulltext(description, "suitable AND purpose")) return xlib:property($doc, "path")
Hope that this is useful.
--Marc
On Tue, Sep 2, 2014 at 8:41 PM, Christian GrĂ¼n christian.gruen@gmail.com wrote:
How do you currently think about this metadata and indexes? In Qizx I think that these properties are index so that querying on metadata is very fast.
I didn't look at Qizx in detail yet. How do such queries look like? Do you retrieve properties for a specific document, or do you retrieve all documents that contain a specific key or key/value combination?