[xquery-talk] XQuery user defined function
Amitabh Ojha
amitabhojha at rediffmail.com
Sun Mar 6 13:06:27 PST 2005
Dear Members,
This is about difficulty I am experiencing in understanding year 2001 style XQuery user defined function syntax. I am exposed to XQuery only since 2004.
It is with reference to a year 2001 research paper which seeks to explain, how one might use XQuery to query Resource Description Frameworks. The XQuery user defined functions cited in that paper are appended below. Of course it is apparent that in 2001, the keywords "DEFINE FUNCTION" were used. The point I am unable to follow is, whether the datatypes of input and output parameters in those days were permitted to be any arbitrary user defined types (e.g "charstring", "statement", ListOfStatement" as in the cases appended below).
If my understanding is correct, these days the datatypes of input/ output parameters of a user defined XQuery function are only allowed to be the generic datatypes as defined in XQuery Data Model - so that today one can't use such datatypes as "charstring", "statement", ListOfStatement" etc.
I look forward to some clarification on this please.
Regards.
Amitabh Ojha
DEFINE FUNCTION element-to-triple(charstring $about, ELEMENT $s)
RETURNS statement
{
<statement>
<subject>{$about}</subject>
<predicate>{name($s)}</predicate>
<object>{string($s)}</object>
</statement>
}
DEFINE FUNCTION attributes-to-triples(ELEMENT $about, ELEMENT $s)
RETURNS ListOfStatement
{
FOR $i IN $s/@*
WHERE not(name($i) = "rdf:about" or name($i) = "rdf:ID")
RETURN
<statement>
<subject>{ string($about) }</subject>
<predicate>{ name($i) }</predicate>
<object>{ string($i) }</object>
</statement>
}
define function rdf:predicate-range(ListOfDescription $d, charstring $predicatename) RETURNS rdfs:range
{
$d[@rdf:about=$predicate-name and rdf:type="rdf:Property"]/rdfs:range
}
define function rdf:predicate-domain(ListOfDescription $d, charstring $predicatename)
RETURNS rdfs:domain
{
$d[@rdf:about=$predicate-name and rdf:type="rdf:Property"]/rdfs:domain
}
define function rdf:instance-of-class(ListOfDescription $t, charstring $basename) RETURNS ListOfDescription
{
$t[rdf:type = $base-name]
,
for $i in $t[rdfs:subClassOf = $base-name]
return rdf:instance-of-class($t, string($i/@rdf:about))
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://xquery.com/pipermail/talk/attachments/20050306/24daad7e/attachment.htm
More information about the talk
mailing list