io.sirix.service.xml.xpath.ImplementationNotes Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sirix-core Show documentation
Show all versions of sirix-core Show documentation
SirixDB is a hybrid on-disk and in-memory document oriented, versioned database system. It has a lightweight buffer manager, stores everything in a huge persistent and durable tree and allows efficient reconstruction of every revision. Furthermore, SirixDB implements change tracking, diffing and supports time travel queries.
Important to know:
- the document order is NOT stable (the XPath engine does not return the
result sequence in document order.)
This is due to the XML encoding in treetank, which makes efficient node
ordering impossible.
- node comparison << and >> is not supported due to the same reason
- namespace axis is not supported, because it is not supported in treetank
yet. This makes the engine not compatible with XPath 1.0, but has no
effect on the XPath 2.0 functionality, because the namespace axis is
deprecated in the XPath 2.0 spec.
- XMLSchema supported is implemented in the engine, but is not yet supported
by treetank, so every node' type is either "xs:untyped" or
"xs:untypedAtomic"
- functions and types can only be used with their namespace prefix.
e.g "fn:position()"
Not yet implemented things:
- functions: only a few very important functions are supported at the moment
- cast and treat as
- node constructors
- ordered sequences
- nilled property
- SchemaAttribute() / SchemaElement() node tests (no Schema support in Treetank)
- interrogation in the element() node test (nilled property)
- wildcards in the name of attributes (ns:name -> *:name or ns:*, because treetank does not
allow to access these easily)
- NamespaceAxis
- prefix optional (at the moment no support for missing prefixes)
- processing instructions (no treetank support)
Things that have to be improved:
- XPath error messages
- scanner: recognize maskings like < ('<')
- handling of untyped and untypedAtomic (casting)
- quote signs within a stringliteral are ignored
Optimization ideas:
- use threads
- use fulltext indices
- convert queries with backward axis in queries only using forward axes
© 2015 - 2024 Weber Informatics LLC | Privacy Policy