http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-fuseki/s-query
----------------------------------------------------------------------
diff --git a/jena-fuseki/s-query b/jena-fuseki/s-query
deleted file mode 100755
index 4f6590d..0000000
--- a/jena-fuseki/s-query
+++ /dev/null
@@ -1,713 +0,0 @@
-#!/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'
-$mtNTriples         = 'application/n-triples'
-$mtNQuads           = 'application/n-quads'
-$mtJSONLD           = 'application/ld+json'
-$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
-$fileMediaTypes['json-ld']  = $mtJSONLD
-$fileMediaTypes['jsonld']  = $mtJSONLD
-
-# 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]   = 'utf-8'
-
-# 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 anything (and hope!)
-$accept_rdf="#{$mtTurtle} , #{$mtNTriples};q=0.9 , #{$mtRDF};q=0.8 , 
#{$mtJSONLD};q=0.5"
-# Datasets
-$accept_ds="#{$mtTrig} , #{$mtNQuads};q=0.9 , #{$mtJSONLD};q=0.5"
-# 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/2fb788d3/jena-fuseki/s-update
----------------------------------------------------------------------
diff --git a/jena-fuseki/s-update b/jena-fuseki/s-update
deleted file mode 100755
index 4f6590d..0000000
--- a/jena-fuseki/s-update
+++ /dev/null
@@ -1,713 +0,0 @@
-#!/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'
-$mtNTriples         = 'application/n-triples'
-$mtNQuads           = 'application/n-quads'
-$mtJSONLD           = 'application/ld+json'
-$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
-$fileMediaTypes['json-ld']  = $mtJSONLD
-$fileMediaTypes['jsonld']  = $mtJSONLD
-
-# 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]   = 'utf-8'
-
-# 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 anything (and hope!)
-$accept_rdf="#{$mtTurtle} , #{$mtNTriples};q=0.9 , #{$mtRDF};q=0.8 , 
#{$mtJSONLD};q=0.5"
-# Datasets
-$accept_ds="#{$mtTrig} , #{$mtNQuads};q=0.9 , #{$mtJSONLD};q=0.5"
-# 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/2fb788d3/jena-fuseki/s-update-form
----------------------------------------------------------------------
diff --git a/jena-fuseki/s-update-form b/jena-fuseki/s-update-form
deleted file mode 100755
index 4f6590d..0000000
--- a/jena-fuseki/s-update-form
+++ /dev/null
@@ -1,713 +0,0 @@
-#!/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'
-$mtNTriples         = 'application/n-triples'
-$mtNQuads           = 'application/n-quads'
-$mtJSONLD           = 'application/ld+json'
-$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
-$fileMediaTypes['json-ld']  = $mtJSONLD
-$fileMediaTypes['jsonld']  = $mtJSONLD
-
-# 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]   = 'utf-8'
-
-# 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 anything (and hope!)
-$accept_rdf="#{$mtTurtle} , #{$mtNTriples};q=0.9 , #{$mtRDF};q=0.8 , 
#{$mtJSONLD};q=0.5"
-# Datasets
-$accept_ds="#{$mtTrig} , #{$mtNQuads};q=0.9 , #{$mtJSONLD};q=0.5"
-# 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/2fb788d3/jena-fuseki/soh
----------------------------------------------------------------------
diff --git a/jena-fuseki/soh b/jena-fuseki/soh
deleted file mode 100755
index 4f6590d..0000000
--- a/jena-fuseki/soh
+++ /dev/null
@@ -1,713 +0,0 @@
-#!/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'
-$mtNTriples         = 'application/n-triples'
-$mtNQuads           = 'application/n-quads'
-$mtJSONLD           = 'application/ld+json'
-$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
-$fileMediaTypes['json-ld']  = $mtJSONLD
-$fileMediaTypes['jsonld']  = $mtJSONLD
-
-# 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]   = 'utf-8'
-
-# 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 anything (and hope!)
-$accept_rdf="#{$mtTurtle} , #{$mtNTriples};q=0.9 , #{$mtRDF};q=0.8 , 
#{$mtJSONLD};q=0.5"
-# Datasets
-$accept_ds="#{$mtTrig} , #{$mtNQuads};q=0.9 , #{$mtJSONLD};q=0.5"
-# 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/2fb788d3/jena-fuseki/src-dev/dev/BackwardForwardDescribeFactory.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src-dev/dev/BackwardForwardDescribeFactory.java 
b/jena-fuseki/src-dev/dev/BackwardForwardDescribeFactory.java
deleted file mode 100644
index 2322929..0000000
--- a/jena-fuseki/src-dev/dev/BackwardForwardDescribeFactory.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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/2fb788d3/jena-fuseki/src-dev/dev/DevFuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src-dev/dev/DevFuseki.java 
b/jena-fuseki/src-dev/dev/DevFuseki.java
deleted file mode 100644
index 70bbd7b..0000000
--- a/jena-fuseki/src-dev/dev/DevFuseki.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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 DevFuseki
-{
-    // SPARQL_QueryDataset.vialidate query -- but FROM etc is important for 
TDB. 
-    // DatasetDescription from protocol
-    //   createDataset from the ARQ.
-    //   SPARQL_QueryGeneral.datasetFromDescription
-    
-    // Config:
-    //   fuseki:name ==> fuseki:serviceName of fuseki:endpointBase 
-    //   rdfs:label for log files.
-    
-    // sparql.jsp needs to switch on presence and name of service endpoints.
-    // --accept for to soh for construct queries (check can get CONSTRUCT in 
TTL).
-    
-    // application/json for application/sparql-results+json. 
-    // application/xml for application/sparql-results+xml. 
-    
-    // LimitingGraph, LimitingBulkUpdateHandler --> change to use a limiting 
Sink<>
-    // Finish: SPARQL_QueryGeneral
-    //    Parse errors and etc need to be passed out.
-    // --jetty-config documentation
-    
-    // Rework arguments.
-    //   Explicit install pages.
-    //   Pages for read-only.
-    
-    // RDF/XML_ABBREV in ResponseModel
-    // Config Jetty from a file?
-    //   Alternatibe way to run Fuseki
-    
-       // Flint?
-       // Pages for publish mode.
-
-       // Multiple Accept headers
-    // WebContent and ContentType clean up.
-    
-       // SOH default to not needing 'default'
-       // More error handling.
-
-    // Migrate ContentType to RIOT
-    // use in WebContent.
-    
-    //soh : --accept application/turtle for CONSTRUCT queries.
-    
-    // Direct naming.
-    // Use absence/presence of a query string to switch.
-    
-    // sparql.jsp ==> if no dataset, go to choosing page or error page linking 
to.
-    
-    // Better handling of bad URI name for a graph http:/example/X => 
stacktrace.
-    
-    // FUSEKI_ROOT
-
-    // Documentation:
-    //   Plan documentation.
-    //   MIME types supported
-    // Include a data file in the distribution.
-    // curl as commandline
-    
-    // Dataset servers - bulk loader.
-    // Access the bulk loader via web. [later]
-    
-    // Structure pages, different static content servers
-    // /Main - index.html = fuseki.html
-    // /validate
-    // /admin
-    
-    // Server-local graph naming
-    
-    // Plain text error pages
-    
-    // Deploy to sparql.org -- need query form for read-only mode.
-    
-    // + LARQ
-    
-    // Testing:
-    //   No file -> error.
-    
-    // Remove from package conneg - use code from ARQ/Atlas.
-    // TypedStream TypedInoputStrea, TypedOutputStream, MediaType, MediaRange
-    
-    // Bundle tdb scripts with Fuseki.
-
-    // ParserFor - share between SPARQL_REST and SPARQL_Upload
-    // UploadTo dataset (TriG, N-Quads)
-   
-    // populate forms with prefixes (later)
-    
-    // Tests
-    //   TestProtocol (HTTP update, query, update), inc status codes.
-    //   SPARQL Query servlet / SPARQL Update servlet
-    //   TestContentNegotiation - is coveage enough?
-    
-    // ?? Slug header:
-    // http://bitworking.org/projects/atom/rfc5023.html#rfc.section.9.7
-    
-    // ETags.
-    
-    // Authentication
-    
-    // SOH
-    //   Refactor into body/no_body send & body/no_body receive
-    // All:
-    // -v --help --accept --user/--password ( or --auth user:pass) 
-    // Drop --service.
-    // Local config file - read to get service settings. 
-    
-    //   --accept line/shortname : s-get, s-query
-    //   Basic authentication: --user --password
-    
-    // Argument names: --service naming seems inconsistent.
-    
-    // Plug-ins:
-    //   Dataset (query, Update), HttpInternalIF?
-    //   "Connection"
-    // Locking => transaction support (via default model?)
-    //   HttpAction.beginRead() etc.
-    
-    // Java clients:
-    //   DatasetAccessor : don't serialise to byte[] and then send. 
-    //   DatasetAccessor : check existence of endpoint. 
-
-    // Content-Length: SHOULD
-    //   Transfer-Encoding: identity
-    // "chunked" encoding
-    // gzip
-    
-    // Code examples
-}

Reply via email to