/FlintSparqlEditor

Flint SPARQL editor

Primary LanguageJavaScriptMIT LicenseMIT

==============================
Flint SPARQL Editor v0.5
==============================

Released 23 June 2011

http://openuplabs.tso.co.uk/demos/sparqleditor

Bug reports/discussion at 

https://groups.google.com/group/flint-sparql-editor

Created by TSO - www.tso.co.uk

You can contact the developers on the Flint Google Group or at flintsparqleditor@tso.co.uk.  If you are deploying Flint on your site, please let us know and we'll keep you informed of new releases.


Installation instructions
---------------------------------

Flint can be used locally or on a website.

To install Flint simply unzip all of the files in the download file into a folder, maintaining the structure of the download ZIP.

If the installation is local you can 'run' Flint by opening sparqleditor.html in your browser.

To use within a web page you need to reference the necessary files. This can be done by including the following lines in your web page:

<script type="text/javascript" src="sparql/jquery-1.5.2.min.js">//</script>
<script type="text/javascript" src="sparql/lib/codemirror.js">//</script>
<script type="text/javascript" src="sparql/sparqlmode_ll1.js">//</script>
<script type="text/javascript" src="sparql/flint-editor.js">//</script>
<link rel="stylesheet" href="sparql/lib/codemirror.css"/>
<link rel="stylesheet" href="sparql/css/sparqlcolors.css"/>
<link rel="stylesheet" href="sparql/css/docs.css"/>

To create an instance of Flint in a web page you will need to use Javascript to create a FlintEditor object, passing in the relevant parameters. An example if given below:

var flintEd = new FlintEditor("flint-test", "sparql/images", flintConfig);

The parameters are: 

The id of a container element (e.g. a <div> element) in which Flint will be created
The relative path of the images for Flint. By default this will use the supplied images
A Flint configuration object. You can simply look at init-local.js as an example of how to do it or follow the instructions below.


Flint Configuration
--------------------------

Flint is configured using a JSON array. An example file is given below:

	var flintConfig = {
		"interface": {
			"toolbar": true,
			"menu": true
		},
		"namespaces": [
			{"name": "Friend of a friend", "prefix": "foaf", "uri": "http://xmlns.com/foaf/0.1/"},
		],
		"defaultEndpointParameters": {
			"queryParameters": {
				"format": "output",
				"query": "query"
			},
			"selectFormats": [
				{"name": "Plain text", "format": "text", "type": "text/plain"},
				{"name": "SPARQL-XML", "format": "sparql", "type": "application/sparql-results+xml"},
				{"name": "JSON", "format": "json", "type": "application/sparql-results+json"}
			],
			"constructFormats": [
				{"name": "Plain text", "format": "text", "type": "text/plain"},
				{"name": "RDF/XML", "format": "rdfxml", "type": "application/rdf+xml"},
				{"name": "Turtle", "format": "turtle", "type": "application/turtle"}
			]
		},
		"endpoints": [	
			{"name": "Legislation",
				"uri": "http://gov.tso.co.uk/legislation/sparql",
				queries: [
					{"name": "Sample Legislation Query 1", "description": "Select up to 100 pieces of legislation after a given date, with most recent first.", "query": sampleQuery1},
					{"name": "Sample Legislation Query 2", "description": "The RDF description of each piece of legislation is stored in a separate named graph, so all of the RDF for the item can be retrieved with the following query.", "query": sampleQuery2}
				]
			}
		}

interface:
This defines whether certain aspects of the UI should be visible or not. The options are:

toolbar
menu

The permissible values are true or false

namespaces:
This defines the namespaces that the application 'knows' about. This should be an array of namespaces. Each namespace should define the following:

	name					UI name
	prefix					A prefix for the application to use for the namespace
	uri						The URI of the namespace

defaultEndpointParameters:
These are default values to use for endpoints. In future versions these will be customisable at the endpoint level

queryParameters
Details about the query parameter settings. This should define:

	format					The query parameter name for the format to return. Note this is not currently used
	query					They query parameter that will carry the SPARQL
	
selectFormats
This should be an array of possible formats that can be returned for SELECT queries. Each format should define:

	name					UI name
	format					query parameter value. Note this is not currently used
	type						The MIME type of the format. This is used in the request and assumes that an endpoint correctly performs content negotiation

constructFormats
This should be an array of possible formats that can be returned for CONSTRUCT queries. Each format should define:

	name					UI name
	format					query parameter value. Note this is not currently used
	type						The MIME type of the format. This is used in the request and assumes that an endpoint correctly performs content negotiation

endpoints
This defines a list of pre-defined endpoints that will appear in the UI. Each endpoint should define:

	name					UI name
	uri						The URI of the endpoint
	queries					An array of sample queries for this endpoint (optional). Each of these queries should define:
	
		name				UI name of query
		description		A description of the what the query does
		query				The actual query. (Note you will need to do some tricky escaping, which is why in init-local.js they are defined using variables)