At Wed, 5 Dec 2007 10:58:06 -0500,
"Ray Denenberg, Library of Congress" <[log in to unmask]> wrote:
>
> [1 <text/plain; iso-8859-1 (quoted-printable)>]
> From: John Harrison
> > A search result is a product of the query used to generate it. While it
> > should contain the record data, it may necessary for it to contain other
> > information specific to the query (e.g. relevance measures, pointers to
> > words within the record that matched the query etc.) These extra pieces
> > of information are lost if the record is later retrieved again simply
> > using its identifier.
> >
> > Also you can't simply use the query, and the result's position within
> > the set as an id unless you can guarantee that no records have been
> > added/removed from the database between the initial search, and
> > subsequent re-retrieval.
>
> John - I think we're trying to figure out here whether it is
> reasonable for this protocol to require an id for each record (and
> for the result set). The question is, to what extent does this have
> to be done in good faith?
I think that John makes a good point about the differences between
records & results which has major implications for the semantics
of atom:id, which are examined below.
> At one extreme, I think most everyone agrees that saying that
> suppling a completely bogus id simply in order to comply with the
> Atom requirement to supply an id is not sufficiently "in good
> faith".
I think that if an ID is supplied which is reasonably guaranteed to
not be reused, and that it semantically identifies the result, this is
certainly in good faith. The point of atom:id is NOT to provide a URL
for retrieving the document; it is to provide an ID so that systems
know when one entry is the same as another.
> But look at the definition of the element: "Identifies the entry
> using a universally unique and permanent URI." (Everything else in
> the definition is a suggestion.) "permanent" does not mean forever
> accessible; it means that the id will never be used again, to
> identify another result. And "nerver" means "not for a long time".
> So if you supply an id that you intend can be used to retrieve the
> record sometime in the future, without any guarantee that it will
> work for any time beyond N seconds (and N might occasionally be
> zero) you have supplied a good faith id.
Not only does ‘permanent’ not mean ‘forever accessible’, it doesn’t
mean accessible at all. (Dereferencable in the following means a URI
that can be retrieved via some network protocol.)
| 4.2.6 The "atom:id" Element
| [...]
| Though the IRI might use a dereferencable scheme, Atom Processors
| MUST NOT assume it can be dereferenced.
Permanent means that:
| When an Atom Document is relocated, migrated, syndicated,
| republished, exported, or imported, the content of its atom:id
| element MUST NOT change.
This is irrelevant if, as John says above, atom:id identifies a
result. If atom:id identifies a record, I read this to mean that it
would be a violation of the spec to have an atom:id which changes for
each result set.
Universally unique means that it will not be used in the same feed
(which I think that we can read as meaning the system being searched),
ever, except to mean the same item.
| The content of an atom:id element MUST be created in a way that
| assures uniqueness.
> Ralph says not all records have an id. But if you can create a URI
> for the result set, you can create a URI for each record - I content
> that it is sufficient to merely append the result set position. Then
> you have created a good faith identifier.
Agreed, presuming that you can be certain that this ID will never mean
a different record, and that atom:id is read to mean the ID for this
result, not this record.
> Or If you have a real id for the record, but retrieval by that id
> won't retrieve result-set-related metadata, I would say that passes
> the "good faith" test. If you want to provide an id that allow
> subsequent retrieval of the record plus its result-set-related
> metadata, good, but I don't see that as a requirement.
Agreed, but in this case I would say that the atom:id identifies the
record only, and therefore the same id must always be used for the
same record in a result set.
> I would go so far as to suggest that you could use the SRU URL used
> to create the result set (perhaps modified so maxRecords is set to
> zero) as the URI for the set; and for a given record, the same url
> modified to retrieve that single record.
Doesn’t this presume that the data behind the service will never
change?
best,
Erik Hetzner
|