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