\hyperlink{classCinisis}{Cinisis} is a \href{https://secure.wikimedia.org/wikipedia/en/wiki/CDS/ISIS}{\tt CDS/ISIS} database reading library written in PHP. It's intended for integrating or migrating existing ISIS databases into other applications. It is a wrapper around other ISIS libraries and tools, providing an uniform interface and iterators for easily fetching data without bothering with internals.

\hyperlink{classCinisis}{Cinisis} works with the following ISIS backend libraries:


\begin{DoxyItemize}
\item \href{http://search.cpan.org/~dpavlin/Biblio-Isis-0.24/lib/Biblio/Isis.pm}{\tt Biblio::Isis} through \href{http://pecl.php.net/package/perl}{\tt Perl PECL extension}, which is the recommended choice.
\item \href{http://malete.org}{\tt GNI's Malete}.
\item \href{http://pecl.php.net/package/isis}{\tt Openisis}.
\end{DoxyItemize}

Both Malete and Openisis support is outdated in favour os Biblio::Isis as it has proven to be simpler and more functional.

\subsection*{Installation and usage}


\begin{DoxyVerbInclude}
Cinisis database reader
=======================

Installation
------------

### Getting Cinisis

Cinisis source code can be obtained via git:

    git clone http://git.devlet.com.br/cinisis.git

This documentation covers just installation with Biblio::Isis library
and assumes a Debian like operating system.

### Installing BiblioIsis

The Biblio:Isis can be installed directly from package together with
development files for perl:

    apt-get install libbiblio-isis-perl libperl-dev

### Installing pecl-perl

Then download and build pecl-perl:

    pecl install perl

Due to a bug (see http://pecl.php.net/bugs/bug.php?id=16807), you might
prefer to install it directly from source:

    svn checkout http://svn.php.net/repository/pecl/perl/trunk pecl-perl
    cd pecl-perl
    phpize
    ./configure
    make install

You will still need to enable the extension in your php.ini depending on
how your system is configured.

### Getting spyc

Cinisis config files are written in YAML. You'll need to download Spyc
library from https://code.google.com/p/spyc/ and put the files at
the contrib/ folder.

Naming conventions
------------------

The following naming conventions are used through Cinisis aiming to help
iterating over all the data from a ISIS database.

  - Database:  an ISIS database.
  - Entry:     a given MFN in the database.
  - Value:     all the data from a given entry in the database.
  - Field:     a numbered set of values from a given entry.
  - Row:       a single value from a given field.
  - Main item: the data in a row without a qualifier.
  - Subfield:  every data in a row within a qualifier.
  - Item:      either a main item or subfield withing a row.

Example:

    MFN 1 with entry
    10: First  row of field 10^aWith a subfield^bAnd another one
    10: Second row of field 10^bJust with the second subfield
    20: This is the main item^yAnd this is another item

For that entry we have fields 10 and 20, where field 10 has two rows (i.e, two
repetitions). The main field is the data wich is has no qualifier (^) and a
subfield is the data with qualifiers (like subfields a and b from above).
\end{DoxyVerbInclude}
 