The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SeeAlso::Source::BeaconAggregator - Beacon files as source for SeeAlso::Server

SYNOPSIS

  use CGI;
  use SeeAlso::Identifier::ISSN;
  use SeeAlso::Server;
  use SeeAlso::Source::BeaconAggregator;

  my $srcdescription = {
        "ShortName" => "TestService",                               # 16 Characters
         "LongName" => "Sample SeeAlso Beacon Aggregator",          # 48 characters
#     "Description" => "The following services are contained: ...", # 1024 Characters
      "DateModfied" => "...",
    _dont_advertise => 1,
  };

  my $CGI = CGI->new(); binmode(STDOUT, ":utf8");

  my $source = SeeAlso::Source::BeaconAggregator->new(
            'file' => "/path/to/existing/database",
 'identifierClass' => SeeAlso::Identifier::ISSN->new(),
         'verbose' => 1,
     'description' => $srcdescription,
  );

  my $server = SeeAlso::Server->new (
        'cgi' => $CGI,
         xslt => "/client/showservice.xsl",    # => <?xml-stylesheet?> + <?seealso-query-base?>
   clientbase => "/client/",      # => <?seealso-client-base?>
      expires => "+2d",
  );

  my $rawid = $CGI->param('id') || "";
  my $identifier = $rawid ? SeeAlso::Identifier::ISSN->new($rawid) : "";
  my $result = $server->query($source, $identifier ? $identifier->value() : undef);
  print $result;

DESCRIPTION

This Module allows a collection of BEACON files (cf. http://de.wikipedia.org/wiki/Wikipedia:BEACON) to be used as SeeAlso::Source (probably in the context of an SeeAlso::Server application). Therefore it implements the four methods documented in SeeAlso::Source

The BEACON files (lists of non-local identifiers of a certain type documenting the coverage of a given online database plus means for access) are imported by the methods provided by SeeAlso::Source::BeaconAggregator::Maintenance.pm, usually by employing the script sasbactrl.pl as command line client.

Serving other formats than SeeAlso or providing a BEACON file with respect to this SeeAlso service is achieved by using SeeAlso::Source::BeaconAggregator::Publisher.

USAGE

Class methods

beaconfields ( [ $what ] )

(Class method) Called without parameter returns an array of all valid field names for meta headers

  @meta_supported = SeeAlso::Source::BeaconAggregator->beaconfields();

With given parameter $what in scalar context returns the column name of the database for the abstract field name. In array context additionally the column type and optional flag designating a mandatory entry are returned.

  $internal_col = SeeAlso::Source::BeaconAggregator->beaconfields('FORMAT');

  ($internal_col, $specs, $mandatory)
      = SeeAlso::Source::BeaconAggregator->beaconfields('FORMAT');

Fields are:

  # mandatory
 FORMAT, TARGET
  # as of BEACON spec
 VERSION, FEED, TIMESTAMP, REVISIT, UPDATE
 CONTACT, INSTITUTION, ISIL, 
  # from the experimental BEACON spec
 MESSAGE, ONEMESSAGE, SOMEMESSAGE
 PREFIX, EXAMPLES
  # later additions
 COUNT, REMARK
  # current practise
 NAME
  # experimental extension "Konkordanzformat"
 ALTTARGET, IMGTARGET

osdKeys ( [ $what ] )

(Class method) Called without parameter returns an array of all valid element names for the OpenSearchDescription:

  @meta_names = SeeAlso::Source::BeaconAggregator->osdKeys();

With given parameter $what returns the value for the given OpenSearchDescription element:

  $osd_value = SeeAlso::Source::BeaconAggregator->beaconfields('LongName');

OSD elements are

 ShortName, Description
 Contact, Tags, LongName, Developer, Attribution, SyndicationRight, AdultContent
 Language, InputEncoding, OutputEncoding
  # special for SeeAlso::Family
 Example, Examples, BaseURL, DateModified, Source

SeeAlso::Source methods

new( %accessor [, %options ] )

Creates the SeeAlso::Source::BeaconAggregator object and connects to an existing database previously created with the methods from SeeAlso::Source::BeaconAggregator::Maintenance (currently SQLlite)

Accessor options:

dbh

handle of a database already connected to

dbroot

optional path to prepend to dsn or file

dsn

directory name (directory contains the database file "<dsn>-db"

file

full path of the database

Other options:

identifierClass

contains an already instantiated object of that class

verbose (0|1)
description

Hashref with options to be piped through to SeeAlso::Source

aliasfilter

Hashref with aliases to be filtered out from query results

cluster

dsn of a beacon source of identical identifier type giving a mapping (hash / altid) e.g. invalidated identifiers -> current identifiers.

When the identifier supplied for query() is mentioned in this table, the query will be executed against the associated current identifier and all invalidated ones (backward translation of forward translation).

When not (the mapping might not necessarily include the identiy mapping), the query behaves as if no "cluster" was given.

For translation between different identifier schemes before querying, use an appropriate SeeAlso::Identifier class.

Returns undef if unable to DBI->connect() to the database.

description ()

Inherited from SeeAlso::Source.

about ()

Inherited from SeeAlso::Source.

set_aliasfilter ( @aliaslist )

Init the hash with

query( [ $identifier] )

Returns a SeeAlso::Response listing all matches to the given string or SeeAlso::Identifier $identifier.

Auxiliary Methods

Sequence numbers (Seqnos) are primary keys to the database table where each row contains the meta fields of one BEACON file

Seqnos ( $colname , $query )

Return Seqnos from querying the table with all beacon headers in column (field name) $colname for a $query (which may contain SQL placeholders '%').

RepoCols ( [ $colname [, $seqno_or_alias ]] )

Return a hashref indexed by seqence number of all values of column (header field) $colname [alias] optionally constrained by a SeqNo or Alias.

Default for $colname is '_alias'.

OSDValues ( [ $key ] )

Returns a hashref containing the OpenSearchDescription keywords and their respective values.

admhash ( )

Returns a hashref with the contents of the admin table (readonly, not tied).

autoIdentifier ()

Initializes a missing identifierClass from the IDENTIFIER_CLASS entry in the admin table.

findExample ( $goal, $offset, [ $sth ])

Returns a hashref

 {       id => identier,
   response => Number of beacon files matching "/" Sum of individual hit counts
 }

for the $offset'th identifier occuring in at least $goal beacon instances.

$sth will be initialized by a statement handle to pass to subsequent calls if defined but false.

BUGS

SUPPORT

Send mail to the author

AUTHOR

Thomas Berger <ThB@gymel.com>

COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

SEE ALSO

perl(1).