<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head profile="http://internetalchemy.org/2003/02/profile"> <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" /> <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" /> <meta name="dc.title" content="Function: DAV manipulation functions - Virtuoso Functions Guide" /> <meta name="dc.subject" content="Function: DAV manipulation functions - Virtuoso Functions Guide" /> <meta name="dc.creator" content="OpenLink Software Documentation Team ; " /> <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" /> <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" /> <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" /> <link rel="parent" href="functions.html" title="Chapter Contents" /> <link rel="prev" href="appendixa.html" title="Appendix" /> <link rel="next" href="functions.html#.html" title="" /> <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" /> <link rel="stylesheet" type="text/css" href="doc.css" /> <link rel="stylesheet" type="text/css" href="/doc/translation.css" /> <title>Function: DAV manipulation functions - Virtuoso Functions Guide</title> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> <meta name="author" content="OpenLink Software Documentation Team ; " /> <meta name="copyright" content="OpenLink Software, 1999 - 2009" /> <meta name="keywords" content="" /> <meta name="GENERATOR" content="OpenLink XSLT Team" /> </head> <body> <div id="header"> <a name="fn_dav_api_change" /> <img src="../images/misc/logo.jpg" alt="" /> <h1>22. Virtuoso Functions Guide - DAV manipulation functions</h1> </div> <div id="navbartop"> <div> <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="fn_dav_api_add.html" title="DAV add & update functions">Prev</a> | <a class="link" href="fn_dav_api_lock.html" title="DAV lock manipulation functions">Next</a> </div> </div> <div id="currenttoc"> <form method="post" action="/doc/adv_search.vspx"> <div class="search">Keyword Search: <br /> <input type="text" name="q" /> <input type="submit" name="go" value="Go" /> </div> </form> <div> <a href="http://www.openlinksw.com/">www.openlinksw.com</a> </div> <div> <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a> </div> <br /> <div> <a href="index.html">Book Home</a> </div> <br /> <div> <a href="contents.html">Contents</a> </div> <div> <a href="preface.html">Preface</a> </div> <br /> <div> <a class="selected" href="functions.html">Virtuoso Functions Guide</a> </div> <br /> <div> <a href="functions.html#admin">Administration</a> </div> <div> <a href="functions.html#aggr">Aggregate Functions</a> </div> <div> <a href="functions.html#array">Array Manipulation</a> </div> <div> <a href="functions.html#bpel">BPEL APIs</a> </div> <div> <a href="functions.html#backup">Backup</a> </div> <div> <a href="functions.html#compression">Compression</a> </div> <div> <a href="functions.html#cursors">Cursor</a> </div> <div> <a href="functions.html#time">Date & Time Manipulation</a> </div> <div> <a href="functions.html#debug">Debug</a> </div> <div> <a href="functions.html#dict">Dictionary Manipulation</a> </div> <div> <a href="functions.html#encoding">Encoding & Decoding</a> </div> <div> <a href="functions.html#file">File Manipulation</a> </div> <div> <a href="functions.html#ft">Free Text</a> </div> <div> <a href="functions.html#hash">Hashing / Cryptographic</a> </div> <div> <a href="functions.html#ldap">LDAP</a> </div> <div> <a href="functions.html#localization">Locale</a> </div> <div> <a href="functions.html#mail">Mail</a> </div> <div> <a href="functions.html#misc">Miscellaneous</a> </div> <div> <a href="functions.html#number">Number</a> </div> <div> <a href="functions.html#phrz">Phrases</a> </div> <div> <a href="functions.html#rdf">RDF data</a> </div> <div> <a href="functions.html#rmt">Remote SQL Data Source</a> </div> <div> <a href="functions.html#repl">Replication</a> </div> <div> <a href="functions.html#soap">SOAP</a> </div> <div> <a href="functions.html#sql">SQL</a> </div> <div> <a href="functions.html#string">String</a> </div> <div> <a href="functions.html#txn">Transaction</a> </div> <div> <a href="functions.html#type">Type Mapping</a> </div> <div> <a href="functions.html#uddi">UDDI</a> </div> <div> <a href="functions.html#udt">User Defined Types & The CLR</a> </div> <div> <a href="functions.html#vad">VAD</a> </div> <div> <a href="functions.html#jvmpl">Virtuoso Java PL API</a> </div> <div> <a href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a> </div> <div> <a class="selected" href="functions.html#ws">Web & Internet</a> </div> <div class="selected"> <div> <a href="fn_dav_api_add.html">dav add & update fun...</a> </div> <div> <a href="fn_dav_api_lock.html">dav lock manipulatio...</a> </div> <div> <a class="selected" href="fn_dav_api_change.html">dav manipulation fun...</a> </div> <div> <a href="fn_dav_api_search.html">dav search functions</a> </div> <div> <a href="fn_dav_exp.html">dav_exp</a> </div> <div> <a href="fn_lfs_exp.html">lfs_exp</a> </div> <div> <a href="fn_serv_queue_top.html">serv_queue_top</a> </div> <div> <a href="fn_urlrewrite_create_regex_rule.html">urlrewrite_create_re...</a> </div> <div> <a href="fn_USER_KEY_LOAD.html">user_key_load</a> </div> <div> <a href="fn_vhost_define.html">vhost_define</a> </div> <div> <a href="fn_vhost_remove.html">vhost_remove</a> </div> <div> <a href="fn_dav_api_user.html">webdav users & group...</a> </div> <div> <a href="fn_client_attr.html">client_attr</a> </div> <div> <a href="fn_connection_get.html">connection_get</a> </div> <div> <a href="fn_connection_id.html">connection_id</a> </div> <div> <a href="fn_connection_is_dirty.html">connection_is_dirty</a> </div> <div> <a href="fn_connection_set.html">connection_set</a> </div> <div> <a href="fn_connection_vars.html">connection_vars</a> </div> <div> <a href="fn_connection_vars_set.html">connection_vars_set</a> </div> <div> <a href="fn_dbname.html">dbname</a> </div> <div> <a href="fn_ftp_get.html">ftp_get</a> </div> <div> <a href="fn_ftp_ls.html">ftp_ls</a> </div> <div> <a href="fn_ftp_put.html">ftp_put</a> </div> <div> <a href="fn_get_certificate_info.html">get_certificate_info</a> </div> <div> <a href="fn_get_keyword.html">get_keyword</a> </div> <div> <a href="fn_get_keyword_ucase.html">get_keyword_ucase</a> </div> <div> <a href="fn_http.html">http</a> </div> <div> <a href="fn_http_acl_get.html">http_acl_get</a> </div> <div> <a href="fn_http_acl_remove.html">http_acl_remove</a> </div> <div> <a href="fn_http_acl_set.html">http_acl_set</a> </div> <div> <a href="fn_http_body_read.html">http_body_read</a> </div> <div> <a href="fn_http_client.html">http_client</a> </div> <div> <a href="fn_http_client_ext.html">http_client_ext</a> </div> <div> <a href="fn_http_client_ip.html">http_client_ip</a> </div> <div> <a href="fn_http_debug_log.html">http_debug_log</a> </div> <div> <a href="fn_http_enable_gz.html">http_enable_gz</a> </div> <div> <a href="fn_http_file.html">http_file</a> </div> <div> <a href="fn_http_flush.html">http_flush</a> </div> <div> <a href="fn_http_get.html">http_get</a> </div> <div> <a href="fn_http_header.html">http_header</a> </div> <div> <a href="fn_http_header_get.html">http_header_get</a> </div> <div> <a href="fn_http_kill.html">http_kill</a> </div> <div> <a href="fn_http_listen_host.html">http_listen_host</a> </div> <div> <a href="fn_http_lock.html">http_lock</a> </div> <div> <a href="fn_http_map_get.html">http_map_get</a> </div> <div> <a href="fn_http_map_table.html">http_map_table</a> </div> <div> <a href="fn_http_param.html">http_param</a> </div> <div> <a href="fn_http_path.html">http_path</a> </div> <div> <a href="fn_http_pending_req.html">http_pending_req</a> </div> <div> <a href="fn_http_physical_path.html">http_physical_path</a> </div> <div> <a href="fn_http_proxy.html">http_proxy</a> </div> <div> <a href="fn_http_request_get.html">http_request_get</a> </div> <div> <a href="fn_http_request_header.html">http_request_header</a> </div> <div> <a href="fn_http_request_status.html">http_request_status</a> </div> <div> <a href="fn_http_rewrite.html">http_rewrite</a> </div> <div> <a href="fn_http_root.html">http_root</a> </div> <div> <a href="fn_http_unlock.html">http_unlock</a> </div> <div> <a href="fn_http_url.html">http_url</a> </div> <div> <a href="fn_http_value.html">http_value</a> </div> <div> <a href="fn_http_xslt.html">http_xslt</a> </div> <div> <a href="fn_json_parse.html">json_parse</a> </div> <div> <a href="fn_ses_connect.html">ses_connect</a> </div> <div> <a href="fn_ses_disconnect.html">ses_disconnect</a> </div> <div> <a href="fn_ses_read_line.html">ses_read_line</a> </div> <div> <a href="fn_ses_write.html">ses_write</a> </div> <div> <a href="fn_tcpip_gethostbyaddr.html">tcpip_gethostbyaddr</a> </div> <div> <a href="fn_tcpip_gethostbyname.html">tcpip_gethostbyname</a> </div> <div> <a href="fn_vsp_calculate_digest.html">vsp_calculate_digest</a> </div> <div> <a href="fn_wsdl_import_udt.html">wsdl_import_udt</a> </div> </div> <div> <a href="functions.html#xml">XML</a> </div> <div> <a href="functions.html#XPATH">XPATH & XQUERY</a> </div> <br /> <div> <a href="functionidx.html">Functions Index</a> </div> <br /> </div> <div id="text"> <h2>DAV manipulation functions</h2> <div class="refpurpose">Functions for manipulating an existing DAV collection or resource</div> <div class="funcsynopsis"> <span class="funcdef">integer <span class="function">DAV_COPY</span> </span> (<span class="paramdef">in <span class="parameter">path</span> varchar</span>, <span class="paramdef">in <span class="parameter">destination</span> varchar</span>, <span class="paramdef">in <span class="parameter">overwrite</span> integer</span>, <span class="paramdef">in <span class="parameter">permissions</span> varchar</span>, <span class="paramdef">in <span class="parameter">uname</span> varchar</span>, <span class="paramdef">in <span class="parameter">gname</span> varchar</span>, <span class="paramdef">in <span class="parameter">auth_uname</span> varchar</span>, <span class="paramdef">in <span class="parameter">auth_pwd</span> varchar</span>); </div> <div class="funcsynopsis"> <span class="funcdef">varchar <span class="function">DAV_MOVE</span> </span> (<span class="paramdef">in <span class="parameter">path</span> varchar</span>, <span class="paramdef">in <span class="parameter">destination</span> varchar</span>, <span class="paramdef">in <span class="parameter">overwrite</span> integer</span>, <span class="paramdef">in <span class="parameter">auth_uname</span> varchar</span>, <span class="paramdef">in <span class="parameter">auth_pwd</span> varchar</span>); </div> <div class="funcsynopsis"> <span class="funcdef">varchar <span class="function">DAV_PROP_REMOVE</span> </span> (<span class="paramdef">in <span class="parameter">path</span> varchar</span>, <span class="paramdef">in <span class="parameter">propname</span> varchar</span>, <span class="paramdef">in <span class="parameter">silent</span> integer</span>, <span class="paramdef">in <span class="parameter">auth_uname</span> varchar</span>, <span class="paramdef">in <span class="parameter">auth_pwd</span> varchar</span>); </div> <div class="funcsynopsis"> <span class="funcdef">integer <span class="function">DAV_PROP_SET</span> </span> (<span class="paramdef">in <span class="parameter">path</span> varchar</span>, <span class="paramdef">in <span class="parameter">propname</span> varchar</span>, <span class="paramdef">in <span class="parameter">propvalue</span> any</span>, <span class="paramdef">in <span class="parameter">auth_uname</span> varchar</span>, <span class="paramdef">in <span class="parameter">auth_pwd</span> varchar</span>); </div> <div class="refsect1"> <div class="refsect1title">Description</div> <p>DAV_COPY copies the resource or collection taken from path to the destination. returns COL_ID or RES_ID on success.</p> <p>DAV_MOVE moves the collection or resource to the destination path returns 1 on success.</p> <p>DAV_PROP_SET defines or updates the property with name <span class="computeroutput">propname</span> with <span class="computeroutput">propvalue</span>. Returns PROP_ID on success.</p> <p>DAV_PROP_GET returns the value of previously defined property with name <span class="computeroutput">propname</span>.</p> <p>DAV_PROP_REMOVE removal of the existing property on target path. If silent supplied then no error will be returned.</p> <p>Some attributes of resources and collections are accessible as predefined properties. E.g., owner user ID of the resource can be retrieved or changed by <span class="computeroutput">DAV_PROP_GET</span> or <span class="computeroutput">DAV_PROP_SET</span> with <span class="computeroutput">propname</span> equal to ':virtowneruid'. Some of these properties are read-only for all resources, some are writable for some but not for all resources. Names of all predefined properties starts with ':' so application-specific properties should not start with colon. Moreover, it is strongly suggested to use "unqualified XML names" as property names, otherwise PROPGET and PROPPATH DAV requests may return invalid XML responses. <span class="computeroutput">propname</span>.</p> </div> <div class="refsect1"> <div class="refsect1title">Parameters</div> <div class="refsect2"> <span class="refsect2title">path – </span> Directory and name of source to be operated on. </div> <div class="refsect2"> <span class="refsect2title">destination – </span> Directory and name of destination. </div> <div class="refsect2"> <span class="refsect2title">overwrite – </span> If non zero then overwrite is enabled. Default is 0. </div> <div class="refsect2"> <span class="refsect2title">permissions – </span> Access permission of Dav collection or resource. Defaults to '110100000R' if not supplied. </div> <div class="refsect2"> <span class="refsect2title">propname – </span> Property name. </div> <div class="refsect2"> <span class="refsect2title">propvalue – </span> Property value. </div> <div class="refsect2"> <span class="refsect2title">silent – </span> If specified as non zero, then no error will be returned. Default is 0, so errors are returned. </div> <div class="refsect2"> <span class="refsect2title">uname – </span> User identifier. Default is 'dav'. </div> <div class="refsect2"> <span class="refsect2title">gname – </span> Group identifier. Default is 'dav'. </div> <div class="refsect2"> <span class="refsect2title">auth_uname – </span> Administration user capable of performing the operation. Default is null. </div> <div class="refsect2"> <span class="refsect2title">auth_pwd – </span> Password of Administrator. Default is null. </div> </div> <div class="refsect1"> <div class="refsect1title">System Properties</div> <p>Names of 'standard live properties' matches tag names used in PROPFIND response for same purposes.</p> <p>Names of virtuoso-specific system properties starts with ':virt' substring.</p> <p>In the table below, 'Read/Write' access type means that the application can try to set the property. This does not mean that the property can be successfully changed for any particular resource or collection.</p> <table class="data"> <tr> <th class="data">propname</th> <th class="data">Access Type</th> <th class="data">Data Type</th> <th class="data">Description</th> </tr> <tr> <td class="data">:getlastmodified</td> <td class="data">Read/Write</td> <td class="data">datetime</td> <td class="data">Time of the last modification.</td> </tr> <tr> <td class="data">:creationdate</td> <td class="data">Read/Write</td> <td class="data">datetime</td> <td class="data">Time of creation.</td> </tr> <tr> <td class="data">:lastaccessed</td> <td class="data">Read Only</td> <td class="data">datetime</td> <td class="data">Time of the last access to the resource, may be inaccurate by a large amount.</td> </tr> <tr> <td class="data">:getetag</td> <td class="data">Read Only</td> <td class="data">varchar</td> <td class="data">The value of 'Etag' field of response header as reported by HEAD HTTP request.</td> </tr> <tr> <td class="data">:getcontenttype</td> <td class="data">Read/Write</td> <td class="data">varchar</td> <td class="data">MIME type of the resource ('dav/unix-directory' for collections).</td> </tr> <tr> <td class="data">:getcontentlength</td> <td class="data">Read Only</td> <td class="data">integer</td> <td class="data">Resource length in bytes. 0 for collections.</td> </tr> <tr> <td class="data">:resourcetype</td> <td class="data">Read Only</td> <td class="data">XML entity</td> <td class="data">'<D:collection/>' for collections, NULL for resources.</td> </tr> <tr> <td class="data">:virtowneruid</td> <td class="data">Read/Write</td> <td class="data">integer</td> <td class="data">User ID of resource owner user.</td> </tr> <tr> <td class="data">:virtownergid</td> <td class="data">Read/Write</td> <td class="data">integer</td> <td class="data">Group ID of resource owner group.</td> </tr> <tr> <td class="data">:virtpermissions</td> <td class="data">Read/Write</td> <td class="data">char(10)</td> <td class="data">Access permissions string.</td> </tr> <tr> <td class="data">:virtacl</td> <td class="data">Read/Write</td> <td class="data">long varbinary</td> <td class="data">Access Control List.</td> </tr> <tr> <td class="data">:virtdet</td> <td class="data">Read/Write</td> <td class="data">varchar</td> <td class="data">DAV Extension Type of special collection, NULL for plain collections and resources.</td> </tr> </table> <br /> <p>Note that the value of 'Etag' field depends on ':getlastmodified' value. Some HTTP clients, such as download managers, web indexing robots and proxy servers, use 'Etag' field to support caching and/or partial document transfer. It is unsafe to decrement ':getlastmodified' because it can confuse such clients.</p> <p>Only resource/collection owner or DAV administrator can change ':virtowneruid', ':virtownergid', ':virtpermissions' and ':virtacl'.</p> <p>Only DAV administrator can change ':virtdet' property.</p> </div> <div class="refsect1title">Errors</div> <table class="data"> <tr> <th class="data">Error Code</th> <th class="data">Description</th> </tr> <tr> <td class="data"> <a name="err>=0" /> <span class="errorcode">>=0</span> </td> <td class="data"> <span class="errorname">success</span> </td> </tr> <tr> <td class="data"> <a name="err-1" /> <span class="errorcode">-1</span> </td> <td class="data"> <span class="errorname">The path (target of operation) is not valid</span> </td> </tr> <tr> <td class="data"> <a name="err-2" /> <span class="errorcode">-2</span> </td> <td class="data"> <span class="errorname">The destination (path) is not valid</span> </td> </tr> <tr> <td class="data"> <a name="err-3" /> <span class="errorcode">-3</span> </td> <td class="data"> <span class="errorname">Overwrite flag is not set and destination exists</span> </td> </tr> <tr> <td class="data"> <a name="err-4" /> <span class="errorcode">-4</span> </td> <td class="data"> <span class="errorname">The target is resource, but source is collection (in copy move operations)</span> </td> </tr> <tr> <td class="data"> <a name="err-5" /> <span class="errorcode">-5</span> </td> <td class="data"> <span class="errorname">Permissions are not valid</span> </td> </tr> <tr> <td class="data"> <a name="err-6" /> <span class="errorcode">-6</span> </td> <td class="data"> <span class="errorname">uid is not valid</span> </td> </tr> <tr> <td class="data"> <a name="err-7" /> <span class="errorcode">-7</span> </td> <td class="data"> <span class="errorname">gid is not valid</span> </td> </tr> <tr> <td class="data"> <a name="err-8" /> <span class="errorcode">-8</span> </td> <td class="data"> <span class="errorname">Target is locked</span> </td> </tr> <tr> <td class="data"> <a name="err-9" /> <span class="errorcode">-9</span> </td> <td class="data"> <span class="errorname">Destination is locked</span> </td> </tr> <tr> <td class="data"> <a name="err-10" /> <span class="errorcode">-10</span> </td> <td class="data"> <span class="errorname">Property name is reserved (protected or private)</span> </td> </tr> <tr> <td class="data"> <a name="err-11" /> <span class="errorcode">-11</span> </td> <td class="data"> <span class="errorname">Property does not exists</span> </td> </tr> <tr> <td class="data"> <a name="err-12" /> <span class="errorcode">-12</span> </td> <td class="data"> <span class="errorname">Authentication failed</span> </td> </tr> <tr> <td class="data"> <a name="err-13" /> <span class="errorcode">-13</span> </td> <td class="data"> <span class="errorname">Operation is forbidden (the authenticated user do not have a permissions for the action)</span> </td> </tr> <tr> <td class="data"> <a name="err-14" /> <span class="errorcode">-14</span> </td> <td class="data"> <span class="errorname">the target type is not valid</span> </td> </tr> <tr> <td class="data"> <a name="err-15" /> <span class="errorcode">-15</span> </td> <td class="data"> <span class="errorname">The umask is not valid</span> </td> </tr> <tr> <td class="data"> <a name="err-16" /> <span class="errorcode">-16</span> </td> <td class="data"> <span class="errorname">The property already exists</span> </td> </tr> <tr> <td class="data"> <a name="err-17" /> <span class="errorcode">-17</span> </td> <td class="data"> <span class="errorname">Invalid property value</span> </td> </tr> <tr> <td class="data"> <a name="err-18" /> <span class="errorcode">-18</span> </td> <td class="data"> <span class="errorname">no such user</span> </td> </tr> <tr> <td class="data"> <a name="err-19" /> <span class="errorcode">-19</span> </td> <td class="data"> <span class="errorname">no home directory</span> </td> </tr> </table> <br /> <p /> <div class="refsect1"> <div class="refsect1title">Examples</div> <a name="ex_dav_api_change_1" /> <div class="example"> <div class="exampletitle">Copy and move operations</div> <p>Renaming of the resource and copy the folder. After executing the commands in the http://[host:port]/DAV/user/B/ we will show the resource B.txt</p> <div> <pre class="screen"> -- initial upload SQL> select DB.DBA.DAV_COL_CREATE ('/DAV/user/','110100000R', 'dav','dav','dav','dav'); SQL> select DB.DBA.DAV_COL_CREATE ('/DAV/user/A/','110100000R','dav','dav','dav','dav'); SQL> select DB.DBA.DAV_RES_UPLOAD ('/DAV/user/A/A.txt','this is a test','text/plain','110100000R','dav','dav','dav','dav'); SQL> DB.DBA.DAV_MOVE('/DAV/user/A/A.txt', '/DAV/user/A/B.txt', 1,'dav','dav'); SQL> DB.DBA.DAV_COPY('/DAV/user/A/', '/DAV/user/B/', 1, '110110000R','dav','dav','dav','dav'); </pre> </div> </div> </div> <div class="refsect1"> <div class="refsect1title">See Also</div> <p> <a href="fn_dav_api_add.html">DAV content add/update/delete functions</a> </p> <p> <a href="fn_dav_api_lock.html">DAV lock manipulation functions</a> </p> <p> <a href="fn_dav_api_search.html">DAV search functions</a> </p> <p> <a href="fn_dav_api_user.html">DAV user management functions</a> </p> </div> </div> <div id="footer"> <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div> <div id="validation"> <a href="http://validator.w3.org/check/referer"> <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /> </a> <a href="http://jigsaw.w3.org/css-validator/"> <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" /> </a> </div> </div> </body> </html>