You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2015/01/29 13:12:52 UTC
[4/6] jena git commit: JENA-872 : apache-jena-fuseki
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/apache-jena-fuseki/bin/soh
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/bin/soh b/jena-fuseki2/apache-jena-fuseki/bin/soh
new file mode 100755
index 0000000..0e3a807
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/bin/soh
@@ -0,0 +1,707 @@
+#!/usr/bin/env ruby
+# -*- coding: 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.
+
+# SPARQL HTTP Update, client.
+
+require 'optparse'
+require 'net/http'
+require 'uri'
+require 'cgi'
+require 'pp'
+require 'ostruct'
+
+# ToDo
+# Allow a choice of media type for GET
+# --accept "content-type" (and abbreviations)
+# --header "Add:this"
+# --user, --password
+# Basic authentication: request.basic_auth("username", "password")
+# Follow redirects => 301: puts response["location"] # All headers are lowercase?
+
+SOH_NAME="SOH"
+SOH_VERSION="0.0.0"
+
+$proxy = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : OpenStruct.new
+
+# What about direct naming?
+
+# Names
+$mtTurtle = 'text/turtle;charset=utf-8'
+$mtRDF = 'application/rdf+xml'
+$mtText = 'text/plain'
+$mtNQuads = 'text/n-quads'
+$mtTriG = 'application/trig'
+$mtSparqlResultsX = 'application/sparql-results+xml'
+$mtSparqlResultsJ = 'application/sparql-results+json'
+$mtAppJSON = 'application/json'
+$mtAppXML = 'application/xml'
+$mtSparqlResultsTSV = 'application/sparql-results+tsv'
+$mtSparqlResultsCSV = 'application/sparql-results+csv'
+$mtSparqlUpdate = 'application/sparql-update'
+$mtWWWForm = 'application/x-www-form-urlencoded'
+$mtSparqlQuery = "application/sparql-query" ;
+
+# Global media type table.
+$fileMediaTypes = {}
+$fileMediaTypes['ttl'] = $mtTurtle
+$fileMediaTypes['n3'] = 'text/n3; charset=utf-8'
+$fileMediaTypes['nt'] = $mtText
+$fileMediaTypes['rdf'] = $mtRDF
+$fileMediaTypes['owl'] = $mtRDF
+$fileMediaTypes['nq'] = $mtNQuads
+$fileMediaTypes['trig'] = $mtTriG
+
+# Global charset : no entry means "don't set"
+$charsetUTF8 = 'utf-8'
+$charset = {}
+$charset[$mtTurtle] = 'utf-8'
+$charset[$mtText] = 'ascii'
+$charset[$mtTriG] = 'utf-8'
+$charset[$mtNQuads] = 'ascii'
+
+# Headers
+
+$hContentType = 'Content-Type'
+# $hContentEncoding = 'Content-Encoding'
+$hContentLength = 'Content-Length'
+# $hContentLocation = 'Content-Location'
+# $hContentRange = 'Content-Range'
+
+$hAccept = 'Accept'
+$hAcceptCharset = 'Accept-Charset'
+$hAcceptEncoding = 'Accept-Encoding'
+$hAcceptRanges = 'Accept-Ranges'
+
+$headers = { "User-Agent" => "#{SOH_NAME}/Fuseki #{SOH_VERSION}"}
+$print_http = false
+
+# Default for GET
+# At least allow anythign (and hope!)
+$accept_rdf="#{$mtRDF};q=0.9 , #{$mtTurtle}"
+# For SPARQL query
+$accept_results="#{$mtSparqlResultsJ} , #{$mtSparqlResultsX};q=0.9 , #{$accept_rdf}"
+
+# Accept any in case of trouble.
+$accept_rdf="#{$accept_rdf} , */*;q=0.1"
+$accept_results="#{$accept_results} , */*;q=0.1"
+
+# The media type usually forces the charset.
+$accept_charset=nil
+
+## Who we are.
+## Two styles:
+## s-query .....
+## soh query .....
+
+$cmd = File.basename($0)
+if $cmd == 'soh'
+then
+ $cmd = (ARGV.size == 0) ? 'soh' : ARGV.shift
+end
+
+if ! $cmd.start_with?('s-') && $cmd != 'soh'
+ $cmd = 's-'+$cmd
+end
+
+## --------
+
+def GET(dataset, graph)
+ print "GET #{dataset} #{graph}\n" if $verbose
+ requestURI = target(dataset, graph)
+ headers = {}
+ headers.merge!($headers)
+ headers[$hAccept] = $accept_rdf
+ headers[$hAcceptCharset] = $accept_charset unless $accept_charset.nil?
+ get_worker(requestURI, headers)
+end
+
+def get_worker(requestURI, headers)
+ uri = URI.parse(requestURI)
+ request = Net::HTTP::Get.new(uri.request_uri)
+ request.initialize_http_header(headers)
+ print_http_request(uri, request)
+ response_print_body(uri, request)
+end
+
+def HEAD(dataset, graph)
+ print "HEAD #{dataset} #{graph}\n" if $verbose
+ requestURI = target(dataset, graph)
+ headers = {}
+ headers.merge!($headers)
+ headers[$hAccept] = $accept_rdf
+ headers[$hAcceptCharset] = $accept_charset unless $accept_charset.nil?
+ uri = URI.parse(requestURI)
+ request = Net::HTTP::Head.new(uri.request_uri)
+ request.initialize_http_header(headers)
+ print_http_request(uri, request)
+ response_no_body(uri, request)
+end
+
+def PUT(dataset, graph, file)
+ print "PUT #{dataset} #{graph} #{file}\n" if $verbose
+ send_body(dataset, graph, file, Net::HTTP::Put)
+end
+
+def POST(dataset, graph, file)
+ print "POST #{dataset} #{graph} #{file}\n" if $verbose
+ send_body(dataset, graph, file, Net::HTTP::Post)
+end
+
+def DELETE(dataset, graph)
+ print "DELETE #{dataset} #{graph}\n" if $verbose
+ requestURI = target(dataset, graph)
+ uri = URI.parse(requestURI)
+ request = Net::HTTP::Delete.new(uri.request_uri)
+ headers = {}
+ headers.merge!($headers)
+ request.initialize_http_header(headers)
+ print_http_request(uri, request)
+ response_no_body(uri, request)
+end
+
+def uri_escape(string)
+ CGI.escape(string)
+end
+
+def target(dataset, graph)
+ return dataset+"?default" if graph == "default"
+ return dataset+"?graph="+uri_escape(graph)
+end
+
+def send_body(dataset, graph, file, method)
+ mt = content_type(file)
+ headers = {}
+ headers.merge!($headers)
+ headers[$hContentType] = mt
+ headers[$hContentLength] = File.size(file).to_s
+ ## p headers
+
+ requestURI = target(dataset, graph)
+ uri = URI.parse(requestURI)
+
+ request = method.new(uri.request_uri)
+ request.initialize_http_header(headers)
+ print_http_request(uri, request)
+ request.body_stream = File.open(file)
+ response_no_body(uri, request)
+end
+
+def response_no_body(uri, request)
+ http = Net::HTTP::Proxy($proxy.host,$proxy.port).new(uri.host, uri.port)
+ http.read_timeout = nil
+ # check we can connect.
+ begin http.start
+ rescue Exception => e
+ # puts e.message
+ #puts e.backtrace.inspect
+ warn_exit "Failed to connect: #{uri.host}:#{uri.port}: #{e.message}", 3
+ end
+ response = http.request(request)
+ print_http_response(response)
+ case response
+ when Net::HTTPSuccess, Net::HTTPRedirection
+ # OK
+ when Net::HTTPNotFound
+ warn_exit "404 Not found: #{uri}", 9
+ #print response.body
+ else
+ warn_exit "#{response.code} #{response.message} #{uri}", 9
+ # Unreachable
+ response.error!
+ end
+ # NO BODY IN RESPONSE
+end
+
+def response_print_body(uri, request)
+ http = Net::HTTP::Proxy($proxy.host,$proxy.port).new(uri.host, uri.port)
+ http.read_timeout = nil
+ # check we can connect.
+ begin http.start
+ rescue => e
+ #puts e.backtrace.inspect
+ #print e.class
+ warn_exit "Failed to connect: #{uri.host}:#{uri.port}: #{e.message}", 3
+ end
+
+ # Add a blank line if headers were output.
+ print "\n" if $http_print ;
+
+ begin
+ response = http.request(request) { |res|
+ print_http_response(res)
+ #puts res.code
+ res.read_body do |segment|
+ print segment
+ end
+ }
+ case response
+ when Net::HTTPSuccess, Net::HTTPRedirection
+ # OK
+ when Net::HTTPNotFound
+ warn_exit "404 Not found: #{uri}", 9
+ #print response.body
+ else
+ warn_exit "#{response.code}: #{uri}", 9
+ # Unreachable
+ response.error!
+ end
+ rescue EOFError => e
+ warn_exit "IO Error: "+e.message, 3
+ end
+end
+
+def print_http_request(uri, request)
+ return unless $print_http
+ #print "Request\n"
+ print request.method," ",uri, "\n"
+ print_headers(" ",request)
+end
+
+def print_http_response(response)
+ return unless $print_http
+ #print "Response\n"
+ print response.code, " ", response.message, "\n"
+ print_headers(" ",response)
+end
+
+def print_headers(marker, headers)
+ headers.each do |k,v|
+ k = k.split('-').map{|w| w.capitalize}.join('-')+':'
+ printf "%s%-20s %s\n",marker,k,v
+ end
+end
+
+def content_type(file)
+ file =~ /\.([^.]*)$/
+ ext = $1
+ mt = $fileMediaTypes[ext]
+ cs = $charset[mt]
+ mt = mt+';charset='+cs if ! cs.nil?
+ return mt
+end
+
+def charset(content_type)
+ return $charset[content_type]
+end
+
+def warn_exit(msg, rc)
+ warn msg
+ exit rc ;
+end
+
+def parseURI(uri_string)
+ begin
+ return URI.parse(uri_string).to_s
+ rescue URI::InvalidURIError => err
+ warn_exit "Bad URI: <#{uri_string}>", 2
+ end
+end
+
+## ---- Command
+
+def cmd_soh(command=nil)
+ ## Command line
+ options = {}
+ optparse = OptionParser.new do |opts|
+ # Set a banner, displayed at the top
+ # of the help screen.
+ case $cmd
+ when "s-http", "sparql-http", "soh"
+ banner="$cmd [get|post|put|delete] datasetURI graph [file]"
+ when "s-get", "s-head", "s-delete"
+ banner="$cmd datasetURI graph"
+ end
+
+ opts.banner = $banner
+ # Define the options, and what they do
+
+ options[:verbose] = false
+ opts.on( '-v', '--verbose', 'Verbose' ) do
+ options[:verbose] = true
+ end
+
+ options[:version] = false
+ opts.on( '--version', 'Print version and exit' ) do
+ print "#{SOH_NAME} #{SOH_VERSION}\n"
+ exit
+ end
+
+ # This displays the help screen, all programs are
+ # assumed to have this option.
+ opts.on( '-h', '--help', 'Display this screen and exit' ) do
+ puts opts
+ exit
+ end
+ end
+
+ begin optparse.parse!
+ rescue OptionParser::InvalidArgument => e
+ warn e
+ exit
+ end
+
+ $verbose = options[:verbose]
+ $print_http = $verbose
+
+ if command.nil?
+ if ARGV.size == 0
+ warn "No command given: expected one of 'get', 'put', 'post', 'delete', 'query' or 'update'"
+ exit 1
+ end
+ cmdPrint=ARGV.shift
+ command=cmdPrint.upcase
+ else
+ cmdPrint=command
+ end
+
+ case command
+ when "HEAD", "GET", "DELETE"
+ requiredFile=false
+ when "PUT", "POST"
+ requiredFile=true
+ when "QUERY"
+ cmd_sparql_query
+ when "UPDATE"
+ cmd_sparql_update
+ else
+ warn_exit "Unknown command: #{command}", 2
+ end
+
+ if requiredFile
+ then
+ if ARGV.size != 3
+ warn_exit "Required: dataset URI, graph URI (or 'default') and file", 1
+ end
+ else
+ if ARGV.size != 2
+ warn_exit "Required: dataset URI and graph URI (or 'default')", 1
+ end
+ end
+
+ dataset=parseURI(ARGV.shift)
+ # Relative URI?
+ graph=parseURI(ARGV.shift)
+ file=""
+ if requiredFile
+ then
+ file = ARGV.shift if requiredFile
+ if ! File.exist?(file)
+ warn_exit "No such file: "+file, 3
+ end
+ if File.directory?(file)
+ warn_exit "File is a directory: "+file, 3
+ end
+ end
+
+ case command
+ when "GET"
+ GET(dataset, graph)
+ when "HEAD"
+ HEAD(dataset, graph)
+ when "PUT"
+ PUT(dataset, graph, file)
+ when "DELETE"
+ DELETE(dataset, graph)
+ when "POST"
+ POST(dataset, graph, file)
+ else
+ warn_exit "Internal error: Unknown command: #{cmd}", 2
+ end
+ exit 0
+end
+
+## --------
+def string_or_file(arg)
+ return arg if ! arg.match(/^@/)
+ a=(arg[1..-1])
+ open(a, 'rb'){|f| f.read}
+end
+
+## -------- SPARQL Query
+
+## Choose method
+def SPARQL_query(service, query, query_file, forcePOST=false, args2={})
+ if ! query_file.nil?
+ query = open(query_file, 'rb'){|f| f.read}
+ end
+ if forcePOST || query.length >= 2*1024
+ SPARQL_query_POST(service, query, args2)
+ else
+ SPARQL_query_GET(service, query, args2)
+ end
+end
+
+## By GET
+
+def SPARQL_query_GET(service, query, args2)
+ args = { "query" => query }
+ args.merge!(args2)
+ qs=args.collect { |k,v| "#{k}=#{uri_escape(v)}" }.join('&')
+ action="#{service}?#{qs}"
+ headers={}
+ headers.merge!($headers)
+ headers[$hAccept]=$accept_results
+ get_worker(action, headers)
+end
+
+## By POST
+
+def SPARQL_query_POST(service, query, args2)
+ # DRY - body/no body for each of request and response.
+ post_params={ "query" => query }
+ post_params.merge!(args2)
+ uri = URI.parse(service)
+ headers={}
+ headers.merge!($headers)
+ headers[$hAccept]=$accept_results
+ execute_post_form_body(uri, headers, post_params)
+end
+
+def execute_post_form_body(uri, headers, post_params)
+ request = Net::HTTP::Post.new(uri.request_uri)
+ qs=post_params.collect { |k,v| "#{k}=#{uri_escape(v)}" }.join('&')
+ headers[$hContentType] = $mtWWWForm
+ headers[$hContentLength] = qs.length.to_s
+ request.initialize_http_header(headers)
+ request.body = qs
+ print_http_request(uri, request)
+ response_print_body(uri, request)
+end
+
+# Usage: -v --help --file= --query=
+def cmd_sparql_query
+ options={}
+ optparse = OptionParser.new do |opts|
+ opts.banner = "Usage: #{$cmd} [--query QUERY] [--service URI] [--post] 'query' | @file"
+ opts.on('--service=URI', '--server=URI', 'SPARQL endpoint') do |uri|
+ options[:service]=uri
+ end
+ opts.on('--query=FILE','--file=FILE', 'Take query from a file') do |file|
+ options[:file]=file
+ end
+ opts.on('--output=TYPE', [:json,:xml,:text,:csv,:tsv],
+ 'Set the output argument') do |type|
+ options[:output]=type
+ end
+ opts.on('--accept=TYPE', [:json,:xml,:text,:csv,:tsv],
+ 'Set the accept header type') do |type|
+ options[:accept]=type
+ end
+ options[:verbose] = false
+ opts.on( '--post', 'Force use of POST' ) do
+ options[:post] = true
+ end
+ opts.on( '-v', '--verbose', 'Verbose' ) do
+ options[:verbose] = true
+ end
+ opts.on( '--version', 'Print version and exit' ) do
+ print "#{SOH_NAME} #{SOH_VERSION}\n"
+ exit
+ end
+ opts.on( '-h', '--help', 'Display this screen and exit' ) do
+ puts opts
+ exit
+ end
+ end
+
+ begin optparse.parse!
+ rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
+ warn e
+ exit 1
+ end
+
+ $verbose = options[:verbose]
+ $print_http = $verbose
+ usePOST = options[:post]
+
+ service = options[:service]
+ warn_exit 'No service specified. Required --service=URI',1 if service.nil?
+
+ # Query
+ query=nil
+ query_file=options[:file]
+ if query_file.nil? && ARGV.size == 0
+ then
+ warn_exit 'No query specified.',1
+ end
+ if query_file.nil?
+ query = ARGV.shift
+ if query.match(/^@/)
+ query_file = query[1..-1]
+ query = nil
+ end
+ end
+
+ # --output ==> output= (non-standard)
+ args={}
+ case options[:output]
+ when nil
+ when "json","xml","text","csv","tsv"
+ args['output'] = options[:output]
+ when :json,:xml,:text,:csv,:tsv
+ args['output'] = options[:output].to_s
+ else
+ warn_exit "Unrecognized output type: "+options[:output],2
+ end
+
+ # --accept
+ # options[:accept]
+
+ print "SPARQL #{service}\n" if $verbose
+ #args={"output"=>"text"}
+ SPARQL_query(service, query, query_file, usePOST, args)
+ exit(0)
+end
+
+## -------- SPARQL Update
+
+# Update sent as a WWW form.
+def SPARQL_update_by_form(service, update, args2={})
+ args = {}
+ args.merge!(args2)
+ headers={}
+ headers.merge!($headers)
+ # args? encode?
+ body="update="+uri_escape(update)
+ headers[$hContentType] = $mtWWWForm
+ headers[$hContentLength] = body.length.to_s
+ uri = URI.parse(service)
+ execute_post_form(uri, headers, body)
+end
+
+# DRY - query form.
+def execute_post_form(uri, headers, body)
+ request = Net::HTTP::Post.new(uri.request_uri)
+ request.initialize_http_header(headers)
+ request.body = body
+ print_http_request(uri, request)
+ response_no_body(uri, request)
+end
+
+def SPARQL_update(service, update, args2={})
+ args = {}
+ args.merge!(args2)
+ headers={}
+ headers.merge!($headers)
+ headers[$hContentType] = $mtSparqlUpdate
+ uri = URI.parse(service)
+ request = Net::HTTP::Post.new(uri.request_uri)
+ request.initialize_http_header(headers)
+ request.body = update
+ print_http_request(uri, request)
+ response_no_body(uri, request)
+end
+
+def cmd_sparql_update(by_raw_post=true)
+ # Share with cmd_sparql_query
+ options={}
+ optparse = OptionParser.new do |opts|
+ opts.banner = "Usage: #{$cmd} [--file REQUEST] [--service URI] 'request' | @file"
+ opts.on('--service=URI', '--server=URI', 'SPARQL endpoint') do |uri|
+ options[:service]=uri
+ end
+ opts.on('--update=FILE', '--file=FILE', 'Take update from a file') do |file|
+ options[:file]=file
+ end
+ options[:verbose] = false
+ opts.on( '-v', '--verbose', 'Verbose' ) do
+ options[:verbose] = true
+ end
+ opts.on( '--version', 'Print version and exit' ) do
+ print "#{SOH_NAME} #{SOH_VERSION}\n"
+ exit
+ end
+ opts.on( '-h', '--help', 'Display this screen and exit' ) do
+ puts opts
+ exit
+ end
+ end
+
+ begin optparse.parse!
+ rescue OptionParser::InvalidArgument => e
+ warn e
+ exit
+ end
+
+ $verbose = options[:verbose]
+ $print_http = $verbose
+
+ service = options[:service]
+ warn_exit 'No service specified. Required --service=URI',1 if service.nil?
+
+ update=nil
+ update_file=options[:file]
+
+ if update_file.nil? && ARGV.size == 0
+ then
+ warn_exit 'No update specified.',1
+ end
+ if update_file.nil?
+ update = ARGV.shift
+ if update.match(/^@/)
+ update_file = update[1..-1]
+ update = nil
+ end
+ end
+
+ print "SPARQL-Update #{service}\n" if $verbose
+ args={}
+
+ # Reads in the file :-(
+ if update.nil?
+ then
+ update = open(update_file, 'rb'){|f| f.read}
+ else
+ update = string_or_file(update)
+ end
+
+ if by_raw_post
+ SPARQL_update(service, update, args)
+ else
+ SPARQL_update_by_form(service, update, args)
+ end
+ exit(0)
+end
+
+## -------
+
+case $cmd
+when "s-http", "sparql-http", "soh"
+ $banner="#{$cmd} [get|post|put|delete] datasetURI graph [file]"
+ cmd_soh
+when "s-get", "s-head", "s-put", "s-delete", "s-post"
+
+ case $cmd
+ when "s-get", "s-head", "s-delete"
+ $banner="#{$cmd} datasetURI graph"
+ when "s-put", "s-post"
+ $banner="#{$cmd} datasetURI graph file"
+ end
+ cmd2 = $cmd.sub(/^s-/, '').upcase
+ cmd_soh cmd2
+
+when "s-query", "sparql-query"
+ cmd_sparql_query
+when "s-update", "sparql-update"
+ cmd_sparql_update true
+when "s-update-form", "sparql-update-form"
+ cmd_sparql_update false
+else
+ warn_exit "Unknown: "+$cmd, 1
+end
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/apache-jena-fuseki/dist/ABOUT
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/dist/ABOUT b/jena-fuseki2/apache-jena-fuseki/dist/ABOUT
new file mode 100644
index 0000000..cee2ca2
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/dist/ABOUT
@@ -0,0 +1 @@
+This directory holds the material needed for inclusion in the Fuseki distribution.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/apache-jena-fuseki/dist/LICENSE
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/dist/LICENSE b/jena-fuseki2/apache-jena-fuseki/dist/LICENSE
new file mode 100644
index 0000000..10474ab
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/dist/LICENSE
@@ -0,0 +1,617 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+ (c) Copyright 2003, Plugged In Software
+
+ All rights reserved.
+
+ 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 name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 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 AUTHOR 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.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+http://www.slf4j.org/license.html
+
+ Copyright (c) 2004-2011 QOS.ch
+ All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+==============================================================
+ Jetty Web Container
+ Copyright 1995-2012 Mort Bay Consulting Pty Ltd.
+==============================================================
+
+The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
+unless otherwise noted.
+
+Jetty is dual licensed under both
+
+ * The Apache 2.0 License
+ http://www.apache.org/licenses/LICENSE-2.0.html
+
+ and
+
+ * The Eclipse Public 1.0 License
+ http://www.eclipse.org/legal/epl-v10.html
+
+Jetty may be distributed under either license.
+
+The javax.servlet package used was sourced from the Apache
+Software Foundation and is distributed under the apache 2.0
+license.
+
+The UnixCrypt.java code implements the one way cryptography used by
+Unix systems for simple password protection. Copyright 1996 Aki Yoshida,
+modified April 2001 by Iris Van den Broeke, Daniel Deville.
+Permission to use, copy, modify and distribute UnixCrypt
+for non-commercial or commercial purposes and without fee is
+granted provided that the copyright notice appears in all copies.
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+This product bundles "Bootstrap", which is available under an
+MIT license. See: https://github.com/twbs/bootstrap/blob/master/LICENSE
+
+This product bundles "codemirror", which is available under an
+MIT license. See http://codemirror.net/LICENSE
+
+This product bundles "jquery", which is available under an
+MIT license. See https://jquery.org/license/
+
+This product bundles "jquery.form", which is available under an
+MIT license. See http://malsup.github.io/mit-license.txt
+
+This product bundles "jquery.xdomainrequest", which is available under an
+MIT license. See https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest/blob/master/LICENSE.txt
+
+This product bundles "backbone.js", which is available under an
+MIT license. See https://github.com/jashkenas/backbone/blob/master/LICENSE
+
+This product bundles "backbone.marionette", which is available under an
+MIT license. See http://mutedsolutions.mit-license.org/
+ "backbone.marionette" includes "Backbone.BabySitter" and
+ "Backbone.Wreqr" also available under the same MIT license.
+
+This product bundles "html5shiv", which is available under an
+MIT license. See https://code.google.com/p/html5shiv/
+
+This product bundles "RequireJS", which is available under an
+MIT license.
+https://github.com/jrburke/requirejs/blob/master/LICENSE
+ "RequireJS" is also available with a "30clause BSD license"
+
+This product bundles "Respond", which is available under an
+MIT license. See https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
+
+This product bundles "sprintf.js", which is available under a
+"3 clause BSD" license.
+ https://github.com/alexei/sprintf.js/blob/master/LICENSE
+
+This product bundles "underscore", which is available under an
+MIT license. See https://github.com/jashkenas/underscore/blob/master/LICENSE
+
+This product bundles "FontAwesome"
+ "Font Awesome by Dave Gandy - http://fontawesome.io"
+The font is available under an SIL Open Font License 1.1
+and the CSS files under an MIT License.
+See http://fontawesome.io/license/
+
+This product bundles "jQuery File Upload Plugin"
+which is available under an MIT License.
+See https://github.com/blueimp/jQuery-File-Upload
+
+This product bundles "Bootstrap-select"
+which is available under an MIT License.
+See https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE
+
+This product bundles "pivot.js"
+which is available under a BSD 3-clause style license.
+https://github.com/rwjblue/pivot.js/blob/master/LICENSE
+
+This product bundles "YASEQE - Yet Another Sparql Query Editor"
+which is available under an MIT License.
+See http://yasqe.yasgui.org/license.txt
+
+This product bundles "YASR - Yet Another Sparql Resultset GUI"
+which is available under an MIT License.
+See http://yasr.yasgui.org/license.txt
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+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 and the Creative Commons Attribution License
+(http://creativecommons.org/licenses/by/2.5)
+
+- - - - - - - - - - - - - - - - - - - - - - -
+
+From Apache Lucene
+
+Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was
+derived from unicode conversion examples available at
+http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright
+from those sources:
+
+/*
+ * Copyright 2001-2004 Unicode, Inc.
+ *
+ * Disclaimer
+ *
+ * This source code is provided as is by Unicode, Inc. No claims are
+ * made as to fitness for any particular purpose. No warranties of any
+ * kind are expressed or implied. The recipient agrees to determine
+ * applicability of information provided. If this file has been
+ * purchased on magnetic or optical media from Unicode, Inc., the
+ * sole remedy for any claim will be exchange of defective media
+ * within 90 days of receipt.
+ *
+ * Limitations on Rights to Redistribute This Code
+ *
+ * Unicode, Inc. hereby grants the right to freely use the information
+ * supplied in this file in the creation of products supporting the
+ * Unicode Standard, and to make copies of this file in any form
+ * for internal or external distribution as long as this notice
+ * remains attached.
+ */
+
+
+Some code in core/src/java/org/apache/lucene/util/ArrayUtil.java was
+derived from Python 2.4.2 sources available at
+http://www.python.org. Full license is here:
+
+ http://www.python.org/download/releases/2.4.2/license/
+
+Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was
+derived from Python 3.1.2 sources available at
+http://www.python.org. Full license is here:
+
+ http://www.python.org/download/releases/3.1.2/license/
+
+Some code in core/src/java/org/apache/lucene/util/automaton was
+derived from Brics automaton sources available at
+www.brics.dk/automaton/. Here is the copyright from those sources:
+
+/*
+ * Copyright (c) 2001-2009 Anders Moeller
+ * All rights reserved.
+ *
+ * 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 name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 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 AUTHOR 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.
+ */
+
+The levenshtein automata tables in core/src/java/org/apache/lucene/util/automaton
+were automatically generated with the moman/finenight FSA package.
+Here is the copyright for those sources:
+
+# Copyright (c) 2010, Jean-Philippe Barrette-LaPierre, <jp...@rrette.com>
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+
+Some code in core/src/java/org/apache/lucene/util/UnicodeUtil.java was
+derived from ICU (http://www.icu-project.org)
+The full license is available here:
+ http://source.icu-project.org/repos/icu/icu/trunk/license.html
+
+/*
+ * Copyright (C) 1999-2010, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, and/or sell copies of the
+ * Software, and to permit persons to whom the Software is furnished to do so,
+ * provided that the above copyright notice(s) and this permission notice appear
+ * in all copies of the Software and that both the above copyright notice(s) and
+ * this permission notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
+ * LIABLE FOR ANY CLAIM, OR 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 TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall not
+ * be used in advertising or otherwise to promote the sale, use or other
+ * dealings in this Software without prior written authorization of the
+ * copyright holder.
+ */
+
+The following license applies to the Snowball stemmers:
+
+Copyright (c) 2001, Dr Martin Porter
+Copyright (c) 2002, Richard Boulton
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 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.
+ * Neither the name of the copyright holders nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS 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 COPYRIGHT OWNER 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.
+
+The following license applies to the KStemmer:
+
+Copyright © 2003,
+Center for Intelligent Information Retrieval,
+University of Massachusetts, Amherst.
+All rights reserved.
+
+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 names "Center for Intelligent Information Retrieval" and
+"University of Massachusetts" must not be used to endorse or promote products
+derived from this software without prior written permission. To obtain
+permission, contact info@ciir.cs.umass.edu.
+
+THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS
+"AS IS" AND ANY EXPRESS 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 COPYRIGHT HOLDERS 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.
+
+The following license applies to the Morfologik project:
+
+Copyright (c) 2006 Dawid Weiss
+Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * 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.
+
+ * Neither the name of Morfologik nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS 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 COPYRIGHT HOLDER 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.
+
+---
+
+The dictionary comes from Morfologik project. Morfologik uses data from
+Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and
+is licenced on the terms of (inter alia) LGPL and Creative Commons
+ShareAlike. The part-of-speech tags were added in Morfologik project and
+are not found in the data from sjp.pl. The tagset is similar to IPI PAN
+tagset.
+
+---
+
+The following license applies to the Morfeusz project,
+used by org.apache.lucene.analysis.morfologik.
+
+BSD-licensed dictionary of Polish (SGJP)
+http://sgjp.pl/morfeusz/
+
+Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński,
+ Marcin Woliński, Robert Wołosz
+
+All rights reserved.
+
+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.
+
+THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS
+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 COPYRIGHT HOLDERS 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.
+
+
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/apache-jena-fuseki/dist/NOTICE
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/dist/NOTICE b/jena-fuseki2/apache-jena-fuseki/dist/NOTICE
new file mode 100644
index 0000000..33231f9
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/dist/NOTICE
@@ -0,0 +1,216 @@
+Apache Jena - module Fuseki
+Copyright 2011, 2012, 2013, 2014, 2015 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/02286cf3/jena-fuseki2/apache-jena-fuseki/fuseki
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/fuseki b/jena-fuseki2/apache-jena-fuseki/fuseki
new file mode 100644
index 0000000..9cc1fe8
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/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 /bin/bash -- -c "exec $JAVA ${RUN_ARGS[*]} > $FUSEKI_LOGS_STDERROUT 2>&1"
+ 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/02286cf3/jena-fuseki2/apache-jena-fuseki/fuseki-server
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/fuseki-server b/jena-fuseki2/apache-jena-fuseki/fuseki-server
new file mode 100755
index 0000000..6342aba
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/fuseki-server
@@ -0,0 +1,80 @@
+#!/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" "$@"
+
+## Adding custom code to the Fuseki server:
+##
+## It is also possible to launch Fuseki using
+## java $JVM_ARGS -cp "$JAR" org.apache.jena.fuseki.cmd.FusekiCmd "$@"
+##
+## "exec" is optional - it simple frees up a OS process.
+## In this way, you can add custom java to the classpath:
+##
+## APPJAR=MyCode.jar
+## java $JVM_ARGS -cp "$JAR:$APPJAR" org.apache.jena.fuseki.cmd.FusekiCmd "$@"
+
+
+
+
+
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/apache-jena-fuseki/fuseki-server.bat
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/fuseki-server.bat b/jena-fuseki2/apache-jena-fuseki/fuseki-server.bat
new file mode 100644
index 0000000..9977a23
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/fuseki-server.bat
@@ -0,0 +1,28 @@
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing, software
+@REM distributed under the License is distributed on an "AS IS" BASIS,
+@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@REM See the License for the specific language governing permissions and
+@REM limitations under the License.
+
+@echo off
+@REM modify this to name the server jar
+java -Xmx1200M -jar fuseki-server.jar %*
+
+@REM Adding custom code to the Fuseki server:
+@REM
+@REM It is also possible to launch Fuseki using
+@REM java ..jvmarsg... -cp $JAR org.apache.jena.fuseki.cmd.FusekiCmd %*
+@REM
+@REM In this way, you can add custom java to the classpath:
+@REM
+@REM java ... -cp fuseki-server.jar;MyCustomCode.jar org.apache.jena.fuseki.cmd.FusekiCmd %*
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/apache-jena-fuseki/pom.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/apache-jena-fuseki/pom.xml b/jena-fuseki2/apache-jena-fuseki/pom.xml
new file mode 100644
index 0000000..fb2db6c
--- /dev/null
+++ b/jena-fuseki2/apache-jena-fuseki/pom.xml
@@ -0,0 +1,95 @@
+<?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 Binary Distribution</name>
+ <artifactId>apache-jena-fuseki</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <parent>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-fuseki</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <description>Fuseki distribution</description>
+ <url>http://jena.apache.org/</url>
+
+ <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>
+ <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-fuseki-server</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-fuseki-war</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <plugins>
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-zip-assembly</id>
+ <phase>package</phase>
+ <!--<phase/>-->
+ <goals><goal>single</goal></goals>
+ <configuration>
+ <appendAssemblyId>false</appendAssemblyId>
+ <descriptors>
+ <descriptor>assembly-dist.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/jena-fuseki-dist/assembly-dist.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-dist/assembly-dist.xml b/jena-fuseki2/jena-fuseki-dist/assembly-dist.xml
deleted file mode 100644
index 3c6c66e..0000000
--- a/jena-fuseki2/jena-fuseki-dist/assembly-dist.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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.
--->
-
-<!--
- The distribution.
- Assumes jar made and onejar has been assembled.
--->
-
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
-
- <id>distribution</id>
-
- <formats>
- <format>zip</format>
- <format>tar.gz</format>
- </formats>
-
- <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
-
- <dependencySets>
- <!-- Standalone JAR -->
- <dependencySet>
- <useProjectArtifact>false</useProjectArtifact>
- <includes>
- <include>org.apache.jena:jena-fuseki-server:jar</include>
- </includes>
- <outputFileNameMapping>fuseki-server.jar</outputFileNameMapping>
-
- </dependencySet>
- <!-- WAR file -->
- <dependencySet>
- <useProjectArtifact>false</useProjectArtifact>
- <includes>
- <include>org.apache.jena:jena-fuseki-war:war</include>
- </includes>
- <outputFileNameMapping>fuseki.war</outputFileNameMapping>
-
- </dependencySet>
- </dependencySets>
-
- <files>
-
- <file>
- <source>dist/LICENSE</source>
- <destName>LICENSE</destName>
- </file>
- <file>
- <source>dist/NOTICE</source>
- <destName>NOTICE</destName>
- </file>
- </files>
-
- <fileSets>
- <fileSet>
- <outputDirectory></outputDirectory>
- <includes>
- <include>templates/*</include>
- <include>README*</include>
- <include>DEPENDENCIES*</include>
- <include>ReleaseNotes.txt</include>
- </includes>
- </fileSet>
-
- <fileSet>
- <outputDirectory></outputDirectory>
- <includes>
- <include>log4j.properties</include>
- <!--<include>examples/**</include>-->
- <include>fuseki</include>
- <include>fuseki-server</include>
- <include>fuseki-server.bat</include>
- <!--<include>s-*</include>-->
- </includes>
- </fileSet>
-
- <fileSet>
- <directory>../jena-fuseki-core/src/main/webapp</directory>
- <outputDirectory>webapp</outputDirectory>
- </fileSet>
-
- </fileSets>
-</assembly>
http://git-wip-us.apache.org/repos/asf/jena/blob/02286cf3/jena-fuseki2/jena-fuseki-dist/backup
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-dist/backup b/jena-fuseki2/jena-fuseki-dist/backup
deleted file mode 100755
index a3cb0b1..0000000
--- a/jena-fuseki2/jena-fuseki-dist/backup
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/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.
-
-DB="ds"
-
-curl -v -XPOST 'http://localhost:3030/$/sleep?interval=10000'
-
-curl -v 'http://localhost:3030/$/tasks'
\ No newline at end of file