
                                  Apache Jena
                                  ===========

  Jena is a Java framework for building semantic web applications. It provides 
  tools and Java libraries to help you to develop semantic web and linked-data 
  apps, tools and servers.

  This distribution includes the following Apache Jena modules: 

  - jena-core: provides the Jena RDF APIs, Ontology APIs and Inference APIs. 
  - jena-arq: SPARQL 1.1, query and update.
  - jena-tdb: scalable and performant storage subsystem for Jena
  - jena-iri: provides an implementation of RFC 3987 (IRI) and RFC 3986 (URI)

  Installing Jena
  ---------------

   To use Jena in your application, ensure all the .jar files in the lib/
   directory are on the classpath or available to your web application. Jena
   is built and test with these .jar files.

  Scripts
  -------

  The directories bat/ and bin/ provide script wrappers to run Jena command
  line tools.  The scripts can be copied to a convenient place on the
  command path.

  To use the Jena tools from the command line you need to set the JENAROOT
  environment variable to point to the location where you have 
  unzipped the Jena distribution:

  Windows:
    set JENA_HOME=\path\to\apache-jena-2.7.5
    bat\sparql.bat --version    

  Linux:
    The command scripts automatically set JENA_HOME but if you want
    to switch to a different version fro the same scripts:

    export JENA_HOME=/path/to/apache-jena-2.7.5
    bin/sparql --version    
    
  If you receive a class not found exception when trying to run one of the 
  scripts then you may have set JENA_HOME incorrectly. A quick and easy way
  to validate that JENA_HOME is set correctly is to run the following:
  
  Windows:
    cd %JENA_HOME%
    
  Linux:
    cd $JENA_HOME
    
  If this command returns an error then JENA_HOME is not pointed to a valid directory


  Website
  -------

  The Apache Jena website is available here:
  http://jena.apache.org/


  Documentation
  -------------

  Getting started: http://jena.apache.org/getting_started/
  Tutorials: http://jena.apache.org/tutorials/
  Documentation: http://jena.apache.org/documentation/

  Support is provided via users@jena.apache.org mailing list.
  See also: http://jena.apache.org/help_and_support/

  Sources and Getting Involved
  ----------------------------

  The Apache Jena source code repository is here:
  http://svn.apache.org/repos/asf/jena/

  If you are interested in getting involved with Apache Jena development: 
  http://jena.apache.org/getting_involved/


  Licensing
  ---------

  Jena is provided under the Apache Software License v2.0
  See LICENSE for the full text.
