You are viewing a plain text version of this content. The canonical link for it is here.
Posted to triplesoup-commits@incubator.apache.org by le...@apache.org on 2007/04/13 08:56:16 UTC

svn commit: r528394 [2/35] - in /incubator/triplesoup/donations/TRIPLES-3-RDFStore: ./ dbms/ dbms/client/ dbms/client/t/ dbms/dbmsproxy/ dbms/deamon/ dbms/doc/ dbms/include/ dbms/libdbms/ dbms/utils/ doc/ include/ lib/ lib/DBD/ lib/RDFStore/ lib/RDFSto...

Added: incubator/triplesoup/donations/TRIPLES-3-RDFStore/Makefile.PL
URL: http://svn.apache.org/viewvc/incubator/triplesoup/donations/TRIPLES-3-RDFStore/Makefile.PL?view=auto&rev=528394
==============================================================================
--- incubator/triplesoup/donations/TRIPLES-3-RDFStore/Makefile.PL (added)
+++ incubator/triplesoup/donations/TRIPLES-3-RDFStore/Makefile.PL Fri Apr 13 01:56:01 2007
@@ -0,0 +1,854 @@
+# *
+# *	Copyright (c) 2000-2006 Alberto Reggiori <ar...@webweaving.org>
+# *	                   Dirk-Willem van Gulik <di...@webweaving.org>
+# *
+# * NOTICE
+# *
+# * This product is distributed under a BSD/ASF like license as described in the 'LICENSE'
+# * file you should have received together with this source code. If you did not get a
+# * a copy of such a license agreement you can pick up one at:
+# *
+# *     http://rdfstore.sourceforge.net/LICENSE
+# *
+# *
+# *	$Id: Makefile.PL,v 1.61 2006/06/19 10:10:21 areggiori Exp $
+
+use strict;
+use ExtUtils::MakeMaker 5.16 qw(WriteMakefile prompt);
+use Config;
+
+die "RDFStore needs Perl 5.004_05 or better. This is $]\n" 
+    if $] <= 5.00404;
+
+$| = 1;
+
+# check required modules
+my %missing_modules=();
+print "Checking for URI..............";
+eval {
+        require URI;
+        URI->VERSION(1.09);
+	};
+if ($@) {
+    print " missing - The URI module is required\n";
+    $missing_modules{'URI'}=1;
+} else {
+    print " ok\n";
+	};
+
+print "Checking for DBI..............";
+eval {
+        require DBI;
+	};
+if ($@) {
+    print " missing - You need the DBI module to run RDQL/Squish queries; without it only API based triple-match will be possible\n";
+    $missing_modules{'DBI'}=1;
+} else {
+    print " ok\n";
+	};
+
+# Some of this configurations are coming from the DB_File Makefile.PL extension written by Paul Marquess <Pa...@btinternet.com>
+print "Checking for XML::Parser......";
+eval {
+	require XML::Parser;
+	require XML::Parser::Expat;
+	XML::Parser->VERSION(2.00);
+	};
+if ($@) {
+    print " missing - XML::Parser module version 2 or higher is required\n";
+    $missing_modules{'XML::Parser'}=1;
+} else {
+    	print " ok\n\n";
+	warn qq|WARNING:
+
+	You have installed a recent version of the XML::Parser (>2.29) with built in expat XML parser support. 
+	If you are going to use RDFStore inside the Apache Web server using mod_perl, bear in mind that there 
+	is a symbol conflict between XML::Parser and apache when built with expat. To properly use the RDFStore 
+	parsing modules you need to rebuilt apache disabling expat (use --disable-rule=EXPAT while building your
+	apache-1.3.xx + mod_perl)
+
+|
+		if($XML::Parser::VERSION gt '2.29');
+	};
+
+if(     (exists $missing_modules{'XML::Parser'}) ||
+        (exists $missing_modules{'DBI'}) ||
+        (exists $missing_modules{'URI'}) ) {
+        print "\nSorry, can not build RDFStore :(\nPlease installed the missing modules above and try again.\n\n";
+        exit;
+	};
+
+my $PLATFORM = " -DRDFSTORE_PLATFORM_" . uc($^O);
+my ($LIB_DIR,$INC_DIR,$DB_NAME,$LIBS,$COMPAT185,$DB,$DBMS_INSTDIR);
+
+# check BerkeleyDB library locals: read arch_conf.in, pick up any from %ENV if possible otheriwse prompt the user
+# parse configuration file
+my %options = map { $_, 1 } qw( INCLUDE LIB DBNAME DBMS_INSTDIR RDFSTORE_WORD_STEMMING RDFSTORE_MAXRECORDS );
+my $conf_file = 'arch_conf.in';
+open(CONF, $conf_file) 
+	or die "Cannot open file $conf_file: $!\n" ;
+while (<CONF>) {
+	s/^\s*|\s*$//g;
+	next
+		if /^\s*$/ or /^\s*#/;
+	s/\s*#\s*$//;
+	my ($k, $v) = split(/\s+=\s+/, $_, 2);
+       	$k = uc $k;
+       	$options{$k} = $v
+		if ($options{$k});
+	};
+close(CONF);
+
+# complete the compilation parameters (precedence to %ENV settings)
+$INC_DIR = $ENV{'RDFSTORE_BDB_INCLUDE'}
+	if(defined $ENV{'RDFSTORE_BDB_INCLUDE'} and -e $ENV{'RDFSTORE_BDB_INCLUDE'} and -d _ );
+$INC_DIR = $options{'INCLUDE'}
+	if(exists $options{'INCLUDE'} and -e $options{'INCLUDE'} and -d _ );
+$LIB_DIR = $ENV{'RDFSTORE_BDB_LIB'}
+	if(defined $ENV{'RDFSTORE_BDB_LIB'} and -e $ENV{'RDFSTORE_BDB_LIB'} and -d _ );
+$LIB_DIR = $options{'LIB'}
+	if(exists $options{'LIB'} and -e $options{'LIB'} and -d _ );
+$DB_NAME = $options{'DBNAME'}
+	if(exists $options{'DBNAME'} and $options{'DBNAME'} ne '1');
+$COMPAT185 = "-DCOMPAT185 -DDB_LIBRARY_COMPATIBILITY_API"
+       	if (	(defined $ENV{'RDFSTORE_BDB_COMPAT185'}) &&
+		($ENV{'RDFSTORE_BDB_COMPAT185'} =~ /^\s*(on|true|1)\s*$/i) );
+if(exists $options{'DBMS_INSTDIR'} and -e $options{'DBMS_INSTDIR'} and -d _ ) {
+	$DBMS_INSTDIR = $options{'DBMS_INSTDIR'};
+} else {
+	$DBMS_INSTDIR = '/RDFStore';
+	};
+
+#other specific options either from enviornment or arch_conf.in
+my ($RDFSTORE_WORD_STEMMING,$RDFSTORE_MAXRECORDS);
+$RDFSTORE_WORD_STEMMING = $ENV{'RDFSTORE_WORD_STEMMING'}
+	if(defined $ENV{'RDFSTORE_WORD_STEMMING'});
+$RDFSTORE_WORD_STEMMING = $options{'RDFSTORE_WORD_STEMMING'}
+	if(exists $options{'RDFSTORE_WORD_STEMMING'});
+
+my $RDFSTORE_DEFAULT_MAXRECORDS=2097152;
+my $RDFSTORE_MIN_MAXRECORDS=128;
+my $RDFSTORE_MAX_MAXRECORDS=60000000; # 60M triples
+$RDFSTORE_MAXRECORDS = (	$ENV{'RDFSTORE_MAXRECORDS'} >= $RDFSTORE_MIN_MAXRECORDS and 
+				$ENV{'RDFSTORE_MAXRECORDS'} <= $RDFSTORE_MAX_MAXRECORDS ) ? 
+				$ENV{'RDFSTORE_MAXRECORDS'} :
+				$RDFSTORE_DEFAULT_MAXRECORDS
+	if(defined $ENV{'RDFSTORE_MAXRECORDS'});
+$RDFSTORE_MAXRECORDS = (	$options{'RDFSTORE_MAXRECORDS'} >= $RDFSTORE_MIN_MAXRECORDS and 
+				$options{'RDFSTORE_MAXRECORDS'} <= $RDFSTORE_MAX_MAXRECORDS ) ? 
+				$options{'RDFSTORE_MAXRECORDS'} :
+				$RDFSTORE_DEFAULT_MAXRECORDS
+	if(exists $options{'RDFSTORE_MAXRECORDS'});
+
+# eventually go in interactive mode
+if($ARGV[0] =~ m/-(i|interactive)/i) {
+	print <<QUESTION;
+You have chosen the interactive configuration - You will be now asked a few questions about
+your local BerkeleyDB installation and other RDF storage and indexing specific parameters (see arch_conf.in for more info)
+
+QUESTION
+
+	my ($idir,$ldir,$dbn);
+	while ( $idir = prompt( 'Where is the file db.h? '.( (defined $INC_DIR) ? '['.$INC_DIR.']' : '' ) ) ) {
+		$idir =~ s/^\s+//g;
+		$idir =~ s/\s+$//g;
+		last
+			if (-e $idir and -d _ );
+		print "\nInvalid directory '$idir' - try again\n\n";
+		};
+	$INC_DIR = $idir
+		if(	(defined $idir) &&
+			($idir ne '') );
+	while ( $ldir = prompt( 'Where is libdb? '.( (defined $LIB_DIR) ? '['.$LIB_DIR.']' : '' ) ) ) {
+		$ldir =~ s/^\s+//g;
+		$ldir =~ s/\s+$//g;
+		last
+			if (-e $ldir and -d _ );
+		print "\nInvalid directory '$ldir' - try again\n\n";
+		};
+	$LIB_DIR = $ldir
+		if(	(defined $ldir) &&
+			($ldir ne '') );
+	$dbn = prompt( 'Is the library called libdb (e.g. db4 - default value is db ) ? '.( (defined $DB_NAME) ? '['.$DB_NAME.']' : '' ) );
+	if(	(defined $dbn) &&
+		($dbn ne '') ) {
+		$dbn =~ s/^\s+//g;
+		$dbn =~ s/\s+$//g;
+		$dbn = '-l'.$dbn
+			unless( $dbn =~ m/^-l/ );
+		$DB_NAME = $dbn;
+		};
+
+	my $ws = prompt( 'How many characters your need word stemming on RDF text literals (an integer - default value is 5 ) ? '.( (defined $RDFSTORE_WORD_STEMMING) ? '['.$RDFSTORE_WORD_STEMMING.']' : '' ) );
+	if(	(defined $ws) &&
+		($ws ne '') &&
+		(int($ws)) ) {
+		$RDFSTORE_WORD_STEMMING = $ws;
+		};
+
+	my $mrs = prompt( 'How many RDF triples your database can contain (an integer in the range '.$RDFSTORE_MIN_MAXRECORDS.' <= X <= '.$RDFSTORE_MAX_MAXRECORDS.') ? '.( (defined $RDFSTORE_MAXRECORDS) ? '['.$RDFSTORE_MAXRECORDS.']' : '' ) );
+	if(	(defined $mrs) &&
+		($mrs ne '') &&
+		(int($mrs)) &&
+		( $mrs >= $RDFSTORE_MIN_MAXRECORDS ) &&
+		( $mrs <= $RDFSTORE_MAX_MAXRECORDS ) ) {
+		$RDFSTORE_MAXRECORDS = $mrs;
+		};
+
+	print "\n";
+	};
+
+# force some default settings
+if ( $^O =~ m/linux/ and ($ARGV[0] !~ m/-(i|interactive)/i) ) {
+	# Some modern versions of linux need this.
+	if ( -e '/usr/include/db4/db.h' ) {
+       		$DB = '-DDB4_INCLUDE';
+		unless($DB_NAME) {
+			# let's guess what the bloody Linux installation/distro did!
+			my @dbs = </usr/lib/libdb4.>;
+			if( $#dbs >= 0 ) {
+				$DB_NAME = '-ldb4';
+				};
+			@dbs = </usr/lib/libdb-4.0.>;
+			if( $#dbs >= 0 ) {
+				$DB_NAME = '-ldb-4.0';
+			} else {
+				$DB_NAME = '-ldb';
+				};
+			$LIBS = $DB_NAME;
+			};
+		$INC_DIR = '/usr/include/db4/' unless($INC_DIR);
+		};
+	if ( -e '/usr/include/db3/db.h' ) {
+       		$DB = '-DDB3_INCLUDE';
+		unless($DB_NAME) {
+			# let's guess what the bloody Linux installation/distro did!
+                        my @dbs = </usr/lib/libdb3.>;
+                        if( $#dbs >= 0 ) {
+                                $DB_NAME = '-ldb3';
+                                };
+                        @dbs = </usr/lib/libdb-3.0.>;
+                        if( $#dbs >= 0 ) {
+                                $DB_NAME = '-ldb-3.0';
+                        } else {
+                                $DB_NAME = '-ldb';
+                                };
+			$LIBS = $DB_NAME;
+			};
+		$INC_DIR = '/usr/include/db3/' unless($INC_DIR);
+		};
+	if ( -e '/usr/include/db2/db.h' ) {
+       		$DB = '-DDB2_INCLUDE';
+		unless($DB_NAME) {
+			# let's guess what the bloody Linux installation/distro did!
+                        my @dbs = </usr/lib/libdb2.>;
+                        if( $#dbs >= 0 ) {
+                                $DB_NAME = '-ldb2';
+                                };
+                        @dbs = </usr/lib/libdb-2.0.>;
+                        if( $#dbs >= 0 ) {
+                                $DB_NAME = '-ldb-2.0';
+                        } else {
+                                $DB_NAME = '-ldb';
+                                };
+			$LIBS = $DB_NAME;
+			};
+		$INC_DIR = '/usr/include/db2/' unless($INC_DIR);
+		};
+	if ( -e '/usr/include/db1/db.h' ) {
+       		$DB = '-DDB1_INCLUDE';
+		unless($DB_NAME) {
+			# let's guess what the bloody Linux installation/distro did!
+                        my @dbs = </usr/lib/libdb1.>;
+                        if( $#dbs >= 0 ) {
+                                $DB_NAME = '-ldb1';
+                                };
+                        @dbs = </usr/lib/libdb-1.0.>;
+                        if( $#dbs >= 0 ) {
+                                $DB_NAME = '-ldb-1.0';
+                        } else {
+                                $DB_NAME = '-ldb';
+                                };
+			$LIBS = $DB_NAME;
+			};
+		$INC_DIR = '/usr/include/db1/' unless($INC_DIR);
+		};
+	};
+
+$DB_NAME = '-ldb'
+	if (	(! defined $DB_NAME) &&
+		 $LIB_DIR );
+
+if(	($ARGV[0] =~ m/-(v|verbose)/i) ||
+	($ARGV[1] =~ m/-(v|verbose)/i) ||
+	($ARGV[0] =~ m/-(i|interactive)/i) ) {
+	print "Your configuration is the following:\n\n";
+	print "BerkeleyDB configuration:\n\n";
+	print "\tinclude directory          [".( (defined $INC_DIR) ? $INC_DIR : 'undefined/default to built in' )."]\n";
+	print "\tlibrary directory          [".( (defined $LIB_DIR) ? $LIB_DIR : 'undefined/default to built in' )."]\n";
+	print "\tlibrary name               [".( (defined $DB_NAME) ? $DB_NAME : 'undefined/default to built in' )."]\n\n";
+	print "RDF storage and indexing configuration:\n\n";
+	print "\tRDF literal word stemming up to       [$RDFSTORE_WORD_STEMMING]\n";
+	print "\tMax number of RDF statements/triples  [$RDFSTORE_MAXRECORDS]\n\n";
+	};
+
+my $debug = ($ENV{RDFSTORE_DEBUG} =~ m/1|yes|on|enable/) ? '-DRDFSTORE_DEBUG' : '';
+my $debug_malloc = ($ENV{RDFSTORE_DEBUG_MALLOC} =~ m/1|yes|on|enable/) ? '-DRDFSTORE_DEBUG_MALLOC' : '';
+my $dbms_debug = ($ENV{RDFSTORE_DBMS_DEBUG} =~ m/1|yes|on|enable/) ? '-DRDFSTORE_DBMS_DEBUG' : '';
+my $dbms_debug_malloc = ($ENV{RDFSTORE_DBMS_DEBUG_MALLOC} =~ m/1|yes|on|enable/) ? '-DRDFSTORE_DBMS_DEBUG_MALLOC' : '';
+my $flat_store_debug = ($ENV{RDFSTORE_FLAT_STORE_DEBUG} =~ m/1|yes|on|enable/) ? '-DRDFSTORE_FLAT_STORE_DEBUG' : '';
+my $profile = ($ENV{RDFSTORE_PROFILE} =~ m/1|yes|on|enable/) ? 1 : 0;
+
+my $RDFSTORE_OPTIONS = ' -DRDFSTORE_WORD_STEMMING='.$RDFSTORE_WORD_STEMMING
+	if(defined $RDFSTORE_WORD_STEMMING);
+$RDFSTORE_OPTIONS .= ' -DRDFSTORE_MAXRECORDS='.$RDFSTORE_MAXRECORDS
+	if(defined $RDFSTORE_MAXRECORDS);
+
+# generate dbms/arch.conf
+open(ARCH_CONF,">dbms/arch.conf"); #overwrite existing one
+print ARCH_CONF <<EOT;
+# *
+# *     Copyright (c) 2000-2006 Alberto Reggiori  <ar...@webweaving.org>
+# *     		        Dirk-Willem van Gulik <di...@webweaving.org>
+# *
+# * NOTICE
+# *
+# * This product is distributed under a BSD/ASF like license as described in the 'LICENSE'
+# * file you should have received together with this source code. If you did not get a
+# * a copy of such a license agreement you can pick up one at:
+# *
+# *     http://rdfstore.sourceforge.net/LICENSE
+# *
+#
+INSTDIR=$DBMS_INSTDIR
+
+TESTDIR=/usr/tmp/test.dbstore
+PIDFILE=/usr/tmp/test.dbstore.pid
+
+#CC = gcc
+RANLIB = ranlib
+LINT = lint
+LINTFLAGS = -chapbx
+
+INCLUDES= -I../include -I../../include
+
+DEFINES += $PLATFORM
+
+###### BEGIN specific confs
+EOT
+
+print ARCH_CONF "\n# add the include directory of your BDB installation is if not found to the bottom line\n";
+print ARCH_CONF ($INC_DIR) ? 'INCLUDES += -I'.$INC_DIR : '#INCLUDES += -I/usr/local/BerkeleyDB-4.0.14/include';
+print ARCH_CONF "\n\n# add the library directory of your BDB installation is if not found to the bottom line\n";
+print ARCH_CONF 'LIBS_DIR  = -L../libdbms ' . ( ($LIB_DIR) ? ' -L'.$LIB_DIR : ' # -L/usr/local/BerkeleyDB-4.0.14/lib' ) . "\n";
+print ARCH_CONF ( ($LIB_DIR) ? 'BDB_LD_LIBS_DIR  = '.$LIB_DIR : '#BDB_LD_LIBS_DIR = /usr/local/BerkeleyDB-4.0.14/lib' ) . "\n";
+print ARCH_CONF <<EOT;
+
+
+# uncomment one the following lines if your BDB library is not found. 
+#
+# NOTE: most BSD systems have BDB built in in the 'libc' standard C 
+#       library and do not need the bottom definition
+#
+EOT
+print ARCH_CONF "\n# anything not built in and linux platforms in general\n";
+print ARCH_CONF ($DB_NAME) ? 'LIBS  = '.$DB_NAME : '#LIBS = -ldb';
+print ARCH_CONF "\n";
+if($^O eq 'linux') {
+	print ARCH_CONF "\n# Some linux platforms have diffferent DB versions installed.\n";
+	if ( $DB ) {
+		print ARCH_CONF 'DEFINES  += "'.$DB.'"'."\n";
+	} else {
+		print ARCH_CONF <<EOT;
+# choose db1
+#DEFINES += "-DDB1_INCLUDE"
+#INCLUDES += -I/usr/include/db1/include
+#LIBS = -ldb1
+# ...or db2       
+#DEFINES += "-DDB2_INCLUDE"
+#INCLUDES += -I/usr/include/db2/include
+#LIBS = -ldb2
+# ...or db3       
+#DEFINES += "-DDB3_INCLUDE"
+#INCLUDES += -I/usr/include/db3/include
+#LIBS = -ldb3
+# ...or db4       
+#DEFINES += "-DDB4_INCLUDE"
+#INCLUDES += -I/usr/include/db4/include
+#LIBS = -ldb4
+
+EOT
+		};
+	};
+
+if($^O eq 'darwin') {
+	print ARCH_CONF "UID=root\n";
+	print ARCH_CONF "GID=wheel\n";
+} else {
+	print ARCH_CONF "UID=bin\n";
+	print ARCH_CONF "GID=bin\n";
+}
+
+print ARCH_CONF "\n\n# uncomment the following line to use BDB 1.85 compatibility code\n";
+print ARCH_CONF ($COMPAT185) ? 'DEFINES  += "'.$COMPAT185.'"' : '#DEFINES += " -DCOMPAT185 -DDB_LIBRARY_COMPATIBILITY_API "';
+print ARCH_CONF "\n";
+
+if($^O eq 'solaris') {
+	print ARCH_CONF <<EOT;
+
+# for SOLARIS
+LIBS += -lsocket -lnsl
+
+EOT
+	};
+
+print ARCH_CONF <<EOT;
+
+###### END specific confs
+
+LFLAGS = -g3 
+CFLAGS = -g3
+
+EOT
+print "# For profiling..\nCFLAGS += -pg\n" if($profile);
+print ARCH_CONF <<EOT;
+
+#
+# Whether to fork(on BSD) or multitread(on Irix)
+# or not at all. You propably want to leave this
+# in as the non-tread/non-fork versions have not
+# been used in a long time...
+#
+DEFINES += -DFORKING
+#
+# General debugging; also, some asserts present
+# so should use -NDEBUG :-)
+#
+EOT
+print ARCH_CONF ( ($ENV{RDFSTORE_DBMS_DEBUG} =~ m/1|yes|on|enable/) ? '' : '# ')."DEFINES += -DRDFSTORE_DBMS_DEBUG\n";
+print ARCH_CONF <<EOT;
+# 
+# Bit of malloc tracing, basically a
+# free check on termination
+#
+EOT
+print ARCH_CONF ( ($ENV{RDFSTORE_DBMS_DEBUG_MALLOC} =~ m/1|yes|on|enable/) ? '' : '# ')."DEFINES += -DRDFSTORE_DBMS_DEBUG_MALLOC\n";
+print ARCH_CONF <<EOT;
+# 
+# Wether to malloc once; and keep it on
+# a linked list; or contineously malloc/free
+# for dbase/child/connect structs, i.e. the
+# 'long' lived things (i.e. >= session time)
+#
+DEFINES += -DSTATIC_BUFF
+#
+# Same for short (per transact) buffers
+#
+DEFINES +=  -DSTATIC_CS_BUFF
+DEFINES +=  -DSTATIC_SC_BUFF
+#
+# If your kernel allows it.. *implies a 
+# kernel recompile normally*
+#
+# DEFINES += -DFD_SETSIZE=4048
+#
+
+EOT
+close(ARCH_CONF);
+
+# generate dbms/utils/dbmsd.sh
+open(DBMSDSH,">dbms/utils/dbmsd.sh"); #overwrite existing one
+print DBMSDSH <<EOT;
+#!/bin/sh
+##############################################################################
+#       Copyright (c) 2000-2006 All rights reserved
+#       Alberto Reggiori <ar...@webweaving.org>
+#       Dirk-Willem van Gulik <di...@webweaving.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer. 
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+#
+# 3. The end-user documentation included with the redistribution,
+#    if any, must include the following acknowledgment:
+#       "This product includes software developed by 
+#        Alberto Reggiori <ar...@webweaving.org> and
+#        Dirk-Willem van Gulik <di...@webweaving.org>."
+#    Alternately, this acknowledgment may appear in the software itself,
+#    if and wherever such third-party acknowledgments normally appear.
+#
+# 4. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#    This product includes software developed by the University of
+#    California, Berkeley and its contributors. 
+#
+# 5. Neither the name of the University nor the names of its contributors
+#    may be used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# 6. Products derived from this software may not be called "RDFStore"
+#    nor may "RDFStore" appear in their names without prior written
+#    permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# ====================================================================
+#
+# This software consists of work developed by Alberto Reggiori and 
+# Dirk-Willem van Gulik. The RDF specific part is based on public 
+# domain software written at the Stanford University Database Group by 
+# Sergey Melnik. For more information on the RDF API Draft work, 
+# please see <http://www-db.stanford.edu/~melnik/rdf/api.html>
+# The DBMS TCP/IP server part is based on software originally written
+# by Dirk-Willem van Gulik for Web Weaving Internet Engineering m/v Enschede,
+# The Netherlands.
+#
+##############################################################################
+DIR=$DBMS_INSTDIR
+
+#
+# WARNING: the following "ulimit" commands are generally *BIG* server machines
+#          enable them to your own risk! :-)
+#
+#ulimit -d 65000
+#ulimit -n 2048
+#ulimit -u 256
+#ulimit -m 64000
+
+RUNDIR=\$DIR/run
+LOGDIR=\$DIR/logs
+
+test -d \$RUNDIR || exit 1
+test -d \$LOGDIR || exit 1
+
+PIDFILE=\$RUNDIR/dbmsd.pid
+LOGFILE=\$DIR/logs/dbmsd_errorlog
+
+# Make sure cores are collected in the right place.
+#
+cd \$RUNDIR || exit 1
+
+EOT
+print DBMSDSH ( ($LIB_DIR) ? 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:'.$LIB_DIR : '#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/BerkeleyDB-4.0.14/lib' )."\n\n";
+print DBMSDSH '[ -f $DIR/bin/dbmsd ] && $DIR/bin/dbmsd -e $LOGFILE -U -P $PIDFILE -d $DIR/dbms && echo -n dbmsd'."\n\n";
+close(DBMSDSH);
+
+# generate dbms/utils/start_dbserver
+open(DBMSDSTART,">dbms/utils/start_dbserver");
+print DBMSDSTART <<EOT;
+#!/bin/sh
+##############################################################################
+#       Copyright (c) 2000-2006 All rights reserved
+#       Alberto Reggiori <ar...@webweaving.org>
+#       Dirk-Willem van Gulik <di...@webweaving.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer. 
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+#
+# 3. The end-user documentation included with the redistribution,
+#    if any, must include the following acknowledgment:
+#       "This product includes software developed by 
+#        Alberto Reggiori <ar...@webweaving.org> and
+#        Dirk-Willem van Gulik <di...@webweaving.org>."
+#    Alternately, this acknowledgment may appear in the software itself,
+#    if and wherever such third-party acknowledgments normally appear.
+#
+# 4. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#    This product includes software developed by the University of
+#    California, Berkeley and its contributors. 
+#
+# 5. Neither the name of the University nor the names of its contributors
+#    may be used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# 6. Products derived from this software may not be called "RDFStore"
+#    nor may "RDFStore" appear in their names without prior written
+#    permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# ====================================================================
+#
+# This software consists of work developed by Alberto Reggiori and 
+# Dirk-Willem van Gulik. The RDF specific part is based on public 
+# domain software written at the Stanford University Database Group by 
+# Sergey Melnik. For more information on the RDF API Draft work, 
+# please see <http://www-db.stanford.edu/~melnik/rdf/api.html>
+# The DBMS TCP/IP server part is based on software originally written
+# by Dirk-Willem van Gulik for Web Weaving Internet Engineering m/v Enschede,
+# The Netherlands.
+#
+##############################################################################
+
+$DBMS_INSTDIR/rc/dbmsd.sh
+
+EOT
+close(DBMSDSTART);
+
+# generate dbms/utils/stop_dbserver
+open(DBMSDSTOP,">dbms/utils/stop_dbserver");
+print DBMSDSTOP <<EOT;
+#!/bin/sh
+##############################################################################
+#       Copyright (c) 2000-2006 All rights reserved
+#       Alberto Reggiori <ar...@webweaving.org>
+#       Dirk-Willem van Gulik <di...@webweaving.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer. 
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+#
+# 3. The end-user documentation included with the redistribution,
+#    if any, must include the following acknowledgment:
+#       "This product includes software developed by 
+#        Alberto Reggiori <ar...@webweaving.org> and
+#        Dirk-Willem van Gulik <di...@webweaving.org>."
+#    Alternately, this acknowledgment may appear in the software itself,
+#    if and wherever such third-party acknowledgments normally appear.
+#
+# 4. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#    This product includes software developed by the University of
+#    California, Berkeley and its contributors. 
+#
+# 5. Neither the name of the University nor the names of its contributors
+#    may be used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# 6. Products derived from this software may not be called "RDFStore"
+#    nor may "RDFStore" appear in their names without prior written
+#    permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# ====================================================================
+#
+# This software consists of work developed by Alberto Reggiori and 
+# Dirk-Willem van Gulik. The RDF specific part is based on public 
+# domain software written at the Stanford University Database Group by 
+# Sergey Melnik. For more information on the RDF API Draft work, 
+# please see <http://www-db.stanford.edu/~melnik/rdf/api.html>
+# The DBMS TCP/IP server part is based on software originally written
+# by Dirk-Willem van Gulik for Web Weaving Internet Engineering m/v Enschede,
+# The Netherlands.
+#
+##############################################################################
+
+DIR=$DBMS_INSTDIR
+
+RUNDIR=\$DIR/run
+
+test -d \$RUNDIR || exit 1
+
+if [ \$# = 0 ]; then
+	PIDFILE=\$RUNDIR/dbmsd.pid
+else
+        PIDFILE=\$1
+fi
+ 
+echo 'Stoppping DBMS server....'
+echo 'First kills....'
+
+if [ -f \$PIDFILE ] ; then
+        PID=`cat \$PIDFILE`
+        if [ "x\$PID" != "x" ] && kill -0 \$PID 2>/dev/null ; then
+                kill -15 \$PID;
+        else
+                echo not a valid PID=\$PID in \$PIDFILE
+                rm -f \$PID;
+                exit 1
+        fi
+else
+        echo no \$PIDFILE found
+        exit 1
+fi
+ 
+echo DONE
+exit 0
+
+EOT
+close(DBMSDSTOP);
+
+# generate utils/Makefile
+open(UTILSMAKE,">utils/Makefile"); #overwrite existing one
+print UTILSMAKE <<EOT;
+# *
+# *     Copyright (c) 2000-2006 Alberto Reggiori <ar...@webweaving.org>
+# *                        Dirk-Willem van Gulik <di...@webweaving.org>
+# *
+# * NOTICE
+# *
+# * This product is distributed under a BSD/ASF like license as described in the 'LICENSE'
+# * file you should have received together with this source code. If you did not get a
+# * a copy of such a license agreement you can pick up one at:
+# *
+# *     http://rdfstore.sourceforge.net/LICENSE
+# *
+# * 
+TFILE=`date +%Y-%m-%d`
+
+include ../dbms/arch.conf
+
+OBJS = ../dbms/libdbms/libdbms.o ../rdfstore_flat_store.o ../rdfstore_kernel.o ../rdfstore_bits.o ../rdfstore_utf8.o ../rdfstore_xsd.o ../rdfstore_digest.o ../rdfstore_ap_sha1.o ../rdfstore_compress.o ../rdfstore_log.o ../rdfstore_serializer.o ../rdfstore_iterator.o ../sflcomp.o ../my_compress.o ../fraenkel_compress.o ../backend_bdb_store.o ../backend_dbms_store.o ../backend_caching_store.o
+
+all:	db_stats
+
+clean:
+	rm -f db_stats
+
+EOT
+
+print UTILSMAKE "db_stats: db_stats.c Makefile\n\t".'$(CC) $(CFLAGS) $(INCLUDES) -I ../dbms/include -I ../dbms/client $(DEFINES) $(LIBS_DIR) $(OBJS) '.( ($DB_NAME) ? $DB_NAME : '' ).' -o db_stats db_stats.c';
+close(UTILSMAKE);
+
+# generate test/Makefile
+open(TESTSMAKE,">test/Makefile"); #overwrite existing one
+print TESTSMAKE <<EOT;
+# *
+# *     Copyright (c) 2000-2006 Alberto Reggiori <ar...@webweaving.org>
+# *                        Dirk-Willem van Gulik <di...@webweaving.org>
+# *
+# * NOTICE
+# *
+# * This product is distributed under a BSD/ASF like license as described in the 'LICENSE'
+# * file you should have received together with this source code. If you did not get a
+# * a copy of such a license agreement you can pick up one at:
+# *
+# *     http://rdfstore.sourceforge.net/LICENSE
+# *
+# * 
+TFILE=`date +%Y-%m-%d`
+
+include ../dbms/arch.conf
+
+OBJS = ../dbms/libdbms/libdbms.o ../rdfstore_flat_store.o ../rdfstore_kernel.o ../rdfstore_bits.o ../rdfstore_utf8.o ../rdfstore_xsd.o ../rdfstore_digest.o ../rdfstore_ap_sha1.o ../rdfstore_compress.o ../rdfstore_log.o ../rdfstore_iterator.o  ../rdfstore_serializer.o ../sflcomp.o ../my_compress.o ../fraenkel_compress.o ../backend_bdb_store.o ../backend_dbms_store.o ../backend_caching_store.o
+
+
+all:	mytest mytest1 myingest
+
+test:	all
+	./mytest || exit 1
+	./mytest1 || exit 1
+	./myingest test.triples || exit 1
+
+clean:
+	rm -f mytest mytest1 myingest myingest.core mytest.core mytest1.core mytest.gmon mytest1.gmon
+
+EOT
+
+print TESTSMAKE "mytest: Makefile mytest.c\n\t".
+	'$(CC) $(CFLAGS) $(INCLUDES) -I ../dbms/include -I ../dbms/client $(DEFINES) $(LIBS_DIR) $(OBJS) '.( ($DB_NAME) ? $DB_NAME : '' ).' -o mytest mytest.c'.
+	"\n\n";
+print TESTSMAKE "mytest1: Makefile mytest1.c\n\t".
+	'$(CC) $(CFLAGS) $(INCLUDES) -I ../dbms/include -I ../dbms/client $(DEFINES) $(LIBS_DIR) $(OBJS) '.( ($DB_NAME) ? $DB_NAME : '' ).' -o mytest1 mytest1.c'.
+	"\n\n";
+print TESTSMAKE "myingest: Makefile myingest.c\n\t".
+	'$(CC) $(CFLAGS) $(INCLUDES) -I ../dbms/include -I ../dbms/client $(DEFINES) $(LIBS_DIR) $(OBJS) '.( ($DB_NAME) ? $DB_NAME : '' ).' -o myingest myingest.c'.
+	"\n\n";
+close(TESTSMAKE);
+
+if (defined $DB_NAME) {
+	$LIBS = $DB_NAME;
+} else {
+	if ($^O eq 'MSWin32') {
+		$LIBS = '-llibdb';
+	} else {
+		$LIBS = '-ldb';
+		};
+	};
+
+# build client libdbms library first
+`(cd dbms/libdbms; make clean; make)`;
+
+
+WriteMakefile(
+	#DIR	=> [ 'RDFNode' ],
+    	NAME      => 'RDFStore',
+	VERSION_FROM => 'RDFStore.pm',
+	INC             => ( (defined $INC_DIR) ? '-I'.$INC_DIR : '' )." -I dbms/include -I dbms/client -I ./include -I.",
+	LIBS            => [ ( (defined $LIB_DIR) ? '-L'.$LIB_DIR : '' ) . " $LIBS -Ldbms/libdbms -ldbms "],
+	XSPROTOARG      => '-noprototypes',
+	OPTIMIZE        => '-g',
+	DEFINE          => ( ($profile) ? '-pg ' : '' )." $PLATFORM $debug $debug_malloc $dbms_debug $dbms_debug_malloc $flat_store_debug -D_NOT_CORE $DB $COMPAT185 -DSTATIC_BUFF -DSTATIC_CS_BUFF -DSTATIC_SC_BUFF $RDFSTORE_OPTIONS",
+        LDFROM    => q[RDFStore$(OBJ_EXT) rdfstore_log$(OBJ_EXT) rdfstore_compress$(OBJ_EXT) rdfstore_flat_store$(OBJ_EXT) rdfstore_iterator$(OBJ_EXT) rdfstore_serializer$(OBJ_EXT) rdfstore_kernel$(OBJ_EXT) rdfstore_ap_sha1$(OBJ_EXT) rdfstore_digest$(OBJ_EXT) rdfstore_bits$(OBJ_EXT) rdfstore_utf8$(OBJ_EXT) rdfstore_xsd$(OBJ_EXT) sflcomp$(OBJ_EXT) my_compress$(OBJ_EXT) fraenkel_compress$(OBJ_EXT) backend_bdb_store$(OBJ_EXT) backend_dbms_store$(OBJ_EXT) backend_caching_store$(OBJ_EXT)],
+        OBJECT    => q[RDFStore$(OBJ_EXT) rdfstore_log$(OBJ_EXT) rdfstore_compress$(OBJ_EXT) rdfstore_flat_store$(OBJ_EXT) rdfstore_iterator$(OBJ_EXT) rdfstore_serializer$(OBJ_EXT) rdfstore_kernel$(OBJ_EXT) rdfstore_ap_sha1$(OBJ_EXT) rdfstore_digest$(OBJ_EXT) rdfstore_bits$(OBJ_EXT) rdfstore_utf8$(OBJ_EXT) rdfstore_xsd$(OBJ_EXT) my_compress$(OBJ_EXT) sflcomp$(OBJ_EXT) fraenkel_compress$(OBJ_EXT) backend_bdb_store$(OBJ_EXT) backend_dbms_store$(OBJ_EXT) backend_caching_store$(OBJ_EXT) ],
+    	'clean'     => { FILES => "y.tab.o lex.yy.o *.db" },
+	EXE_FILES    => [ "utils/rdf.pl", "utils/rdfquery.pl", "utils/rdfdump.pl" ],
+	($] ge '5.005') ? (
+                               'AUTHOR' => 'Alberto Reggiori <ar...@webweaving.org>, Dirk-Willem van Gulik <di...@webweaving.org>',
+                               'ABSTRACT' => 'Perl/C RDF storage and API',
+                           ) : ()
+);
+
+sub MY::post_initialize {
+	print <<EOT;
+
+In addition, you can install the (optional) DBMS module for TCP/IP remote storage by:
+
+cd dbms
+make
+make test
+make install (by default into $DBMS_INSTDIR directory)
+
+EOT
+	'';
+	};

Added: incubator/triplesoup/donations/TRIPLES-3-RDFStore/RDFStore.pm
URL: http://svn.apache.org/viewvc/incubator/triplesoup/donations/TRIPLES-3-RDFStore/RDFStore.pm?view=auto&rev=528394
==============================================================================
--- incubator/triplesoup/donations/TRIPLES-3-RDFStore/RDFStore.pm (added)
+++ incubator/triplesoup/donations/TRIPLES-3-RDFStore/RDFStore.pm Fri Apr 13 01:56:01 2007
@@ -0,0 +1,120 @@
+# *
+# *     Copyright (c) 2000-2006 Alberto Reggiori <ar...@webweaving.org>
+# *                        Dirk-Willem van Gulik <di...@webweaving.org>
+# *
+# * NOTICE
+# *
+# * This product is distributed under a BSD/ASF like license as described in the 'LICENSE'
+# * file you should have received together with this source code. If you did not get a
+# * a copy of such a license agreement you can pick up one at:
+# *
+# *     http://rdfstore.sourceforge.net/LICENSE
+# *
+# * Changes:
+# *     version 0.1 - 2000/11/03 at 04:30 CEST
+# *     version 0.31
+# *             - added use (include) of all RDFStore modules suite
+# *		- updated documentation
+# *     version 0.4
+# *		- updated documentation
+# *		- removed FindIndex module
+# *     version 0.50
+# *		- updated to be the corner stone of the RDF storage implemented in C and XS (lots of C and XS code really hoping to gain
+# *		  some speed and credibility here :) Here is the place where all magics happen....almost
+# *
+
+package RDFStore;
+
+use strict;
+use Carp;
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD $use_XSLoader);
+
+#disable crapy 'Use of uninitialized value in subroutine entry ' nightmare warnings; can we do it in the XS code in a portable and back-compatible way??
+$SIG{__WARN__} = sub { return if($_[0] =~ /^Use of uninitialized value in subroutine entry/); warn $_[0]; };
+
+require Exporter;
+use AutoLoader;
+BEGIN {
+    $use_XSLoader = 1 ;
+    eval { require XSLoader } ;
+
+    if ($@) {
+        $use_XSLoader = 0 ;
+        require DynaLoader;
+        @ISA = qw(DynaLoader);
+    };
+};
+
+@ISA = qw(Exporter DynaLoader);
+
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+@EXPORT = qw();
+
+$VERSION='0.51';
+
+sub AUTOLOAD {
+    # This AUTOLOAD is used to 'autoload' constants from the constant()
+    # XS function.  If a constant is not found then control is passed
+    # to the AUTOLOAD in AutoLoader.
+
+    my $constname;
+    ($constname = $AUTOLOAD) =~ s/.*:://;
+    croak "& not defined" if $constname eq 'constant';
+    my $val = constant($constname, @_ ? $_[0] : 0);
+    if ($! != 0) {
+	if ($! =~ /Invalid/) {
+	    $AutoLoader::AUTOLOAD = $AUTOLOAD;
+	    goto &AutoLoader::AUTOLOAD;
+	}
+	else {
+		croak "Your vendor has not defined RDFStore macro $constname";
+	}
+    }
+    no strict 'refs';
+    *$AUTOLOAD = sub () { $val };
+    goto &$AUTOLOAD;
+}
+
+if ($use_XSLoader) {
+	XSLoader::load("RDFStore", $VERSION);
+} else { 
+	bootstrap RDFStore $VERSION;
+};
+
+# Preloaded methods go here.
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+
+__END__
+
+=head1 NAME
+
+RDFStore - Perl extesion to store and query RDF graphs
+
+=head1 SYNOPSIS
+
+	use RDFStore;
+
+=head1 DESCRIPTION
+
+RDFStore is......
+
+The code is partially derived from B<Windex>, a free-text search perl extension written by Dirk-Willem van Gulik <di...@webweaving.org> and Nick Hibma <n_...@van-laarhoven.org>.
+
+=head1 Exported constants
+
+=head1 Exported functions
+
+=head1 AUTHORS
+
+	Alberto Reggiori <ar...@webweaving.org>
+	Dirk-Willem van Gulik <di...@webweaving.org>
+
+=head1 SEE ALSO
+
+perl(1).
+
+=cut