Re: A Note on URC Querying

Terry Allen (
Sun, 25 Jun 1995 13:22:09 -0700

From: "Terry Allen" <>
Message-Id: <>
Date: Sun, 25 Jun 1995 13:22:09 -0700
Subject: Re: A Note on URC Querying

(The subject line provides context for the message-id ...)

Ron asks whether his own example, cited by Mark, is a good way
to go; it included METHODS and INTERFACE elements.  And he
asks whether we could use processing instructions to convey
that info instead.  Here's the example:

> <!doctype urc SYSTEM "">
> <urc>
> <author method="m1">Smith, F.</author>
> <subject method="m2">Cats</subject>
> <URL></URL>
> <results>
> (Initially empty, this container holds the results of the
> searches.)
> </results>
> <methods>
> <m1 lang="niceScript">
> (A script written in the niceScript(TM) language that
> takes an argument which is the contents of the author
> field, splits on the comma, looks for an exact match
> of the last name and a first name beginning with what
> is left after the split. Returns NULL if there is no
> match, and a list of attribute:value pairs if there is.
> The attributes in this list lie in the intersection of
> those listed in the template and the Attribute-set of
> the candidate URC and the values are taken from the
> candidate URC.)
> </m1>
> <m2 lang="nastyScript">
> (A script that takes its argument from this template URC,
> compares it with the subject fields in the candidate URC,
> and returns TRUE if any of the subject lines contain the
> string "Cats", FALSE otherwise.)
> </m2>
> </methods>
> <interface>
> <main lang="pseudocode">
> bind input to name GLOB
> if (invoke(SELF.m2(GLOB))
> insert(SELF.results, SELF.m1(GLOB))
> </main>
> </interface>
> </urc>

This URC describes "all the works of {author} on cats currently
returned by the search procedure described."  At least when you
run it the first time (what happens when you run it again and
the result differ?  never mind, it's just an example).  And
it supplies the value for {author}.  The script itself could
be used for any author (the way the example is written; you
could generalize it for subject too), so really ought to be
an object in its own right, with its own URC, which you
can point to from this URC.  

You could use SGML processing instructions here, but when you
parse the URC with SGML you're probably just going to be setting
up a table of values that match known semantics; then the script
going to be called by some other, resolving application.  That
application needs to know what to do with 

<methods scheme="urn:foo"> 

where "urn:foo" points to the script, but that info can be 
contained in the definition of <methods>.

The method (defined by the owner of the name space)


Terry Allen  (   O'Reilly & Associates, Inc.
Editor, Digital Media Group    101 Morris St.
			       Sebastopol, Calif., 95472

A Davenport Group sponsor.  For information on the Davenport 
  Group see