RDF-Endpoint-0.07/ 000755 000765 000024 00000000000 12370000071 013706 5 ustar 00greg staff 000000 000000 RDF-Endpoint-0.07/Changes 000644 000765 000024 00000000000 12370000053 015167 0 ustar 00greg staff 000000 000000 RDF-Endpoint-0.07/Changes.ttl 000644 000765 000024 00000015771 12367777777 016066 0 ustar 00greg staff 000000 000000 # -*-n3-*-
@prefix dc: .
@prefix dcterms: .
@prefix foaf: .
@prefix doap: .
@prefix xsd: .
@prefix asc: .
@prefix my: .
<>
dc:title "Changes" ;
dc:description "Changes for RDF::Endpoint" ;
dc:subject my:project ;
.
dcterms:isVersionOf my:project ;
doap:Version [
doap:revision "0.07" ;
doap:created "2014-08-04" ;
] ;
asc:changes [
asc:addition "Added Plack::App::RDF::Endpoint." ;
asc:update "Updated RDF::Endpoint to quote raw-value ETag values (github issue #106)." ;
asc:update "Use base64 encoding of tags to get shorter strings (patch from Kjetil Kjernsmo)." ;
asc:update "Updated endpoint.psgi to look for PERLRDF_STORE environment variable." ;
] ;
.
dcterms:isVersionOf my:project ;
doap:Version [
doap:revision "0.06" ;
doap:created "2014-07-01" ;
] ;
asc:changes [
asc:addition "Add Server header (from Kjetil Kjernsmo via github pull request #93)." ;
asc:addition "Added initial support for application/json-problem errors." ;
asc:update "Fixed config bug in t/psgi.t." ;
asc:update "Added SPARQL 1.1 WG protocol tests." ;
asc:update "The load_data and update configuration flags cannot both be true at the same time." ;
asc:update "Updated RDF::Endpoint to return a 400 error when datasets are specified both in protocol and query." ;
asc:update "Made RDF::Endpoint->new die on invalid config (when both load_data and update options are specified)." ;
asc:update "Added Allow header to HTTP 405 responses." ;
] ;
.
dcterms:isVersionOf my:project ;
doap:Version [
doap:revision "0.05" ;
doap:created "2012-05-28" ;
] ;
asc:changes [
asc:addition "Use a default in-memory store if no config file is available." ;
asc:addition "Let RDF_ENDPOINT_FILE env variable override the Config::JFDI default." ;
asc:update "Fixed bug in handling of update requests." ;
asc:update "Improved conformance with SPARQL 1.1 Protocol spec." ;
asc:update "Added use of Plack::Builder and Plack::Middleware::AccessLog in default configuration." ;
asc:update "Improved HTTP error status code messages." ;
asc:update "Added Service Description resultFormat triples for SPARQL XML and JSON Results." ;
asc:update "Renamed Service Description sd:defaultDatasetDescription property to sd:defaultDataset." ;
asc:update "Croak when unable to open file handles" ;
asc:update "Removed custom logging code (should be done with Plack middleware)." ;
asc:update "Require a recent version (0.99) of Plack::Request with support for logging." ;
asc:update "Updated see also link to SPARQL Protocol (1.1)." ;
] ;
.
dcterms:isVersionOf my:project ;
doap:Version [
doap:revision "0.04" ;
doap:created "2011-07-19" ;
] ;
asc:changes [
asc:addition "Added RDFa serialization tests (from KjetilK)." ;
asc:update "Allow the service description default graph to be a URI or a blank node (based on config value)." ;
asc:update "Require RDF::RDFa::Generator 0.102 (fixes RDFa service description serialization bug)." ;
asc:update "Fixed bug introduced by commit 3fb5e48 causing query results to disappear from HTML results page." ;
] ;
.
dcterms:isVersionOf my:project ;
doap:Version [
doap:revision "0.03" ;
doap:created "2011-06-07" ;
] ;
asc:changes [
asc:update "Removed duplicated, hard-coded HTML to allow better customization of HTML (from nichtich)." ;
asc:update "Actually dereference correctly endpoint_path, and make the test use root (from kjetilk)." ;
asc:update "Make endpoint path configurable (from kjetilk)." ;
asc:update "style element must go in head (from kjetilk)." ;
asc:update "Updated service description RDF to use sd:endpoint instead of sd:url (tracking updates in the SD spec)." ;
asc:update "Add merging of namespace hashes (from kjetilk)." ;
asc:update "Replace new_with_string with new and change docs (from kjetilk)." ;
] ;
.
dcterms:isVersionOf my:project ;
doap:Version [
doap:revision "0.02" ;
doap:created "2011-04-16" ;
] ;
asc:changes [
asc:addition "Added ETag support for query results, varying based on Accept and Accept-Encoding headers, and query string." ;
asc:addition "Added support for POSTing queries and updates directly using the appropriate media types." ;
asc:addition "Added CodeMirror files for syntax highlighting SPARQL query form markup." ;
asc:update "Changes to align with SPARQL Protocol 1.1." ;
asc:update "Updated tests to test functionality directly via PSGI." ;
asc:update "Updated content negotiation quality values." ;
asc:update "Moved endpoint-specific configuration variables into top-level 'endpoint' hash." ;
asc:update "Fixed caching bug in which browsers would use cached results across endpoint instantiations." ;
asc:update "Service description is now cached in the RDF::Endpoint object." ;
asc:update "Updated endpoint.psgi to move config parsing and endpoint object construction outside of the request handler." ;
asc:update "Updated RDF::Endpoint to use a persistent model object across run() calls." ;
] ;
.
dcterms:isVersionOf my:project ;
doap:Version [
doap:revision "0.01" ;
doap:created "2010-07-14" ;
] ;
asc:changes [
asc:addition "First release." ;
] ;
.
my:project
a doap:Project ;
doap:name "RDF-Endpoint" ;
doap:shortdesc "A SPARQL Protocol Endpoint implementation"@en ;
doap:programming-language "Perl" ;
doap:homepage ;
doap:download-page ;
doap:bug-database ;
doap:maintainer ;
doap:developer ;
doap:documenter ;
doap:tester ;
doap:created "2010-06-19"^^xsd:date ;
doap:license ;
.
a foaf:Person ;
foaf:name "Gregory Todd Williams" ;
foaf:homepage ;
foaf:page ;
foaf:mbox ;
;
.
RDF-Endpoint-0.07/Changes.xml 000644 000765 000024 00000000571 12370000053 016003 0 ustar 00greg staff 000000 000000
RDF-Endpoint-0.07/inc/ 000755 000765 000024 00000000000 12370000067 014464 5 ustar 00greg staff 000000 000000 RDF-Endpoint-0.07/lib/ 000755 000765 000024 00000000000 12370000067 014461 5 ustar 00greg staff 000000 000000 RDF-Endpoint-0.07/LICENSE 000644 000765 000024 00000005331 11552456153 014736 0 ustar 00greg staff 000000 000000 Except as described below, all contents of this package are
Copyright (c) 2010 Gregory Todd Williams.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
With the exception of the CodeMirror files enumerated below, the files in this
package may also be redistributed and/or modified under the same terms as Perl
itself.
--------------------------------------------------------------------------------
The following license applies to the CodeMirror (Javascript and CSS) files
contained in this package and retrieved from http://codemirror.net/:
share/www/css/docs.css
share/www/css/sparqlcolors.css
share/www/js/codemirror.js
share/www/js/editor.js
share/www/js/highlight.js
share/www/js/mirrorframe.js
share/www/js/parsecss.js
share/www/js/parsedummy.js
share/www/js/parsehtmlmixed.js
share/www/js/parsejavascript.js
share/www/js/parsesparql.js
share/www/js/parsexml.js
share/www/js/select.js
share/www/js/sparql_form.js
share/www/js/stringstream.js
share/www/js/tokenize.js
share/www/js/tokenizejavascript.js
share/www/js/undo.js
share/www/js/unittests.js
share/www/js/util.js
Copyright (c) 2007-2010 Marijn Haverbeke
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
Marijn Haverbeke
marijnh@gmail.com
RDF-Endpoint-0.07/Makefile.PL 000644 000765 000024 00000002251 12354561066 015702 0 ustar 00greg staff 000000 000000 use strict;
use warnings;
use inc::Module::Install;
name 'RDF-Endpoint';
all_from 'lib/RDF/Endpoint.pm';
author 'Gregory Todd Williams ';
license 'zlib';
test_requires 'Test::More' => '0.61';
test_requires 'Test::WWW::Mechanize::PSGI' => 0;
requires 'JSON' => 0;
requires 'Carp' => 0;
requires 'File::ShareDir' => 0;
requires 'RDF::Trine' => 0.134;
requires 'RDF::Query' => 2.905;
requires 'RDF::RDFa::Generator' => 0.102;
requires 'Plack::Request' => 0.99;
requires 'Plack::Response' => 0;
requires 'Plack::Middleware::AccessLog' => 0;
requires 'Data::Dumper' => 0;
requires 'Config::JFDI' => 0;
requires 'HTTP::Negotiate' => 0;
requires 'IO::Compress::Gzip' => 0;
requires 'XML::LibXML' => 1.70;
requires 'HTML::HTML5::Writer' => 0;
requires 'HTML::HTML5::Parser' => 0;
requires 'Hash::Merge::Simple' => 0;
resources(
'homepage' => "http://search.cpan.org/dist/RDF-Endpoint/",
'repository' => "http://github.com/kasei/perlrdf/",
);
write_doap_changes;
write_doap_changes_xml;
install_share;
install_script glob('scripts/*');
sign;
WriteAll;
RDF-Endpoint-0.07/MANIFEST 000644 000765 000024 00000002256 12370000067 015051 0 ustar 00greg staff 000000 000000 README
Changes
Changes.ttl
Changes.xml
inc/Module/Install.pm
inc/Module/Install/Base.pm
inc/Module/Install/Can.pm
inc/Module/Install/DOAPChangeSets.pm
inc/Module/Install/Fetch.pm
inc/Module/Install/Makefile.pm
inc/Module/Install/Metadata.pm
inc/Module/Install/Scripts.pm
inc/Module/Install/Share.pm
inc/Module/Install/Win32.pm
inc/Module/Install/WriteAll.pm
lib/RDF/Endpoint.pm
LICENSE
Makefile.PL
MANIFEST This list of files
META.yml
rdf_endpoint.json
scripts/endpoint.psgi
share/index.html
share/results.html
share/www/favicon.ico
share/www/css/docs.css
share/www/css/sparqlcolors.css
share/www/js/codemirror.js
share/www/js/editor.js
share/www/js/highlight.js
share/www/js/mirrorframe.js
share/www/js/parsecss.js
share/www/js/parsedummy.js
share/www/js/parsehtmlmixed.js
share/www/js/parsejavascript.js
share/www/js/parsesparql.js
share/www/js/parsexml.js
share/www/js/select.js
share/www/js/sparql_form.js
share/www/js/stringstream.js
share/www/js/tokenize.js
share/www/js/tokenizejavascript.js
share/www/js/undo.js
share/www/js/unittests.js
share/www/js/util.js
t/00-load.t
t/pod.t
t/pod_coverage.t
t/psgi.t
SIGNATURE Public-key signature (added by MakeMaker)
RDF-Endpoint-0.07/META.yml 000644 000765 000024 00000002151 12370000053 015156 0 ustar 00greg staff 000000 000000 ---
abstract: 'A SPARQL Protocol Endpoint implementation'
author:
- 'Gregory Todd Williams '
- 'Gregory Todd Williams '
build_requires:
ExtUtils::MakeMaker: 6.59
Test::More: '0.61'
Test::WWW::Mechanize::PSGI: 0
configure_requires:
ExtUtils::MakeMaker: 6.59
distribution_type: module
dynamic_config: 1
generated_by: 'Module::Install version 1.10'
license: zlib
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: RDF-Endpoint
no_index:
directory:
- inc
- share
- t
requires:
Carp: 0
Config::JFDI: 0
Data::Dumper: 0
File::ShareDir: 0
HTML::HTML5::Parser: 0
HTML::HTML5::Writer: 0
HTTP::Negotiate: 0
Hash::Merge::Simple: 0
IO::Compress::Gzip: 0
JSON: 0
Plack::Middleware::AccessLog: 0
Plack::Request: 0.99
Plack::Response: 0
RDF::Query: 2.905
RDF::RDFa::Generator: 0.102
RDF::Trine: 0.134
XML::LibXML: 1.7
perl: 5.8.0
resources:
homepage: http://search.cpan.org/dist/RDF-Endpoint/
license: http://dev.perl.org/licenses/
repository: http://github.com/kasei/perlrdf/
version: '0.07'
RDF-Endpoint-0.07/rdf_endpoint.json 000644 000765 000024 00000002026 12354561066 017276 0 ustar 00greg staff 000000 000000 {
# "store": "Memory",
# "store": "Memory;file:///Users/samofool/foaf.xrdf",
# "store" : "DBI;basic;DBI:SQLite:t/data/basic.db;user;pass",
"store": "DBI;endpoint;DBI:SQLite:dbname=endpoint.sqlite;;",
"endpoint": {
"update": true, # allow SPARQL Update operations
"load_data": false, # allow loading RDF data via SPARQL Protocol or FROM/FROM NAMED clauses
"html": {
"resource_links": true, # turn resources into links in HTML query result pages
"embed_images": false, # display foaf:Images as images in HTML query result pages
"image_width": 200, # with 'embed_images', scale images to this width
},
"service_description": {
"default": true, # generate dataset description of the default graph
"named_graphs": true, # generate dataset description of the available named graphs
"related": ["http://dbpedia.org/sparql", "http://kasei.us/sparql"],
"software": "http://kasei.us/code/rdf-query/#rdf-query-2.909",
"namespaces": {
"foaf": "http://xmlns.com/foaf/0.1/",
},
},
}
}
RDF-Endpoint-0.07/README 000644 000765 000024 00000002161 12366061374 014610 0 ustar 00greg staff 000000 000000 RDF::Endpoint - A SPARQL Protocol Endpoint implementation
This modules implements the SPARQL Protocol for RDF using the PSGI
interface provided by Plack. It may be run with any Plack handler.
REQUIREMENTS
To install RDF::Endpoint you'll need the following perl modules installed:
* JSON
* Carp
* File::ShareDir
* RDF::Trine
* RDF::Query
* RDF::RDFa::Generator
* Plack::Request
* Plack::Response
* Plack::Middleware::AccessLog
* Data::Dumper
* Config::JFDI
* HTTP::Negotiate
* IO::Compress::Gzip
* XML::LibXML
* HTML::HTML5::Writer
* HTML::HTML5::Parser
* Hash::Merge::Simple
The following additional modules are required for testing the installation:
* Test::More
* Test::WWW::Mechanize::PSGI
INSTALLATION
To install, run:
perl Makefile.PL
make
make test
make install
COPYRIGHT
Copyright (C) 2010-2014 Gregory Williams. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
AUTHOR
Gregory Williams
RDF-Endpoint-0.07/scripts/ 000755 000765 000024 00000000000 12370000067 015402 5 ustar 00greg staff 000000 000000 RDF-Endpoint-0.07/share/ 000755 000765 000024 00000000000 12370000067 015015 5 ustar 00greg staff 000000 000000 RDF-Endpoint-0.07/SIGNATURE 000644 000765 000024 00000010007 12370000071 015170 0 ustar 00greg staff 000000 000000 This file contains message digests of all files listed in MANIFEST,
signed via the Module::Signature module, version 0.73.
To verify the content in this distribution, first make sure you have
Module::Signature installed, then type:
% cpansign -v
It will check each file's integrity, as well as the signature's
validity. If "==> Signature verified OK! <==" is not displayed,
the distribution may already have been compromised, and you should
not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709 Changes
SHA1 266f39b41726172b55273c5591dc7bbcdbe41c8c Changes.ttl
SHA1 b11936d525a7da21f77f2514f47682cf4e3f4cd6 Changes.xml
SHA1 14a506260237169ed443ed15a269369cee605be3 LICENSE
SHA1 e990e5290fcd14b34615b637c2c9d8c0444b79f4 MANIFEST
SHA1 fa5b79087fa3b88c9bc696b4877e2792f0513737 META.yml
SHA1 5e794284d491f879ee7bcaf750b5cdbecccc29de Makefile.PL
SHA1 c082d44c499766f1583a4feda9e2ec11e8c46d44 README
SHA1 4f7982f7e554df23debce735ab343d88d7355140 inc/Module/Install.pm
SHA1 c68c85ca62ae30d83f633975cd9af2a0789f59e0 inc/Module/Install/Base.pm
SHA1 4797fd314e2653a427e725104704b0320993ba8c inc/Module/Install/Can.pm
SHA1 470809a1dbe03e197e74dde79c6af40b5f7f9b26 inc/Module/Install/DOAPChangeSets.pm
SHA1 b771d93af2bfc41273f48fa36082bf1bd6f21dbe inc/Module/Install/Fetch.pm
SHA1 f4f3258a505a432a58cbcdc1fd030ef5e8e90985 inc/Module/Install/Makefile.pm
SHA1 100a0dd8572f0b40373350fdd6c0a6f035d9dc39 inc/Module/Install/Metadata.pm
SHA1 15651618fd1e8d2fdb8da4c020bbd3d829599c42 inc/Module/Install/Scripts.pm
SHA1 403deaa147e0c16c3be255f1360179e5c74d1f3f inc/Module/Install/Share.pm
SHA1 4490fed943f4e556db9fd054b7ec8765ca417f7d inc/Module/Install/Win32.pm
SHA1 8464ddf690b9f7036a0974ff172ec0ced2f6a329 inc/Module/Install/WriteAll.pm
SHA1 9a0ca5005eee5798e62299770974b46d58f54a0f lib/RDF/Endpoint.pm
SHA1 084485f2e97af1bc0e8e74a72d5f14a57348a368 rdf_endpoint.json
SHA1 705b5b38f7601f3389b4e13e5b251720027af64b scripts/endpoint.psgi
SHA1 19ac766464ef05698ac985e2a42e87dbb7912f3f share/index.html
SHA1 6dd0cf355b49dcb0fdfe9203c68917d5320584f8 share/results.html
SHA1 c40ebad09f7e1d92ad0228a0625d730ba2f57b84 share/www/css/docs.css
SHA1 398bae2ae66a19ab8976036b50a2d20041b67fe5 share/www/css/sparqlcolors.css
SHA1 aa6874f2bad5f0b75b0ff52760f5e6b48ec933ae share/www/favicon.ico
SHA1 13fece7654a01193013d3d96528c851bfc79a300 share/www/js/codemirror.js
SHA1 d372c911fcc2bd030da800fdeedfbcd6b0100c83 share/www/js/editor.js
SHA1 551ff99056361eebfba2a32ea7445502a6eb4f21 share/www/js/highlight.js
SHA1 5bff996ab2564db1a998de30cb9e1ae07cbe62b5 share/www/js/mirrorframe.js
SHA1 d7540f8390913afc0d58484bf5161cf9b9aad9f8 share/www/js/parsecss.js
SHA1 a0028275114eaedf7ddcf57976c99c32ecb2c1d3 share/www/js/parsedummy.js
SHA1 39383cdfc93568cc5673e2b71f681e2811fb5463 share/www/js/parsehtmlmixed.js
SHA1 d5319247a4b26cafccfd4f26621918f0f4d22ef4 share/www/js/parsejavascript.js
SHA1 c6597fb9a5c7969237f7f039f2d0bc6968ef7ce7 share/www/js/parsesparql.js
SHA1 ae75f537ad61277a21a8ec423f5deffed8454e22 share/www/js/parsexml.js
SHA1 85cdbc16cd1581f441480d91fa5c0a50f234ff0b share/www/js/select.js
SHA1 d3261a5ddb7e5835c7abed5d5c343f0ef98637a5 share/www/js/sparql_form.js
SHA1 19cc324cce7165c868a60d523b2462c648f20887 share/www/js/stringstream.js
SHA1 5fdb14f3db575d0ce6a7113f96ea5a530f4f1941 share/www/js/tokenize.js
SHA1 7f581a2b4647f1214d1bc3160eb4e166a1261e4f share/www/js/tokenizejavascript.js
SHA1 9bba7456d4a25b23e805bc2d1d5bde61371c4e82 share/www/js/undo.js
SHA1 26ff15a8f6c196e8bd9f5d7e7b628a6ee9b0dfaa share/www/js/unittests.js
SHA1 201409b1d00a8df0b65b00a1b92ab62d9e0bbd7a share/www/js/util.js
SHA1 ab27c130ce49175526943d0ca34d6f7a1197a630 t/00-load.t
SHA1 6387af7a5fde0747be5bc9ad2ec15ca9759bd95a t/pod.t
SHA1 9115f7ffe1933ad736dc292f3c89595b36ed6aa2 t/pod_coverage.t
SHA1 9eb5c0dd1f1e99ad3d05afaae4d3179b714f94a5 t/psgi.t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: GPGTools - http://gpgtools.org
iEYEARECAAYFAlPgADcACgkQhPK6VMqoyC1ItACgkBPfSy6WnP/2pB2IX6KxzKKg
1N0AoIwR3j6FVkOfYDiK6Dh1RhTjlcU5
=DWjn
-----END PGP SIGNATURE-----
RDF-Endpoint-0.07/t/ 000755 000765 000024 00000000000 12370000067 014156 5 ustar 00greg staff 000000 000000 RDF-Endpoint-0.07/t/00-load.t 000755 000765 000024 00000000222 11417373145 015511 0 ustar 00greg staff 000000 000000 #!perl
use Test::More tests => 1;
BEGIN {
use_ok( 'RDF::Endpoint' );
}
diag( "Testing RDF::Endpoint $RDF::Endpoint::VERSION, Perl $], $^X" );
RDF-Endpoint-0.07/t/pod.t 000644 000765 000024 00000000233 11412402225 015121 0 ustar 00greg staff 000000 000000 use strict;
use warnings;
use Test::More;
eval "use Test::Pod 1.14";
plan skip_all => "Test::Pod 1.14 required for testing POD" if $@;
all_pod_files_ok();
RDF-Endpoint-0.07/t/pod_coverage.t 000644 000765 000024 00000000273 11412402225 017000 0 ustar 00greg staff 000000 000000 use strict;
use warnings;
use Test::More;
eval "use Test::Pod::Coverage 1.04";
plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@;
all_pod_coverage_ok();
RDF-Endpoint-0.07/t/psgi.t 000755 000765 000024 00000011150 12366061374 015323 0 ustar 00greg staff 000000 000000 #!perl
use strict;
use warnings;
use Test::More;
use URI::QueryParam;
use URI::Escape;
use LWP::UserAgent;
use HTTP::Request::Common;
use Test::WWW::Mechanize::PSGI;
use RDF::Endpoint;
use RDF::Trine qw(iri);
use RDF::Trine::Namespace;
my $sd = RDF::Trine::Namespace->new('http://www.w3.org/ns/sparql-service-description#');
my $config = {
endpoint => {
endpoint_path => '/',
update => 1,
load_data => 0,
html => {
resource_links => 1, # turn resources into links in HTML query result pages
embed_images => 0, # display foaf:Images as images in HTML query result pages
image_width => 200, # with 'embed_images', scale images to this width
},
service_description => {
default => 1, # generate dataset description of the default graph
named_graphs => 1, # generate dataset description of the available named graphs
},
},
};
my $model = RDF::Trine::Model->new();
my $end = RDF::Endpoint->new( $model, $config );
my $mech = Test::WWW::Mechanize::PSGI->new(
app => sub {
my $env = shift;
my $req = Plack::Request->new($env);
my $resp = $end->run( $req );
return $resp->finalize;
},
);
{
$mech->get_ok('/');
is( $mech->ct, 'text/html', 'main page text/html' );
$mech->content_lacks('xmlns:http://www.w3.org/1999/02/22-rdf-syntax-ns#="rdf"', 'No broken NS declaration');
$mech->content_contains('xmlns:sd="http://www.w3.org/ns/sparql-service-description#"', 'Correct service description NS declaration');
like($mech->response->header('Server'), qr|RDF::Endpoint/$RDF::Endpoint::VERSION|, 'Server header is there' );
}
{
$mech->get_ok('/', { Accept => 'application/rdf+xml' });
is( $mech->ct, 'application/rdf+xml', 'RDF/XML service description' );
my $sd_content = $mech->content;
my $sdmodel = RDF::Trine::Model->new();
my $e = 'http://endpoint.local/';
RDF::Trine::Parser::RDFXML->parse_into_model( $e, $sd_content, $sdmodel );
ok( $sdmodel->size, 'parsed triples' );
my @st = $sdmodel->get_statements( iri($e), $sd->url, undef );
cmp_ok( scalar(@st), '>', 0, 'expected sd:url triple' );
}
{
my $query = "select * where {}";
my $uri = '/?query=' . uri_escape($query);
$mech->get_ok($uri, {Accept => 'application/sparql-results+xml'}, 'got success from empty query');
is( $mech->ct, 'application/sparql-results+xml', 'SRX media type' );
my $content = $mech->content;
my $i = RDF::Trine::Iterator->from_string( $content );
isa_ok( $i, 'RDF::Trine::Iterator::Bindings' );
my $iter = $i->materialize;
is( $iter->length, 1, 'expected result count' );
}
my $before = $model->size;
{
my $update = 'PREFIX : INSERT DATA { :rdf_endpoint_test :p "FoooooBAR", 1, _:a }';
my $resp = $mech->post_ok('/', { update => $update }, 'got success from insert POST' );
}
my $after = $model->size;
is( ($after - $before), 3, 'expected model size after INSERT' );
{
my $query = 'PREFIX : SELECT ?o WHERE { :rdf_endpoint_test :p ?o }';
my $uri = '/?query=' . uri_escape($query);
$mech->get_ok($uri, {Accept => 'application/sparql-results+xml'}, 'got success from query GET');
my $content = $mech->content;
my $iter = RDF::Trine::Iterator->from_string( $content );
my @values;
while (my $r = $iter->next) {
my $o = $r->{o};
if ($o->isa('RDF::Trine::Node::Blank')) {
push(@values, '_');
} else {
push(@values, $o->value);
}
}
is_deeply( [sort @values], [qw(1 FoooooBAR _)], 'expected values after INSERT' );
}
{
my $query = 'PREFIX : SELECT * WHERE { ?s ?p ?o }';
$mech->get_ok("/", "Returns 200");
$mech->title_like(qr/SPARQL/, "Title contains the word SPARQL");
$mech->submit_form_ok( {
form_id => 'queryform',
fields => {
query => $query,
'media-type' => 'text/html'
},
}, 'Submitting SELECT query.'
);
$mech->title_like(qr/SPARQL/, "Title contains the word SPARQL");
$mech->has_tag('textarea', $query, 'Query is in a textarea in the response');
$mech->has_tag('td', 'FoooooBAR', 'Literal string is in the response');
}
{
my $update = 'PREFIX : DELETE { :rdf_endpoint_test :p ?o } WHERE { :rdf_endpoint_test ?p ?o }';
my $resp = $mech->post_ok('/', { update => $update }, 'got success from delete POST' );
}
{
my $query = 'PREFIX : SELECT ?o WHERE { :rdf_endpoint_test ?p ?o }';
my $uri = '/?query=' . uri_escape($query);
$mech->get_ok($uri, {Accept => 'application/sparql-results+xml'}, 'got success from query GET');
my $content = $mech->content;
my $iter = RDF::Trine::Iterator->from_string( $content );
my $count = 0;
while (my $r = $iter->next) {
$count++;
}
is( $count, 0, 'expected count after delete' );
}
done_testing();
RDF-Endpoint-0.07/share/index.html 000644 000765 000024 00000002661 12354561066 017034 0 ustar 00greg staff 000000 000000
SPARQL
RDF-Endpoint-0.07/share/results.html 000644 000765 000024 00000001432 11712064116 017410 0 ustar 00greg staff 000000 000000
SPARQL Results