<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<section id="JCR.Introduction">
  <title>Introduction in eXoJCR</title>
    <para>Java Content Repository API as well as other Java language related
    standards is created within the Java Community Process http://jcp.org/ as
    a result of collaboration of an expert group and the Java community. It is
    known as <ulink
    url="http://www.jcp.org/en/jsr/detail?id=170">JSR-170</ulink> (Java
    Specification Request).</para>

    <section id="JCR.Introduction.DataModel">
      <title>Data model</title>

      <para>The main purpose of content repository is to maintain the data.
      The heart of CR is the data model:</para>

      <para><itemizedlist>
          <listitem>
            <para>The main data storage abstraction of JCR's data model is a
            workspace</para>
          </listitem>

          <listitem>
            <para>Each repository should have one or more workspaces</para>
          </listitem>

          <listitem>
            <para>The content is stored in a workspace as a hierarchy of
            items</para>
          </listitem>

          <listitem>
            <para>Each workspace has its own hierarchy of items</para>
          </listitem>
        </itemizedlist></para>

      <figure>
        <title>Item hierarchy</title>

        <mediaobject>
          <imageobject>
            <imagedata fileref="images/item-hierarchy.gif" />
          </imageobject>
        </mediaobject>
      </figure>

      <para>Node is intended to support the data hierarchy. It is of type
      using namespaced names which allows the content to be structured in
      accordance with standardized constraints. A node may be versioned
      through an associated version graph (optional feature)</para>

      <para>Property stored data are values of predefined types (String,
      Binary, Long, Boolean, Double, Date, Reference, Path).</para>

      <para>It is important to note that the data model for the interface (the
      repository model) is rarely the same as the data models used by the
      repository's underlying storage subsystems. The repository knows how to
      make the client's changes persistent because that is part of the
      repository configuration, rather than part of the application
      programming task.</para>
    </section>
</section>
