Git Product home page Git Product logo

cliopatria's Introduction

The ClioPatria Semantic Web Toolkit

About

ClioPatria is an extension of the SWI-Prolog RDF infrastructure (semweb package) that provides you with a ready-to-run web-server that can be extended into a full-fledged Semantic Web application. The semweb package provides reading and writing RDF (XML and Turtle), storage and querying by means of rdf(Subject, Predicate, Object). ClioPatria adds the following:

  • A SPARQL server This processes HTTP SPARQL requests. The server also includes support for SeRQL and the Sesame (rdf4j.org) HTTP protocol.

  • Reasoning libraries Called entailment modules. See entailment/README.txt

  • User administration Create users, provide OpenID services, use external OpenID authorization and connect users to right-tokens.

  • A web-based developers front-end This provides provides browsing the RDF, loading and unloading graphs, testing queries interactively, browsing the documentation of HTTP services and source-code.

  • Web-page generation components Server-side components to render an RDF resource or literals with a link to the development UI, render simple graphs, etc.

  • Additional libraries These are additional components to the http and semweb libraries that may become part of SWI-Prolog in the future. Examples are lib/semweb/rdf_optimise.pl to optimise rdf-control-structures and lib/semweb/rdf_abstract.pl to transform graphs represented as rdf(S,P,O) terms.

Installation

Basic installation merely requires installing a recent version of SWI-Prolog and unpacking ClioPatria (see Downloading below). Next, you can deploy it in two ways:

Installation as application

