You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2014/10/15 20:51:09 UTC
[37/51] [partial] reverting accidentally deleted files
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/dist/NOTICE-dist
----------------------------------------------------------------------
diff --git a/jena-fuseki2/dist/NOTICE-dist b/jena-fuseki2/dist/NOTICE-dist
new file mode 100644
index 0000000..a840c0b
--- /dev/null
+++ b/jena-fuseki2/dist/NOTICE-dist
@@ -0,0 +1,216 @@
+Apache Jena - module Fuseki
+Copyright 2011-2013 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions of this software were originally based on the following:
+ - Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP
+ - Copyright 2010, 2011 Epimorphics Ltd.
+ - Copyright 2010, 2011 Talis Systems Ltd.
+These have been licensed to the Apache Software Foundation under a software grant.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+slf4j:
+ Copyright (c) 2004-2011 QOS.ch
+ All rights reserved.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+(c) Copyright 2003, Plugged In Software
+This product includes software developed by
+PluggedIn Software under a BSD license.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+ Jetty Web Container
+ Copyright 1995-2012 Mort Bay Consulting Pty Ltd.
+
+under the Apache 2.0 License.
+
+The Jetty Web Container includes:
+
+UnixCrypt.java
+Copyright 1996 Aki Yoshida,
+modified April 2001 by Iris Van den Broeke, Daniel Deville.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+From Apache HttpComponents Client:
+
+This project contains annotations derived from JCIP-ANNOTATIONS
+Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+ Apache Xerces Java
+ Copyright 1999-2013 The Apache Software Foundation
+
+ This product includes software developed at
+ The Apache Software Foundation (http://www.apache.org/).
+
+ Portions of this software were originally based on the following:
+ - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+ - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+ - voluntary contributions made by Paul Eng on behalf of the
+ Apache Software Foundation that were originally developed at iClick, Inc.,
+ software copyright (c) 1999.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+From Apache Lucene:
+
+ICU4J, (under analysis/icu) is licensed under an MIT styles license
+and Copyright (c) 1995-2008 International Business Machines Corporation and others
+
+Some data files (under analysis/icu/src/data) are derived from Unicode data such
+as the Unicode Character Database. See http://unicode.org/copyright.html for more
+details.
+
+Brics Automaton (under core/src/java/org/apache/lucene/util/automaton) is
+BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/
+
+The levenshtein automata tables (under core/src/java/org/apache/lucene/util/automaton) were
+automatically generated with the moman/finenight FSA library, created by
+Jean-Philippe Barrette-LaPierre. This library is available under an MIT license,
+see http://sites.google.com/site/rrettesite/moman and
+http://bitbucket.org/jpbarrette/moman/overview/
+
+This product includes code (JaspellTernarySearchTrie) from Java Spelling
+Checking Package (jaspell): http://jaspell.sourceforge.net/
+License: The BSD License (http://www.opensource.org/licenses/bsd-license.php)
+
+The snowball stemmers in
+ analysis/common/src/java/net/sf/snowball
+were developed by Martin Porter and Richard Boulton.
+The snowball stopword lists in
+ analysis/common/src/resources/org/apache/lucene/analysis/snowball
+were developed by Martin Porter and Richard Boulton.
+The full snowball package is available from
+ http://snowball.tartarus.org/
+
+The KStem stemmer in
+ analysis/common/src/org/apache/lucene/analysis/en
+was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst)
+under the BSD-license.
+
+The Arabic,Persian,Romanian,Bulgarian, and Hindi analyzers (common) come with a default
+stopword list that is BSD-licensed created by Jacques Savoy.
+See http://members.unine.ch/jacques.savoy/clef/index.html.
+
+The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers
+(common) are based on BSD-licensed reference implementations created by Jacques Savoy and
+Ljiljana Dolamic.
+
+The Stempel analyzer (stempel) includes BSD-licensed software developed
+by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil,
+and Edmond Nolan.
+
+The Polish analyzer (stempel) comes with a default
+stopword list that is BSD-licensed created by the Carrot2 project. The file resides
+in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt.
+See http://project.carrot2.org/license.html.
+
+The SmartChineseAnalyzer source code (smartcn) was
+provided by Xiaoping Gao and copyright 2009 by www.imdict.net.
+
+WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/)
+is derived from Unicode data such as the Unicode Character Database.
+See http://unicode.org/copyright.html for more details.
+
+The Morfologik analyzer (morfologik) includes BSD-licensed software
+developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/).
+
+Morfologik uses data from Polish ispell/myspell dictionary
+(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia)
+LGPL and Creative Commons ShareAlike.
+
+Morfologic includes data from BSD-licensed dictionary of Polish (SGJP)
+(http://sgjp.pl/morfeusz/)
+
+Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original
+source code for this can be found at http://www.eclipse.org/jetty/downloads.php
+
+===========================================================================
+Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration
+===========================================================================
+
+This software includes a binary and/or source version of data from
+
+ mecab-ipadic-2.7.0-20070801
+
+which can be obtained from
+
+ http://atilika.com/releases/mecab-ipadic/mecab-ipadic-2.7.0-20070801.tar.gz
+
+or
+
+ http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz
+
+===========================================================================
+mecab-ipadic-2.7.0-20070801 Notice
+===========================================================================
+
+Nara Institute of Science and Technology (NAIST),
+the copyright holders, disclaims all warranties with regard to this
+software, including all implied warranties of merchantability and
+fitness, in no event shall NAIST be liable for
+any special, indirect or consequential damages or any damages
+whatsoever resulting from loss of use, data or profits, whether in an
+action of contract, negligence or other tortuous action, arising out
+of or in connection with the use or performance of this software.
+
+A large portion of the dictionary entries
+originate from ICOT Free Software. The following conditions for ICOT
+Free Software applies to the current dictionary as well.
+
+Each User may also freely distribute the Program, whether in its
+original form or modified, to any third party or parties, PROVIDED
+that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
+on, or be attached to, the Program, which is distributed substantially
+in the same form as set out herein and that such intended
+distribution, if actually made, will neither violate or otherwise
+contravene any of the laws and regulations of the countries having
+jurisdiction over the User or the intended distribution itself.
+
+NO WARRANTY
+
+The program was produced on an experimental basis in the course of the
+research and development conducted during the project and is provided
+to users as so produced on an experimental basis. Accordingly, the
+program is provided without any warranty whatsoever, whether express,
+implied, statutory or otherwise. The term "warranty" used herein
+includes, but is not limited to, any warranty of the quality,
+performance, merchantability and fitness for a particular purpose of
+the program and the nonexistence of any infringement or violation of
+any right of any third party.
+
+Each user of the program will agree and understand, and be deemed to
+have agreed and understood, that there is no warranty whatsoever for
+the program and, accordingly, the entire risk arising from or
+otherwise connected with the program is assumed by the user.
+
+Therefore, neither ICOT, the copyright holder, or any other
+organization that participated in or was otherwise related to the
+development of the program and their respective officials, directors,
+officers and other employees shall be held liable for any and all
+damages, including, without limitation, general, special, incidental
+and consequential damages, arising out of or otherwise in connection
+with the use or inability to use the program or any product, material
+or result produced or otherwise obtained by using the program,
+regardless of whether they have been advised of, or otherwise had
+knowledge of, the possibility of such damages at any time during the
+project or thereafter. Each user will be deemed to have agreed to the
+foregoing by his or her commencement of use of the program. The term
+"use" as used herein includes, but is not limited to, the use,
+modification, copying and distribution of the program and the
+production of secondary products from the program.
+
+In the case where the program, whether in its original form or
+modified, was distributed or delivered to or received by a user from
+any person, organization or entity other than ICOT, unless it makes or
+grants independently of ICOT any specific warranty to the user in
+writing, such person, organization or entity, will also be exempted
+from and not be held liable to the user for any such damages as noted
+above as far as the program is concerned.
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/dwim
----------------------------------------------------------------------
diff --git a/jena-fuseki2/dwim b/jena-fuseki2/dwim
new file mode 100755
index 0000000..34eaab6
--- /dev/null
+++ b/jena-fuseki2/dwim
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+
+curl -XPOST --header "Content-type: text/trig" --data-binary @D.trig \
+ http://localhost:3030/ds/data
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/dwim-upload
----------------------------------------------------------------------
diff --git a/jena-fuseki2/dwim-upload b/jena-fuseki2/dwim-upload
new file mode 100755
index 0000000..555919f
--- /dev/null
+++ b/jena-fuseki2/dwim-upload
@@ -0,0 +1,32 @@
+#!/bin/bash
+# How to do a file upload in curl
+
+# GSP strict
+U='http://localhost:3030/ds/data?graph=http://example/G'
+# PUT
+## curl --upload-file D.ttl --header 'Content-Type: text/turtle' "$U"
+
+# POST
+curl -XPOST --upload-file D.ttl --header 'Content-Type: text/turtle' "$U"
+
+# GSP strict / file upload
+## curl -F 'file=@D.ttl' http://localhost:3030/ds/data
+
+# Quads to GSP
+
+## curl -F 'file=@D.ttl' http://localhost:3030/ds/data
+## curl -F 'file=@D.trig' http://localhost:3030/ds/data
+
+# Quads to graph : NGs in data ignored
+# curl -F 'file=@D.trig' 'http://localhost:3030/ds/data?default'
+#curl -F 'file=@D.trig' 'http://localhost:3030/ds/data?graph=http://example/G'
+
+# Dataset
+## curl -F 'file=@D.trig' http://localhost:3030/ds
+
+# Upload service
+## curl -F 'file=@D.trig' -F 'name=http://graph/' 'http://localhost:3030/ds/upload'
+
+
+echo "==== Dataset"
+curl http://localhost:3030/ds
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/examples/README
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/README b/jena-fuseki2/examples/README
new file mode 100644
index 0000000..1c51b9e
--- /dev/null
+++ b/jena-fuseki2/examples/README
@@ -0,0 +1,6 @@
+This directory includes some examples - they will need to be adapted to
+local requirements.
+
+service-* ; Examples of service assembler descriptions
+
+jetty-fuseki.xml : A Jetty XML configuration file.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/examples/jetty-fuseki.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/jetty-fuseki.xml b/jena-fuseki2/examples/jetty-fuseki.xml
new file mode 100644
index 0000000..4087364
--- /dev/null
+++ b/jena-fuseki2/examples/jetty-fuseki.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
+
+<!--
+Simple example of using a jetty configuration file for setting up a Jetty server.
+-->
+
+<!--
+http://www.eclipse.org/jetty/documentation/current/configuring-connectors.html
+-->
+
+<Configure id="Server" class="org.eclipse.jetty.server.Server">
+ <Call name="addConnector">
+ <Arg>
+ <New class="org.eclipse.jetty.server.ServerConnector">
+ <Arg name="server"><Ref refid="Server" /></Arg>
+ <Arg name="factories">
+ <Array type="org.eclipse.jetty.server.ConnectionFactory">
+ <Item>
+ <New class="org.eclipse.jetty.server.HttpConnectionFactory">
+ <Arg name="config"><Ref refid="httpConfig" /></Arg>
+ </New>
+ </Item>
+ </Array>
+ </Arg>
+ <Set name="port"><Property name="jetty.port" default="3535" /></Set>
+ <!--<Set name="host"><Property name="jetty.host" default="localhost" /></Set>-->
+ </New>
+ </Arg>
+ </Call>
+</Configure>
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/examples/service-inference-1.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/service-inference-1.ttl b/jena-fuseki2/examples/service-inference-1.ttl
new file mode 100644
index 0000000..5fe894b
--- /dev/null
+++ b/jena-fuseki2/examples/service-inference-1.ttl
@@ -0,0 +1,39 @@
+## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+# Example of a data service with only SPARQL query on an
+# in-memory inference model. Data is taken from a file
+# when the data service is started.
+
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+## Service with only SPARQL query on an inference model.
+## Inference model bbase data in TDB.
+
+<#service1> rdf:type fuseki:Service ;
+ fuseki:name "inf-mem" ;
+ fuseki:serviceQuery "sparql" ; # SPARQL query service
+ fuseki:dataset <#dataset> ;
+ .
+
+# Dataset with only the default graph.
+<#dataset> rdf:type ja:RDFDataset ;
+ ja:defaultGraph <#model_inf> ;
+ .
+
+# The inference model
+<#model_inf> a ja:InfModel ;
+ ja:baseModel <#baseModel> ;
+ ja:reasoner [
+ ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
+ ] .
+
+# The base data.
+<#baseModel> a ja:MemoryModel ;
+ ja:content [ja:externalContent <file:Data/data.ttl> ] ;
+ .
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/examples/service-inference-2.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/service-inference-2.ttl b/jena-fuseki2/examples/service-inference-2.ttl
new file mode 100644
index 0000000..b036fa6
--- /dev/null
+++ b/jena-fuseki2/examples/service-inference-2.ttl
@@ -0,0 +1,43 @@
+## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+# Example of a data service with SPARQL query abnd update on an
+# inference model. Data is taken from TDB.
+
+## ---------------------------------------------------------------
+## Service with only SPARQL query on an inference model.
+## Inference model base data is in TDB.
+
+<#service2> rdf:type fuseki:Service ;
+ fuseki:name "inf" ; # http://host/inf
+ fuseki:serviceQuery "sparql" ; # SPARQL query service
+ fuseki:serviceUpdate "update" ;
+ fuseki:dataset <#dataset> ;
+ .
+
+<#dataset> rdf:type ja:RDFDataset ;
+ ja:defaultGraph <#model_inf> ;
+ .
+
+<#model_inf> a ja:InfModel ;
+ ja:baseModel <#tdbGraph> ;
+ ja:reasoner [
+ ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
+ ] .
+
+## Base data in TDB.
+<#tdbDataset> rdf:type tdb:DatasetTDB ;
+ tdb:location "DB" ;
+ # If the unionDefaultGraph is used, then the "update" service should be removed.
+ # tdb:unionDefaultGraph true ;
+ .
+
+<#tdbGraph> rdf:type tdb:GraphTDB ;
+ tdb:dataset <#tdbDataset> .
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/examples/service-tdb-1.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/service-tdb-1.ttl b/jena-fuseki2/examples/service-tdb-1.ttl
new file mode 100644
index 0000000..8f0c34a
--- /dev/null
+++ b/jena-fuseki2/examples/service-tdb-1.ttl
@@ -0,0 +1,29 @@
+## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+## Example of a TDB dataset published using Fuseki
+## Persistent storage.
+## read-only
+
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+## Read-only TDB dataset (only read services enabled).
+
+<#service_tdb_read_only> rdf:type fuseki:Service ;
+ rdfs:label "TDB Service (R)" ;
+ fuseki:name "ds" ;
+ fuseki:serviceQuery "query" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:serviceReadGraphStore "data" ;
+ fuseki:serviceReadGraphStore "get" ;
+ fuseki:dataset <#tdb_dataset_read> ;
+ .
+
+<#tdb_dataset_read> rdf:type tdb:DatasetTDB ;
+ tdb:location "DB1" ;
+ tdb:unionDefaultGraph true ;
+ .
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/examples/service-tdb-2.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/service-tdb-2.ttl b/jena-fuseki2/examples/service-tdb-2.ttl
new file mode 100644
index 0000000..09a2151
--- /dev/null
+++ b/jena-fuseki2/examples/service-tdb-2.ttl
@@ -0,0 +1,32 @@
+## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+## Example of a TDB dataset published using Fuseki
+## Persistent storage.
+## All services enabled.
+
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+<#service_tdb_all> rdf:type fuseki:Service ;
+ rdfs:label "TDB Service (RW)" ;
+ fuseki:name "data" ;
+ fuseki:serviceQuery "query" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:serviceUpdate "update" ;
+ fuseki:serviceUpload "upload" ;
+ fuseki:serviceReadWriteGraphStore "data" ;
+ # A separate read-only graph store endpoint:
+ fuseki:serviceReadGraphStore "get" ;
+ fuseki:dataset <#tdb_dataset_readwrite> ;
+ .
+
+<#tdb_dataset_readwrite> rdf:type tdb:DatasetTDB ;
+ tdb:location "DB2" ;
+## # Query timeout on this dataset (milliseconds)
+## ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ;
+## # Default graph for query is the (read-only) union of all named graphs.
+ .
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/examples/service-tdb-mem.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/examples/service-tdb-mem.ttl b/jena-fuseki2/examples/service-tdb-mem.ttl
new file mode 100644
index 0000000..82a3fc2
--- /dev/null
+++ b/jena-fuseki2/examples/service-tdb-mem.ttl
@@ -0,0 +1,32 @@
+## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+## An in-memory TDB datasets - for testing.
+
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+<#service_tdb> rdf:type fuseki:Service ;
+ rdfs:label "TDB(mem) Service" ;
+ fuseki:name "MEM" ;
+ fuseki:serviceQuery "query" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:serviceUpdate "update" ;
+ fuseki:serviceUpload "upload" ;
+ fuseki:serviceReadWriteGraphStore "data" ;
+ # A separate read-only graph store endpoint:
+ fuseki:serviceReadGraphStore "get" ;
+ fuseki:dataset <#tdb_dataset> ;
+ .
+
+<#tdb_dataset> rdf:type tdb:DatasetTDB ;
+ tdb:location "--mem--" ;
+ ## Query timeout on this dataset (milliseconds)
+ ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ;
+ ## Default graph for query is the (read-only) union of all named graphs.
+ tdb:unionDefaultGraph true ;
+ .
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/fuseki
----------------------------------------------------------------------
diff --git a/jena-fuseki2/fuseki b/jena-fuseki2/fuseki
new file mode 100644
index 0000000..5e0ca07
--- /dev/null
+++ b/jena-fuseki2/fuseki
@@ -0,0 +1,477 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# =========
+#
+# Startup script for Fuseki under *nix systems (works with cygwin too)
+#
+# Configuration
+# -------------
+# Default values are loaded from /etc/default/fuseki, if it exists.
+#
+# JAVA
+# Command to invoke Java. If not set, java (from the PATH) will be used.
+#
+# JAVA_OPTIONS
+# Extra options to pass to the JVM.
+#
+# FUSEKI_HOME
+# Where Fuseki is installed. If not set, the script will try
+# to guess it based on the script invokation path.
+#
+# FUSEKI_BASE
+# The root of the runtime area - logs files, system files, local configuration.
+# Defaults to /etc/fuseki.
+#
+# FUSEKI_RUN
+# Where the fuseki.pid file should be stored. It defaults
+# first available of /var/run, /usr/var/run, and /tmp if not set.
+#
+# FUSEKI_PID
+# The FUSEKI PID file, defaults to $FUSEKI_RUN/fuseki.pid
+#
+# FUSEKI_ARGS
+# The arguments to pass to the Fuseki server on the command line. Defaults to:
+# # if FUSEKI_CONF is not set
+# --config=$FUSEKI_CONF # if FUSEKI_CONF is set
+#
+# FUSEKI_START
+# Path to the jar file. Defaults to $FUSEKI_HOME/fuseki-server.jar
+
+# FUSEKI_CONF
+# The Fuseki configuration file, usually in RDF Turtle notation.
+#
+# FUSEKI_USER
+# If set, the server will be run as this user
+#
+# FUSEKI_LOGS
+# Directory where logs will be generated.
+# Fixed as $FUSEKI_BASE/logs.
+#
+# FUSEKI_LOGS_STDERROUT
+# Log file with stderr and stdout log output from Fuseki.
+# Defaults to $FUSEKI_LOGS/stderrout.log
+
+### BEGIN INIT INFO
+# Provides: fuseki
+# Required-Start: $remote_fs $network
+# Required-Stop: $remote_fs $network
+# Default-Start: 3 4 5
+# Default-Stop: 0 1 2 6
+# Short-Description: Start Jena Fuseki at boot time
+# Description: Jena Fuseki is a service that provides a SPARQL API over HTTP
+### END INIT INFO
+
+# DEBUG=1
+NAME=fuseki
+if [ -f /etc/default/$NAME ]; then
+ . /etc/default/$NAME
+fi
+
+if [ -f /lib/lsb/init-functions ]; then
+ . /lib/lsb/init-functions
+else
+ # simple replacements for LSB daemon logging functions if not defined
+ log_daemon_msg() {
+ echo $1
+ }
+ log_begin_msg() {
+ echo $1
+ }
+ log_end_msg() {
+ if [ $1 -eq 0]; then
+ echo '[OK]'
+ else
+ echo '[failed]'
+ fi
+ }
+fi
+
+usage()
+{
+ echo "Usage: ${0##*/} {start|stop|restart|run|status}"
+ exit 1
+}
+
+[ $# -gt 0 ] || usage
+CMD="$1"
+
+# Utility functions
+
+findDirectory()
+{
+ local L OP=$1
+ shift
+ for L in "$@"; do
+ [ "$OP" "$L" ] || continue
+ printf %s "$L"
+ break
+ done
+}
+
+findFile()
+{
+ local L F=$1
+ shift
+ for L in "$@"; do
+ [ -f "${L}/${F}" ] || continue
+ printf %s "${L}/${F}"
+ break
+ done
+}
+
+running()
+{
+ local PID=$(cat "$1" 2>/dev/null) || return 1
+ ps -p "$PID" >/dev/null 2>&1
+}
+
+# Are we running in cygwin?
+cygwin=false
+case "`uname`" in
+ CYGWIN*) cygwin=true;;
+esac
+
+# Set FUSKEI_HOME to the script invocation directory if it is not specified
+if [ -z "$FUSEKI_HOME" ]
+then
+ SCRIPT="$0"
+ # Catch common issue: script has been symlinked
+ if [ -L "$SCRIPT" ]
+ then
+ SCRIPT="$(readlink "$0")"
+ # If link is relative
+ case "$SCRIPT" in
+ /*) ;; # fine
+ *) SCRIPT=$( dirname "$0" )/$SCRIPT;; # fix
+ esac
+ fi
+
+ # Work out root from script location
+ FUSEKI_HOME="$( cd "$( dirname "$SCRIPT" )" && pwd )"
+
+fi
+
+# Deal with Cygwin path issues
+if [ "$cygwin" == "true" ]
+then
+ FUSEKI_HOME=`cygpath -w "$FUSEKI_HOME"`
+fi
+
+if [ ! -e "$FUSEKI_HOME" ]
+then
+ log_daemon_msg "FUSEKI_HOME '$FUSEKI_HOME' does not exist" 1>&2
+ exit 1
+fi
+
+if [ -z "$FUSEKI_BASE" ]
+then
+ FUSEKI_BASE="/etc/fuseki"
+fi
+
+if [ "$cygwin" == "true" ]
+then
+ FUSEKI_BASE=`cygpath -w "$FUSEKI_BASE"`
+fi
+
+
+if [ ! -e "$FUSEKI_BASE" -o ! -d "$FUSEKI_BASE" ]
+then
+ log_daemon_msg "FUSEKI_BASE '$FUSEKI_BASE' does not exist or is not a directory" 1>&2
+ exit 1
+fi
+
+if [ ! -w "$FUSEKI_BASE" ]
+then
+ log_daemon_msg "FUSEKI_BASE '$FUSEKI_BASE' is not writable." 1>&2
+ exit 1
+fi
+
+
+# Deal with Cygwin path issues
+if [ "$cygwin" == "true" ]
+then
+ FUSEKI_HOME=`cygpath -w "$FUSEKI_HOME"`
+ FUSEKI_BASE=`cygpath -w "$FUSEKI_BASE"`
+ fi
+
+# Find a location for the pid file
+if [ -z "$FUSEKI_RUN" ]
+then
+ FUSEKI_RUN=$(findDirectory -w /var/run /usr/var/run $FUSEKI_HOME /tmp)
+fi
+
+# Get PID file name
+if [ -z "$FUSEKI_PID" ]
+then
+ FUSEKI_PID="$FUSEKI_RUN/fuseki.pid"
+fi
+
+# Log directory
+if [ -n "$FUSEKI_LOGS" ]
+then
+ log_daemon_message "FUSEKI_LOGS can not be set externally - ignored" 1>&2
+fi
+FUSEKI_LOGS="$FUSEKI_BASE/logs"
+
+# Std Err and Out log
+if [ -z "$FUSEKI_LOGS_STDERROUT" ]
+then
+ FUSEKI_LOGS_STDERROUT="$FUSEKI_LOGS/stderrout.log"
+fi
+
+# Data directory
+if [ -z "$FUSEKI_DATA_DIR" ]
+then
+ FUSEKI_DATA_DIR="$FUSEKI_HOME/DB"
+fi
+
+# Set up JAVA if not set
+if [ -z "$JAVA" ]
+then
+ JAVA=$(which java)
+fi
+if [ -z "$JAVA" ]
+then
+ echo "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.7) in your PATH." 2>&2
+ exit 1
+fi
+
+# The location of the start up JAR
+FUSEKI_START=${FUSEKI_START:-$FUSEKI_HOME/fuseki-server.jar}
+
+# Deal with Cygwin path issues
+if [ "$cygwin" == "true" ]
+then
+ DATA_DIR=`cygpath -w "$FUSEKI_DATA_DIR"`
+ FUSEKI_START=`cygpath -w "$FUSEKI_START"`
+else
+ DATA_DIR="$FUSEKI_DATA_DIR"
+fi
+
+# Some JVM settings
+if [ -z "$JAVA_OPTIONS" ]
+then
+ JAVA_OPTIONS="-Xmx1200M"
+fi
+
+# Default Fuseki Arguments
+if [ -z "$FUSEKI_ARGS" ]
+then
+ if [ -z "$FUSEKI_CONF" ]
+ then
+ FUSEKI_ARGS=""
+ else
+ FUSEKI_ARGS="--config=$FUSEKI_CONF"
+ fi
+fi
+
+# Run command
+
+RUN_ARGS=(${JAVA_OPTIONS[@]} -jar "$FUSEKI_START" $FUSEKI_ARGS)
+RUN_CMD=("$JAVA" ${RUN_ARGS[@]})
+
+
+#####################################################
+# Comment these out after you're happy with what
+# the script is doing.
+#####################################################
+if (( DEBUG ))
+then
+ log_daemon_msg "FUSEKI_HOME = $FUSEKI_HOME"
+ log_daemon_msg "FUSEKI_CONF = $FUSEKI_CONF"
+ log_daemon_msg "FUSEKI_RUN = $FUSEKI_RUN"
+ log_daemon_msg "FUSEKI_PID = $FUSEKI_PID"
+ log_daemon_msg "FUSEKI_ARGS = $FUSEKI_ARGS"
+ log_daemon_msg "FUSEKI_START = $FUSEKI_START"
+ log_daemon_msg "CONFIGS = ${CONFIGS[*]}"
+ log_daemon_msg "JAVA = $JAVA"
+ log_daemon_msg "JAVA_OPTIONS = ${JAVA_OPTIONS[*]}"
+ log_daemon_msg "RUN_ARGS = ${RUN_ARGS[@]}"
+ log_daemon_msg "RUN_CMD = ${RUN_CMD[@]}"
+fi
+
+NO_START=0
+
+# Life cycle functions
+start() {
+ if (( NO_START )); then
+ log_daemon_msg "Not starting Fuseki - NO_START=1"
+ exit
+ fi
+
+ # Make sure the data and log directories exist
+ mkdir -p "$FUSEKI_DATA_DIR"
+ mkdir -p "$FUSEKI_LOGS"
+
+ # Make sure the .jar file exists
+ if [ ! -e $FUSEKI_START ]; then
+ log_daemon_msg "Could not see Fuseki .jar file: \$FUSEKI_START has value '$FUSEKI_START'"
+ exit 1
+ fi
+
+ log_begin_msg "Starting Fuseki"
+ if type start-stop-daemon > /dev/null 2>&1
+ then
+ unset CH_USER
+ if [ -n "$FUSEKI_USER" ]
+ then
+ CH_USER="--chuid $FUSEKI_USER"
+ fi
+ if start-stop-daemon --start $CH_USER --chdir "$FUSEKI_HOME" --background --make-pidfile --pidfile "$FUSEKI_PID" --startas "$JAVA" -- "${RUN_ARGS[@]}"
+ then
+ sleep 2
+ if running "$FUSEKI_PID"
+ then
+ log_end_msg 0
+ print_started
+ else
+ log_end_msg 1
+ fi
+ else
+ log_end_msg 1
+ log_daemon_msg "** start-stop-daemon failed to run"
+ fi
+ else
+ if running $FUSEKI_PID
+ then
+ log_end_msg 1
+ log_daemon_msg 'Already Running!'
+ exit 1
+ else
+ # dead pid file - remove
+ rm -f "$FUSEKI_PID"
+ fi
+
+ if [ "$FUSEKI_USER" ]
+ then
+ touch "$FUSEKI_PID"
+ chown "$FUSEKI_USER" "$FUSEKI_PID"
+ su - "$FUSEKI_USER" -c "
+ log_daemon_msg "Redirecting Fuseki stderr/stdout to $FUSEKI_LOGS_STDERROUT"
+ exec ${RUN_CMD[*]} &
+ disown \$!
+ echo \$! > '$FUSEKI_PID'"
+ else
+ #log_daemon_msg "Redirecting Fuseki stderr/stdout to $FUSEKI_LOGS_STDERROUT"
+ exec "${RUN_CMD[@]}" &> "$FUSEKI_LOGS_STDERROUT" &
+ disown $!
+ echo $! > "$FUSEKI_PID"
+ fi
+
+ log_end_msg 0
+ print_started
+ fi
+}
+
+print_started() {
+ log_daemon_msg "STARTED Fuseki `date`"
+ log_daemon_msg "PID=$(cat "$FUSEKI_PID" 2>/dev/null)"
+}
+
+delete_fuseki_pid_file() {
+ rm -f "$FUSEKI_PID"
+}
+
+stop() {
+ log_begin_msg "Stopping Fuseki: "
+
+ if ! running "$FUSEKI_PID"
+ then
+ log_end_msg 1
+
+ # if a stop rather than a restart, signal failure to stop
+ if [ -z "$1" ]
+ then
+ exit 1
+ fi
+ fi
+
+ ###############################################################
+ # !!!! This code needs to be improved, too many repeats !!!! #
+ ###############################################################
+ if type start-stop-daemon > /dev/null 2>&1; then
+ start-stop-daemon --stop --pidfile "$FUSEKI_PID" --chdir "$FUSEKI_HOME" --startas "$JAVA" --signal HUP
+
+ ## Die after a 30 second timeout
+ TIMEOUT=30
+ while running "$FUSEKI_PID"; do
+ if (( TIMEOUT-- == 0 )); then
+ start-stop-daemon --stop --pidfile "$FUSEKI_PID" --chdir "$FUSEKI_HOME" --startas "$JAVA" --signal KILL
+ fi
+ sleep 1
+ done
+ delete_fuseki_pid_file
+ log_end_msg 0
+ else
+ PID=$(cat "$FUSEKI_PID" 2>/dev/null)
+ kill "$PID" 2>/dev/null
+
+ TIMEOUT=30
+ while running $FUSEKI_PID; do
+ if (( TIMEOUT-- == 0 )); then
+ kill -KILL "$PID" 2>/dev/null
+ fi
+ sleep 1
+ done
+ delete_fuseki_pid_file
+ log_end_msg 0
+ fi
+}
+
+
+# Run in the foreground, as the current user
+run() {
+ # Make sure the .jar file exists
+ if [ ! -e $FUSEKI_START ]; then
+ log_daemon_msg "Could not see Fuseki .jar file: \$FUSEKI_START has value '$FUSEKI_START'"
+ exit 1
+ fi
+ exec "${RUN_CMD[@]}"
+}
+
+case $CMD in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ stop "restarting"
+ start
+ ;;
+ run)
+ run
+ ;;
+ status)
+ FUSEKI_PID=$(findFile fuseki.pid /var/run /usr/var/run $FUSEKI_HOME /tmp)
+ if running $FUSEKI_PID
+ then
+ PID=`cat "$FUSEKI_PID"`
+ log_daemon_msg "Fuseki is running with pid: $PID"
+ else
+ log_daemon_msg "Fuseki is not running"
+ fi
+ ;;
+ *)
+ usage
+ ;;
+esac
+
+exit 0
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/fuseki-server
----------------------------------------------------------------------
diff --git a/jena-fuseki2/fuseki-server b/jena-fuseki2/fuseki-server
new file mode 100755
index 0000000..679b3bd
--- /dev/null
+++ b/jena-fuseki2/fuseki-server
@@ -0,0 +1,64 @@
+#!/bin/sh
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Run fuseki as a standalone server
+
+export FUSEKI_HOME="${FUSEKI_HOME:-$PWD}"
+
+if [ ! -e "$FUSEKI_HOME" ]
+then
+ echo "$FUSEKI_HOME does not exist" 1>&2
+ exit 1
+ fi
+
+JAR1="$FUSEKI_HOME/fuseki-server.jar"
+JAR2="$FUSEKI_HOME/jena-fuseki-*-server.jar"
+JAR=""
+
+for J in "$JAR1" "$JAR2"
+do
+ # Expand
+ J="$(echo $J)"
+ if [ -e "$J" ]
+ then
+ JAR="$J"
+ break
+ fi
+done
+
+if [ "$JAR" = "" ]
+then
+ echo "Can't find jarfile to run"
+ exit 1
+fi
+
+# Deal with Cygwin path issues
+cygwin=false
+case "`uname`" in
+ CYGWIN*) cygwin=true;;
+esac
+if [ "$cygwin" = "true" ]
+then
+ JAR=`cygpath -w "$JAR"`
+ FUSEKI_HOME=`cygpath -w "$FUSEKI_HOME"`
+fi
+
+export FUSEKI_BASE="${FUSEKI_BASE:-$PWD/run}"
+
+JVM_ARGS=${JVM_ARGS:--Xmx1200M}
+
+exec java $JVM_ARGS -jar "$JAR" "$@"
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/fuseki-server.bat
----------------------------------------------------------------------
diff --git a/jena-fuseki2/fuseki-server.bat b/jena-fuseki2/fuseki-server.bat
new file mode 100644
index 0000000..6bfd370
--- /dev/null
+++ b/jena-fuseki2/fuseki-server.bat
@@ -0,0 +1,3 @@
+@echo off
+@REM modify this to name the server jar
+java -Xmx1200M -jar fuseki-server.jar %*
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/make-html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/make-html b/jena-fuseki2/make-html
new file mode 100755
index 0000000..e998657
--- /dev/null
+++ b/jena-fuseki2/make-html
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+for f in "$@"
+do
+ echo "==== $f"
+ B="$(basename $f .md)"
+ D="$(dirname $f)"
+ X="$D/$B.html"
+ curl -s -XPOST -H 'Content-type:text/plain' \
+ --data-binary @$f \
+ https://api.github.com/markdown/raw \
+ > $X
+
+done
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/make_cp_mvn
----------------------------------------------------------------------
diff --git a/jena-fuseki2/make_cp_mvn b/jena-fuseki2/make_cp_mvn
new file mode 100755
index 0000000..94cb84b
--- /dev/null
+++ b/jena-fuseki2/make_cp_mvn
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+# Make the maven classpath
+
+$POM="pom.xml" ;
+$POM = @ARGV[0] if ( defined(@ARGV[0]) ) ;
+
+if ( ! -e "$POM" )
+{
+ print STDERR "No POM file: $POM\n" ;
+ exit 1 ;
+}
+$M2=$ENV{'M2_REPO'} ;
+print "#!/bin/bash\n" ;
+print "\n" ;
+print 'XCP="' ;
+
+open(X, "mvn -f $POM dependency:build-classpath -DincludeScope=runtime |") ;
+while(<X>)
+{
+ next if /\[INFO\]/ ;
+ next if /^Download/ ;
+ chop ;
+ #s!$M2/org/apache/jena/jena-[^/]*/[^/]*/[^/]*.jar:!!g ;
+ print "$_" ;
+}
+print "\"\n" ;
+print "\n" ;
+
+print "if [ \"\$CP\" != \'\' ]\n" ;
+print "then\n" ;
+print " XCP=\"\$CP:\$XCP\"\n" ;
+print "fi\n" ;
+print "\n" ;
+print "echo \"\$XCP\"\n"
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/make_links
----------------------------------------------------------------------
diff --git a/jena-fuseki2/make_links b/jena-fuseki2/make_links
new file mode 100755
index 0000000..76efd4c
--- /dev/null
+++ b/jena-fuseki2/make_links
@@ -0,0 +1,9 @@
+#!/bin/bash
+# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+SOH=${SOH:-soh}
+for s in s-head s-get s-put s-post s-delete s-query s-update s-update-form
+do
+ rm -f $s
+ ln -s "$SOH" $s
+done
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/pom.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/pom.xml b/jena-fuseki2/pom.xml
new file mode 100644
index 0000000..b2fff59
--- /dev/null
+++ b/jena-fuseki2/pom.xml
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>Apache Jena - Fuseki (SPARQL 1.1 Server)</name>
+ <artifactId>jena-fuseki</artifactId>
+ <version>2.0.0.beta-1-SNAPSHOT</version>
+
+ <parent>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-parent</artifactId>
+ <version>11-SNAPSHOT</version>
+ <relativePath>../jena-parent</relativePath>
+ </parent>
+
+ <!-- We make the JAR file so that the shade plugin includes it.
+ The war:war goal is added to the package phase.
+ -->
+ <packaging>jar</packaging>
+ <description>Fuseki is a SPARQL 1.1 Server which provides query, update and graph store protocol endpoints that can be used to expose triple stores over HTTP</description>
+ <url>http://jena.apache.org/</url>
+
+
+ <!-- Need if the parent is a snapshot -->
+ <repositories>
+ <repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
+
+ <organization>
+ <name>Apache Jena</name>
+ <url>http://jena.apache.org/</url>
+ </organization>
+
+ <licenses>
+ <license>
+ <name>Apache 2.0 License</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+ </license>
+ </licenses>
+
+ <properties>
+ <this.root>${project.artifactId}-${project.version}</this.root>
+
+ <server.jar.name>${this.root}-server</server.jar.name>
+ <!-- Eventually, move to jena-parent -->
+ <ver.jetty>9.1.1.v20140108</ver.jetty>
+ <ver.shiro>1.2.2</ver.shiro>
+
+ <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
+ <build.time.xsd>${maven.build.timestamp}</build.time.xsd>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-arq</artifactId>
+ <version>2.12.2-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-arq</artifactId>
+ <version>2.12.2-SNAPSHOT</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-core</artifactId>
+ <version>2.12.2-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-tdb</artifactId>
+ <version>1.1.2-SNAPSHOT</version>
+ </dependency>
+
+ <!--
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>sdb</artifactId>
+ <version>${ver.sdb}</version>
+ <optional>true</optional>
+ </dependency>
+ -->
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-text</artifactId>
+ <version>1.1.2-SNAPSHOT</version>
+ <exclusions>
+ <!--
+ Get this via commons-fileupload and also via jena-text/sol4j
+ -->
+ <exclusion>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-spatial</artifactId>
+ <version>1.1.2-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.shiro</groupId>
+ <artifactId>shiro-core</artifactId>
+ <version>${ver.shiro}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.shiro</groupId>
+ <artifactId>shiro-web</artifactId>
+ <version>${ver.shiro}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <exclusions>
+ <!-- Replace with slf4j adapter -->
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-webapp</artifactId>
+ <version>${ver.jetty}</version>
+ </dependency>
+
+
+ <!--
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-runner</artifactId>
+ <version>${ver.jetty}</version>
+ </dependency>
+ -->
+
+ <!-- Development and standalone jar (if built) -->
+ <!-- Jetty's useful servlets, inc compression -->
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlets</artifactId>
+ <version>${ver.jetty}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+
+ <!-- Intercept any uses of Jakarta Commons Logging e.g. Apache Common HTTP client. -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ </dependency>
+
+ <!-- Needed because the Fuseki command line and the test suite reset logging levels -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.jms</groupId>
+ <artifactId>jms</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jdmk</groupId>
+ <artifactId>jmxtools</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jmx</groupId>
+ <artifactId>jmxri</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ <excludes>
+ <exclude>org/apache/jena/fuseki/fuseki-properties.xml</exclude>
+ </excludes>
+ </resource>
+ <resource>
+ <filtering>true</filtering>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>org/apache/jena/fuseki/fuseki-properties.xml</include>
+ </includes>
+ </resource>
+ </resources>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ <optimize>true</optimize>
+ <debug>true</debug>
+ <debuglevel>source,lines,vars</debuglevel>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar-no-fork</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!--
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <version>true</version>
+ <show>public</show>
+ <quiet>true</quiet>
+ <encoding>UTF-8</encoding>
+ <windowtitle>Apache Jena Fuseki</windowtitle>
+ <doctitle>Apache Jena Fuseki ${project.version}</doctitle>
+ <bottom>Licenced under the Apache License, Version 2.0</bottom>
+ </configuration>
+ </plugin>
+ -->
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/TS_*.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>2.1</version>
+ <configuration>
+ <shadedArtifactAttached>true</shadedArtifactAttached>
+ <shadedClassifierName>server</shadedClassifierName>
+ <transformers>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <mainClass>org.apache.jena.fuseki.FusekiCmd</mainClass>
+ </transformer>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
+ <addHeader>false</addHeader>
+ </transformer>
+ </transformers>
+ <filters>
+ <filter>
+ <artifact>*:*</artifact>
+ <excludes>
+ <!-- Some jars are signed but shading breaks that.
+ Don't include signing files.
+ -->
+ <exclude>META-INF/*.SF</exclude>
+ <exclude>META-INF/*.DSA</exclude>
+ <exclude>META-INF/*.RSA</exclude>
+ </excludes>
+ </filter>
+ </filters>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <!--<phase/><!- - Switch off -->
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.4</version>
+ <executions>
+ <execution>
+ <id>generate-webapp</id>
+ <phase>package</phase>
+ <goals><goal>war</goal></goals>
+ </execution>
+ </executions>
+ <configuration>
+ <webappDirectory>${project.build.webappDirectory}</webappDirectory>
+ <!-- This can't be set because then maven will not install/deploy the war file -->
+ <!--<warName>${webapp.name}</warName>-->
+ <!-- Don't put in the Jetty dependency nor javax.servlet -->
+ <packagingExcludes>WEB-INF/lib/jetty-*,WEB-INF/lib/javax.servlet*</packagingExcludes>
+ </configuration>
+ </plugin>
+
+ <!-- Untested.
+ <plugin>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-maven-plugin</artifactId>
+ <version>${ver.jetty}</version>
+ <configuration>
+ <war>target/${this.root}.war</war>
+ </configuration>
+ </plugin>
+ -->
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <!-- After shaded jar, after war file - same phase -->
+ <executions>
+ <execution>
+ <id>create-zip-assembly</id>
+ <phase>package</phase>
+ <!--<phase/>-->
+ <goals><goal>single</goal></goals>
+ <configuration>
+ <!--
+ <finalName>${assembly.zip.name}</finalName>
+ <appendAssemblyId>false</appendAssemblyId>
+ -->
+ <descriptors>
+ <descriptor>assembly-dist.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/run-fuseki
----------------------------------------------------------------------
diff --git a/jena-fuseki2/run-fuseki b/jena-fuseki2/run-fuseki
new file mode 100755
index 0000000..588c4a0
--- /dev/null
+++ b/jena-fuseki2/run-fuseki
@@ -0,0 +1,78 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+## Run Fuseki, include development code if it looks like it's available.
+## Or --pages=
+
+function check_dir() {
+ local NAME="$1"
+ local DIR="$2"
+ if [ ! -e "$DIR" ]
+ then
+ echo "$NAME: '$DIR' does not exist" 1>&2
+ exit 1
+ fi
+ if [ ! -d "$DIR" ]
+ then
+ echo "$NAME: '$DIR' exists but is not a directory" 1>&2
+ exit 1
+ fi
+}
+
+export FUSEKI_HOME="${FUSEKI_HOME:-$PWD}"
+check_dir "FUSEKI_HOME" "$FUSEKI_HOME"
+
+export FUSEKI_BASE="${FUSEKI_BASE:-$FUSEKI_HOME/run}"
+check_dir "FUSEKI_BASE" "$FUSEKI_BASE"
+
+CPF="$PWD/fuseki.classpath"
+
+if [ ! -e "$CPF" ]; then
+ echo "Creating Fuseki classpath file"
+ "$PWD/make_cp_mvn" > $CPF
+fi
+
+CP="$(. $CPF)"
+
+# Add development directories.
+if [ -e "$FUSEKI_HOME/classes" ]
+then
+ CP="$FUSEKI_HOME/classes:$CP"
+elif [ -e "$FUSEKI_HOME/target/classes" ]
+then
+ CP="$FUSEKI_HOME/target/classes:$CP"
+fi
+
+# Prepend any development directories here
+DEVDIRS="jena-core jena-tdb jena-arq jena-text"
+for X in $DEVDIRS
+do
+ CPX="$FUSEKI_HOME/../$X/classes"
+ if [ -e "$CPX" ]
+ then
+ CP="$CPX:$CP"
+ fi
+done
+
+FUSEKI_LOG=${FUSEKI_LOG:-}
+JVM_ARGS="${JVM_ARGS:--Xmx1200M}"
+
+exec java -cp "$CP" $JVM_ARGS $FUSEKI_LOG org.apache.jena.fuseki.FusekiCmd "$@"
+
+# Run as war file.
+# java -jar jetty-runner.jar fuseki-server.war
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/src-dev/dev/BackwardForwardDescribeFactory.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src-dev/dev/BackwardForwardDescribeFactory.java b/jena-fuseki2/src-dev/dev/BackwardForwardDescribeFactory.java
new file mode 100644
index 0000000..2322929
--- /dev/null
+++ b/jena-fuseki2/src-dev/dev/BackwardForwardDescribeFactory.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dev;
+
+import com.hp.hpl.jena.query.Dataset;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.RDFNode;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.sparql.ARQConstants;
+import com.hp.hpl.jena.sparql.core.Quad;
+import com.hp.hpl.jena.sparql.core.describe.DescribeHandler;
+import com.hp.hpl.jena.sparql.core.describe.DescribeHandlerFactory;
+import com.hp.hpl.jena.sparql.core.describe.DescribeHandlerRegistry;
+import com.hp.hpl.jena.sparql.util.Context;
+import com.hp.hpl.jena.tdb.TDB ;
+import com.hp.hpl.jena.util.iterator.ExtendedIterator;
+import com.hp.hpl.jena.vocabulary.RDFS;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BackwardForwardDescribeFactory implements DescribeHandlerFactory {
+
+ final static Logger log = LoggerFactory.getLogger(BackwardForwardDescribeFactory.class);
+
+ static {
+ TDB.init();
+ log.info("Attaching replacement describe handler");
+ DescribeHandlerRegistry reg = DescribeHandlerRegistry.get();
+ log.info("Clearing existing describe handlers");
+ reg.clear();
+ reg.add(new BackwardForwardDescribeFactory());
+ log.info("Attached");
+ }
+
+ @Override
+ public DescribeHandler create() {
+ return new BackwardForwardDescribe();
+ }
+
+ public static class BackwardForwardDescribe implements DescribeHandler {
+
+ private Dataset dataset;
+ private Model result;
+ private Model defaultModel;
+ private Model unionModel;
+
+ @Override
+ public void start(Model accumulateResultModel, Context qContext) {
+ this.result = accumulateResultModel;
+ this.dataset = (Dataset) qContext.get(ARQConstants.sysCurrentDataset);
+ this.defaultModel = dataset.getDefaultModel();
+ this.unionModel = dataset.getNamedModel(Quad.unionGraph.getURI());
+ }
+
+ @Override
+ public void describe(Resource resource) {
+ result.add(defaultModel.listStatements(resource, null, (RDFNode) null));
+ result.add(defaultModel.listStatements(null, null, resource));
+ result.add(unionModel.listStatements(resource, null, (RDFNode) null));
+ result.add(unionModel.listStatements(null, null, resource));
+
+ // Gather labels for dangling refs
+ Model labels = ModelFactory.createDefaultModel();
+ ExtendedIterator<RDFNode> it = result.listObjects().andThen(result.listSubjects());
+ while (it.hasNext()) {
+ RDFNode node = it.next();
+ if (node.isLiteral() || resource.equals(node)) continue;
+ labels.add(defaultModel.listStatements((Resource) node, RDFS.label, (RDFNode) null));
+ labels.add(unionModel.listStatements((Resource) node, RDFS.label, (RDFNode) null));
+ }
+ result.add(labels);
+ }
+
+ @Override
+ public void finish() {
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/src-dev/dev/PROJECT.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src-dev/dev/PROJECT.java b/jena-fuseki2/src-dev/dev/PROJECT.java
new file mode 100644
index 0000000..ec5b386
--- /dev/null
+++ b/jena-fuseki2/src-dev/dev/PROJECT.java
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dev;
+
+public class PROJECT {
+
+ // URI parsed during execCommonWorker and again in uber dispatch
+ // --> do once. Info in action (context path, dataset name, operation) + admin
+
+ // UI "reset" to reread configuration
+ // And poll read configuration files.
+
+ // Refindable backups
+ // Name of backup in the response to back up starting.
+ // Task specific return as well?
+
+ // Use void for the system DB - drive service description from this.
+ // RDF Patch (logging and as mime type)
+ // POM changes from jena-fuseki.??
+
+ // Convert FmtLog to own logging.
+
+ // Use Action(Container)Item for ActionStats
+
+ // Assembler file mgt
+
+ // Tests for DataServiceDesc and configuration.
+ // Other DataServiceDesc
+ // -- contains a DS and can't put it down (update/in-memory) (+file)
+ // -- TDB various
+
+ // --set affects the system DB!
+
+ // Backup task + polling
+ // Generalize to queries, updates, etc
+ // /dataset/operation/1234
+ // /dataset/query/1234
+
+ // Create dataset - check for existing.
+ // Timeouts
+ // Check variable names on DataAccessPoint, DataService, Endpoint
+ // Per HTTP operation counters
+ // Per service timeouts. e.g.
+ // Per service context setting e.g. timeouts, tdb:unionDefaultGraph
+ // SPARQL_Query.setAnyTimeouts
+
+ // Shiro - log failures?
+
+ /* Use of:
+<context-param>
+ <param-name>org.apache.jena.fuseki.config</param-name>
+ <param-value>{webapp}/WEB-INF/app.conf</param-value>
+</context-param>
+ */
+ // TDB : insert a lock file?
+
+ // async operations e.g. backup, stats
+
+ // RDF patch
+ // /ds/patch service to apply a patch.
+ // All TODO and XXX
+ // Document (write/update) all protocol modes.
+}
+
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/src-dev/dev/RunAsWebapp.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src-dev/dev/RunAsWebapp.java b/jena-fuseki2/src-dev/dev/RunAsWebapp.java
new file mode 100644
index 0000000..586a5e6
--- /dev/null
+++ b/jena-fuseki2/src-dev/dev/RunAsWebapp.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dev;
+
+import java.nio.file.Paths ;
+
+import org.apache.jena.fuseki.FusekiLogging ;
+import org.apache.jena.fuseki.jetty.JettyFuseki ;
+import org.apache.jena.fuseki.server.FusekiServer ;
+import org.apache.jena.fuseki.server.FusekiServletContextListener ;
+import org.eclipse.jetty.server.Server ;
+
+public class RunAsWebapp
+{
+ // See also http://www.eclipse.org/jetty/documentation/current/embedded-examples.html#embedded-one-webapp
+ public static void main(String[] args) //throws Exception
+ {
+ FusekiServer.FUSEKI_HOME = Paths.get("").toAbsolutePath() ;
+ FusekiServer.FUSEKI_BASE = Paths.get("run") ;
+ FusekiLogging.setLogging() ;
+ // No command line.
+ FusekiServletContextListener.initialSetup = null ;
+ // Create a basic jetty-hosted Fuseki server
+ Server server = JettyFuseki.create("/fuseki", 3030) ;
+ try {
+ server.start();
+ server.join();
+ } catch (Exception ex) {
+ System.out.flush() ;
+ ex.printStackTrace(System.err);
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/src-dev/dev/RunFuseki2.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src-dev/dev/RunFuseki2.java b/jena-fuseki2/src-dev/dev/RunFuseki2.java
new file mode 100644
index 0000000..86364bc
--- /dev/null
+++ b/jena-fuseki2/src-dev/dev/RunFuseki2.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dev;
+
+import java.nio.file.Paths ;
+
+import org.apache.jena.fuseki.FusekiCmd ;
+import org.apache.jena.fuseki.server.FusekiServer ;
+
+public class RunFuseki2
+{
+ public static void main(String[] args) throws Exception {
+ //demo() ;
+ //FusekiCmd.main("--config=config.ttl") ; System.exit(0) ;
+ main1() ;
+ }
+
+ public static void demo() {
+ String DIR="DemoServer" ;
+ FusekiCmd.main("--config="+name(DIR,"config.ttl"), "--pages="+name(DIR, "demo-pages")) ;
+ System.exit(0) ;
+ }
+
+ public static String name(String DIR, String filename) {
+ StringBuilder sb = new StringBuilder() ;
+ if ( ! filename.startsWith("/") )
+ {
+ sb.append(DIR) ;
+ if ( ! DIR.endsWith("/") )
+ sb.append("/") ;
+ }
+ sb.append(filename) ;
+ return sb.toString() ;
+ }
+
+ private static void main1() {
+ FusekiServer.FUSEKI_HOME = Paths.get("").toAbsolutePath() ;
+ FusekiServer.FUSEKI_BASE = Paths.get("run") ;
+ FusekiServer.init() ;
+
+ String tmpdir = System.getenv("TMPDIR") ;
+ if ( tmpdir == null )
+ tmpdir = System.getenv("TMP") ;
+ if ( tmpdir == null )
+ tmpdir = System.getenv("HOME")+"/tmp" ;
+ if ( ! tmpdir.endsWith("/") )
+ tmpdir = tmpdir+"/" ;
+
+ FusekiCmd.main(
+ // "-v",
+ //"--update", "--memtdb", "--mgt", "/ds"
+
+ "--strict", "--update", "--mem", "/ds"
+
+ //"--update", "--loc="+tmpdir+"DB", "--set=tdb:unionDefaultGraph=true", "/ds"
+ //"--update", "--mem", "/ds"
+
+ //"--update", "--memtdb", "--set=tdb:unionDefaultGraph=true", "/ds"
+
+ //"--debug",
+ //"--update",
+ //"--timeout=1000,5000",
+ //"--set=arq:queryTimeout=1000",
+ //"--port=3030",
+ //"--mgtPort=3031",
+ //"--mem",
+ //"--home=/home/afs/Projects/Fuseki",
+ //"--loc=DB",
+ //"--file=D.nt",
+ //"--gzip=no",
+ //"--desc=desc.ttl",
+ //--pages=
+ //"--jetty-config=jetty-fuseki.xml",
+ //"--config=config-tdb.ttl"
+ // "/ds"
+ ) ;
+ System.exit(0) ;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/DEF.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/DEF.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/DEF.java
new file mode 100644
index 0000000..8d8495a
--- /dev/null
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/DEF.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.fuseki;
+
+import org.apache.jena.atlas.web.AcceptList ;
+import org.apache.jena.atlas.web.MediaType ;
+import static org.apache.jena.riot.WebContent.* ;
+
+public class DEF
+{
+ public static final MediaType acceptRDFXML = MediaType.create(contentTypeRDFXML) ;
+ public static final MediaType acceptNQuads = MediaType.create(contentTypeNQuads) ;
+ public static final MediaType acceptRSXML = MediaType.create(contentTypeResultsXML) ;
+ public static final MediaType acceptJSON = MediaType.create(contentTypeJSON) ;
+
+ public static final AcceptList jsonOffer = AcceptList.create(contentTypeJSON) ;
+
+ public static final AcceptList rdfOffer = AcceptList.create(contentTypeTurtle,
+ contentTypeTurtleAlt1,
+ contentTypeTurtleAlt2,
+ contentTypeNTriples,
+ contentTypeNTriplesAlt,
+ contentTypeRDFXML,
+ contentTypeJSONLD,
+ contentTypeRDFJSON,
+ contentTypeRDFThrift
+ ) ;
+
+ public static final AcceptList quadsOffer = AcceptList.create(contentTypeTriG,
+ contentTypeTriGAlt1,
+ contentTypeTriGAlt2,
+ contentTypeJSONLD,
+ contentTypeNQuads,
+ contentTypeNQuadsAlt1,
+ contentTypeNQuadsAlt2
+ ) ;
+
+ // Offer for SELECT
+ public static final AcceptList rsOfferTable = AcceptList.create(contentTypeResultsJSON,
+ contentTypeTextCSV,
+ contentTypeTextTSV,
+ contentTypeResultsXML,
+ contentTypeResultsThrift,
+ contentTypeTextPlain
+ ) ;
+
+ // Offer for ASK
+ public static final AcceptList rsOfferBoolean = AcceptList.create(contentTypeResultsJSON,
+ contentTypeTextCSV,
+ contentTypeTextTSV,
+ contentTypeResultsXML,
+ contentTypeTextPlain
+ ) ;
+
+
+ // Names for services in the default configuration
+ public static final String ServiceQuery = "query" ;
+ public static final String ServiceQueryAlt = "sparql" ;
+ public static final String ServiceUpdate = "update" ;
+ public static final String ServiceData = "data" ;
+ public static final String ServiceUpload = "upload" ;
+ public static final String ServiceGeneralQuery = "/sparql" ;
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java
new file mode 100644
index 0000000..b2bea5b
--- /dev/null
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java
@@ -0,0 +1,225 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.fuseki ;
+
+import java.util.Calendar ;
+import java.util.TimeZone ;
+import java.util.concurrent.TimeUnit ;
+
+import org.apache.jena.riot.RIOT ;
+import org.apache.jena.riot.system.stream.LocatorFTP ;
+import org.apache.jena.riot.system.stream.LocatorHTTP ;
+import org.apache.jena.riot.system.stream.StreamManager ;
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
+
+import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.sparql.SystemARQ ;
+import com.hp.hpl.jena.sparql.lib.Metadata ;
+import com.hp.hpl.jena.sparql.mgt.SystemInfo ;
+import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.sparql.util.MappingRegistry ;
+import com.hp.hpl.jena.sparql.util.Utils ;
+import com.hp.hpl.jena.tdb.TDB ;
+import com.hp.hpl.jena.tdb.transaction.TransactionManager ;
+
+public class Fuseki {
+ // General fixed constants.
+ // See also FusekiServer for the naming on the filesystem
+
+ /** Path to ??? */
+ static public String PATH = "org.apache.jena.fuseki" ;
+
+ /** a unique IRI for the Fuseki namespace */
+ static public String FusekiIRI = "http://jena.apache.org/Fuseki" ;
+
+ /**
+ * a unique IRI including the symbol notation for which properties should be
+ * appended
+ */
+ static public String FusekiSymbolIRI = "http://jena.apache.org/fuseki#" ;
+
+ /** Default location of the pages for the Fuseki UI */
+ static public String PagesStatic = "pages" ;
+
+ /** Dummy base URi string for parsing SPARQL Query and Update requests */
+ static public final String BaseParserSPARQL = "http://server/unset-base/" ;
+
+ /** Dummy base URi string for parsing SPARQL Query and Update requests */
+ static public final String BaseUpload = "http://server/unset-base/" ;
+
+ /**
+ * A relative resources path to the location of
+ * <code>fuseki-properties.xml</code> file.
+ */
+ static private String metadataLocation = "org/apache/jena/fuseki/fuseki-properties.xml" ;
+
+ /**
+ * Object which holds metadata specified within
+ * {@link Fuseki#metadataLocation}
+ */
+ static private Metadata metadata = initMetadata() ;
+
+ private static Metadata initMetadata() {
+ Metadata m = new Metadata() ;
+ // m.addMetadata(metadataDevLocation) ;
+ m.addMetadata(metadataLocation) ;
+ return m ;
+ }
+
+ /** The name of the Fuseki server. Set to the string <code>Fuseki</code> by default. */
+ static public final String NAME = "Fuseki" ;
+
+ /** Version of this Fuseki instance */
+ static public final String VERSION = metadata.get(PATH + ".version", "development") ;
+
+ /** Date when Fuseki was built */
+ static public final String BUILD_DATE = metadata.get(PATH + ".build.datetime", "unknown") ;
+
+ /** An identifier for the HTTP Fuseki server instance */
+ static public final String serverHttpName = NAME + " (" + VERSION + ")" ;
+
+ /** Loger name for operations */
+ public static final String actionLogName = PATH + ".Fuseki" ;
+
+ /** Instance of log for operations */
+ public static final Logger actionLog = LoggerFactory.getLogger(actionLogName) ;
+
+ /** Logger name for standard webserver log file request log */
+ public static final String requestLogName = PATH + ".Request" ;
+
+ // See HttpAction.finishRequest.
+ /** Instance of log for operations */
+ public static final Logger requestLog = null ; // LoggerFactory.getLogger(requestLogName) ;
+
+ /** Admin log file for operations */
+ public static final String adminLogName = PATH + ".Admin" ;
+
+ /** Instance of log for operations */
+ public static final Logger adminLog = LoggerFactory.getLogger(adminLogName) ;
+
+ /** Admin log file for operations */
+ public static final String builderLogName = PATH + ".Builder" ;
+
+ /** Instance of log for operations */
+ public static final Logger builderLog = LoggerFactory.getLogger(builderLogName) ;
+
+ /** Validation log file for operations */
+ public static final String validationLogName = PATH + ".Validate" ;
+
+ /** Instance of log for validation */
+ public static final Logger validationLog = LoggerFactory.getLogger(adminLogName) ;
+
+ /** Actual log file for general server messages. */
+ public static final String serverLogName = PATH + ".Server" ;
+
+ /** Instance of log for general server messages */
+ public static final Logger serverLog = LoggerFactory.getLogger(serverLogName) ;
+
+ /** Logger used for the servletContent.log operations (if settable -- depends on environment) */
+ public static final String servletRequestLogName = PATH + ".Request" ;
+
+ /** Actual log file for config server messages. */
+ public static final String configLogName = PATH + ".Config" ;
+
+ /** Instance of log for config server message s */
+ public static final Logger configLog = LoggerFactory.getLogger(configLogName) ;
+
+ /** Instance of log for config server message s */
+ public static boolean verboseLogging = false ;
+
+ /**
+ * An instance of management for stream opening, including redirecting
+ * through a location mapper whereby a name (e.g. URL) is redirected to
+ * another name (e.g. local file).
+ * */
+ public static final StreamManager webStreamManager ;
+ static {
+ webStreamManager = new StreamManager() ;
+ // Only know how to handle http URLs
+ webStreamManager.addLocator(new LocatorHTTP()) ;
+ webStreamManager.addLocator(new LocatorFTP()) ;
+ }
+
+ /** Default (and development) root of the Fuseki installation for fixed files. */
+ public static String DFT_FUSEKI_HOME = "." ;
+ /** Default (and development) root of the varying files in this deployment. */
+ public static String DFT_FUSEKI_BASE = "." ;
+
+ private static boolean initialized = false ;
+
+ // Serevr start time and uptime.
+ private static final long startMillis = System.currentTimeMillis() ;
+ // Hide server locale
+ private static final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("00:00")) ;
+ static { cal.setTimeInMillis(startMillis) ; } // Exactly the same start point!
+
+ private static final String startDateTime = Utils.calendarToXSDDateTimeString(cal) ;
+
+ /** Return the number of milliseconds since the server started */
+ public static long serverUptimeMillis() {
+ return System.currentTimeMillis() - startMillis ;
+ }
+
+ /** Server uptime in seconds */
+ public static long serverUptimeSeconds() {
+ long x = System.currentTimeMillis() - startMillis ;
+ return TimeUnit.MILLISECONDS.toSeconds(x) ;
+ }
+
+ /** XSD DateTime for when the server started */
+ public static String serverStartedAt() {
+ return startDateTime ;
+ }
+
+
+ /**
+ * Initialize an instance of the Fuseki server stack.
+ */
+ public synchronized static void init() {
+ if ( initialized )
+ return ;
+ initialized = true ;
+ ARQ.init() ;
+ SystemInfo sysInfo = new SystemInfo(FusekiIRI, PATH, VERSION, BUILD_DATE) ;
+ SystemARQ.registerSubSystem(sysInfo) ;
+ RIOT.init() ;
+ TDB.init() ;
+ MappingRegistry.addPrefixMapping("fuseki", FusekiSymbolIRI) ;
+
+ TDB.setOptimizerWarningFlag(false) ;
+ // Don't set TDB batch commits.
+ // This can be slower, but it less memory hungry and more predictable.
+ TransactionManager.QueueBatchSize = 0 ;
+ }
+
+ /**
+ * Get server global {@link com.hp.hpl.jena.sparql.util.Context}.
+ *
+ * @return {@link com.hp.hpl.jena.query.ARQ#getContext()}
+ */
+ public static Context getContext() {
+ return ARQ.getContext() ;
+ }
+
+ // Force a call to init.
+ static {
+ init() ;
+ }
+}