On Mon, Feb 05, 2007 at 09:08:59PM +0100, Martijn Faassen wrote:
> First, I was testing the xquery support. I tried to shred a document
> like this:
>
> shred_doc('/home/faassen/xml/shaks/hamlet.xml', 'hamlet')
shred_doc() is actually a deprecated interface to MonetDB/XQuery's
document management. In the meantime we integrated document management
into the query language itself, so you will no longer need to work with
MIL for the document management and XQuery for the queries.
The recommended way to load documents into MonetDB/XQuery is now the
(XQuery) function pf:add-doc():
pf:add-doc (URI, alias) -> load document from URI and store it under
the name alias (similar to shred_doc())
pf:add-doc (URI, alias, coll) -> same, but add document to the
collection coll
pf:add-doc (URI, alias, pct) -> leave pct % free space for future
updates
The latter two variants can have performance advantages depending on
your scenario.
Note that if you want to use shred_doc() in MIL, you need to specify
both arguments as MIL strings, i.e., in double quotes.
> doc('/home/faassen/xml/shaks/hamlet.xml')//FM
>
> and this gets a step further (still wondering why the former didn't
> work, though):
>
> MAPI = [EMAIL PROTECTED]:50000
> QUERY = doc('/home/faassen/xml/shaks/hamlet.xml')//FM
> ERROR = !ERROR: I/O warning : failed to load external entity "play.dtd"
> !ERROR: [shred_url]: 1 times inserted nil due to errors at
> [...]
>
> The play.dtd is in the directory next to 'hamlet.xml', so don't know why
> that doesn't work either.
Sorry, I currently don't know what could have gone wrong here. Anyone
else on the list can give an answer?
MonetDB/XQuery, by the way, uses DTDs to know about ID and IDREF
attributes. The id() and idref() functions will only be supported if ID
and IDREF attributes have been declared in the DTD. (Also, an
additional index will be created to efficiently back id() and idref().)
> Next, I was trying out the xquery update support. Not hindered by any
> knowledge on how it works, I went to the referenced W3C document and
> adapted the first insert statement I saw there into this:
>
> do insert <year>2005</year>
> after fn:doc('/home/faassen/xml/shaks/hamlet2.xml')/PLAY/TITLE
>
> This however gives me an error message I do not understand:
>
> MAPI = [EMAIL PROTECTED]:50000
> QUERY = do insert <year>2005</year>
> after fn:doc('/home/faassen/xml/shaks/hamlet2.xml')/PLAY/TITLE
> ERROR = !type error: no variant of function upd:insertAfter accepts the
> given argument type(s): element TITLE { item* }*; (node* | node)*
> !type error: maybe you meant:
> !type error: upd:insertAfter (node, node*) as stmt
> !type error: illegal arguments for function upd:insertAfter
The problem is that the expression `fn:doc(...)/PLAY/TITLE' could
evaluate to a list of nodes. The `do insert ... after ...' clause,
however, is only allowed for single nodes as the target expression.
The Pathfinder XQuery compiler does static type checking. And if your
query is not type-safe it will be rejected. If you are sure that your
path evaluates to exactly one node, you can tell that to the compiler
and it will (at least it should ;-)) accept your query:
do insert ... after exactly-one (fn:doc (...)/PLAY/TITLE)
Other way to make sure that the target expression evaluates to exactly
one node include
for $n in fn:doc (...)/PLAY/TITLE return
do insert ... after $n
I hope I could help you a bit. Don't hesitate to ask again.
Jens
--
Jens Teubner
Technische Universitaet Muenchen, Department of Informatics
D-85748 Garching, Germany
Tel: +49 89 289-17259 Fax: +49 89 289-17263
XQuery processing at the speed of light: MonetDB/XQuery
http://www.monetdb-xquery.org/ http://www.pathfinder-xquery.org/
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Monetdb-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-developers