Running ClioPatria as an application requires a few steps:

  1. Create the start-file run.pl from run.pl.in. On Unix, this is achieved by running ./configure from the top directory. On Windows by double-clicking win-config.exe.

  2. Optionally, pull in additional configuration files according to config-enabled/README.txt. This can also be done later.

  3. Start run.pl as ./run.pl on Unix or double-clicking run.pl on Windows and direct your browser to the indicated address (default is http://localhost:3020/. If this is the first time, you will be asked to enter an admin password. This protects some web-operations, such as managing settings and loading/unloading RDF.

If you want to extend the application, there are two options. One is to put a Prolog file with the desired extensions in config-enabled. Another is to run configure/setup from another directory. This creates run.pl and config-enabled in the current working directory, after which the extensions can be placed in config-enabled.

Windows notes

If the file name extension that is associated to SWI-Prolog is pl, you may install the system by double-clicking setup.pl rather win-config.exe.

If the file name extension that is associated to SWI-Prolog is not pl, win-config.exe is needed to open SWI-Prolog on setup.pl. The installation will create a run script with the appropriate extension (typically pro).

Use as library

To use ClioPatria as a library, one can simply compile cliopatria.pl. The file run.pl as generated from installation as an application gives additional actions you may want to setup. The web-server is started by cp_server/0, but the system runs happily if the Prolog HTTP server is started in another way, as long as the server uses http_dispatch/1 for dispatching HTTP requests.

Downloading

Currently, ClioPatria can only be downloaded through GIT. The commands for downloading the system are:

git clone https://github.com/ClioPatria/ClioPatria.git
cd ClioPatria
git submodule update --init web/yasqe
git submodule update --init web/yasr

Further reading

We published an article in the Semantic Web Journal that explains the rationale behind ClioPatria. Please cite this when you are using ClioPatria in your research (full reference below).

Many of the design issues around handling the Semantic Web in Prolog are described and motivated in Jan Wielemaker's PhD thesis (PDF) as well as various articles. RoadMap.txt explains the basic layout of the sources.

Feel free to join the ClioPatria mailing list at https://listserver.vu.nl/mailman/listinfo/cliopatria.few

Authors:

  • Jan Wielemaker
  • Wouter Beek
  • Jacco van Ossenbruggen
  • Michiel Hildebrand
  @article{DBLP:journals/semweb/WielemakerBHO15,
    author    = {Jan Wielemaker and
                 Wouter Beek and
                 Michiel Hildebrand and
                 Jacco van Ossenbruggen},
  title     = {ClioPatria: {A} SWI-Prolog infrastructure for the Semantic Web},
  journal   = {Semantic Web},
  volume    = {7},
  number    = {5},
  pages     = {529--541},
  year      = {2016},
  url       = {http://dx.doi.org/10.3233/SW-150191},
  doi       = {10.3233/SW-150191},
  timestamp = {Mon, 12 Dec 2016 16:21:50 +0100},
  biburl    = {http://dblp2.uni-trier.de/rec/bib/journals/semweb/WielemakerBHO15},
  bibsource = {dblp computer science bibliography, http://dblp.org}
  }

cliopatria's People

Contributors

anniepoo avatar aslakr avatar berezovskyi avatar biktorrr avatar florianock avatar gniourf avatar janwielemaker avatar jrvosse avatar recurse avatar samer-- avatar wouterbeek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cliopatria's Issues

Shall we drop SeRQL?

It's even difficult to find online what SeRQL is. It seems to be a precursor to SPARQL that was initially developed for Sesame?

Add a 'clio' binary

I think it would be best to replace the configure script with a bin/clio script that would allow you to do something like:

export PATH="$PATH:/home/andrew/code/cliopatria/bin/"
cd code/
mkdir my_app
cd my_app
clio init

Mailing List

Do you have a mailing list or an irc channel for discussions about cliopatria?

Improve the Linked Open Pirates tutorial

TODO:

  • Why is it necessary to create a directory Pirates outside of the ClioPatria directory?
  • Separate talk about syntax (e.g., ‘RDF predicate term’) from talk about semantics (e.g., ‘RDF property’).
  • Make the distinction between RDF predicates and Prolog predicates clear to the user.

SPARQL editor: Better out-of-the-box experience

Currently ClioPatria ships with three SPARQL query editors: Yasgui, Flint, and some text form. Upon default installation only the text form is present (the other 2 require additional installation steps).

For an optimal out-of-the-box experience ClioPatria should come with 1 SPARQL query editor, preferably a good and intuitive one. Since Yasgui's featureset is a superset of the other 2 I would suggest to:

  • Auto-install Yasgui packs upon ClioPatria installation/configuration.
  • Remove the Flint and text form menu items from the menu since these may confuse novice users.

Where is path `/openid/undefined` declared?

Steps:

1. Start ClioPatria
2. Visit http://localhost.localdomain:6666/ in a browser
3. Click "Login"

The following warning is displayed in the terminal:

% [Thread httpd@6666_2] [19:20:17.011] GET /openid/undefined: [404] error(404,/openid/undefined)

Where is this part declared?

Difficult to set admin password

at least 50% of the time when I install cliopatria I find myself locked out and not knowing hte admin password.

This, simply, is too fragile. You need a more robust way to set the admin password

Upload local RDF file to Cliopatria using Java

Hello,
I am working on a project in which I have to upload a local file from Java into Cliopatria.
The problem I encountered is that when I send the file, I have to add login and password.
Is there any service to deal with that ?
Thank you in advance.

Codepoint escape sequences are not always processed correctly

According to the SPARQL standard, codepoint escape sequences must be processed prior to parsing the query string. This means that even characters that belong to the SPARQL grammar can be escaped.

The current implementation only processed codepoint escape sequences at the level of atoms, e.g., variable names, with uchar//1.

This is fairly straightforward to implement correctly, by running to the codelist prior to parsing and removing/changing current uses of uchar//1.

ClioPatria goes out of memory on the following query

Dataset:

?- rdf_bnode(S), rdf_assert(S, rdf:type, rdfs:'Resource').
?- rdf_assert(rdf:a, rdfs:subClassOf, rdf:b).
?- rdf_assert(rdf:b, rdfs:subClassOf, rdf:c).

Query under RDFS entailment:

SELECT ?s ?p ?o
WHERE {
  ?s ?p ?o .
}
LIMIT 100

Option `bottom_max` is almost never used

For example:

{ option(top_max(TopMax), Options, 500),
  option(top_max(BottomMax), Options, 500)

The idea seems to be to display triples as follows:

  • Display at most MaxTop triples.
  • Skip some triples if there are more than MaxTop + MaxBot
  • Display at most MaxBot triples

Bug when visiting `/help/http`

Bug when visiting /help/http:

% [Thread httpd@3020_5] [13:24:18.132] GET /help/expand_http_node: [500] Type error: `pair' expected, found `label('.well-known')' (a compound)
In:
  [31] throw(error(...,_G2071))
  [28] json:pairs_print_length([...|...],json_options(...,...,...,atom,''),72,4,_G2090) at /home/wbeek/lib/swipl/library/http/json.pl:754
  [26] json:array_print_length([...|...],json_options(...,...,...,atom,''),72,2,_G2118) at /home/wbeek/lib/swipl/library/http/json.pl:776
  [24] json:json_write_term([...|...],current_output,json_write_state(0,2,8,72,false),json_options(...,...,...,atom,'')) at /home/wbeek/lib/swipl/library/http/json.pl:554
  [18] http_dispatch:call_action(http_tree:expand_http_node,[...|...]) at /home/wbeek/lib/swipl/library/http/http_dispatch.pl:729
  [16] time:run_alarm_goal('$alarm'(35096203137536),http_dispatch: ...) at /home/wbeek/lib/swipl/library/time.pl:139
  [15] setup_call_catcher_cleanup(time: ...,time: ...,_G2217,time: ...) at /home/wbeek/lib/swipl/boot/init.pl:310
   [8] httpd_wrapper:call_handler(cp_server:http_dispatch,103,[...|...]) at /home/wbeek/lib/swipl/library/http/http_wrapper.pl:303
   [7] catch(httpd_wrapper: ...,error(...,...),httpd_wrapper:true) at /home/wbeek/lib/swipl/boot/init.pl:274
   [6] httpd_wrapper:handler_with_output_to(cp_server:http_dispatch,103,[...|...],current_output,error(...,...)) at /home/wbeek/lib/swipl/library/http/http_wrapper.pl:283
   [5] httpd_wrapper:handler_with_output_to(cp_server:http_dispatch,103,[...|...],<stream>(0x7fade417dde0),error(...,...)) at /home/wbeek/lib/swipl/library/http/http_wrapper.pl:293
   [4] httpd_wrapper:http_wrapper(cp_server:http_dispatch,<stream>(0x7fadf40008c0),<stream>(0x7fadf4000e70),_G2347,[...|...]) at /home/wbeek/lib/swipl/library/http/http_wrapper.pl:106
   [3] thread_httpd:http_process(cp_server:http_dispatch,<stream>(0x7fadf40008c0),<stream>(0x7fadf4000e70),[...|...]) at /home/wbeek/lib/swipl/library/http/thread_httpd.pl:717
   [2] catch(thread_httpd: ...,_G2391,thread_httpd:true) at /home/wbeek/lib/swipl/boot/init.pl:274
   [1] thread_httpd:http_worker([...|...]) at /home/wbeek/lib/swipl/library/http/thread_httpd.pl:540
   [0] <meta call>

Graph term `X:Y` error when using rdf11 i.o. rdf_db

Unfortunately, the following will not work:

:- use_module(library(semweb/rdf_db)).
run :-
  A1 = rdf,
  A2 = type,
  rdf(A1:A2, b, c).

Giving the following error:

$ swipl test.pl
ERROR: /home/wbeek/Git/test.pl:3:
    Arguments are not sufficiently instantiated

This does currently work for the graph argument, e.g., https://github.com/ClioPatria/ClioPatria/blob/master/rdfql/sparql_runtime.pl#L1637

However, in rdf11 we are defining the graph argument as r where it was defined as ? in rdf_db.

About cliopatria

SWI-Prolog provides an efficient C-based main-memory RDF store

Since cliopatria extends on this store, is it also an in-memory store or does it store to disk as well?

ClioPatria is primarily positioned as a prototyping platform for exploring novel ways of reasoning with RDF data

  • Is cliopatria supposed to be a platform for testing only, or is it stable enough to be used reliably in production?
  • Can cliopatria work with labelled graphs (n-quads) or does it store triples only?
  • Has anybody benchmarked cliopatria with very large datasets (billions of triples)?
  • Can cliopatria "scale" to multiple machines if the graph grows too big to be handled by a single machine?

SPARQL Update INSERT DATA does not support blank nodes

Posting SPARQL Update request [1] to a ClioPatria instance throws type error [2]:

[1]   INSERT DATA { _:1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> _:1 . }
[2]   Exception: Type error: `atom' expected, found `bnode('1')' (a compound)

It seems to be that the blank nodes are translated to an internal format (thus the compound term in [2]), but this internal format cannot be read later. There is a blank node map that is used for SPARQL Query requests, but it is not used for SPARQL Update requests. Maybe this is the culprit?

Reproducing code, assuming a ClioPatria instance is running at localhost port 3020:

:- module(
  test_sparql_update,
  [
    test_sparql_update/0
  ]
).

/** <module> Test SPARQL Update

This tests the occurrence of blank nodes in SPARQL Update INSERT DATA
in ClioPatria.

@author Wouter Beek
@version 2014/06/16
*/

:- use_module(library(ansi_term)).
:- use_module(library(base64)).
:- use_module(library(debug)).
:- use_module(library(http/http_client)).

:- debug(test_sparql_update).

test_sparql_update:-
  % ClioPatria user name.
  format(user_output, 'Enter a ClioPatria user name.\n', []),
  read_line_to_string(user_input, User),

  % ClioPatria password.
  format(user_output, 'Enter the password for user ~s.\n', [User]),
  read_line_to_string(user_input, Password),

  phrase(test_sparql_update, Query),
  http_authentication(User, Password, Authentication),
  http_post(
    'http://localhost:3020/sparql/update',
    codes('application/sparql-update', Query),
    Reply,
    [request_header('Authorization'=Authentication)]
  ),
  debug(test_sparql_update, 'Reply: ~w', [Reply]).

test_sparql_update -->
  `INSERT DATA { _:1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> _:1 . }`.

http_authentication(User, Password, Authentication):-
  atomics_to_string([User,Password], ':', Plain),
  base64(Plain, Encoded),
  atomics_to_string(['Basic',Encoded], ' ', Authentication).

Uninstantiated User variable when not logged in (several locations in codebase)

At several points in the codebase logged_on/2 is called with both arguments uninstantiated while the specification is (-,+). When not logged in, each of these calls leaves variable User uninstantiated (which is probably unintentional) and causes the predicate to fail later on.

Example

This line gives the following error:

?- ERROR: [Thread 10] Failed to translate to HTML: \li_persistent_graph(graph_name:'')

pldoc issue with latest swipl-devel (7.5.13-7-gf9d7db01a)

Jan,

A clean cliopatria install returns a 500 server error with error message:
Internal server error
http_alias `pldoc_pkg' does not exist

Setting 'doc_enable(true)' seems to solve the issue. Is this something that needs to be set in the default Clioptria configuration?

Tutorial doesn't work out-of-the-box

Ubuntu 17.04, SWI-Prolog 7.7.1 64 bit, installed from PPA.

I am following the tutorial step-by-step:

  • clone ClioPatria from github.
  • configure Pirates in another directory --with-localhost
  • cpack install
  • Set Admin username
  • Load data from library.

This throws an error and doesn't load all the data:

% Parsed "eez.ttl" in 0.00 sec; 104 triples
% Parsed "types_and_mappings.rdf" in 0.02 sec; 509 triples
ERROR: [Thread httpd@3020_5] rdf_format_plugin `rdfa' does not exist

Pengine example

Hi everyone,
There are some good example of configuration between cliopatria and the Pengine service which i can follow to execute some prolog rules?

Thanks,

Loading SEM (Semantic Event Model) no longer works

E.g., when loaded from within the Linked Open Pirates demo:

Loading 7 files using 7 threads ...
Parsed "eez.ttl" in 0.00 sec; 104 triples
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:144: Inserted omitted end-tag for "link"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:144: Inserted omitted end-tag for "meta"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:144: Inserted omitted end-tag for "meta"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:174: Inserted omitted end-tag for "hr"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:175: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:175: Attribute value requires quotes, found "property=dcterms:abs ... tract"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:188: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:351: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:352: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:415: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:426: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:530: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:551: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:551: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:551: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:551: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:593: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:595: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:647: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:654: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:667: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:667: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:667: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:667: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:667: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:667: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:702: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:712: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:712: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:712: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:722: Inserted omitted end-tag for "br"
Parsed "types_and_mappings.rdf" in 0.02 sec; 509 triples
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:722: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:722: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:731: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:758: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:809: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:822: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:822: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:822: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:822: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:833: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:858: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:891: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:930: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:995: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:995: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:995: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1003: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1015: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1044: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1115: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1145: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1178: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1208: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1232: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1255: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1278: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1302: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1325: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1353: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1384: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1428: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1429: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1492: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1492: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1502: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1601: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1629: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1640: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1674: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1696: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1860: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1869: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1873: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1972: Attribute value requires quotes, found "#ref"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "img"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "br"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
SGML2PL(xmlns): http://semanticweb.cs.vu.nl/2009/11/sem/:1990: Inserted omitted end-tag for "section"
Parsed "http://semanticweb.cs.vu.nl/2009/11/sem/" in 0.04 sec; 0 triples
Parsed "http://www.w3.org/1999/02/22-rdf-syntax-ns" in 0.00 sec; 102 triples
Parsed "http://www.w3.org/2000/01/rdf-schema" in 0.01 sec; 87 triples
Parsed "http://www.w3.org/2002/07/owl" in 0.01 sec; 450 triples
Parsed "piracy_events_imb_mss_eez.rdf" in 0.79 sec; 27,729 triples

What to do if an application wants to register a ClioPatria-set RDF prefix?

Upon loading ClioPatria the following RDF prefix is registered:

:- rdf_register_ns(user, 'http://www.swi-prolog.org/cliopatria/user/').

The prefix name user may already be specified beforehand or afterwards by the... user. In fact, user is -- not-so-commonly -- used to denote the IRI prefix http://schemas.talis.com/2005/user/schema# according to prefix.cc.

Investigate whether Let'sEncrypt is a good fit for HTTPS connections

https://letsencrypt.org/ is a new free, automated and open SSL certificate authority. At the moment, configuration of HTTPS websites takes quite some manual effort, and certificate cost money. This new free certificate authority automates requesting and renewing of certificates, and configures most of the web service. At the moment it is still in closed beta, but is scheduled for a public release later this year.

Rewrite win-config into something that could be easily run on Windows

I had to help my friend yesterday with the installation of ClioPatria on Windows and it didn't work.

First, running ..\cliopatria\configure under cmd failed because it was a bash script.

Next, running ../cliopatria/configure or SWIPL=swipl ../cliopatria/configure under git bash caused the execution to hang (no excessive CPU use).

Finally, I ran the command from the configure script by hand:

swipl -f ../cliopatria/setup.pl --

And I got an error (didn't save the exact message, sorry) like "setup/5 is not defined".

What finally worked (after a sneak peek into win-config.c) was this:

swipl-win.exe -s ../cliopatria/setup.pl

The problem with win-config.c is that you need a compiler to run it and it comes with a Makefile (how ironic) so I would have had to set up full gcc/make toolchain under Windows using cygwin.

Three ideas:

  • add configure.bat that would mimic configure for bash but look for swipl-win.exe instead (IMO the easiest solution, but I still have no idea why the non-GUI swipl didn't work).
  • rewrite win-config.c into Prolog (I am just learning it so would need some help if I do a PR). I found http://www.swi-prolog.org/pldoc/man?section=registry but maybe it's an overkill.
  • rewrite win-config.c into Python (it's installed on almost every dev machine and easy to peek at).

I would actually recommend replacing configure with bin/clio but let's take it in #51

Bug with SERVICE directive

This query returns one result:

SELECT * WHERE
{
  SERVICE <http://dbpedia-live.openlinksw.com/sparql>
  {
    ?entity rdf:type <http://dbpedia.org/ontology/Person> .
    ?entity rdfs:label "Frida Kahlo"@en
  }
}

However, this doesn't seem to work when using BIND to pass the search term to the SERVICE directive:

SELECT * WHERE
{
  BIND( "Frida Kahlo"@en as ?term )
  SERVICE <http://dbpedia-live.openlinksw.com/sparql>
  {
    ?entity rdf:type <http://dbpedia.org/ontology/Person> .
    ?entity rdfs:label ?term
  }
}

I seem to be getting a Type error: rdf_object' expected, found literal(lang(en,'Frida Kahlo'))' (a compound) error.

Is this a bug? Or is there something wrong with my query? I have compared the behaviour with other SPARQL endpoints (Blazegraph & snorql) but second query seems to work ok on those.

RDF namespace registrations do not work in ClioPatria

RDF namespace resolution

In SWI-Prolog development branch:

?- use_module(library(semweb/rdf_db)).
?- rdf_global_id(rdf:a, X).
X = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#a'.

In ClioPatria:

?- rdf_global_id(rdf:a, X).
X = rdf:a.

RDF assertions with registered namespace

Since in ClioPatria only abbreviated IRIs can be used, it is not possible to use IRIs that have a prefix that is registered as an RDF namespace. For example:

?- rdf_assert('http://www.w3.org/1999/02/22-rdf-syntax-ns#a', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#a', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#a', a).
?- rdf(S, P, O, a).
S = P, P = O, O = rdf:a.

Docker Image

Hi,
I would like to now if ClioPatria has an official docker image. I found this one: https://hub.docker.com/r/onnovalkering/cliopatria/ however i'm not sure if it was released by your time. Could you please tell me if you have a official docker image for the project and where can i find it?

Best,
Silvio

Upload local file into Cliopatria using Java

Hello,

I am trying to load a local file into Cliopatria using java
https://github.com/ClioPatria/ClioPatria/blob/master/client/Java/SesameAddData.java

Here is my code

package com.list.metis.controller;
import java.net.URL;
import org.openrdf.sesame.admin.*;
import org.openrdf.sesame.constants.RDFFormat;
import org.openrdf.sesame.query.*;
import org.openrdf.sesame.query.rql.model.URI;
//import org.openrdf.sesame.query.serql.model.SfwQuery;
import org.openrdf.sesame.sail.*;
import org.openrdf.sesame.repository.remote.*;
import org.openrdf.sesame.constants.QueryLanguage;
import org.eclipse.jdt.internal.compiler.ast.SynchronizedStatement;
import org.openrdf.model.Value;
import org.openrdf.model.ValueFactory;
import org.openrdf.util.io.IOUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.openrdf.util.io.IOUtil;
import org.openrdf.sesame.constants.RDFFormat;
import java.io.File;
@Controller
class SesameAddData {
	@RequestMapping("/ses")
	public String sesameAddData() {
		try {

			System.setProperty("org.xml.sax.driver", "org.apache.crimson.parser.XMLReaderImpl");

			HTTPService service = new HTTPService(new URL("http://localhost:3020/"));

			HTTPRepository repository = (HTTPRepository) service.getRepository("default");

			// StdOutAdminListener listener = new StdOutAdminListener();
			// System.out.println("listener");

			File data = new File("C:/Users/fourati/workspace/METIS_VERSION_0.1.0/university.owl");

			service.login("admin", "adminadmin");

			repository.addData(data, "university", RDFFormat.RDFXML, true, new StdOutAdminListener());

			service.logout();

			return "startbootstrap-sb-admin-2-gh-pages/pages/index.html";
		} catch (Exception e) {
			e.printStackTrace();
			return "startbootstrap-sb-admin-2-gh-pages/pages/error.html";
		}
	}
}

Here is the result:

java.io.IOException: Internal Server Error
	at org.openrdf.sesame.repository.remote.HTTPRepository._checkResponse(HTTPRepository.java:764)
	at org.openrdf.sesame.repository.remote.HTTPRepository._sendPostRequest(HTTPRepository.java:722)
	at org.openrdf.sesame.repository.remote.HTTPRepository._adminPost(HTTPRepository.java:650)
	at org.openrdf.sesame.repository.remote.HTTPRepository._addData(HTTPRepository.java:421)
	at org.openrdf.sesame.repository.remote.HTTPRepository.addData(HTTPRepository.java:358)
	at org.openrdf.sesame.repository.remote.HTTPRepository.addData(HTTPRepository.java:346)
	at com.list.metis.controller.SesameAddData.sesameAddData(SesameAddData.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)

How can I fix this ? Thank you.

X error of failed request: BadWindow (invalid Window parameter)

I've followed the installation instructions to install ClioPatria

but what I get is an endless, never halting, stream of errors like these

ERROR: ~/ClioPatria/config-enabled/debug.pl:48:
	nil: X-error
X error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 25 (X_SendEvent)
Minor opcode of failed request: 0
Resource id in failed request:  0x21105e8
Serial number of failed request: 4385
X error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 8 (X_MapWindow)
Minor opcode of failed request: 0
Resource id in failed request:  0x5e0001b
Serial number of failed request: 4386
X error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 12 (X_ConfigureWindow)
Minor opcode of failed request: 0
Resource id in failed request:  0x5e0001b
Serial number of failed request: 4387
X error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 3 (X_GetWindowAttributes)
Minor opcode of failed request: 0
Resource id in failed request:  0x5e0001b
Serial number of failed request: 4388
Message: debug_mode(on)
Message: error(pce(x_error,[@nil]),send(@prolog_warnings,expose))
Message: error(pce(x_error,[@nil]),send(@prolog_warnings,expose))

how do I fix this?

Filter-only variables should not be part of `*`

Variables that only appear in Filter expressions should not be part of projection *.

For example, the following query should return solutions with columns x and n, but not m:

PREFIX : <http://example.com/>
SELECT * WHERE {
        ?x :p ?n
        FILTER NOT EXISTS {
                ?x :q ?m .
                FILTER(?n = ?m)
        }
}

Different SPARQL results when querying from command-line

  1. In ClioPatria:
?- rdf_bnode(S), rdf_assert(S, rdf:type, rdfs:'Resource').
S = '__bnode1'.
  1. A simple query from a ClioPatria SPARQL editor:
SELECT ?p ?o WHERE { _:1 ?p ?o }

Results:

|       p      |            o             |
| rdf:type | rdfs:Resource |
  1. The same query from the command-line:
curl -H "Accept: application/sparql-results+json" "http://ocalhost:3020/sparql/?query=SELECT%20%3Fp%20%3Fo%20WHERE%20%7B%20_%3A1%20%3Fp%20%3Fo%20%7D"

Result:

{
  "head": {"vars": ["p", "o" ]},
  "results": {
    "bindings": [
      {
    "p": {
      "type":"uri",
      "value":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
    },
    "o": {
      "type":"uri",
      "value":"http://www.w3.org/2000/01/rdf-schema#Resource"
    }
      },
      {
    "p": {
      "type":"uri",
      "value":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
    },
    "o": {
      "type":"uri",
      "value":"http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"
    }
      }
    ]
  }
}

Where does the second result come from?

Disabling help system causes warning in console whenever make goal is run

When I disable the help system:

%:- use_module(cliopatria('applications/help/load')).

run run.pl and type make, I get a warning:

Warning: The predicates below are not defined. If these are defined
Warning: at runtime using assert/1, use :- dynamic Name/Arity.
Warning: 
Warning: http_help:page_documentation_link/3, which is referenced by
Warning:        /home/raivo/Downloads/ClioPatria/skin/cliopatria.pl:231:18: 1-st clause of cp_skin:current_page_doc_link/2

Query string parameters for SPARQL Update requests are not standards-compliant

The query string parameters for SPARQL Update requests, as defined by the SPARQL 1.1 Protocol recommendation, are [1a] and [1b]. ClioPatria uses the query strings for SPARQL Query requests instead, i.e. [1b] and [2b].

[1a]   using-graph-uri
[2a]   using-named-graph-uri
[1b]   default-graph-uri
[2b]   named-graph-uri

Bring tests up to date

Most test files did not load (independently) at all. This is now fixed on branch cp11.

The current situation:

  • SeRQL test 4 fails.
  • SPARQL 86 tests fail
  • Sesame cannot load because file sesame('test/files/testcases/SeRQL/CfwQuery') is missing.

Some incorrect requests receive a 500 rather than a 400 HTTP status code

There are still some incorrect requests that receive a 500 rather than a 400 HTTP status code.

Sample request:

$ curl "http://localhost:3020?monkey"

Corresponding reply:

<!DOCTYPE html>
<html>
<head>
<title>500 Internal server error</title>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>
<body>

<h1>Internal server error</h1>

<p>
Syntax error: illegal_uri_query</p>

<address>
<a href="http://www.swi-prolog.org">SWI-Prolog</a> httpd at localhost.localdomain
</address>

</body>
</html>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.