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 2017/06/25 14:36:20 UTC
[1/6] jena git commit: JENA-1366: Fuseki embedded as a standalone
server
Repository: jena
Updated Branches:
refs/heads/master f9c074632 -> e05e65cf0
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-foreground.properties
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-foreground.properties b/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-foreground.properties
new file mode 100755
index 0000000..802ee9e
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-foreground.properties
@@ -0,0 +1,44 @@
+log4j.rootLogger=INFO, stdlog
+#log4j.rootLogger=INFO, fileout
+
+log4j.appender.stdlog=org.apache.log4j.ConsoleAppender
+## log4j.appender.stdlog.target=System.err
+log4j.appender.stdlog.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdlog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %-20c{1} :: %m%n
+
+# File logging, with roll over.
+log4j.appender.FusekiFileLog=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.FusekiFileLog.DatePattern='.'yyyy-MM-dd
+log4j.appender.FusekiFileLog.File=fuseki-log
+log4j.appender.FusekiFileLog.layout=org.apache.log4j.PatternLayout
+log4j.appender.FusekiFileLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%d{HH:mm:ss} %-5p %-20c{1} :: %m%n
+
+# File logging - one file.
+log4j.appender.fileout=org.apache.log4j.FileAppender
+log4j.appender.fileout.File=log.joseki
+log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
+log4j.appender.fileout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %-20c{1} :: %m%n
+
+# Jetty - Fuseki catches Jetty errors and reports them.
+log4j.logger.org.eclipse.jetty=FATAL
+
+## # Execution logging
+## log4j.logger.com.hp.hpl.jena.arq.info=INFO
+## log4j.logger.com.hp.hpl.jena.arq.exec=INFO
+
+# Everything else in Jena
+log4j.logger.com.hp.hpl.jena=WARN
+log4j.logger.org.apache.jena=WARN
+log4j.logger.org.openjena=WARN
+log4j.logger.org.openjena.riot=WARN
+
+# Joseki server
+log4j.logger.org.joseki=INFO
+
+# Fuseki
+# Server log.
+log4j.logger.org.apache.jena.fuseki.Server=INFO
+# Request log.
+log4j.logger.org.apache.jena.fuseki.Fuseki=INFO
+# Internal logs
+log4j.logger.org.apache.jena.fuseki=INFO
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-server.properties
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-server.properties b/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-server.properties
new file mode 100755
index 0000000..1f575dd
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/log4j-server.properties
@@ -0,0 +1,44 @@
+#log4j.rootLogger=INFO, stdlog
+log4j.rootLogger=INFO, fileout
+
+log4j.appender.stdlog=org.apache.log4j.ConsoleAppender
+## log4j.appender.stdlog.target=System.err
+log4j.appender.stdlog.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdlog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %-20c{1} :: %m%n
+
+# File logging, with roll over.
+log4j.appender.FusekiFileLog=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.FusekiFileLog.DatePattern='.'yyyy-MM-dd
+log4j.appender.FusekiFileLog.File=fuseki.log
+log4j.appender.FusekiFileLog.layout=org.apache.log4j.PatternLayout
+log4j.appender.FusekiFileLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%d{HH:mm:ss} %-5p %-20c{1} :: %m%n
+
+# File logging - one file.
+log4j.appender.fileout=org.apache.log4j.FileAppender
+log4j.appender.fileout.File=log.fuseki
+log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
+log4j.appender.fileout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %-20c{1} :: %m%n
+
+# Jetty - Fuseki catches Jetty errors and reports them.
+log4j.logger.org.eclipse.jetty=FATAL
+
+## # Execution logging
+## log4j.logger.com.hp.hpl.jena.arq.info=INFO
+## log4j.logger.com.hp.hpl.jena.arq.exec=INFO
+
+# Everything else in Jena
+log4j.logger.com.hp.hpl.jena=WARN
+log4j.logger.org.apache.jena=WARN
+log4j.logger.org.openjena=WARN
+log4j.logger.org.openjena.riot=WARN
+
+# Joseki server
+log4j.logger.org.joseki=INFO
+
+# Fuseki
+# Server log.
+log4j.logger.org.apache.jena.fuseki.Server=INFO
+# Request log.
+log4j.logger.org.apache.jena.fuseki.Fuseki=INFO
+# Internal logs
+log4j.logger.org.apache.jena.fuseki=INFO
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.nt
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.nt b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.nt
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.rdf
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.rdf b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.rdf
new file mode 100644
index 0000000..a67a21e
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.rdf
@@ -0,0 +1,8 @@
+<rdf:RDF
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://example/">
+ <rdf:Description rdf:about="http://example/s">
+ <q rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
+ >123</q>
+ </rdf:Description>
+</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.ttl b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.ttl
new file mode 100644
index 0000000..eca0eac
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/D.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example/> .
+
+:s :q 123 .
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/crossdomain.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/crossdomain.xml b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/crossdomain.xml
new file mode 100755
index 0000000..c1e814f
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/crossdomain.xml
@@ -0,0 +1,3 @@
+<cross-domain-policy>
+<allow-access-from domain="*"/>
+</cross-domain-policy>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/data-validator.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/data-validator.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/data-validator.html
new file mode 100755
index 0000000..876cab3
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/data-validator.html
@@ -0,0 +1,48 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title>SPARQLer Data Validator</title>
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+ </head>
+ <body>
+ <h1>SPARQLer Data Validator</h1>
+ <div class="moreindent">
+ <form action="validate/data" method="post" accept-charset="UTF-8" >
+ <textarea name="data" cols="70" rows="30">
+# Prefixes for Turtle or TriG - these can be edited or removed.
+@base <http://example.org/base/> .
+@prefix : <http://example.org/> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+
+
+</textarea>
+<br/>
+Input syntax:
+<input type="radio" name="languageSyntax" value="Turtle" checked="checked"/>Turtle
+<input type="radio" name="languageSyntax" value="TriG"/>TriG
+<input type="radio" name="languageSyntax" value="N-Triples"/>N-Triples
+<input type="radio" name="languageSyntax" value="N-Quads"/>N-Quad
+ <br/>
+ <!--
+Output syntax:
+ <input type="checkbox" name="outputFormat" value="sparql" checked="checked"/>SPARQL
+ <input type="checkbox" name="outputFormat" value="algebra"/>SPARQL algebra
+ <input type="checkbox" name="outputFormat" value="quads"/>SPARQL algebra (quads)
+ <br/>
+
+ Line numbers:
+ <input type="radio" name="linenumbers" value="true" checked="checked"/>Yes
+ <input type="radio" name="linenumbers" value="false"/>No
+ <br/>
+ -->
+ <input type="submit" value="Validate RDF Data" />
+ </form>
+ <hr/>
+Parsing provided by <a href="http://jena.apache.org/documentation/io/">Jena/RIOT</a>.
+Questions to
+<href="mailto:users@jena.apache.org?s=[Data Validator]: ">users@jena</a>
+(include full details of input).
+ </div>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/doc.css
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/doc.css b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/doc.css
new file mode 100755
index 0000000..4c86428
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/doc.css
@@ -0,0 +1,127 @@
+body {
+ font-family: Verdana, Arial, Helvetica, sans-serif ;
+ font-size: 10pt ;
+ line-height: 18pt ;
+ color: black;
+ background: white ;
+ margin: 0 ;
+}
+
+p { margin-left: 2% ; margin-right: 2% ; }
+
+/* Makes lists a little tighter
+li { line-height: 14pt ; }
+*/
+
+table {
+ font-family: Verdana, Arial, sans-serif ;
+ font-size: 10pt ;
+ border-collapse: collapse;
+ border: 1px solid black ;
+ cellspacing: 0 ;
+ cellpadding: 0
+}
+
+td {
+ border: 1px solid #808080 ;
+ empty-cells: show;
+ padding: 5 ;
+ spacing: 0 ;
+ vertical-align:top;
+ text-align:center
+}
+
+
+th {
+ border: 1px solid #808080 ;
+ empty-cells: show;
+ padding: 5 ;
+ vertical-align:top;
+ text-align:center
+}
+
+.box
+{ margin-left : 5% ;
+ margin-right : 5% ;
+ border: solid ;
+ border-width: thin;
+ background-color: #F0F0F0;
+ padding: 2mm;
+ page-break-inside: avoid ;
+}
+
+.noindent { margin-left: -5% ; margin-right: -5%; }
+.moreindent { margin-left: 5% ; margin-right: 5%; }
+
+
+/* Use this for the document title as displayed on the page at the top. */
+
+
+h1 {
+ text-align:center ;
+ font-size: 14pt;
+ line-height: 24pt ;
+ font-weight: bold;
+ color:#000;
+ background:#CADFF4;
+ padding: 0 ;
+ margin: 0 ;
+ padding-left: 1ex;
+ padding-right: 1ex;
+ text-align:center;
+}
+
+h2 {
+ font-size: 12pt;
+ line-height: 16pt ;
+ font-size: 110%;
+ font-weight: bold;
+ color: #003399;
+ background:#CADFF4;
+ margin-bottom:5px;
+ padding-left: 1ex;
+ padding-right: 1ex;
+}
+
+h3, h4, h5 {
+ font-size: 100%;
+ font-weight: bold;
+ margin-bottom:3px;
+}
+
+ul { list-style-type: disc }
+dt { font-weight: bold }
+
+/* Change background/foreground colour on hover */
+
+A:link { color: rgb(0, 0, 255) } /* for unvisited links */
+A:hover { color: rgb(255, 0, 0) } /* when mouse is over link */
+
+/* No extra space between paragraphs : inherits from body */
+pre {
+ font-family: monospace;
+ font-size: 10pt ;
+ line-height: 14pt ;
+ margin-top: 1 ;
+ margin-bottom: 1 ;
+ margin-left: 5ex ;
+ }
+
+/* Some general utility definitions */
+.centered {
+ text-align: center;
+}
+
+.caption {
+ text-align: center;
+ font-size: smaller;
+}
+
+code {
+ font-size: 10pt;
+}
+
+.footnote {
+ font-size: smaller;
+ border-top: thin solid gray;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/fuseki.css
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/fuseki.css b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/fuseki.css
new file mode 100755
index 0000000..e3e5763
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/fuseki.css
@@ -0,0 +1,148 @@
+/**
+ 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.
+*/
+body {
+ font-family: Verdana, Arial, Helvetica, sans-serif ;
+ font-size: 10pt ;
+ line-height: 18pt ;
+ color: black;
+ background: white ;
+ margin: 0 ;
+}
+
+textarea { background-color: #F0F0F0 ; }
+
+p { margin-left: 2% ; margin-right: 2% ; }
+
+.warning { color: #FF0000 ; }
+.error { color: #FF0000 ; font-weight: bold; }
+
+/* Makes lists a little tighter
+li { line-height: 14pt ; }
+*/
+
+table {
+ font-family: Verdana, Arial, sans-serif ;
+ font-size: 10pt ;
+ border-collapse: collapse;
+ border: 1px solid black ;
+ cellspacing: 0 ;
+ cellpadding: 0
+}
+
+td {
+ border: 1px solid #808080 ;
+ empty-cells: show;
+ padding: 5 ;
+ spacing: 0 ;
+ vertical-align:top;
+ text-align:center
+}
+
+
+th {
+ border: 1px solid #808080 ;
+ empty-cells: show;
+ padding: 5 ;
+ vertical-align:top;
+ text-align:center
+}
+
+.box
+{ margin-left : 5% ;
+ margin-right : 5% ;
+ border: solid ;
+ border-width: thin;
+ background-color: #F0F0F0;
+ padding: 2mm;
+ page-break-inside: avoid ;
+}
+
+.noindent { margin-left: -5% ; margin-right: -5%; }
+.moreindent { margin-left: 5% ; margin-right: 5%; }
+
+
+/* Use this for the document title as displayed on the page at the top. */
+
+
+h1 {
+ text-align:center ;
+ font-size: 14pt;
+ line-height: 24pt ;
+ font-weight: bold;
+ color:#000;
+ background:#CADFF4;
+ padding: 0 ;
+ margin: 0 ;
+ padding-left: 1ex;
+ padding-right: 1ex;
+ text-align:center;
+}
+
+h2 {
+ font-size: 12pt;
+ line-height: 16pt ;
+ font-size: 110%;
+ font-weight: bold;
+ color: #003399;
+ background:#CADFF4;
+ margin-bottom:5px;
+ padding-left: 1ex;
+ padding-right: 1ex;
+}
+
+h3, h4, h5 {
+ font-size: 100%;
+ font-weight: bold;
+ margin-bottom:3px;
+}
+
+ul { list-style-type: disc }
+dt { font-weight: bold }
+
+/* Change background/foreground colour on hover */
+
+A:link { color: rgb(0, 0, 255) } /* for unvisited links */
+A:hover { color: rgb(255, 0, 0) } /* when mouse is over link */
+
+/* No extra space between paragraphs : inherits from body */
+pre {
+ font-family: monospace;
+ font-size: 10pt ;
+ line-height: 14pt ;
+ margin-top: 1 ;
+ margin-bottom: 1 ;
+ margin-left: 5ex ;
+ }
+
+/* Some general utility definitions */
+.centered {
+ text-align: center;
+}
+
+.caption {
+ text-align: center;
+ font-size: smaller;
+}
+
+code {
+ font-size: 10pt;
+}
+
+.footnote {
+ font-size: smaller;
+ border-top: thin solid gray;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/index.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/index.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/index.html
new file mode 100755
index 0000000..f301d1c
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/index.html
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>SPARQLer - An RDF Query Server</title>
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+ </head>
+<body>
+ <h1>SPARQLer</h1>
+
+ <p> </p>
+
+ <h2>Validators</h2>
+ <ul>
+ <li><a href="query-validator.html">SPARQL query validator</a></li>
+ <li><a href="update-validator.html">SPARQL update validator</a></li>
+ <li><a href="data-validator.html">RDF data validator</a></li>
+ <li><a href="iri-validator.html">IRI validator</a></li>
+ </ul>
+
+ <h2>Query forms</h2>
+
+ <ul>
+ <!--
+ <li><a href="query.html">Form for SPARQL queries on a small books database</a></li>
+ -->
+ <li><a href="sparql.html">General purpose SPARQL processor</a></li>
+ </ul>
+
+ <h2>SPARQL Services</h2>
+
+ <p>The general SPARQL query service is accessed directly using the SPARQL
+protocol at <tt>/sparql</tt></p>
+
+ <h2>Links to SPARQL 1.1 Specifications</h2>
+
+ <p>The full set of SPARQL specification is:</p>
+
+ <ul>
+ <li><a href="http://www.w3.org/TR/sparql11-query/"
+ >SPARQL Query language</a></li>
+ <li><a href="http://www.w3.org/TR/sparql11-update/"
+ >SPARQL Update</a></li>
+ <li><a href="http://www.w3.org/TR/sparql11-protocol/"
+ >SPARQL Protocol</a></li>
+ <li><a href="http://www.w3.org/TR/sparql11-http-rdf-update/"
+ >SPARQL Graph Store Protocol</a></li>
+ <li>SPARQL Result formats
+ <ul>
+ <li><a href="http://www.w3.org/TR//sparql11-results-json/"
+ >SPARQL Query Results JSON Format</a></li>
+ <li><a href="http://www.w3.org/TR/sparql11-results-csv-tsv/"
+ >SPARQL Query Results CSV and TSV Formats</a></li>
+ <li><a href="http://www.w3.org/TR/rdf-sparql-XMLres/"
+ >SPARQL Query Results XML Format</a></li>
+ </ul>
+ <li><a href="http://www.w3.org/TR/sparql11-service-description/"
+ >SPARQL Service Description</a></li>
+ <li><a href="http://www.w3.org/TR/sparql11-federated-query/"
+ >SPARQL Federated Query</a></li>
+ <li><a href="http://www.w3.org/TR/sparql11-entailment/"
+ >SPARQL Entailment Regimes</a></li>
+ </ul>
+
+ <hr/>
+
+ <p>This server is running
+ <a href="http://jena.apache.org/documentation/fuseki2/">Apache Jena Fuseki</a>.</p>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/iri-validator.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/iri-validator.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/iri-validator.html
new file mode 100755
index 0000000..164b8c6
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/iri-validator.html
@@ -0,0 +1,22 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title>SPARQLer Query Validator</title>
+
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <h1>SPARQLer IRI Validator</h1>
+
+ <div class="moreindent">
+
+ <form action="validate/iri" accept-charset="UTF-8">
+ <p>
+ <textarea name="iri" cols="70" rows="2"></textarea>
+
+ <input type="submit" value="Validate IRI" />
+ </p>
+ </form>
+ <hr/>
+ </div>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query-validator.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query-validator.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query-validator.html
new file mode 100755
index 0000000..f910650
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query-validator.html
@@ -0,0 +1,71 @@
+<!--
+ 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.
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title>SPARQLer Query Validator</title>
+
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+
+ </head>
+ <body>
+ <h1>SPARQLer Query Validator</h1>
+
+ <div class="moreindent">
+
+ <form action="validate/query" method="post" accept-charset="UTF-8">
+ <p>
+ <textarea name="query" cols="70" rows="30">
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
+PREFIX apf: <http://jena.hpl.hp.com/ARQ/property#>
+PREFIX dc: <http://purl.org/dc/elements/1.1/>
+
+SELECT ?book ?title
+WHERE
+ { ?book dc:title ?title }</textarea>
+<br/>
+ Input syntax:<br/>
+ <input type="radio" name="languageSyntax" value="SPARQL" checked="checked"/>SPARQL
+ <input type="radio" name="languageSyntax" value="ARQ"/>SPARQL extended syntax
+ <br/>
+ <br/>
+Output:<br/>
+ <input type="checkbox" name="outputFormat" value="sparql" checked="checked"/>SPARQL<br/>
+ <input type="checkbox" name="outputFormat" value="algebra"/>SPARQL algebra<br/>
+ <input type="checkbox" name="outputFormat" value="quads"/>SPARQL algebra (quads)<br/>
+ <input type="checkbox" name="outputFormat" value="opt"/>SPARQL algebra
+(general optimizations)<br/>
+ <input type="checkbox" name="outputFormat" value="optquads"/>SPARQL algebra
+(quads, general optimizations)<br/>
+ <br/>
+ Line numbers:
+ <input type="radio" name="linenumbers" value="true" checked="checked"/>Yes
+ <input type="radio" name="linenumbers" value="false"/>No
+ <br/>
+
+
+ <input type="submit" value="Validate SPARQL Query" />
+ </p>
+ </form>
+
+ <hr/>
+ </div>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query.html
new file mode 100755
index 0000000..c8f2ad3
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/query.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title>SPARQLer</title>
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+ </head>
+
+ <body>
+ <h1>SPARQLer - An RDF Query Demo</h1>
+ <p>Example queries (or edit and write your own!). All the text boxes invoke the same "books" service - they just get initialised with different examples.</p>
+ <hr/>
+
+ <div class="moreindent">
+
+ <form action="books/sparql" method="get">
+ <p>SELECT - get variables (apply XSLT stylesheet)</p>
+ <p><textarea name="query" cols="70" rows="15">
+PREFIX books: <http://example.org/book/>
+PREFIX dc: <http://purl.org/dc/elements/1.1/>
+SELECT ?book ?title
+WHERE
+ { ?book dc:title ?title }</textarea>
+ <br/>
+
+ Output: <select name="output">
+ <option value="json">JSON</option>
+ <option value="xml">XML</option>
+ <option value="text">Text</option>
+ <option value="csv">CSV</option>
+ <option value="tsv">TSV</option>
+ </select>
+ <br/>
+ XSLT style sheet (blank for none):
+ <input name="stylesheet" size="20" value="/xml-to-html.xsl" />
+ <br/>
+ <input type="checkbox" name="force-accept" value="text/plain"/>
+ Force the accept header to <tt>text/plain</tt> regardless
+ <br/>
+
+ <input type="submit" value="Get Results" />
+ </p>
+ </form>
+
+ <hr/>
+
+ <form action="books/sparql">
+ <p>CONSTRUCT - return a graph</p>
+ <p><textarea name="query" cols="70" rows="10">
+PREFIX dc: <http://purl.org/dc/elements/1.1/>
+CONSTRUCT { $book dc:title $title }
+WHERE
+ { $book dc:title $title }
+ </textarea>
+ <br/>
+ <input type="submit" value="Get Results" />
+ </p>
+ </form>
+ <hr/>
+ </div>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/robots.txt
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/robots.txt b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/robots.txt
new file mode 100755
index 0000000..1f53798
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow: /
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/sparql.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/sparql.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/sparql.html
new file mode 100755
index 0000000..53c1d75
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/sparql.html
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title>SPARQLer</title>
+ <link rel="stylesheet" type="text/css" href="/fuseki.css" />
+ </head>
+
+ <body>
+ <h1>SPARQLer - General purpose processor</h1>
+
+ <div class="moreindent">
+
+ <form action="sparql" method="get">
+ <p>General SPARQL query : input query, set any options and press "Get Results"</p>
+ <p>
+ <textarea style="background-color: #F0F0F0;" name="query" cols="70" rows="20"></textarea>
+ <br/>
+ Target graph URI (or use <code>FROM</code> in the query)
+ <input name="default-graph-uri" size="25" value="" />
+ <br/>
+ If no dataset is provided, the query will execute agains an empty one.<br/>
+ The query can contain use <code>VALUES</code> to set some variables.
+ <br/>
+ <br/>
+ Output: <select name="output">
+ <option value="json">JSON</option>
+ <option value="xml">XML</option>
+ <option value="text">Text</option>
+ <option value="csv">CSV</option>
+ <option value="tsv">TSV</option>
+ </select>
+ <br/>
+ XSLT style sheet (blank for none):
+ <input name="stylesheet" size="20" value="/xml-to-html.xsl" />
+ <br/>
+ <input type="checkbox" name="force-accept" value="text/plain"/>
+ Force the accept header to <tt>text/plain</tt> regardless
+ <br/>
+ <br/>
+ <input type="submit" value="Get Results" />
+
+ </p>
+ </form>
+ </div>
+
+ <hr/>
+
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update-validator.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update-validator.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update-validator.html
new file mode 100755
index 0000000..8ac9bbb
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update-validator.html
@@ -0,0 +1,46 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title>SPARQLer Update Validator</title>
+
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+
+ </head>
+ <body>
+ <h1>SPARQLer Update Validator</h1>
+
+ <div class="moreindent">
+
+
+ <form action="validate/update" method="post" accept-charset="UTF-8">
+ <textarea name="update" cols="70" rows="30">
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
+PREFIX apf: <http://jena.hpl.hp.com/ARQ/property#>
+
+</textarea>
+<br/>
+ Input syntax:
+ <input type="radio" name="languageSyntax" value="SPARQL" checked="checked"/>SPARQL
+ <input type="radio" name="languageSyntax" value="ARQ"/>SPARQL extended syntax
+ <br/>
+<!--
+Output syntax:
+ <input type="checkbox" name="outputFormat" value="sparql" checked="checked"/>SPARQL
+ <input type="checkbox" name="outputFormat" value="algebra"/>SPARQL algebra
+ <input type="checkbox" name="outputFormat" value="quads"/>SPARQL algebra (quads)
+ <br/>
+-->
+ Line numbers:
+ <input type="radio" name="linenumbers" value="true" checked="checked"/>Yes
+ <input type="radio" name="linenumbers" value="false"/>No
+ <br/>
+
+ <input type="submit" value="Validate SPARQL Update" />
+ </form>
+
+ <hr/>
+ </div>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update.html
new file mode 100755
index 0000000..b390826
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/update.html
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title>SPARQLer</title>
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+ </head>
+
+ <body>
+ <h1>SPARQLer - SPARQL/Update processor</h1>
+
+ <div class="moreindent">
+
+ <form action="update/service" method="post">
+ <p>General SPARQL/update : input SPARQL/Update request</p>
+ <p>
+ <textarea style="background-color: #F0F0F0;" name="update" cols="70" rows="20"></textarea>
+ <input type="submit" value="Perform update" />
+ </p>
+ </form>
+ </div>
+
+ <hr/>
+
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/validator.html
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/validator.html b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/validator.html
new file mode 100755
index 0000000..638d5d1
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/validator.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>SPARQL Query Validator</title>
+ <link rel="stylesheet" type="text/css" href="fuseki.css" />
+ <meta http-equiv="refresh" content="5;url=http://sparql.org/query-validator.html">
+ </head>
+<body>
+ <h1>SPARQLer</h1>
+
+ <p>
+The SPARQL query validator page has moved to
+<a href="http://sparql.org/query-validator.html">http://sparql.org/query-validator.html</a>.
+You should be redirected there in a few seconds.
+</p>
+
+ <h2>Validators</h2>
+ <ul>
+ <li><a href="query-validator.html">SPARQL query validator</a></li>
+ <li><a href="update-validator.html">SPARQL update validator</a></li>
+ <li><a href="data-validator.html">RDF data validator</a></li>
+ <li><a href="iri-validator.html">IRI validator</a></li>
+ </ul>
+
+ <hr/>
+
+ <p>This server is running
+ <a href="http://jena.apache.org/documentation/serving_data/index.html"
+ >Apache Jena Fuseki</a>.</p>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-links.xsl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-links.xsl b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-links.xsl
new file mode 100755
index 0000000..9e0a450
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-links.xsl
@@ -0,0 +1,183 @@
+<?xml version="1.0"?>
+
+<!--
+
+XSLT script to format SPARQL Query Results XML Format into xhtml
+
+Copyright © 2004, 2005 World Wide Web Consortium, (Massachusetts
+Institute of Technology, European Research Consortium for
+Informatics and Mathematics, Keio University). All Rights
+Reserved. This work is distributed under the W3C® Software
+License [1] in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.
+
+[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+Version 1 : Dave Beckett (DAWG)
+Version 2 : Jeen Broekstra (DAWG)
+Customization for SPARQler: Andy Seaborne
+URIs as hrefs in results : Bob DuCharme & Andy Seaborne
+
+> - <xsl:for-each select="//res:head/res:variable">
+> + <xsl:for-each select="/res:sparql/res:head/res:variable">
+
+-->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:res="http://www.w3.org/2005/sparql-results#"
+ xmlns:fn="http://www.w3.org/2005/xpath-functions"
+ exclude-result-prefixes="res xsl">
+
+ <!--
+ <xsl:output
+ method="html"
+ media-type="text/html"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ indent="yes"
+ encoding="UTF-8"/>
+ -->
+
+ <!-- or this? -->
+
+ <xsl:output
+ method="xml"
+ indent="yes"
+ encoding="UTF-8"
+ doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
+ doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+ omit-xml-declaration="no" />
+
+ <xsl:template match="res:link">
+ <p>Link to <xsl:value-of select="@href"/></p>
+ </xsl:template>
+
+ <xsl:template name="header">
+ <div>
+ <h2>Header</h2>
+ <xsl:apply-templates select="res:head/res:link"/>
+ </div>
+ </xsl:template>
+
+ <xsl:template name="boolean-result">
+ <div>
+ <p>ASK => <xsl:value-of select="res:boolean"/></p>
+ </div>
+ </xsl:template>
+
+
+ <xsl:template name="vb-result">
+ <div>
+ <table>
+ <xsl:text>
+ </xsl:text>
+ <tr>
+ <xsl:for-each select="res:head/res:variable">
+ <th><xsl:value-of select="@name"/></th>
+ </xsl:for-each>
+ </tr>
+ <xsl:text>
+ </xsl:text>
+ <xsl:for-each select="res:results/res:result">
+ <tr>
+ <xsl:apply-templates select="."/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="res:result">
+ <xsl:variable name="current" select="."/>
+ <xsl:for-each select="/res:sparql/res:head/res:variable">
+ <xsl:variable name="name" select="@name"/>
+ <td>
+ <xsl:choose>
+ <xsl:when test="$current/res:binding[@name=$name]">
+ <!-- apply template for the correct value type (bnode, uri, literal) -->
+ <xsl:apply-templates select="$current/res:binding[@name=$name]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- no binding available for this variable in this solution -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="res:bnode">
+ <xsl:text>_:</xsl:text>
+ <xsl:value-of select="text()"/>
+ </xsl:template>
+
+ <xsl:template match="res:uri">
+ <!-- Roughly: SELECT ($uri AS ?subject) ?predicate ?object { $uri ?predicate ?object } -->
+ <!-- XSLT 2.0
+ <xsl:variable name="x"><xsl:value-of select="fn:encode-for-uri(.)"/></xsl:variable>
+ -->
+ <xsl:variable name="x"><xsl:value-of select="."/></xsl:variable>
+ <!--
+ <xsl:variable name="query">SELECT%20%28%3C<xsl:value-of select="."/>%3E%20AS%20%3Fsubject%29%20%3Fpredicate%20%3Fobject%20%7B%3C<xsl:value-of select="."/>%3E%20%3Fpredicate%20%3Fobject%20%7D</xsl:variable>
+ -->
+ <xsl:variable name="query">SELECT%20%28%3C<xsl:value-of select="$x"/>%3E%20AS%20%3Fsubject%29%20%3Fpredicate%20%3Fobject%20%7B%3C<xsl:value-of select="$x"/>%3E%20%3Fpredicate%20%3Fobject%20%7D</xsl:variable>
+ <xsl:text><</xsl:text>
+ <a href="?query={$query}&output=xml&stylesheet=%2Fxml-to-html.xsl">
+ <xsl:value-of select="."/>
+ </a>
+ <xsl:text>></xsl:text>
+ </xsl:template>
+
+ <xsl:template match="res:literal[@datatype]">
+ <!-- datatyped literal value -->
+ "<xsl:value-of select="."/>"^^<<xsl:value-of select="@datatype"/>>
+ </xsl:template>
+
+ <xsl:template match="res:literal[@lang]">
+ <!-- datatyped literal value -->
+ "<xsl:value-of select="."/>"<xsl:value-of select="@xml:lang"/>
+ </xsl:template>
+
+ <xsl:template match="res:sparql">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>SPARQLer Query Results</title>
+ <style>
+ <![CDATA[
+ h1 { font-size: 150% ; }
+ h2 { font-size: 125% ; }
+ table { border-collapse: collapse ; border: 1px solid black ; }
+ td, th
+ { border: 1px solid black ;
+ padding-left:0.5em; padding-right: 0.5em;
+ padding-top:0.2ex ; padding-bottom:0.2ex
+ }
+ ]]>
+ </style>
+ </head>
+ <body>
+
+
+ <h1>SPARQLer Query Results</h1>
+
+ <xsl:if test="res:head/res:link">
+ <xsl:call-template name="header"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="res:boolean">
+ <xsl:call-template name="boolean-result" />
+ </xsl:when>
+
+ <xsl:when test="res:results">
+ <xsl:call-template name="vb-result" />
+ </xsl:when>
+
+ </xsl:choose>
+
+
+ </body>
+ </html>
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-plain.xsl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-plain.xsl b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-plain.xsl
new file mode 100755
index 0000000..1878ab0
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html-plain.xsl
@@ -0,0 +1,187 @@
+<?xml version="1.0"?>
+
+<!--
+
+XSLT script to format SPARQL Query Results XML Format into xhtml
+
+Copyright © 2004, 2005 World Wide Web Consortium, (Massachusetts
+Institute of Technology, European Research Consortium for
+Informatics and Mathematics, Keio University). All Rights
+Reserved. This work is distributed under the W3C® Software
+License [1] in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.
+
+[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+Version 1 : Dave Beckett (DAWG)
+Version 2 : Jeen Broekstra (DAWG)
+Customization for SPARQler: Andy Seaborne
+Fix:
+
+> - <xsl:for-each select="//res:head/res:variable">
+> + <xsl:for-each select="/res:sparql/res:head/res:variable">
+
+-->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:res="http://www.w3.org/2005/sparql-results#"
+ exclude-result-prefixes="res xsl">
+
+ <!--
+ <xsl:output
+ method="html"
+ media-type="text/html"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ indent="yes"
+ encoding="UTF-8"/>
+ -->
+
+ <!-- or this? -->
+
+ <xsl:output
+ method="xml"
+ indent="yes"
+ encoding="UTF-8"
+ doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
+ doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+ omit-xml-declaration="no" />
+
+
+ <xsl:template name="header">
+ <div>
+ <h2>Header</h2>
+ <xsl:for-each select="res:head/res:link">
+ <p>Link to <xsl:value-of select="@href"/></p>
+ </xsl:for-each>
+ </div>
+ </xsl:template>
+
+ <xsl:template name="boolean-result">
+ <div>
+ <!--
+ <h2>Boolean Result</h2>
+ -->
+ <p>ASK => <xsl:value-of select="res:boolean"/></p>
+ </div>
+ </xsl:template>
+
+
+ <xsl:template name="vb-result">
+ <div>
+ <!--
+ <h2>Variable Bindings Result</h2>
+ <p>Ordered: <xsl:value-of select="res:results/@ordered"/></p>
+ <p>Distinct: <xsl:value-of select="res:results/@distinct"/></p>
+ -->
+
+ <table>
+ <xsl:text>
+ </xsl:text>
+ <tr>
+ <xsl:for-each select="res:head/res:variable">
+ <th><xsl:value-of select="@name"/></th>
+ </xsl:for-each>
+ </tr>
+ <xsl:text>
+ </xsl:text>
+ <xsl:for-each select="res:results/res:result">
+ <tr>
+ <xsl:apply-templates select="."/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="res:result">
+ <xsl:variable name="current" select="."/>
+ <xsl:for-each select="/res:sparql/res:head/res:variable">
+ <xsl:variable name="name" select="@name"/>
+ <td>
+ <xsl:choose>
+ <xsl:when test="$current/res:binding[@name=$name]">
+ <!-- apply template for the correct value type (bnode, uri, literal) -->
+ <xsl:apply-templates select="$current/res:binding[@name=$name]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- no binding available for this variable in this solution -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="res:bnode">
+ <xsl:text>_:</xsl:text>
+ <xsl:value-of select="text()"/>
+ </xsl:template>
+
+ <xsl:template match="res:uri">
+ <xsl:variable name="uri" select="text()"/>
+ <xsl:text><</xsl:text>
+ <xsl:value-of select="$uri"/>
+ <xsl:text>></xsl:text>
+ </xsl:template>
+
+ <xsl:template match="res:literal">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="text()"/>
+ <xsl:text>"</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@datatype">
+ <!-- datatyped literal value -->
+ ^^<<xsl:value-of select="@datatype"/>>
+ </xsl:when>
+ <xsl:when test="@xml:lang">
+ <!-- lang-string -->
+ @<xsl:value-of select="@xml:lang"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="res:sparql">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>SPARQLer Query Results</title>
+ <style>
+ <![CDATA[
+ h1 { font-size: 150% ; }
+ h2 { font-size: 125% ; }
+ table { border-collapse: collapse ; border: 1px solid black ; }
+ td, th
+ { border: 1px solid black ;
+ padding-left:0.5em; padding-right: 0.5em;
+ padding-top:0.2ex ; padding-bottom:0.2ex
+ }
+ ]]>
+ </style>
+ </head>
+ <body>
+
+
+ <h1>SPARQLer Query Results</h1>
+
+ <xsl:if test="res:head/res:link">
+ <xsl:call-template name="header"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="res:boolean">
+ <xsl:call-template name="boolean-result" />
+ </xsl:when>
+
+ <xsl:when test="res:results">
+ <xsl:call-template name="vb-result" />
+ </xsl:when>
+
+ </xsl:choose>
+
+
+ </body>
+ </html>
+ </xsl:template>
+</xsl:stylesheet>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html.xsl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html.xsl b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html.xsl
new file mode 100755
index 0000000..1878ab0
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/pages/xml-to-html.xsl
@@ -0,0 +1,187 @@
+<?xml version="1.0"?>
+
+<!--
+
+XSLT script to format SPARQL Query Results XML Format into xhtml
+
+Copyright © 2004, 2005 World Wide Web Consortium, (Massachusetts
+Institute of Technology, European Research Consortium for
+Informatics and Mathematics, Keio University). All Rights
+Reserved. This work is distributed under the W3C® Software
+License [1] in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.
+
+[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+Version 1 : Dave Beckett (DAWG)
+Version 2 : Jeen Broekstra (DAWG)
+Customization for SPARQler: Andy Seaborne
+Fix:
+
+> - <xsl:for-each select="//res:head/res:variable">
+> + <xsl:for-each select="/res:sparql/res:head/res:variable">
+
+-->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:res="http://www.w3.org/2005/sparql-results#"
+ exclude-result-prefixes="res xsl">
+
+ <!--
+ <xsl:output
+ method="html"
+ media-type="text/html"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ indent="yes"
+ encoding="UTF-8"/>
+ -->
+
+ <!-- or this? -->
+
+ <xsl:output
+ method="xml"
+ indent="yes"
+ encoding="UTF-8"
+ doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
+ doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+ omit-xml-declaration="no" />
+
+
+ <xsl:template name="header">
+ <div>
+ <h2>Header</h2>
+ <xsl:for-each select="res:head/res:link">
+ <p>Link to <xsl:value-of select="@href"/></p>
+ </xsl:for-each>
+ </div>
+ </xsl:template>
+
+ <xsl:template name="boolean-result">
+ <div>
+ <!--
+ <h2>Boolean Result</h2>
+ -->
+ <p>ASK => <xsl:value-of select="res:boolean"/></p>
+ </div>
+ </xsl:template>
+
+
+ <xsl:template name="vb-result">
+ <div>
+ <!--
+ <h2>Variable Bindings Result</h2>
+ <p>Ordered: <xsl:value-of select="res:results/@ordered"/></p>
+ <p>Distinct: <xsl:value-of select="res:results/@distinct"/></p>
+ -->
+
+ <table>
+ <xsl:text>
+ </xsl:text>
+ <tr>
+ <xsl:for-each select="res:head/res:variable">
+ <th><xsl:value-of select="@name"/></th>
+ </xsl:for-each>
+ </tr>
+ <xsl:text>
+ </xsl:text>
+ <xsl:for-each select="res:results/res:result">
+ <tr>
+ <xsl:apply-templates select="."/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="res:result">
+ <xsl:variable name="current" select="."/>
+ <xsl:for-each select="/res:sparql/res:head/res:variable">
+ <xsl:variable name="name" select="@name"/>
+ <td>
+ <xsl:choose>
+ <xsl:when test="$current/res:binding[@name=$name]">
+ <!-- apply template for the correct value type (bnode, uri, literal) -->
+ <xsl:apply-templates select="$current/res:binding[@name=$name]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- no binding available for this variable in this solution -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="res:bnode">
+ <xsl:text>_:</xsl:text>
+ <xsl:value-of select="text()"/>
+ </xsl:template>
+
+ <xsl:template match="res:uri">
+ <xsl:variable name="uri" select="text()"/>
+ <xsl:text><</xsl:text>
+ <xsl:value-of select="$uri"/>
+ <xsl:text>></xsl:text>
+ </xsl:template>
+
+ <xsl:template match="res:literal">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="text()"/>
+ <xsl:text>"</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@datatype">
+ <!-- datatyped literal value -->
+ ^^<<xsl:value-of select="@datatype"/>>
+ </xsl:when>
+ <xsl:when test="@xml:lang">
+ <!-- lang-string -->
+ @<xsl:value-of select="@xml:lang"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="res:sparql">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>SPARQLer Query Results</title>
+ <style>
+ <![CDATA[
+ h1 { font-size: 150% ; }
+ h2 { font-size: 125% ; }
+ table { border-collapse: collapse ; border: 1px solid black ; }
+ td, th
+ { border: 1px solid black ;
+ padding-left:0.5em; padding-right: 0.5em;
+ padding-top:0.2ex ; padding-bottom:0.2ex
+ }
+ ]]>
+ </style>
+ </head>
+ <body>
+
+
+ <h1>SPARQLer Query Results</h1>
+
+ <xsl:if test="res:head/res:link">
+ <xsl:call-template name="header"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="res:boolean">
+ <xsl:call-template name="boolean-result" />
+ </xsl:when>
+
+ <xsl:when test="res:results">
+ <xsl:call-template name="vb-result" />
+ </xsl:when>
+
+ </xsl:choose>
+
+
+ </body>
+ </html>
+ </xsl:template>
+</xsl:stylesheet>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler b/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler
new file mode 100755
index 0000000..93aa84d
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+
+## Configuration
+SPARQLER_PAGES="${SPARQLER_PAGES:-pages/}"
+SPARQLER_DATA="${SPARQLER_DATA:-file:data/books.ttl}"
+SPARQLER_DS="${SPARQLER_DS:-/books}"
+
+## Development
+FUSEKI_JAR1="$(echo ../target/jena-fuseki-basic-*-server.jar)"
+## Deployment
+FUSEKI_JAR2="fuseki-basic.jar"
+FUSEKI_JAR3="jena-fuseki-basic-*-server.jar"
+
+# Choose which jar to run
+[[ -e $FUSEKI_JAR3 ]] && FUSEKI_JAR=$FUSEKI_JAR3
+[[ -e $FUSEKI_JAR2 ]] && FUSEKI_JAR=$FUSEKI_JAR2
+[[ -e $FUSEKI_JAR1 ]] && FUSEKI_JAR=$FUSEKI_JAR1
+
+if [ ! -e "$FUSEKI_JAR" ]
+then
+ echo "Can't find the Fuseki jar file: $FUSEKI_JAR" 1>&2
+ exit 1
+fi
+
+BACKGROUND=${BACKGROUND:-1}
+if [ "$BACKGROUND" = 0 ]
+then
+ LOGCONFIG=${LOGCONFIG:-file:log4j-foreground.properties}
+else
+ LOGCONFIG=${LOGCONFIG:-file:log4j-server.properties}
+fi
+
+export FUSEKI_LOG="-Dlog4j.configuration=${LOGCONFIG}"
+export JVM_ARGS="${JVM_ARGS:--Xmx1200M}"
+
+## SPARQLER_ARGS="--base $SPARQLER_PAGES --file=$SPARQLER_DATA $SPARQLER_DS"
+##
+## if [[ $1 == "--help" ]]
+## then
+## echo "$0"
+## echo "SPARQLER_PAGES = $SPARQLER_PAGES"
+## echo "SPARQLER_DATA = $SPARQLER_DATA"
+## echo "SPARQLER_DS = $SPARQLER_DS"
+## exit 0
+## fi
+
+SPARQLER_ARGS="--base $SPARQLER_PAGES --empty"
+
+set --
+
+if [ "$BACKGROUND" = 0 ]
+then
+ # Run in the foreground
+ exec java $JVM_ARGS $FUSEKI_LOG -jar $FUSEKI_JAR $SPARQLER_ARGS
+else
+ # Run in the background
+ # Linux / nohup
+ nohup java $JVM_ARGS $FUSEKI_LOG -jar $FUSEKI_JAR $SPARQLER_ARGS > nohup.log 2>&1 &
+ # Process ID ... of the script.
+ PROC=$!
+ echo "Server process = $PROC"
+fi
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
new file mode 100644
index 0000000..0ac08a3
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
@@ -0,0 +1,468 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.fuseki.cmds;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import arq.cmdline.CmdARQ;
+import arq.cmdline.ModAssembler;
+import arq.cmdline.ModDatasetAssembler;
+import jena.cmd.ArgDecl;
+import jena.cmd.CmdException;
+import org.apache.jena.assembler.exceptions.AssemblerException;
+import org.apache.jena.atlas.lib.DateTimeUtils ;
+import org.apache.jena.atlas.lib.FileOps;
+import org.apache.jena.atlas.logging.FmtLog;
+import org.apache.jena.fuseki.Fuseki;
+import org.apache.jena.fuseki.FusekiLogging;
+import org.apache.jena.fuseki.embedded.FusekiEmbeddedServer;
+import org.apache.jena.fuseki.server.DataAccessPoint;
+import org.apache.jena.fuseki.server.DataAccessPointRegistry;
+import org.apache.jena.fuseki.server.DataService;
+import org.apache.jena.fuseki.validation.DataValidator ;
+import org.apache.jena.fuseki.validation.IRIValidator ;
+import org.apache.jena.fuseki.validation.QueryValidator ;
+import org.apache.jena.fuseki.validation.UpdateValidator ;
+import org.apache.jena.query.ARQ;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFDataMgr;
+import org.apache.jena.riot.RDFLanguages;
+import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
+import org.apache.jena.system.JenaSystem;
+import org.apache.jena.system.Txn;
+import org.apache.jena.tdb.TDB;
+import org.apache.jena.tdb.TDBFactory;
+import org.apache.jena.tdb.transaction.TransactionManager;
+import org.slf4j.Logger;
+
+/** Fuseki command that runs a Fuseki server with no UI, just SPARQL services.
+ * <p>
+ * Use {@code --conf=} for multiple datasets and specific service names.
+ * <p>
+ * The command line dataset setup only supports a single dataset.
+ */
+
+public class FusekiBasicCmd {
+ // Own module (or optional dependency on jena-cmds)
+ // Needs jena-cmds.
+
+ static {
+ FusekiLogging.setLogging();
+ }
+
+ static public void main(String... argv) {
+ FusekiCmdInner.innerMain(argv);
+ }
+
+ /** Dataset setup (command line, config file) for a dataset (or several if config file) */
+ static class ServerConfig {
+ public int port;
+ // Dataset name on the command line.
+ public String datasetPath = null;
+ // Command line --update.
+ public boolean allowUpdate = false;
+
+ // This is set ...
+ public DatasetGraph dsg = null;
+ // ... or this.
+ public String serverConfig = null;
+
+
+ // Allow there to be no registered datasets without it being an error.
+ // which is "return dsg==null && serverConfig==null;"
+ public boolean allowEmpty = false ;
+ public boolean loopback = false;
+ public String datasetDescription;
+ public String contentDirectory = null;
+ }
+
+ static class FusekiCmdInner extends CmdARQ {
+ private static int defaultPort = 3030;
+
+ private static ArgDecl argMem = new ArgDecl(ArgDecl.NoValue, "mem");
+ private static ArgDecl argUpdate = new ArgDecl(ArgDecl.NoValue, "update", "allowUpdate");
+ private static ArgDecl argFile = new ArgDecl(ArgDecl.HasValue, "file");
+ private static ArgDecl argMemTDB = new ArgDecl(ArgDecl.NoValue, "memtdb", "memTDB", "tdbmem");
+ private static ArgDecl argTDB = new ArgDecl(ArgDecl.HasValue, "loc", "location", "tdb");
+ // No SPARQL dataset or services
+ private static ArgDecl argEmpty = new ArgDecl(ArgDecl.NoValue, "empty", "no-dataset");
+ private static ArgDecl argPort = new ArgDecl(ArgDecl.HasValue, "port");
+ private static ArgDecl argLocalhost = new ArgDecl(ArgDecl.NoValue, "localhost", "local");
+ private static ArgDecl argTimeout = new ArgDecl(ArgDecl.HasValue, "timeout");
+ private static ArgDecl argConfig = new ArgDecl(ArgDecl.HasValue, "config", "conf");
+ private static ArgDecl argGZip = new ArgDecl(ArgDecl.HasValue, "gzip");
+ private static ArgDecl argBase = new ArgDecl(ArgDecl.HasValue, "base", "files");
+ // private static ModLocation modLocation = new ModLocation();
+ private static ModDatasetAssembler modDataset = new ModDatasetAssembler();
+
+ static public void innerMain(String... argv) {
+ JenaSystem.init();
+ new FusekiCmdInner(argv).mainRun();
+ }
+
+ private final ServerConfig serverConfig = new ServerConfig();
+
+ public FusekiCmdInner(String... argv) {
+ super(argv);
+
+ if ( false )
+ // Consider ...
+ TransactionManager.QueueBatchSize = TransactionManager.QueueBatchSize / 2;
+
+ getUsage().startCategory("Fuseki");
+ addModule(modDataset);
+ add(argMem, "--mem",
+ "Create an in-memory, non-persistent dataset for the server");
+ add(argFile, "--file=FILE",
+ "Create an in-memory, non-persistent dataset for the server, initialised with the contents of the file");
+ add(argTDB, "--loc=DIR",
+ "Use an existing TDB database (or create if does not exist)");
+ add(argMemTDB, "--memTDB",
+ "Create an in-memory, non-persistent dataset using TDB (testing only)");
+// add(argEmpty, "--empty",
+// "Run with no datasets and services (validators only)");
+ // Needs FusekiEmbeddedServer.Builder change.
+ add(argEmpty); // Hidden
+ add(argPort, "--port",
+ "Listen on this port number");
+ add(argLocalhost, "--localhost",
+ "Listen only on the localhost interface");
+ add(argTimeout, "--timeout=",
+ "Global timeout applied to queries (value in ms) -- format is X[,Y] ");
+ add(argUpdate, "--update",
+ "Allow updates (via SPARQL Update and SPARQL HTTP Update)");
+ add(argConfig, "--config=",
+ "Use a configuration file to determine the services");
+ add(argGZip, "--gzip=on|off",
+ "Enable GZip compression (HTTP Accept-Encoding) if request header set");
+ add(argBase, "--base=DIR",
+ "Directory for static content");
+
+ super.modVersion.addClass(TDB.class);
+ super.modVersion.addClass(Fuseki.class);
+ }
+
+ static String argUsage = "[--config=FILE] [--mem|--desc=AssemblerFile|--file=FILE] [--port PORT] /DatasetPathName";
+
+ @Override
+ protected String getSummary() {
+ return getCommandName() + " " + argUsage;
+ }
+
+ @Override
+ protected void processModulesAndArgs() {
+ int x = 0;
+
+ Logger log = Fuseki.serverLog;
+
+ // ---- Checking
+
+ if ( contains(argMem) )
+ x++;
+ if ( contains(argFile) )
+ x++;
+ if ( contains(ModAssembler.assemblerDescDecl) )
+ x++;
+ if ( contains(argTDB) )
+ x++;
+ if ( contains(argMemTDB) )
+ x++;
+ if ( contains(argConfig) )
+ x++;
+
+ boolean allowEmpty = contains(argEmpty);
+
+ if ( x == 0 && ! allowEmpty )
+ throw new CmdException("No dataset specified on the command line.");
+
+ if ( x > 1 )
+ throw new CmdException("Multiple ways providing a dataset. Only one of --mem, --file, --loc or --desc");
+
+ if ( x > 0 && allowEmpty )
+ throw new CmdException("Dataset provided but 'no dataset' flag given");
+
+ //---- check: Invalid: --conf + service name.
+ if ( contains(argConfig) ) {
+ if ( getPositional().size() != 0 )
+ throw new CmdException("Can't have both a configutation file and a service name");
+ } else if ( ! allowEmpty ) {
+ if ( getPositional().size() == 0 )
+ throw new CmdException("Missing service name");
+ if ( getPositional().size() > 1 )
+ throw new CmdException("Multiple dataset path names given");
+ serverConfig.datasetPath = DataAccessPoint.canonical(getPositionalArg(0));
+ }
+
+ serverConfig.datasetDescription = "<unset>";
+
+ // ---- check: Invalid: --update + --conf
+ if ( contains(argUpdate) && contains(argConfig) )
+ throw new CmdException("--update and a configuration file does not make sense (control using the configuration file only)");
+ boolean allowUpdate = contains(argUpdate);
+ serverConfig.allowUpdate = allowUpdate;
+
+ // ---- Port
+ serverConfig.port = defaultPort;
+
+ if ( contains(argPort) ) {
+ String portStr = getValue(argPort);
+ try {
+ int port = Integer.parseInt(portStr);
+ serverConfig.port = port;
+ } catch (NumberFormatException ex) {
+ throw new CmdException(argPort.getKeyName() + " : bad port number: " + portStr);
+ }
+ }
+ if ( contains(argLocalhost) )
+ serverConfig.loopback = true;
+
+ // ---- Dataset
+ // Only one of these is choose from the checking above.
+
+ if ( allowEmpty ) {
+ serverConfig.allowEmpty = true;
+ serverConfig.datasetDescription = "No dataset";
+ }
+
+ // Fuseki config file
+ if ( contains(argConfig) ) {
+ String file = getValue(argConfig);
+ if ( file.startsWith("file:") )
+ file = file.substring("file:".length());
+
+ Path path = Paths.get(file);
+ if ( ! Files.exists(path) )
+ throw new CmdException("File not found: "+file);
+ if ( Files.isDirectory(path) )
+ throw new CmdException("Is a directory: "+file);
+ serverConfig.datasetDescription = "Configuration: "+path.toAbsolutePath();
+ serverConfig.serverConfig = getValue(argConfig);
+ }
+
+ // Ways to setup a dataset.
+ if ( contains(argMem) ) {
+ serverConfig.datasetDescription = "in-memory";
+ // Only one setup should be called by the test above but to be safe
+ // and in case of future changes, clear the configuration.
+ serverConfig.dsg = DatasetGraphFactory.createTxnMem();
+ // Always allow, else you can't do very much!
+ serverConfig.allowUpdate = true;
+ }
+
+ if ( contains(argFile) ) {
+ String filename = getValue(argFile);
+ String pathname = filename;
+ if ( filename.startsWith("file:") )
+ pathname = filename.substring("file:".length());
+
+ serverConfig.datasetDescription = "file:"+filename;
+ if ( !FileOps.exists(pathname) )
+ throw new CmdException("File not found: " + filename);
+ serverConfig.dsg = DatasetGraphFactory.createTxnMem();
+
+ // INITIAL DATA.
+ Lang language = RDFLanguages.filenameToLang(filename);
+ if ( language == null )
+ throw new CmdException("Can't guess language for file: " + filename);
+ Txn.executeWrite(serverConfig.dsg, ()->RDFDataMgr.read(serverConfig.dsg, filename));
+ }
+
+ if ( contains(argMemTDB) ) {
+ serverConfig.datasetDescription = "TDB dataset in-memory";
+ serverConfig.dsg = TDBFactory.createDatasetGraph();
+ serverConfig.allowUpdate = true;
+ }
+
+ if ( contains(argTDB) ) {
+ String dir = getValue(argTDB);
+ serverConfig.datasetDescription = "TDB dataset: "+dir;
+ serverConfig.dsg = TDBFactory.createDatasetGraph(dir);
+ }
+
+ if ( contains(ModAssembler.assemblerDescDecl) ) {
+ serverConfig.datasetDescription = "Assembler: "+ getValue(ModAssembler.assemblerDescDecl);
+ // Need to add service details.
+ Dataset ds = modDataset.createDataset();
+ serverConfig.dsg = ds.asDatasetGraph();
+ }
+
+ // ---- Misc features.
+ if ( contains(argTimeout) ) {
+ String str = getValue(argTimeout);
+ ARQ.getContext().set(ARQ.queryTimeout, str);
+ }
+
+ if ( contains(argBase) ) {
+ // Static files.
+ String filebase = getValue(argBase);
+ if ( ! FileOps.exists(filebase) ) {
+ throw new CmdException("File area not found: "+filebase);
+ //FmtLog.warn(Fuseki.configLog, "File area not found: "+filebase);
+ }
+ serverConfig.contentDirectory = filebase;
+ }
+
+// if ( contains(argGZip) ) {
+// if ( !hasValueOfTrue(argGZip) && !hasValueOfFalse(argGZip) )
+// throw new CmdException(argGZip.getNames().get(0) + ": Not understood: " + getValue(argGZip));
+// jettyServerConfig.enableCompression = super.hasValueOfTrue(argGZip);
+// }
+ }
+
+// private static String sort_out_dir(String path) {
+// path.replace('\\', '/');
+// if ( !path.endsWith("/") )
+// path = path + "/";
+// return path;
+// }
+
+ @Override
+ protected void exec() {
+ try {
+ FusekiEmbeddedServer server = buildServer(serverConfig);
+ info(server, serverConfig);
+ server.start();
+ server.join();
+ System.exit(0);
+ }
+ catch (AssemblerException ex) {
+ if ( ex.getCause() != null )
+ System.err.println(ex.getCause().getMessage());
+ else
+ System.err.println(ex.getMessage());
+ }
+ }
+
+ // ServerConfig -> Setup the builder.
+ private static FusekiEmbeddedServer buildServer(ServerConfig serverConfig) {
+ FusekiEmbeddedServer.Builder builder = FusekiEmbeddedServer.create();
+ // Loopback.
+ builder.setPort(serverConfig.port);
+ builder.setLoopback(serverConfig.loopback);
+
+ if ( ! serverConfig.allowEmpty ) {
+ if ( serverConfig.serverConfig != null )
+ // Config file.
+ builder.parseConfigFile(serverConfig.serverConfig);
+ else
+ // One dataset.
+ builder.add(serverConfig.datasetPath, serverConfig.dsg, serverConfig.allowUpdate);
+ }
+ if ( serverConfig.contentDirectory != null )
+ builder.setStaticFileBase(serverConfig.contentDirectory) ;
+
+ // Validators.
+ builder.addServlet("/validate/query", new QueryValidator());
+ builder.addServlet("/validate/update", new UpdateValidator());
+ builder.addServlet("/validate/iri", new IRIValidator());
+ builder.addServlet("/validate/data", new DataValidator());
+
+ return builder.build();
+ }
+
+ private void info(FusekiEmbeddedServer server, ServerConfig serverConfig) {
+ if ( super.isQuiet() )
+ return;
+
+ Logger log = Fuseki.serverLog;
+
+ String version = Fuseki.VERSION;
+ String buildDate = Fuseki.BUILD_DATE ;
+
+ if ( version != null && version.equals("${project.version}") )
+ version = null ;
+ if ( buildDate != null && buildDate.equals("${build.time.xsd}") )
+ buildDate = DateTimeUtils.nowAsXSDDateTimeString() ;
+
+ String name = Fuseki.NAME;
+ name = name +" (basic server)";
+
+ if ( version != null ) {
+ if ( Fuseki.developmentMode && buildDate != null )
+ FmtLog.info(log, "%s %s %s", name, version, buildDate) ;
+ else
+ FmtLog.info(log, "%s %s", name, version);
+ }
+
+ // Dataset -> Endpoints
+ Map<String, List<String>> z = description(DataAccessPointRegistry.get(server.getServletContext()));
+
+ if ( serverConfig.allowEmpty ) {
+ FmtLog.info(log, "No SPARQL datasets services");
+ } else {
+ if ( serverConfig.datasetPath == null && serverConfig.serverConfig == null )
+ log.error("No dataset path nor server configuration file");
+ }
+
+ if ( serverConfig.datasetPath != null ) {
+ if ( z.size() != 1 )
+ log.error("Expected only one dataset");
+ List<String> endpoints = z.get(serverConfig.datasetPath);
+ FmtLog.info(log, "Dataset Type = %s", serverConfig.datasetDescription);
+ FmtLog.info(log, "Path = %s; Services = %s", serverConfig.datasetPath, endpoints);
+ }
+ if ( serverConfig.serverConfig != null ) {
+ // May be many datasets and services.
+ FmtLog.info(log, "Configuration file %s", serverConfig.serverConfig);
+ z.forEach((path, endpoints)->{
+ FmtLog.info(log, "Path = %s; Services = %s", path, endpoints);
+ });
+ }
+
+ if ( serverConfig.contentDirectory != null )
+ FmtLog.info(log, "Static files = %s", serverConfig.contentDirectory);
+
+ if ( super.isVerbose() )
+ PlatformInfo.logDetailsVerbose(log);
+ else if ( !super.isQuiet() )
+ PlatformInfo.logDetails(log);
+ }
+
+ private static Map<String, List<String>> description(DataAccessPointRegistry reg) {
+ Map<String, List<String>> desc = new LinkedHashMap<>();
+ reg.forEach((ds,dap)->{
+ List<String> endpoints = new ArrayList<>();
+ desc.put(ds, endpoints);
+ DataService dSrv = dap.getDataService();
+ dSrv.getOperations().forEach((opName)->{
+ dSrv.getOperation(opName).forEach(ep-> {
+ String x = ep.getEndpoint();
+ if ( x.isEmpty() )
+ x = "quads";
+ endpoints.add(x);
+ });
+ });
+ });
+ return desc;
+ }
+
+ @Override
+ protected String getCommandName() {
+ return "fuseki";
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/PlatformInfo.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/PlatformInfo.java b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/PlatformInfo.java
new file mode 100644
index 0000000..86cc5da
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/PlatformInfo.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.fuseki.cmds;
+
+import java.io.IOException;
+import java.util.function.Function;
+
+import org.apache.jena.atlas.logging.FmtLog;
+import org.slf4j.Logger;
+
+public class PlatformInfo {
+
+ public static void main(String ...args) throws IOException {
+ long maxMem = Runtime.getRuntime().maxMemory();
+ long totalMem = Runtime.getRuntime().totalMemory();
+ long freeMem = Runtime.getRuntime().freeMemory();
+ long usedMem = totalMem - freeMem;
+ Function<Long, String> f = PlatformInfo::strNumMixed;
+
+ System.out.printf("max=%s total=%s used=%s free=%s\n", f.apply(maxMem), f.apply(totalMem), f.apply(usedMem), f.apply(freeMem));
+ }
+
+ /** Essential information about the runtime environment. */
+
+ public static void logDetails(Logger log) {
+ logDetails(log, " ");
+ }
+
+ /**
+ * Essential information about the runtime environment
+ * @param log
+ * @param prefix String to add at the start of the log message.
+ */
+ public static void logDetails(Logger log, String prefix) {
+ if ( prefix == null )
+ prefix = "";
+ long maxMem = Runtime.getRuntime().maxMemory();
+ long totalMem = Runtime.getRuntime().totalMemory();
+ long freeMem = Runtime.getRuntime().freeMemory();
+ long usedMem = totalMem - freeMem;
+ Function<Long, String> f = PlatformInfo::strNum2;
+ FmtLog.info(log, "%sMemory: %s", prefix, f.apply(maxMem));
+ //FmtLog.info(log, "%sMemory: max=%s total=%s used=%s free=%s", prefix, f.apply(maxMem), f.apply(totalMem), f.apply(usedMem), f.apply(freeMem));
+ FmtLog.info(log, "%sJava: %s", prefix, System.getProperty("java.version"));
+ FmtLog.info(log, "%sOS: %s %s %s", prefix, System.getProperty("os.name"), System.getProperty("os.version"), System.getProperty("os.arch"));
+ }
+
+ public static void logDetailsVerbose(Logger log) {
+ logDetails(log);
+ logOne(log, "java.vendor");
+ logOne(log, "java.home");
+ logOne(log, "java.runtime.version");
+ logOne(log, "java.runtime.name");
+ //logOne(log, "java.endorsed.dirs");
+ logOne(log, "user.language");
+ logOne(log, "user.timezone");
+ logOne(log, "user.country");
+ logOne(log, "user.dir");
+ //logOne(log, "file.encoding");
+ }
+
+ private static void logOne(Logger log, String property) {
+ FmtLog.info(log, " %-20s = %s", property, System.getProperty(property));
+ }
+
+ /** Create a human-friendly string for a number based on Kilo/Mega/Giga/Tera (powers of 2) */
+ public static String strNumMixed(long x) {
+ // https://en.wikipedia.org/wiki/Kibibyte
+ if ( x < 1024 )
+ return Long.toString(x);
+ if ( x < 1024*1024 )
+ return String.format("%.1fK", x/1024.0);
+ if ( x < 1024*1024*1024 )
+ return String.format("%.1fM", x/(1024.0*1024));
+ if ( x < 1024L*1024*1024*1024 )
+ return String.format("%.1fG", x/(1024.0*1024*1024));
+ return String.format("%.1fT", x/(1024.0*1024*1024*1024));
+ }
+
+ /** Create a human-friendly string for a number based on Kilo/Mega/Giga/Tera (powers of 10) */
+ public static String strNum10(long x) {
+ if ( x < 1_000 )
+ return Long.toString(x);
+ if ( x < 1_000_000 )
+ return String.format("%.1fK", x/1000.0);
+ if ( x < 1_000_000_000 )
+ return String.format("%.1fM", x/(1000.0*1000));
+ if ( x < 1_000_000_000_000L )
+ return String.format("%.1fG", x/(1000.0*1000*1000));
+ return String.format("%.1fT", x/(1000.0*1000*1000*1000));
+ }
+
+ /** Create a human-friendly string for a number based on Kibi/Mebi/Gibi/Tebi (powers of 2) */
+ public static String strNum2(long x) {
+ // https://en.wikipedia.org/wiki/Kibibyte
+ if ( x < 1024 )
+ return Long.toString(x);
+ if ( x < 1024*1024 )
+ return String.format("%.1f KiB", x/1024.0);
+ if ( x < 1024*1024*1024 )
+ return String.format("%.1f MiB", x/(1024.0*1024));
+ if ( x < 1024L*1024*1024*1024 )
+ return String.format("%.1f GiB", x/(1024.0*1024*1024));
+ return String.format("%.1fTiB", x/(1024.0*1024*1024*1024));
+ }
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/pom.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/pom.xml b/jena-fuseki2/pom.xml
index 5bdc4a1..1986f2a 100644
--- a/jena-fuseki2/pom.xml
+++ b/jena-fuseki2/pom.xml
@@ -72,6 +72,7 @@
<module>jena-fuseki-embedded</module>
<module>jena-fuseki-war</module>
<module>jena-fuseki-server</module>
+ <module>jena-fuseki-basic</module>
<module>apache-jena-fuseki</module>
</modules>
[4/6] jena git commit: Quote FUSEKI_JAR
Posted by an...@apache.org.
Quote FUSEKI_JAR
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/7d9bb0d2
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/7d9bb0d2
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/7d9bb0d2
Branch: refs/heads/master
Commit: 7d9bb0d2c2e3349193c13183dcb51083c5a0793e
Parents: 2e361da
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Jun 24 12:58:49 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Jun 24 12:58:49 2017 +0100
----------------------------------------------------------------------
jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/7d9bb0d2/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler b/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler
index 93aa84d..f487ed4 100755
--- a/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/run-sparqler
@@ -52,11 +52,11 @@ set --
if [ "$BACKGROUND" = 0 ]
then
# Run in the foreground
- exec java $JVM_ARGS $FUSEKI_LOG -jar $FUSEKI_JAR $SPARQLER_ARGS
+ exec java $JVM_ARGS $FUSEKI_LOG -jar "$FUSEKI_JAR" $SPARQLER_ARGS
else
# Run in the background
# Linux / nohup
- nohup java $JVM_ARGS $FUSEKI_LOG -jar $FUSEKI_JAR $SPARQLER_ARGS > nohup.log 2>&1 &
+ nohup java $JVM_ARGS $FUSEKI_LOG -jar "$FUSEKI_JAR" $SPARQLER_ARGS > nohup.log 2>&1 &
# Process ID ... of the script.
PROC=$!
echo "Server process = $PROC"
[3/6] jena git commit: JENA-1366: Fuseki embedded as a standalone
server
Posted by an...@apache.org.
JENA-1366: Fuseki embedded as a standalone server
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2e361dab
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2e361dab
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2e361dab
Branch: refs/heads/master
Commit: 2e361daba1e3e2432c197b2e99cc2cc34c2bae54
Parents: 63e452e
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Jun 21 19:13:49 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Jun 21 19:19:38 2017 +0100
----------------------------------------------------------------------
jena-fuseki2/jena-fuseki-basic/pom.xml | 256 +
jena-fuseki2/jena-fuseki-basic/run-sparqler | 8 +
.../jena-fuseki-basic/sparqler/data/books.ttl | 46 +
.../jena-fuseki-basic/sparqler/data/empty.nt | 1 +
.../sparqler/data/sparql-data.ttl | 101 +
.../sparqler/data/underground.ttl | 8996 ++++++++++++++++++
.../sparqler/log4j-foreground.properties | 44 +
.../sparqler/log4j-server.properties | 44 +
.../jena-fuseki-basic/sparqler/pages/D.nt | 0
.../jena-fuseki-basic/sparqler/pages/D.rdf | 8 +
.../jena-fuseki-basic/sparqler/pages/D.ttl | 3 +
.../sparqler/pages/crossdomain.xml | 3 +
.../sparqler/pages/data-validator.html | 48 +
.../jena-fuseki-basic/sparqler/pages/doc.css | 127 +
.../jena-fuseki-basic/sparqler/pages/fuseki.css | 148 +
.../jena-fuseki-basic/sparqler/pages/index.html | 73 +
.../sparqler/pages/iri-validator.html | 22 +
.../sparqler/pages/query-validator.html | 71 +
.../jena-fuseki-basic/sparqler/pages/query.html | 63 +
.../jena-fuseki-basic/sparqler/pages/robots.txt | 2 +
.../sparqler/pages/sparql.html | 51 +
.../sparqler/pages/update-validator.html | 46 +
.../sparqler/pages/update.html | 27 +
.../sparqler/pages/validator.html | 35 +
.../sparqler/pages/xml-to-html-links.xsl | 183 +
.../sparqler/pages/xml-to-html-plain.xsl | 187 +
.../sparqler/pages/xml-to-html.xsl | 187 +
.../jena-fuseki-basic/sparqler/run-sparqler | 63 +
.../apache/jena/fuseki/cmds/FusekiBasicCmd.java | 468 +
.../apache/jena/fuseki/cmds/PlatformInfo.java | 122 +
jena-fuseki2/pom.xml | 1 +
31 files changed, 11434 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/pom.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/pom.xml b/jena-fuseki2/jena-fuseki-basic/pom.xml
new file mode 100644
index 0000000..7f20361
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/pom.xml
@@ -0,0 +1,256 @@
+<?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 Basic Server</name>
+ <artifactId>jena-fuseki-basic</artifactId>
+
+ <parent>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-fuseki</artifactId>
+ <version>2.7.0-SNAPSHOT</version>
+ </parent>
+
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-cmds</artifactId>
+ <version>3.4.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-text</artifactId>
+ <version>3.4.0-SNAPSHOT</version>
+ </dependency>
+
+ <!-- Add logging -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <optional>true</optional>
+ </dependency>
+
+ <!-- This depends on jena-fuseki-core -->
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-fuseki-embedded</artifactId>
+ <version>2.7.0-SNAPSHOT</version>
+
+ <!-- No specific logging - leave to the application -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.shiro</groupId>
+ <artifactId>shiro-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.shiro</groupId>
+ <artifactId>shiro-web</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar-no-fork</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/TS_*.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ </configuration>
+ </plugin>
+
+ <!-- Use <build><finalName> for chnage of artifact produced. -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <configuration>
+ <!--
+ <finalName>fuseki-basic</finalName>
+ <shadedArtifactAttached>false</shadedArtifactAttached>
+ -->
+
+ <shadedArtifactAttached>true</shadedArtifactAttached>
+ <!-- Does not deploy? - ->
+ <shadedArtifactId></shadedArtifactId>
+ -->
+ <shadedClassifierName>server</shadedClassifierName>
+
+
+ <transformers>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <mainClass>org.apache.jena.fuseki.cmds.FusekiBasicCmd</mainClass>
+ </transformer>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
+ <addHeader>false</addHeader>
+ </transformer>
+ </transformers>
+ <filters>
+ <filter>
+ <artifact>*:*</artifact>
+ <excludes>
+ <!-- Some jars are signed but shading breaks that.
+ Don't include signing files.
+ -->
+ <exclude>META-INF/*.SF</exclude>
+ <exclude>META-INF/*.DSA</exclude>
+ <exclude>META-INF/*.RSA</exclude>
+ </excludes>
+ </filter>
+ </filters>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <!--<phase /><!- - Switch off -->
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+
+
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>rat-checks</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <excludeSubProjects>true</excludeSubProjects>
+ <excludes>
+ <exclude>**/sparqler/**</exclude>
+ <exclude>**/.project</exclude>
+ <exclude>**/.settings/**</exclude>
+ <exclude>**/.classpath</exclude>
+ <exclude>**/*.log</exclude>
+ <exclude>**/README.*</exclude>
+ <exclude>**/META-INF/services/*</exclude>
+ <!--
+ Javadoc add-ons files are required to be simple and our javadoc configuration
+ will ensure appropriate license and copyright statements are inserted
+ into generated documentation anyway so no need to put license statements in these
+ files
+ -->
+ <exclude>**/src/main/**/*.html</exclude>
+ <exclude>**/DEPENDENCIES</exclude>
+ <!--
+ Text and Markdown files are typically used only for documentation purposes
+ and license declarations are usually spurious in these files since often they
+ will refer to the LICENSE/NOTICE for users to find the actual licenses
+ -->
+ <exclude>**/*.txt</exclude>
+ <exclude>**/*.md</exclude>
+ <exclude>**/*.mdtext</exclude>
+
+ <!--
+ META-INF services files can include comments but a license header would be
+ unecessarily clutter so we exclude these
+ -->
+ <exclude>**/META-INF/services/*</exclude>
+
+ <!--
+ Jena historically has large numbers of small test file
+ with no license headers. Such small files are not required
+ to have headers.
+
+ In addition, there are files with different Licenses
+ (e.g. W3C Software Licence, W3C Test Suite License) as
+ noted in the code tree.
+ -->
+ <exclude>**/testing/**/*</exclude>
+
+ <exclude>**/log4j.properties</exclude>
+ <exclude>**/log4j-testing.properties</exclude>
+ <exclude>**/DB/**/*</exclude>
+ <!-- TDB config files JSON - no comments allowed -->
+ <exclude>**/tdb*.cfg</exclude>
+ <!-- Exclude anything created during the build (plugin generated files) ->-->
+ <exclude>**/target/**/*</exclude>
+ <!-- MSHADE-124 -->
+ <exclude>**/dependency-reduced-pom.xml</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+
+ </plugins>
+
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/run-sparqler
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/run-sparqler b/jena-fuseki2/jena-fuseki-basic/run-sparqler
new file mode 100755
index 0000000..89c38bd
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/run-sparqler
@@ -0,0 +1,8 @@
+#!/bin/bash
+## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+(
+ #echo "cd sparqler"
+ cd sparqler
+ env BACKGROUND=0 ./run-sparqler "$@"
+)
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/data/books.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/data/books.ttl b/jena-fuseki2/jena-fuseki-basic/sparqler/data/books.ttl
new file mode 100644
index 0000000..cece401
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/data/books.ttl
@@ -0,0 +1,46 @@
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> .
+@prefix ns: <http://example.org/ns#> .
+
+@prefix : <http://example.org/book/> .
+
+# A small dataset for usage examples of Joseki
+# This data is intentionaly irregular (e.g. different ways to
+# record the book creator) as if the information is either an
+# aggregation or was created at different times.
+
+:book1
+ dc:title "Harry Potter and the Philosopher's Stone" ;
+ dc:creator "J.K. Rowling" ;
+ .
+
+:book2
+ dc:title "Harry Potter and the Chamber of Secrets" ;
+ dc:creator _:a .
+
+:book3
+ dc:title "Harry Potter and the Prisoner Of Azkaban" ;
+ dc:creator _:a .
+
+:book4
+ dc:title "Harry Potter and the Goblet of Fire" .
+
+:book5
+ dc:title "Harry Potter and the Order of the Phoenix";
+ dc:creator "J.K. Rowling" ;
+ .
+
+:book6
+ dc:title "Harry Potter and the Half-Blood Prince";
+ dc:creator "J.K. Rowling" .
+
+:book7
+ dc:title "Harry Potter and the Deathly Hallows" ;
+ dc:creator "J.K. Rowling" .
+_:a
+ vcard:FN "J.K. Rowling" ;
+ vcard:N
+ [ vcard:Family "Rowling" ;
+ vcard:Given "Joanna"
+ ]
+ .
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/data/empty.nt
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/data/empty.nt b/jena-fuseki2/jena-fuseki-basic/sparqler/data/empty.nt
new file mode 100644
index 0000000..739dd79
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/data/empty.nt
@@ -0,0 +1 @@
+# This is empty (except for this line!).
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/data/sparql-data.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/data/sparql-data.ttl b/jena-fuseki2/jena-fuseki-basic/sparqler/data/sparql-data.ttl
new file mode 100755
index 0000000..d38ecd9
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/data/sparql-data.ttl
@@ -0,0 +1,101 @@
+## People
+## Books + Prices
+## Reviews
+
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix fn: <http://www.w3.org/2005/xpath-functions#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix skos: <http://www.w3.org/2008/05/skos#> .
+@prefix dc10: <http://purl.org/dc/elements/1.0/> .
+@prefix dc11: <http://purl.org/dc/elements/1.1/> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix : <http://example/> .
+
+:A a foaf:Person ;
+ foaf:mbox <ma...@example.net> ;
+ foaf:name "Alice" ;
+ foaf:birthday "20-05" ;
+ foaf:knows :B ;
+ foaf:knows :C .
+
+:B a foaf:Person ;
+ foaf:name "Bob" ;
+ foaf:birthday "13-06" ;
+ foaf:knows :A ;
+ foaf:knows :C .
+
+
+:C a foaf:Person ;
+ foaf:name "Charlie" ;
+ foaf:knows :A ;
+ foaf:knows :B .
+
+
+:D a foaf:Person ;
+ foaf:name "Dave" ;
+ foaf:knows :B .
+
+:E a foaf:Person ;
+ foaf:name "EveBot" .
+
+
+@prefix stock: <http://example.org/stock#> .
+@prefix inv: <http://example.org/inventory#> .
+
+stock:book1 dc:title "SPARQL Query Language Tutorial" ;
+ inv:price 10 ;
+ inv:quantity 3 .
+
+stock:book2 dc:title "SPARQL Query Language (2nd ed)" ;
+ inv:price 20 ;
+ inv:quantity 5 .
+
+stock:book3 dc:title "Moving from SQL to SPARQL" ;
+ inv:price 5 ;
+ inv:quantity 0 .
+
+stock:book4 dc:title "Applying XQuery" ;
+ inv:price 20 ;
+ inv:quantity 8 .
+
+## Reviews
+## Record some rating as 1 (low) to 5 (high)
+
+:review1
+ dc:creator :A ;
+ :about stock:book1 ;
+ :rating 4 .
+
+:review2
+ dc:creator :B ;
+ :about stock:book1 ;
+ :rating 5 .
+
+:review3
+ dc:creator :B ;
+ :about stock:book2 ;
+ :rating 4 .
+
+:review4
+ dc:creator :B ;
+ :about stock:book3 ;
+ :rating 3 .
+
+:review5
+ dc:creator :B ;
+ :about stock:book3 ;
+ :rating 1 .
+
+:review5
+ dc:creator :B ;
+ :about stock:book3 ;
+ :rating 1 .
+
+:review6
+ dc:creator :E ;
+ :about stock:book3 ;
+ :rating 4 .
+
+
[5/6] jena git commit: Set the parser source.
Posted by an...@apache.org.
Set the parser source.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d983310b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d983310b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d983310b
Branch: refs/heads/master
Commit: d983310bb87d07a467946542968a938bcc09744b
Parents: 7d9bb0d
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Jun 24 13:40:33 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Jun 24 13:44:30 2017 +0100
----------------------------------------------------------------------
.../jena/fuseki/validation/html/DataValidatorHTML.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/d983310b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/DataValidatorHTML.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/DataValidatorHTML.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/DataValidatorHTML.java
index bf18836..8017dbe 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/DataValidatorHTML.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/DataValidatorHTML.java
@@ -65,6 +65,9 @@ public class DataValidatorHTML
return ;
}
+ // Take the charset provided even if it is wrong because
+ // HTML input maybe have been written in some default.
+ // The HTML input and what the user typed should agree.
Reader input = createInput(httpRequest, httpResponse) ;
ServletOutputStream outStream = httpResponse.getOutputStream() ;
@@ -82,7 +85,7 @@ public class DataValidatorHTML
outStream.println("<body>") ;
outStream.println("<h1>RIOT Parser Report</h1>") ;
- outStream.println("<p>Line and column numbers refer to original input</p>") ;
+ outStream.println("<p>Line and column numbers refer to the original input.</p>") ;
outStream.println("<p> </p>") ;
// Need to escape HTML.
@@ -90,13 +93,14 @@ public class DataValidatorHTML
StreamRDF output = StreamRDFWriter.getWriterStream(output1, Lang.NQUADS) ;
try {
startFixed(outStream) ;
+ @SuppressWarnings("deprecation")
RDFParser parser = RDFParser.create()
+ .source(input)
.lang(language)
.errorHandler(errorHandler)
.resolveURIs(false)
.build();
RiotException exception = null ;
- startFixed(outStream) ;
try {
output.start();
parser.parse(output);
[6/6] jena git commit: JENA-1366: Merge commit 'refs/pull/265/head'
of github.com:apache/jena
Posted by an...@apache.org.
JENA-1366: Merge commit 'refs/pull/265/head' of github.com:apache/jena
This closes #265.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e05e65cf
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e05e65cf
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e05e65cf
Branch: refs/heads/master
Commit: e05e65cf05b9aae002d8d64c3a2d02bc76f00ac8
Parents: f9c0746 d983310
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Jun 25 15:10:20 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Jun 25 15:10:20 2017 +0100
----------------------------------------------------------------------
jena-fuseki2/jena-fuseki-basic/pom.xml | 256 +
jena-fuseki2/jena-fuseki-basic/run-sparqler | 8 +
.../jena-fuseki-basic/sparqler/data/books.ttl | 46 +
.../jena-fuseki-basic/sparqler/data/empty.nt | 1 +
.../sparqler/data/sparql-data.ttl | 101 +
.../sparqler/data/underground.ttl | 8996 ++++++++++++++++++
.../sparqler/log4j-foreground.properties | 44 +
.../sparqler/log4j-server.properties | 44 +
.../jena-fuseki-basic/sparqler/pages/D.nt | 0
.../jena-fuseki-basic/sparqler/pages/D.rdf | 8 +
.../jena-fuseki-basic/sparqler/pages/D.ttl | 3 +
.../sparqler/pages/crossdomain.xml | 3 +
.../sparqler/pages/data-validator.html | 48 +
.../jena-fuseki-basic/sparqler/pages/doc.css | 127 +
.../jena-fuseki-basic/sparqler/pages/fuseki.css | 148 +
.../jena-fuseki-basic/sparqler/pages/index.html | 73 +
.../sparqler/pages/iri-validator.html | 22 +
.../sparqler/pages/query-validator.html | 71 +
.../jena-fuseki-basic/sparqler/pages/query.html | 63 +
.../jena-fuseki-basic/sparqler/pages/robots.txt | 2 +
.../sparqler/pages/sparql.html | 51 +
.../sparqler/pages/update-validator.html | 46 +
.../sparqler/pages/update.html | 27 +
.../sparqler/pages/validator.html | 35 +
.../sparqler/pages/xml-to-html-links.xsl | 183 +
.../sparqler/pages/xml-to-html-plain.xsl | 187 +
.../sparqler/pages/xml-to-html.xsl | 187 +
.../jena-fuseki-basic/sparqler/run-sparqler | 63 +
.../apache/jena/fuseki/cmds/FusekiBasicCmd.java | 468 +
.../apache/jena/fuseki/cmds/PlatformInfo.java | 122 +
.../validation/html/DataValidatorHTML.java | 8 +-
jena-fuseki2/pom.xml | 1 +
32 files changed, 11440 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
[2/6] jena git commit: JENA-1366: Fuseki embedded as a standalone
server
Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/2e361dab/jena-fuseki2/jena-fuseki-basic/sparqler/data/underground.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/sparqler/data/underground.ttl b/jena-fuseki2/jena-fuseki-basic/sparqler/data/underground.ttl
new file mode 100644
index 0000000..c142b4c
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-basic/sparqler/data/underground.ttl
@@ -0,0 +1,8996 @@
+@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
+@prefix lu-connection: <http://training.epimorphics.com/transport/london-underground/connection/>.
+@prefix lu-line: <http://training.epimorphics.com/transport/london-underground/line/>.
+@prefix lu-station: <http://training.epimorphics.com/transport/london-underground/station/>.
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
+@prefix transport: <http://training.epimorphics.com/transport/def/metro/>.
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
+
+lu-line:waterloo_and_city_line a transport:UndergroundLine;
+ rdfs:label "Waterloo & City Line";
+ transport:connection <http://training.epimorphics.com/transport/london-underground/connection/waterloo_and_city_line/bank/waterloo>,
+ <http://training.epimorphics.com/transport/london-underground/connection/waterloo_and_city_line/waterloo/bank>;
+ transport:terminal lu-station:bank,
+ lu-station:waterloo .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/baker_street/marylebone> a transport:TransportConnection;
+ rdfs:label "Baker Street to Marylebone on the Bakerloo Line";
+ transport:fromStop lu-station:baker_street;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:marylebone .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/baker_street/regents_park> a transport:TransportConnection;
+ rdfs:label "Baker Street to Regent's Park on the Bakerloo Line";
+ transport:fromStop lu-station:baker_street;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:regents_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/charing_cross/embankment> a transport:TransportConnection;
+ rdfs:label "Charing Cross to Embankment on the Bakerloo Line";
+ transport:fromStop lu-station:charing_cross;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:embankment .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/charing_cross/picadilly_circus> a transport:TransportConnection;
+ rdfs:label "Charing Cross to Picadilly Circus on the Bakerloo Line";
+ transport:fromStop lu-station:charing_cross;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:picadilly_circus .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/edgware_road_b/marylebone> a transport:TransportConnection;
+ rdfs:label "Edgware Road (B) to Marylebone on the Bakerloo Line";
+ transport:fromStop lu-station:edgware_road_b;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:marylebone .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/edgware_road_b/paddington> a transport:TransportConnection;
+ rdfs:label "Edgware Road (B) to Paddington on the Bakerloo Line";
+ transport:fromStop lu-station:edgware_road_b;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:paddington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/elephant_and_castle/lambeth_north> a transport:TransportConnection;
+ rdfs:label "Elephant & Castle to Lambeth North on the Bakerloo Line";
+ transport:fromStop lu-station:elephant_and_castle;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:lambeth_north .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/embankment/charing_cross> a transport:TransportConnection;
+ rdfs:label "Embankment to Charing Cross on the Bakerloo Line";
+ transport:fromStop lu-station:embankment;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:charing_cross .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/embankment/waterloo> a transport:TransportConnection;
+ rdfs:label "Embankment to Waterloo on the Bakerloo Line";
+ transport:fromStop lu-station:embankment;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:waterloo .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/harlesden/stonebridge_park> a transport:TransportConnection;
+ rdfs:label "Harlesden to Stonebridge Park on the Bakerloo Line";
+ transport:fromStop lu-station:harlesden;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:stonebridge_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/harlesden/willesden_junction> a transport:TransportConnection;
+ rdfs:label "Harlesden to Willesden Junction on the Bakerloo Line";
+ transport:fromStop lu-station:harlesden;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:willesden_junction .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/harrow_and_wealdston/kenton> a transport:TransportConnection;
+ rdfs:label "Harrow & Wealdston to Kenton on the Bakerloo Line";
+ transport:fromStop lu-station:harrow_and_wealdston;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:kenton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/kensal_green/queens_park> a transport:TransportConnection;
+ rdfs:label "Kensal Green to Queen's Park on the Bakerloo Line";
+ transport:fromStop lu-station:kensal_green;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:queens_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/kensal_green/willesden_junction> a transport:TransportConnection;
+ rdfs:label "Kensal Green to Willesden Junction on the Bakerloo Line";
+ transport:fromStop lu-station:kensal_green;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:willesden_junction .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/kenton/harrow_and_wealdston> a transport:TransportConnection;
+ rdfs:label "Kenton to Harrow & Wealdston on the Bakerloo Line";
+ transport:fromStop lu-station:kenton;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:harrow_and_wealdston .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/kenton/south_kenton> a transport:TransportConnection;
+ rdfs:label "Kenton to South Kenton on the Bakerloo Line";
+ transport:fromStop lu-station:kenton;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:south_kenton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/kilburn_park/maida_vale> a transport:TransportConnection;
+ rdfs:label "Kilburn Park to Maida Vale on the Bakerloo Line";
+ transport:fromStop lu-station:kilburn_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:maida_vale .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/kilburn_park/queens_park> a transport:TransportConnection;
+ rdfs:label "Kilburn Park to Queen's Park on the Bakerloo Line";
+ transport:fromStop lu-station:kilburn_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:queens_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/lambeth_north/elephant_and_castle> a transport:TransportConnection;
+ rdfs:label "Lambeth North to Elephant & Castle on the Bakerloo Line";
+ transport:fromStop lu-station:lambeth_north;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:elephant_and_castle .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/lambeth_north/waterloo> a transport:TransportConnection;
+ rdfs:label "Lambeth North to Waterloo on the Bakerloo Line";
+ transport:fromStop lu-station:lambeth_north;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:waterloo .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/maida_vale/kilburn_park> a transport:TransportConnection;
+ rdfs:label "Maida Vale to Kilburn Park on the Bakerloo Line";
+ transport:fromStop lu-station:maida_vale;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:kilburn_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/maida_vale/warwick_avenue> a transport:TransportConnection;
+ rdfs:label "Maida Vale to Warwick Avenue on the Bakerloo Line";
+ transport:fromStop lu-station:maida_vale;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:warwick_avenue .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/marylebone/baker_street> a transport:TransportConnection;
+ rdfs:label "Marylebone to Baker Street on the Bakerloo Line";
+ transport:fromStop lu-station:marylebone;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:baker_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/marylebone/edgware_road_b> a transport:TransportConnection;
+ rdfs:label "Marylebone to Edgware Road (B) on the Bakerloo Line";
+ transport:fromStop lu-station:marylebone;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:edgware_road_b .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/north_wembley/south_kenton> a transport:TransportConnection;
+ rdfs:label "North Wembley to South Kenton on the Bakerloo Line";
+ transport:fromStop lu-station:north_wembley;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:south_kenton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/north_wembley/wembley_central> a transport:TransportConnection;
+ rdfs:label "North Wembley to Wembley Central on the Bakerloo Line";
+ transport:fromStop lu-station:north_wembley;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:wembley_central .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/oxford_circus/picadilly_circus> a transport:TransportConnection;
+ rdfs:label "Oxford Circus to Picadilly Circus on the Bakerloo Line";
+ transport:fromStop lu-station:oxford_circus;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:picadilly_circus .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/oxford_circus/regents_park> a transport:TransportConnection;
+ rdfs:label "Oxford Circus to Regent's Park on the Bakerloo Line";
+ transport:fromStop lu-station:oxford_circus;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:regents_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/paddington/edgware_road_b> a transport:TransportConnection;
+ rdfs:label "Paddington to Edgware Road (B) on the Bakerloo Line";
+ transport:fromStop lu-station:paddington;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:edgware_road_b .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/paddington/warwick_avenue> a transport:TransportConnection;
+ rdfs:label "Paddington to Warwick Avenue on the Bakerloo Line";
+ transport:fromStop lu-station:paddington;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:warwick_avenue .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/picadilly_circus/charing_cross> a transport:TransportConnection;
+ rdfs:label "Picadilly Circus to Charing Cross on the Bakerloo Line";
+ transport:fromStop lu-station:picadilly_circus;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:charing_cross .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/picadilly_circus/oxford_circus> a transport:TransportConnection;
+ rdfs:label "Picadilly Circus to Oxford Circus on the Bakerloo Line";
+ transport:fromStop lu-station:picadilly_circus;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:oxford_circus .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/queens_park/kensal_green> a transport:TransportConnection;
+ rdfs:label "Queen's Park to Kensal Green on the Bakerloo Line";
+ transport:fromStop lu-station:queens_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:kensal_green .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/queens_park/kilburn_park> a transport:TransportConnection;
+ rdfs:label "Queen's Park to Kilburn Park on the Bakerloo Line";
+ transport:fromStop lu-station:queens_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:kilburn_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/regents_park/baker_street> a transport:TransportConnection;
+ rdfs:label "Regent's Park to Baker Street on the Bakerloo Line";
+ transport:fromStop lu-station:regents_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:baker_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/regents_park/oxford_circus> a transport:TransportConnection;
+ rdfs:label "Regent's Park to Oxford Circus on the Bakerloo Line";
+ transport:fromStop lu-station:regents_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:oxford_circus .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/south_kenton/kenton> a transport:TransportConnection;
+ rdfs:label "South Kenton to Kenton on the Bakerloo Line";
+ transport:fromStop lu-station:south_kenton;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:kenton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/south_kenton/north_wembley> a transport:TransportConnection;
+ rdfs:label "South Kenton to North Wembley on the Bakerloo Line";
+ transport:fromStop lu-station:south_kenton;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:north_wembley .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/stonebridge_park/harlesden> a transport:TransportConnection;
+ rdfs:label "Stonebridge Park to Harlesden on the Bakerloo Line";
+ transport:fromStop lu-station:stonebridge_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:harlesden .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/stonebridge_park/wembley_central> a transport:TransportConnection;
+ rdfs:label "Stonebridge Park to Wembley Central on the Bakerloo Line";
+ transport:fromStop lu-station:stonebridge_park;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:wembley_central .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/warwick_avenue/maida_vale> a transport:TransportConnection;
+ rdfs:label "Warwick Avenue to Maida Vale on the Bakerloo Line";
+ transport:fromStop lu-station:warwick_avenue;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:maida_vale .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/warwick_avenue/paddington> a transport:TransportConnection;
+ rdfs:label "Warwick Avenue to Paddington on the Bakerloo Line";
+ transport:fromStop lu-station:warwick_avenue;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:paddington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/waterloo/embankment> a transport:TransportConnection;
+ rdfs:label "Waterloo to Embankment on the Bakerloo Line";
+ transport:fromStop lu-station:waterloo;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:embankment .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/waterloo/lambeth_north> a transport:TransportConnection;
+ rdfs:label "Waterloo to Lambeth North on the Bakerloo Line";
+ transport:fromStop lu-station:waterloo;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:lambeth_north .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/wembley_central/north_wembley> a transport:TransportConnection;
+ rdfs:label "Wembley Central to North Wembley on the Bakerloo Line";
+ transport:fromStop lu-station:wembley_central;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:north_wembley .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/wembley_central/stonebridge_park> a transport:TransportConnection;
+ rdfs:label "Wembley Central to Stonebridge Park on the Bakerloo Line";
+ transport:fromStop lu-station:wembley_central;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:stonebridge_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/willesden_junction/harlesden> a transport:TransportConnection;
+ rdfs:label "Willesden Junction to Harlesden on the Bakerloo Line";
+ transport:fromStop lu-station:willesden_junction;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:harlesden .
+
+<http://training.epimorphics.com/transport/london-underground/connection/bakerloo_line/willesden_junction/kensal_green> a transport:TransportConnection;
+ rdfs:label "Willesden Junction to Kensal Green on the Bakerloo Line";
+ transport:fromStop lu-station:willesden_junction;
+ transport:onLine lu-line:bakerloo_line;
+ transport:toStop lu-station:kensal_green .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/bank/liverpool_street> a transport:TransportConnection;
+ rdfs:label "Bank to Liverpool Street on the Central Line";
+ transport:fromStop lu-station:bank;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:liverpool_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/bank/st_pauls> a transport:TransportConnection;
+ rdfs:label "Bank to St. Paul's on the Central Line";
+ transport:fromStop lu-station:bank;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:st_pauls .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/barkingside/fairlop> a transport:TransportConnection;
+ rdfs:label "Barkingside to Fairlop on the Central Line";
+ transport:fromStop lu-station:barkingside;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:fairlop .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/barkingside/newbury_park> a transport:TransportConnection;
+ rdfs:label "Barkingside to Newbury Park on the Central Line";
+ transport:fromStop lu-station:barkingside;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:newbury_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/bethnal_green/liverpool_street> a transport:TransportConnection;
+ rdfs:label "Bethnal Green to Liverpool Street on the Central Line";
+ transport:fromStop lu-station:bethnal_green;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:liverpool_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/bethnal_green/mile_end> a transport:TransportConnection;
+ rdfs:label "Bethnal Green to Mile End on the Central Line";
+ transport:fromStop lu-station:bethnal_green;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:mile_end .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/bond_street/marble_arch> a transport:TransportConnection;
+ rdfs:label "Bond Street to Marble Arch on the Central Line";
+ transport:fromStop lu-station:bond_street;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:marble_arch .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/bond_street/oxford_circus> a transport:TransportConnection;
+ rdfs:label "Bond Street to Oxford Circus on the Central Line";
+ transport:fromStop lu-station:bond_street;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:oxford_circus .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/buckhurst_hill/loughton> a transport:TransportConnection;
+ rdfs:label "Buckhurst Hill to Loughton on the Central Line";
+ transport:fromStop lu-station:buckhurst_hill;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:loughton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/buckhurst_hill/woodford> a transport:TransportConnection;
+ rdfs:label "Buckhurst Hill to Woodford on the Central Line";
+ transport:fromStop lu-station:buckhurst_hill;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:woodford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/chancery_lane/holborn> a transport:TransportConnection;
+ rdfs:label "Chancery Lane to Holborn on the Central Line";
+ transport:fromStop lu-station:chancery_lane;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:holborn .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/chancery_lane/st_pauls> a transport:TransportConnection;
+ rdfs:label "Chancery Lane to St. Paul's on the Central Line";
+ transport:fromStop lu-station:chancery_lane;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:st_pauls .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/chigwell/grange_hill> a transport:TransportConnection;
+ rdfs:label "Chigwell to Grange Hill on the Central Line";
+ transport:fromStop lu-station:chigwell;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:grange_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/chigwell/roding_valley> a transport:TransportConnection;
+ rdfs:label "Chigwell to Roding Valley on the Central Line";
+ transport:fromStop lu-station:chigwell;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:roding_valley .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/debden/loughton> a transport:TransportConnection;
+ rdfs:label "Debden to Loughton on the Central Line";
+ transport:fromStop lu-station:debden;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:loughton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/debden/theydon_bois> a transport:TransportConnection;
+ rdfs:label "Debden to Theydon Bois on the Central Line";
+ transport:fromStop lu-station:debden;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:theydon_bois .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/ealing_broadway/west_acton> a transport:TransportConnection;
+ rdfs:label "Ealing Broadway to West Acton on the Central Line";
+ transport:fromStop lu-station:ealing_broadway;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:west_acton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/east_acton/north_acton> a transport:TransportConnection;
+ rdfs:label "East Acton to North Acton on the Central Line";
+ transport:fromStop lu-station:east_acton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:north_acton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/east_acton/white_city> a transport:TransportConnection;
+ rdfs:label "East Acton to White City on the Central Line";
+ transport:fromStop lu-station:east_acton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:white_city .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/epping/theydon_bois> a transport:TransportConnection;
+ rdfs:label "Epping to Theydon Bois on the Central Line";
+ transport:fromStop lu-station:epping;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:theydon_bois .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/fairlop/barkingside> a transport:TransportConnection;
+ rdfs:label "Fairlop to Barkingside on the Central Line";
+ transport:fromStop lu-station:fairlop;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:barkingside .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/fairlop/hainault> a transport:TransportConnection;
+ rdfs:label "Fairlop to Hainault on the Central Line";
+ transport:fromStop lu-station:fairlop;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:hainault .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/gants_hill/newbury_park> a transport:TransportConnection;
+ rdfs:label "Gants Hill to Newbury Park on the Central Line";
+ transport:fromStop lu-station:gants_hill;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:newbury_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/gants_hill/redbridge> a transport:TransportConnection;
+ rdfs:label "Gants Hill to Redbridge on the Central Line";
+ transport:fromStop lu-station:gants_hill;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:redbridge .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/grange_hill/chigwell> a transport:TransportConnection;
+ rdfs:label "Grange Hill to Chigwell on the Central Line";
+ transport:fromStop lu-station:grange_hill;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:chigwell .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/grange_hill/hainault> a transport:TransportConnection;
+ rdfs:label "Grange Hill to Hainault on the Central Line";
+ transport:fromStop lu-station:grange_hill;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:hainault .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/greenford/northolt> a transport:TransportConnection;
+ rdfs:label "Greenford to Northolt on the Central Line";
+ transport:fromStop lu-station:greenford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:northolt .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/greenford/perivale> a transport:TransportConnection;
+ rdfs:label "Greenford to Perivale on the Central Line";
+ transport:fromStop lu-station:greenford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:perivale .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/hainault/fairlop> a transport:TransportConnection;
+ rdfs:label "Hainault to Fairlop on the Central Line";
+ transport:fromStop lu-station:hainault;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:fairlop .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/hainault/grange_hill> a transport:TransportConnection;
+ rdfs:label "Hainault to Grange Hill on the Central Line";
+ transport:fromStop lu-station:hainault;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:grange_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/hanger_lane/north_acton> a transport:TransportConnection;
+ rdfs:label "Hanger Lane to North Acton on the Central Line";
+ transport:fromStop lu-station:hanger_lane;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:north_acton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/hanger_lane/perivale> a transport:TransportConnection;
+ rdfs:label "Hanger Lane to Perivale on the Central Line";
+ transport:fromStop lu-station:hanger_lane;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:perivale .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/holborn/chancery_lane> a transport:TransportConnection;
+ rdfs:label "Holborn to Chancery Lane on the Central Line";
+ transport:fromStop lu-station:holborn;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:chancery_lane .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/holborn/tottenham_court_road> a transport:TransportConnection;
+ rdfs:label "Holborn to Tottenham Court Road on the Central Line";
+ transport:fromStop lu-station:holborn;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:tottenham_court_road .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/holland_park/notting_hill_gate> a transport:TransportConnection;
+ rdfs:label "Holland Park to Notting Hill Gate on the Central Line";
+ transport:fromStop lu-station:holland_park;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:notting_hill_gate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/holland_park/shepherds_bush_c> a transport:TransportConnection;
+ rdfs:label "Holland Park to Shepherd's Bush (C) on the Central Line";
+ transport:fromStop lu-station:holland_park;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:shepherds_bush_c .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/lancaster_gate/marble_arch> a transport:TransportConnection;
+ rdfs:label "Lancaster Gate to Marble Arch on the Central Line";
+ transport:fromStop lu-station:lancaster_gate;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:marble_arch .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/lancaster_gate/queensway> a transport:TransportConnection;
+ rdfs:label "Lancaster Gate to Queensway on the Central Line";
+ transport:fromStop lu-station:lancaster_gate;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:queensway .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/leyton/leytonstone> a transport:TransportConnection;
+ rdfs:label "Leyton to Leytonstone on the Central Line";
+ transport:fromStop lu-station:leyton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:leytonstone .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/leyton/stratford> a transport:TransportConnection;
+ rdfs:label "Leyton to Stratford on the Central Line";
+ transport:fromStop lu-station:leyton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:stratford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/leytonstone/leyton> a transport:TransportConnection;
+ rdfs:label "Leytonstone to Leyton on the Central Line";
+ transport:fromStop lu-station:leytonstone;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:leyton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/leytonstone/snaresbrook> a transport:TransportConnection;
+ rdfs:label "Leytonstone to Snaresbrook on the Central Line";
+ transport:fromStop lu-station:leytonstone;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:snaresbrook .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/leytonstone/wanstead> a transport:TransportConnection;
+ rdfs:label "Leytonstone to Wanstead on the Central Line";
+ transport:fromStop lu-station:leytonstone;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:wanstead .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/liverpool_street/bank> a transport:TransportConnection;
+ rdfs:label "Liverpool Street to Bank on the Central Line";
+ transport:fromStop lu-station:liverpool_street;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:bank .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/liverpool_street/bethnal_green> a transport:TransportConnection;
+ rdfs:label "Liverpool Street to Bethnal Green on the Central Line";
+ transport:fromStop lu-station:liverpool_street;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:bethnal_green .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/loughton/buckhurst_hill> a transport:TransportConnection;
+ rdfs:label "Loughton to Buckhurst Hill on the Central Line";
+ transport:fromStop lu-station:loughton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:buckhurst_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/loughton/debden> a transport:TransportConnection;
+ rdfs:label "Loughton to Debden on the Central Line";
+ transport:fromStop lu-station:loughton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:debden .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/marble_arch/bond_street> a transport:TransportConnection;
+ rdfs:label "Marble Arch to Bond Street on the Central Line";
+ transport:fromStop lu-station:marble_arch;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:bond_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/marble_arch/lancaster_gate> a transport:TransportConnection;
+ rdfs:label "Marble Arch to Lancaster Gate on the Central Line";
+ transport:fromStop lu-station:marble_arch;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:lancaster_gate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/mile_end/bethnal_green> a transport:TransportConnection;
+ rdfs:label "Mile End to Bethnal Green on the Central Line";
+ transport:fromStop lu-station:mile_end;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:bethnal_green .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/mile_end/stratford> a transport:TransportConnection;
+ rdfs:label "Mile End to Stratford on the Central Line";
+ transport:fromStop lu-station:mile_end;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:stratford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/newbury_park/barkingside> a transport:TransportConnection;
+ rdfs:label "Newbury Park to Barkingside on the Central Line";
+ transport:fromStop lu-station:newbury_park;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:barkingside .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/newbury_park/gants_hill> a transport:TransportConnection;
+ rdfs:label "Newbury Park to Gants Hill on the Central Line";
+ transport:fromStop lu-station:newbury_park;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:gants_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/north_acton/east_acton> a transport:TransportConnection;
+ rdfs:label "North Acton to East Acton on the Central Line";
+ transport:fromStop lu-station:north_acton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:east_acton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/north_acton/hanger_lane> a transport:TransportConnection;
+ rdfs:label "North Acton to Hanger Lane on the Central Line";
+ transport:fromStop lu-station:north_acton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:hanger_lane .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/north_acton/west_acton> a transport:TransportConnection;
+ rdfs:label "North Acton to West Acton on the Central Line";
+ transport:fromStop lu-station:north_acton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:west_acton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/northolt/greenford> a transport:TransportConnection;
+ rdfs:label "Northolt to Greenford on the Central Line";
+ transport:fromStop lu-station:northolt;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:greenford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/northolt/south_ruislip> a transport:TransportConnection;
+ rdfs:label "Northolt to South Ruislip on the Central Line";
+ transport:fromStop lu-station:northolt;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:south_ruislip .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/notting_hill_gate/holland_park> a transport:TransportConnection;
+ rdfs:label "Notting Hill Gate to Holland Park on the Central Line";
+ transport:fromStop lu-station:notting_hill_gate;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:holland_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/notting_hill_gate/queensway> a transport:TransportConnection;
+ rdfs:label "Notting Hill Gate to Queensway on the Central Line";
+ transport:fromStop lu-station:notting_hill_gate;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:queensway .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/oxford_circus/bond_street> a transport:TransportConnection;
+ rdfs:label "Oxford Circus to Bond Street on the Central Line";
+ transport:fromStop lu-station:oxford_circus;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:bond_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/oxford_circus/tottenham_court_road> a transport:TransportConnection;
+ rdfs:label "Oxford Circus to Tottenham Court Road on the Central Line";
+ transport:fromStop lu-station:oxford_circus;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:tottenham_court_road .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/perivale/greenford> a transport:TransportConnection;
+ rdfs:label "Perivale to Greenford on the Central Line";
+ transport:fromStop lu-station:perivale;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:greenford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/perivale/hanger_lane> a transport:TransportConnection;
+ rdfs:label "Perivale to Hanger Lane on the Central Line";
+ transport:fromStop lu-station:perivale;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:hanger_lane .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/queensway/lancaster_gate> a transport:TransportConnection;
+ rdfs:label "Queensway to Lancaster Gate on the Central Line";
+ transport:fromStop lu-station:queensway;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:lancaster_gate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/queensway/notting_hill_gate> a transport:TransportConnection;
+ rdfs:label "Queensway to Notting Hill Gate on the Central Line";
+ transport:fromStop lu-station:queensway;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:notting_hill_gate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/redbridge/gants_hill> a transport:TransportConnection;
+ rdfs:label "Redbridge to Gants Hill on the Central Line";
+ transport:fromStop lu-station:redbridge;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:gants_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/redbridge/wanstead> a transport:TransportConnection;
+ rdfs:label "Redbridge to Wanstead on the Central Line";
+ transport:fromStop lu-station:redbridge;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:wanstead .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/roding_valley/chigwell> a transport:TransportConnection;
+ rdfs:label "Roding Valley to Chigwell on the Central Line";
+ transport:fromStop lu-station:roding_valley;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:chigwell .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/roding_valley/woodford> a transport:TransportConnection;
+ rdfs:label "Roding Valley to Woodford on the Central Line";
+ transport:fromStop lu-station:roding_valley;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:woodford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/ruislip_gardens/south_ruislip> a transport:TransportConnection;
+ rdfs:label "Ruislip Gardens to South Ruislip on the Central Line";
+ transport:fromStop lu-station:ruislip_gardens;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:south_ruislip .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/ruislip_gardens/west_ruislip> a transport:TransportConnection;
+ rdfs:label "Ruislip Gardens to West Ruislip on the Central Line";
+ transport:fromStop lu-station:ruislip_gardens;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:west_ruislip .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/shepherds_bush_c/holland_park> a transport:TransportConnection;
+ rdfs:label "Shepherd's Bush (C) to Holland Park on the Central Line";
+ transport:fromStop lu-station:shepherds_bush_c;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:holland_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/shepherds_bush_c/white_city> a transport:TransportConnection;
+ rdfs:label "Shepherd's Bush (C) to White City on the Central Line";
+ transport:fromStop lu-station:shepherds_bush_c;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:white_city .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/snaresbrook/leytonstone> a transport:TransportConnection;
+ rdfs:label "Snaresbrook to Leytonstone on the Central Line";
+ transport:fromStop lu-station:snaresbrook;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:leytonstone .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/snaresbrook/south_woodford> a transport:TransportConnection;
+ rdfs:label "Snaresbrook to South Woodford on the Central Line";
+ transport:fromStop lu-station:snaresbrook;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:south_woodford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/south_ruislip/northolt> a transport:TransportConnection;
+ rdfs:label "South Ruislip to Northolt on the Central Line";
+ transport:fromStop lu-station:south_ruislip;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:northolt .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/south_ruislip/ruislip_gardens> a transport:TransportConnection;
+ rdfs:label "South Ruislip to Ruislip Gardens on the Central Line";
+ transport:fromStop lu-station:south_ruislip;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:ruislip_gardens .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/south_woodford/snaresbrook> a transport:TransportConnection;
+ rdfs:label "South Woodford to Snaresbrook on the Central Line";
+ transport:fromStop lu-station:south_woodford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:snaresbrook .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/south_woodford/woodford> a transport:TransportConnection;
+ rdfs:label "South Woodford to Woodford on the Central Line";
+ transport:fromStop lu-station:south_woodford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:woodford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/st_pauls/bank> a transport:TransportConnection;
+ rdfs:label "St. Paul's to Bank on the Central Line";
+ transport:fromStop lu-station:st_pauls;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:bank .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/st_pauls/chancery_lane> a transport:TransportConnection;
+ rdfs:label "St. Paul's to Chancery Lane on the Central Line";
+ transport:fromStop lu-station:st_pauls;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:chancery_lane .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/stratford/leyton> a transport:TransportConnection;
+ rdfs:label "Stratford to Leyton on the Central Line";
+ transport:fromStop lu-station:stratford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:leyton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/stratford/mile_end> a transport:TransportConnection;
+ rdfs:label "Stratford to Mile End on the Central Line";
+ transport:fromStop lu-station:stratford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:mile_end .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/theydon_bois/debden> a transport:TransportConnection;
+ rdfs:label "Theydon Bois to Debden on the Central Line";
+ transport:fromStop lu-station:theydon_bois;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:debden .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/theydon_bois/epping> a transport:TransportConnection;
+ rdfs:label "Theydon Bois to Epping on the Central Line";
+ transport:fromStop lu-station:theydon_bois;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:epping .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/tottenham_court_road/holborn> a transport:TransportConnection;
+ rdfs:label "Tottenham Court Road to Holborn on the Central Line";
+ transport:fromStop lu-station:tottenham_court_road;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:holborn .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/tottenham_court_road/oxford_circus> a transport:TransportConnection;
+ rdfs:label "Tottenham Court Road to Oxford Circus on the Central Line";
+ transport:fromStop lu-station:tottenham_court_road;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:oxford_circus .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/wanstead/leytonstone> a transport:TransportConnection;
+ rdfs:label "Wanstead to Leytonstone on the Central Line";
+ transport:fromStop lu-station:wanstead;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:leytonstone .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/wanstead/redbridge> a transport:TransportConnection;
+ rdfs:label "Wanstead to Redbridge on the Central Line";
+ transport:fromStop lu-station:wanstead;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:redbridge .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/west_acton/ealing_broadway> a transport:TransportConnection;
+ rdfs:label "West Acton to Ealing Broadway on the Central Line";
+ transport:fromStop lu-station:west_acton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:ealing_broadway .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/west_acton/north_acton> a transport:TransportConnection;
+ rdfs:label "West Acton to North Acton on the Central Line";
+ transport:fromStop lu-station:west_acton;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:north_acton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/west_ruislip/ruislip_gardens> a transport:TransportConnection;
+ rdfs:label "West Ruislip to Ruislip Gardens on the Central Line";
+ transport:fromStop lu-station:west_ruislip;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:ruislip_gardens .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/white_city/east_acton> a transport:TransportConnection;
+ rdfs:label "White City to East Acton on the Central Line";
+ transport:fromStop lu-station:white_city;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:east_acton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/white_city/shepherds_bush_c> a transport:TransportConnection;
+ rdfs:label "White City to Shepherd's Bush (C) on the Central Line";
+ transport:fromStop lu-station:white_city;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:shepherds_bush_c .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/woodford/buckhurst_hill> a transport:TransportConnection;
+ rdfs:label "Woodford to Buckhurst Hill on the Central Line";
+ transport:fromStop lu-station:woodford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:buckhurst_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/woodford/roding_valley> a transport:TransportConnection;
+ rdfs:label "Woodford to Roding Valley on the Central Line";
+ transport:fromStop lu-station:woodford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:roding_valley .
+
+<http://training.epimorphics.com/transport/london-underground/connection/central_line/woodford/south_woodford> a transport:TransportConnection;
+ rdfs:label "Woodford to South Woodford on the Central Line";
+ transport:fromStop lu-station:woodford;
+ transport:onLine lu-line:central_line;
+ transport:toStop lu-station:south_woodford .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/aldgate/liverpool_street> a transport:TransportConnection;
+ rdfs:label "Aldgate to Liverpool Street on the Circle Line";
+ transport:fromStop lu-station:aldgate;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:liverpool_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/aldgate/tower_hill> a transport:TransportConnection;
+ rdfs:label "Aldgate to Tower Hill on the Circle Line";
+ transport:fromStop lu-station:aldgate;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:tower_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/baker_street/edgware_road_c> a transport:TransportConnection;
+ rdfs:label "Baker Street to Edgware Road (C) on the Circle Line";
+ transport:fromStop lu-station:baker_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:edgware_road_c .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/baker_street/great_portland_street> a transport:TransportConnection;
+ rdfs:label "Baker Street to Great Portland Street on the Circle Line";
+ transport:fromStop lu-station:baker_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:great_portland_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/barbican/farringdon> a transport:TransportConnection;
+ rdfs:label "Barbican to Farringdon on the Circle Line";
+ transport:fromStop lu-station:barbican;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:farringdon .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/barbican/moorgate> a transport:TransportConnection;
+ rdfs:label "Barbican to Moorgate on the Circle Line";
+ transport:fromStop lu-station:barbican;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:moorgate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/bayswater/notting_hill_gate> a transport:TransportConnection;
+ rdfs:label "Bayswater to Notting Hill Gate on the Circle Line";
+ transport:fromStop lu-station:bayswater;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:notting_hill_gate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/bayswater/paddington> a transport:TransportConnection;
+ rdfs:label "Bayswater to Paddington on the Circle Line";
+ transport:fromStop lu-station:bayswater;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:paddington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/blackfriars/mansion_house> a transport:TransportConnection;
+ rdfs:label "Blackfriars to Mansion House on the Circle Line";
+ transport:fromStop lu-station:blackfriars;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:mansion_house .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/blackfriars/temple> a transport:TransportConnection;
+ rdfs:label "Blackfriars to Temple on the Circle Line";
+ transport:fromStop lu-station:blackfriars;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:temple .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/cannon_street/mansion_house> a transport:TransportConnection;
+ rdfs:label "Cannon Street to Mansion House on the Circle Line";
+ transport:fromStop lu-station:cannon_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:mansion_house .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/cannon_street/monument> a transport:TransportConnection;
+ rdfs:label "Cannon Street to Monument on the Circle Line";
+ transport:fromStop lu-station:cannon_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:monument .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/edgware_road_c/baker_street> a transport:TransportConnection;
+ rdfs:label "Edgware Road (C) to Baker Street on the Circle Line";
+ transport:fromStop lu-station:edgware_road_c;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:baker_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/edgware_road_c/paddington> a transport:TransportConnection;
+ rdfs:label "Edgware Road (C) to Paddington on the Circle Line";
+ transport:fromStop lu-station:edgware_road_c;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:paddington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/embankment/temple> a transport:TransportConnection;
+ rdfs:label "Embankment to Temple on the Circle Line";
+ transport:fromStop lu-station:embankment;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:temple .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/embankment/westminster> a transport:TransportConnection;
+ rdfs:label "Embankment to Westminster on the Circle Line";
+ transport:fromStop lu-station:embankment;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:westminster .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/euston_square/great_portland_street> a transport:TransportConnection;
+ rdfs:label "Euston Square to Great Portland Street on the Circle Line";
+ transport:fromStop lu-station:euston_square;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:great_portland_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/euston_square/kings_cross_st_pancras> a transport:TransportConnection;
+ rdfs:label "Euston Square to King's Cross St. Pancras on the Circle Line";
+ transport:fromStop lu-station:euston_square;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:kings_cross_st_pancras .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/farringdon/barbican> a transport:TransportConnection;
+ rdfs:label "Farringdon to Barbican on the Circle Line";
+ transport:fromStop lu-station:farringdon;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:barbican .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/farringdon/kings_cross_st_pancras> a transport:TransportConnection;
+ rdfs:label "Farringdon to King's Cross St. Pancras on the Circle Line";
+ transport:fromStop lu-station:farringdon;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:kings_cross_st_pancras .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/gloucester_road/high_street_kensington> a transport:TransportConnection;
+ rdfs:label "Gloucester Road to High Street Kensington on the Circle Line";
+ transport:fromStop lu-station:gloucester_road;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:high_street_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/gloucester_road/south_kensington> a transport:TransportConnection;
+ rdfs:label "Gloucester Road to South Kensington on the Circle Line";
+ transport:fromStop lu-station:gloucester_road;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:south_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/great_portland_street/baker_street> a transport:TransportConnection;
+ rdfs:label "Great Portland Street to Baker Street on the Circle Line";
+ transport:fromStop lu-station:great_portland_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:baker_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/great_portland_street/euston_square> a transport:TransportConnection;
+ rdfs:label "Great Portland Street to Euston Square on the Circle Line";
+ transport:fromStop lu-station:great_portland_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:euston_square .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/high_street_kensington/gloucester_road> a transport:TransportConnection;
+ rdfs:label "High Street Kensington to Gloucester Road on the Circle Line";
+ transport:fromStop lu-station:high_street_kensington;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:gloucester_road .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/high_street_kensington/notting_hill_gate> a transport:TransportConnection;
+ rdfs:label "High Street Kensington to Notting Hill Gate on the Circle Line";
+ transport:fromStop lu-station:high_street_kensington;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:notting_hill_gate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/kings_cross_st_pancras/euston_square> a transport:TransportConnection;
+ rdfs:label "King's Cross St. Pancras to Euston Square on the Circle Line";
+ transport:fromStop lu-station:kings_cross_st_pancras;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:euston_square .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/kings_cross_st_pancras/farringdon> a transport:TransportConnection;
+ rdfs:label "King's Cross St. Pancras to Farringdon on the Circle Line";
+ transport:fromStop lu-station:kings_cross_st_pancras;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:farringdon .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/liverpool_street/aldgate> a transport:TransportConnection;
+ rdfs:label "Liverpool Street to Aldgate on the Circle Line";
+ transport:fromStop lu-station:liverpool_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:aldgate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/liverpool_street/moorgate> a transport:TransportConnection;
+ rdfs:label "Liverpool Street to Moorgate on the Circle Line";
+ transport:fromStop lu-station:liverpool_street;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:moorgate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/mansion_house/blackfriars> a transport:TransportConnection;
+ rdfs:label "Mansion House to Blackfriars on the Circle Line";
+ transport:fromStop lu-station:mansion_house;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:blackfriars .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/mansion_house/cannon_street> a transport:TransportConnection;
+ rdfs:label "Mansion House to Cannon Street on the Circle Line";
+ transport:fromStop lu-station:mansion_house;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:cannon_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/monument/cannon_street> a transport:TransportConnection;
+ rdfs:label "Monument to Cannon Street on the Circle Line";
+ transport:fromStop lu-station:monument;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:cannon_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/monument/tower_hill> a transport:TransportConnection;
+ rdfs:label "Monument to Tower Hill on the Circle Line";
+ transport:fromStop lu-station:monument;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:tower_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/moorgate/barbican> a transport:TransportConnection;
+ rdfs:label "Moorgate to Barbican on the Circle Line";
+ transport:fromStop lu-station:moorgate;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:barbican .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/moorgate/liverpool_street> a transport:TransportConnection;
+ rdfs:label "Moorgate to Liverpool Street on the Circle Line";
+ transport:fromStop lu-station:moorgate;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:liverpool_street .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/notting_hill_gate/bayswater> a transport:TransportConnection;
+ rdfs:label "Notting Hill Gate to Bayswater on the Circle Line";
+ transport:fromStop lu-station:notting_hill_gate;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:bayswater .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/notting_hill_gate/high_street_kensington> a transport:TransportConnection;
+ rdfs:label "Notting Hill Gate to High Street Kensington on the Circle Line";
+ transport:fromStop lu-station:notting_hill_gate;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:high_street_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/paddington/bayswater> a transport:TransportConnection;
+ rdfs:label "Paddington to Bayswater on the Circle Line";
+ transport:fromStop lu-station:paddington;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:bayswater .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/paddington/edgware_road_c> a transport:TransportConnection;
+ rdfs:label "Paddington to Edgware Road (C) on the Circle Line";
+ transport:fromStop lu-station:paddington;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:edgware_road_c .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/sloane_square/south_kensington> a transport:TransportConnection;
+ rdfs:label "Sloane Square to South Kensington on the Circle Line";
+ transport:fromStop lu-station:sloane_square;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:south_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/sloane_square/victoria> a transport:TransportConnection;
+ rdfs:label "Sloane Square to Victoria on the Circle Line";
+ transport:fromStop lu-station:sloane_square;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:victoria .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/south_kensington/gloucester_road> a transport:TransportConnection;
+ rdfs:label "South Kensington to Gloucester Road on the Circle Line";
+ transport:fromStop lu-station:south_kensington;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:gloucester_road .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/south_kensington/sloane_square> a transport:TransportConnection;
+ rdfs:label "South Kensington to Sloane Square on the Circle Line";
+ transport:fromStop lu-station:south_kensington;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:sloane_square .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/st_jamess_park/victoria> a transport:TransportConnection;
+ rdfs:label "St. James's Park to Victoria on the Circle Line";
+ transport:fromStop lu-station:st_jamess_park;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:victoria .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/st_jamess_park/westminster> a transport:TransportConnection;
+ rdfs:label "St. James's Park to Westminster on the Circle Line";
+ transport:fromStop lu-station:st_jamess_park;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:westminster .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/temple/blackfriars> a transport:TransportConnection;
+ rdfs:label "Temple to Blackfriars on the Circle Line";
+ transport:fromStop lu-station:temple;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:blackfriars .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/temple/embankment> a transport:TransportConnection;
+ rdfs:label "Temple to Embankment on the Circle Line";
+ transport:fromStop lu-station:temple;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:embankment .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/tower_hill/aldgate> a transport:TransportConnection;
+ rdfs:label "Tower Hill to Aldgate on the Circle Line";
+ transport:fromStop lu-station:tower_hill;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:aldgate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/tower_hill/monument> a transport:TransportConnection;
+ rdfs:label "Tower Hill to Monument on the Circle Line";
+ transport:fromStop lu-station:tower_hill;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:monument .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/victoria/sloane_square> a transport:TransportConnection;
+ rdfs:label "Victoria to Sloane Square on the Circle Line";
+ transport:fromStop lu-station:victoria;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:sloane_square .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/victoria/st_jamess_park> a transport:TransportConnection;
+ rdfs:label "Victoria to St. James's Park on the Circle Line";
+ transport:fromStop lu-station:victoria;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:st_jamess_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/westminster/embankment> a transport:TransportConnection;
+ rdfs:label "Westminster to Embankment on the Circle Line";
+ transport:fromStop lu-station:westminster;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:embankment .
+
+<http://training.epimorphics.com/transport/london-underground/connection/circle_line/westminster/st_jamess_park> a transport:TransportConnection;
+ rdfs:label "Westminster to St. James's Park on the Circle Line";
+ transport:fromStop lu-station:westminster;
+ transport:onLine lu-line:circle_line;
+ transport:toStop lu-station:st_jamess_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/acton_town/chiswick_park> a transport:TransportConnection;
+ rdfs:label "Acton Town to Chiswick Park on the District Line";
+ transport:fromStop lu-station:acton_town;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:chiswick_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/acton_town/ealing_common> a transport:TransportConnection;
+ rdfs:label "Acton Town to Ealing Common on the District Line";
+ transport:fromStop lu-station:acton_town;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:ealing_common .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/aldgate_east/tower_hill> a transport:TransportConnection;
+ rdfs:label "Aldgate East to Tower Hill on the District Line";
+ transport:fromStop lu-station:aldgate_east;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:tower_hill .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/aldgate_east/whitechapel> a transport:TransportConnection;
+ rdfs:label "Aldgate East to Whitechapel on the District Line";
+ transport:fromStop lu-station:aldgate_east;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:whitechapel .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/barking/east_ham> a transport:TransportConnection;
+ rdfs:label "Barking to East Ham on the District Line";
+ transport:fromStop lu-station:barking;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:east_ham .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/barking/upney> a transport:TransportConnection;
+ rdfs:label "Barking to Upney on the District Line";
+ transport:fromStop lu-station:barking;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:upney .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/barons_court/hammersmith> a transport:TransportConnection;
+ rdfs:label "Barons Court to Hammersmith on the District Line";
+ transport:fromStop lu-station:barons_court;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:hammersmith .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/barons_court/west_kensington> a transport:TransportConnection;
+ rdfs:label "Barons Court to West Kensington on the District Line";
+ transport:fromStop lu-station:barons_court;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:west_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/bayswater/notting_hill_gate> a transport:TransportConnection;
+ rdfs:label "Bayswater to Notting Hill Gate on the District Line";
+ transport:fromStop lu-station:bayswater;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:notting_hill_gate .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/bayswater/paddington> a transport:TransportConnection;
+ rdfs:label "Bayswater to Paddington on the District Line";
+ transport:fromStop lu-station:bayswater;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:paddington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/becontree/dagenham_heathway> a transport:TransportConnection;
+ rdfs:label "Becontree to Dagenham Heathway on the District Line";
+ transport:fromStop lu-station:becontree;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:dagenham_heathway .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/becontree/upney> a transport:TransportConnection;
+ rdfs:label "Becontree to Upney on the District Line";
+ transport:fromStop lu-station:becontree;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:upney .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/blackfriars/mansion_house> a transport:TransportConnection;
+ rdfs:label "Blackfriars to Mansion House on the District Line";
+ transport:fromStop lu-station:blackfriars;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:mansion_house .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/blackfriars/temple> a transport:TransportConnection;
+ rdfs:label "Blackfriars to Temple on the District Line";
+ transport:fromStop lu-station:blackfriars;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:temple .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/bow_road/bromleybybow> a transport:TransportConnection;
+ rdfs:label "Bow Road to Bromley-By-Bow on the District Line";
+ transport:fromStop lu-station:bow_road;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:bromleybybow .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/bow_road/mile_end> a transport:TransportConnection;
+ rdfs:label "Bow Road to Mile End on the District Line";
+ transport:fromStop lu-station:bow_road;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:mile_end .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/bromleybybow/bow_road> a transport:TransportConnection;
+ rdfs:label "Bromley-By-Bow to Bow Road on the District Line";
+ transport:fromStop lu-station:bromleybybow;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:bow_road .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/bromleybybow/west_ham> a transport:TransportConnection;
+ rdfs:label "Bromley-By-Bow to West Ham on the District Line";
+ transport:fromStop lu-station:bromleybybow;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:west_ham .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/cannon_street/mansion_house> a transport:TransportConnection;
+ rdfs:label "Cannon Street to Mansion House on the District Line";
+ transport:fromStop lu-station:cannon_street;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:mansion_house .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/cannon_street/monument> a transport:TransportConnection;
+ rdfs:label "Cannon Street to Monument on the District Line";
+ transport:fromStop lu-station:cannon_street;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:monument .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/chiswick_park/acton_town> a transport:TransportConnection;
+ rdfs:label "Chiswick Park to Acton Town on the District Line";
+ transport:fromStop lu-station:chiswick_park;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:acton_town .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/chiswick_park/turnham_green> a transport:TransportConnection;
+ rdfs:label "Chiswick Park to Turnham Green on the District Line";
+ transport:fromStop lu-station:chiswick_park;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:turnham_green .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/dagenham_east/dagenham_heathway> a transport:TransportConnection;
+ rdfs:label "Dagenham East to Dagenham Heathway on the District Line";
+ transport:fromStop lu-station:dagenham_east;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:dagenham_heathway .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/dagenham_east/elm_park> a transport:TransportConnection;
+ rdfs:label "Dagenham East to Elm Park on the District Line";
+ transport:fromStop lu-station:dagenham_east;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:elm_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/dagenham_heathway/becontree> a transport:TransportConnection;
+ rdfs:label "Dagenham Heathway to Becontree on the District Line";
+ transport:fromStop lu-station:dagenham_heathway;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:becontree .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/dagenham_heathway/dagenham_east> a transport:TransportConnection;
+ rdfs:label "Dagenham Heathway to Dagenham East on the District Line";
+ transport:fromStop lu-station:dagenham_heathway;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:dagenham_east .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/ealing_broadway/ealing_common> a transport:TransportConnection;
+ rdfs:label "Ealing Broadway to Ealing Common on the District Line";
+ transport:fromStop lu-station:ealing_broadway;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:ealing_common .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/ealing_common/acton_town> a transport:TransportConnection;
+ rdfs:label "Ealing Common to Acton Town on the District Line";
+ transport:fromStop lu-station:ealing_common;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:acton_town .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/ealing_common/ealing_broadway> a transport:TransportConnection;
+ rdfs:label "Ealing Common to Ealing Broadway on the District Line";
+ transport:fromStop lu-station:ealing_common;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:ealing_broadway .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/earls_court/gloucester_road> a transport:TransportConnection;
+ rdfs:label "Earl's Court to Gloucester Road on the District Line";
+ transport:fromStop lu-station:earls_court;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:gloucester_road .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/earls_court/high_street_kensington> a transport:TransportConnection;
+ rdfs:label "Earl's Court to High Street Kensington on the District Line";
+ transport:fromStop lu-station:earls_court;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:high_street_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/earls_court/kensington_olympia> a transport:TransportConnection;
+ rdfs:label "Earl's Court to Kensington (Olympia) on the District Line";
+ transport:fromStop lu-station:earls_court;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:kensington_olympia .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/earls_court/west_brompton> a transport:TransportConnection;
+ rdfs:label "Earl's Court to West Brompton on the District Line";
+ transport:fromStop lu-station:earls_court;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:west_brompton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/earls_court/west_kensington> a transport:TransportConnection;
+ rdfs:label "Earl's Court to West Kensington on the District Line";
+ transport:fromStop lu-station:earls_court;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:west_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/east_ham/barking> a transport:TransportConnection;
+ rdfs:label "East Ham to Barking on the District Line";
+ transport:fromStop lu-station:east_ham;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:barking .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/east_ham/upton_park> a transport:TransportConnection;
+ rdfs:label "East Ham to Upton Park on the District Line";
+ transport:fromStop lu-station:east_ham;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:upton_park .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/east_putney/putney_bridge> a transport:TransportConnection;
+ rdfs:label "East Putney to Putney Bridge on the District Line";
+ transport:fromStop lu-station:east_putney;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:putney_bridge .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/east_putney/southfields> a transport:TransportConnection;
+ rdfs:label "East Putney to Southfields on the District Line";
+ transport:fromStop lu-station:east_putney;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:southfields .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/edgware_road_c/paddington> a transport:TransportConnection;
+ rdfs:label "Edgware Road (C) to Paddington on the District Line";
+ transport:fromStop lu-station:edgware_road_c;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:paddington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/elm_park/dagenham_east> a transport:TransportConnection;
+ rdfs:label "Elm Park to Dagenham East on the District Line";
+ transport:fromStop lu-station:elm_park;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:dagenham_east .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/elm_park/hornchurch> a transport:TransportConnection;
+ rdfs:label "Elm Park to Hornchurch on the District Line";
+ transport:fromStop lu-station:elm_park;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:hornchurch .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/embankment/temple> a transport:TransportConnection;
+ rdfs:label "Embankment to Temple on the District Line";
+ transport:fromStop lu-station:embankment;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:temple .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/embankment/westminster> a transport:TransportConnection;
+ rdfs:label "Embankment to Westminster on the District Line";
+ transport:fromStop lu-station:embankment;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:westminster .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/fulham_broadway/parsons_green> a transport:TransportConnection;
+ rdfs:label "Fulham Broadway to Parsons Green on the District Line";
+ transport:fromStop lu-station:fulham_broadway;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:parsons_green .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/fulham_broadway/west_brompton> a transport:TransportConnection;
+ rdfs:label "Fulham Broadway to West Brompton on the District Line";
+ transport:fromStop lu-station:fulham_broadway;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:west_brompton .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/gloucester_road/earls_court> a transport:TransportConnection;
+ rdfs:label "Gloucester Road to Earl's Court on the District Line";
+ transport:fromStop lu-station:gloucester_road;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:earls_court .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/gloucester_road/south_kensington> a transport:TransportConnection;
+ rdfs:label "Gloucester Road to South Kensington on the District Line";
+ transport:fromStop lu-station:gloucester_road;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:south_kensington .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/gunnersbury/kew_gardens> a transport:TransportConnection;
+ rdfs:label "Gunnersbury to Kew Gardens on the District Line";
+ transport:fromStop lu-station:gunnersbury;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:kew_gardens .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/gunnersbury/turnham_green> a transport:TransportConnection;
+ rdfs:label "Gunnersbury to Turnham Green on the District Line";
+ transport:fromStop lu-station:gunnersbury;
+ transport:onLine lu-line:district_line;
+ transport:toStop lu-station:turnham_green .
+
+<http://training.epimorphics.com/transport/london-underground/connection/district_line/hammersmith/barons_court> a transport:TransportConnection;
+ rdfs:label "Hammersmith to Barons Court on the District Line";
+ transport:fromStop lu-station:hammersmith;
+ transport:onLine lu-li
<TRUNCATED>