2017 © Pedro Peláez
 

library sparql

Lib PHP very easy for SPARQL 1.1

image

bordercloud/sparql

Lib PHP very easy for SPARQL 1.1

  • Thursday, July 5, 2018
  • by krafes
  • Repository
  • 3 Watchers
  • 12 Stars
  • 1,012 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 4 Forks
  • 1 Open issues
  • 5 Versions
  • 6 % Grown

The README.md

Build Status, (*1)

Lib Sparql 1.1 HTTP Client

Very simple SparqlClient for PHP., (*2)

Thanks to contributors., (*3)

Installation

This project assumes you have composer installed. Simply add new dependency via Composer:, (*4)

composer require bordercloud/sparql

To your composer.json, and then you can simply install with:, (*5)

composer install

Test the lib with a php script : query

You can test your first query sparql with DBPEDIA via a command line :, (*6)

./bin/query -r -e http://dbpedia.org/sparql -f ./example/queryReadDBpedia.rq

And the doc of this script with virtuoso, 4store, Allegrograph, Fuseki and Sesame :, (*7)

USAGE : query [-r|-w][-e URL|--endpointQueryAndUpdate=URL]
        [--file=FILE|-f FILE]
        [-v|-verbose]

    -r                                  READ ONLY
    -w                                  WRITE ONLY
    -e, --endpointQueryAndUpdate=URL    Put url of endpoint to do query or
                                        update :
                                            URL/sparql/?query=...
                                            URL/update/?update=... (POST)
    -q, --endpointQueryOnly=URL         Put url of endpoint to do query :
                                            URL?query=...
    -u, --endpointUpdateOnly=URL        Put url of endpoint to do query :
                                            URL?update=... (POST)
    --nameParameterQuery=PARAMETER      Change the name of parameter in
                                        the request http to read.
                                        (by default : query)
    --nameParameterUpdate=PARAMETER     Change the name of parameter in
                                        the request http to write.
                                        (by default : update)
    -f,--file=File                      File of the query.
    -t, --typeOutput=TYPE               Type of response: table,txt,csv,tsv,ttl,srx,srj
                                        (by default : table)

    -l, --login=LOGIN                  Server login
    -p, --password=PASSWORD            Server password

    -v, --verbose                       Mode verbose
    -d, --debug                         Mode debug

EXAMPLE : Virtuoso
./query -w -e http://localhost/tests/ -f ./example/queryWrite1.rq

./query -r -e http://localhost/tests/ -f ./example/queryRead1.rq

EXAMPLE : 4Store
./query -w -e http://localhost/ -f ./example/queryWrite1.rq

./query -r -e http://localhost/ -f ./example/queryRead1.rq

EXAMPLE : Sesame
./query -w -q http://localhost/openrdf-sesame/repositories/tests \
 -u http://localhost/openrdf-sesame/repositories/tests/statements \
-f ./example/queryWrite1.rq

./query -r -q http://localhost/openrdf-sesame/repositories/tests \
 -u http://localhost/openrdf-sesame/repositories/tests/statements \
-f ./example/queryRead1.rq

EXAMPLE : Fuseki
./query -w -q http://localhost/tests/query \
-u http://localhost/tests/update \
-f ./example/queryWrite1.rq

./query -r -q http://localhost/tests/query \
-u http://localhost/tests/update \
-f ./example/queryRead1.rq

EXAMPLE : Allegrograph
./query -w -q http://localhost/repositories/tests \
-u http://localhost/repositories/tests \
--nameParameterUpdate=query \
-f ./example/queryWrite1.rq

./query -r -q http://localhost/repositories/tests \
-u http://localhost/repositories/tests \
--nameParameterUpdate=query \
-f ./example/queryRead1.rq

Examples

Send a simple query to Wikidata :, (*8)

<?php
use BorderCloud\SPARQL\SparqlClient;

require_once ('../vendor/autoload.php');

$endpoint = "https://query.wikidata.org/sparql";
$sc = new SparqlClient();
$sc->setEndpointRead($endpoint);
//$sc->setMethodHTTPRead("GET");
$q = "select *  where {?x ?y ?z.} LIMIT 5";
$rows = $sc->query($q, 'rows');
$err = $sc->getErrors();
if ($err) {
    print_r($err);
    throw new Exception(print_r($err, true));
}

foreach ($rows["result"]["variables"] as $variable) {
    printf("%-20.20s", $variable);
    echo '|';
}
echo "\n";

foreach ($rows["result"]["rows"] as $row) {
    foreach ($rows["result"]["variables"] as $variable) {
        printf("%-20.20s", $row[$variable]);
        echo '|';
    }
    echo "\n";
}

Send a simple query to DBpedia :, (*9)

<?php
use BorderCloud\SPARQL\SparqlClient;

require_once ('../vendor/autoload.php');

$endpoint = "http://dbpedia.org/sparql";
$sc = new SparqlClient();
$sc->setEndpointRead($endpoint);
$q = "select *  where {?x ?y ?z.} LIMIT 5";
$rows = $sc->query($q, 'rows');
$err = $sc->getErrors();
if ($err) {
    print_r($err);
    throw new Exception(print_r($err, true));
}

foreach ($rows["result"]["variables"] as $variable) {
    printf("%-20.20s", $variable);
    echo '|';
}
echo "\n";

foreach ($rows["result"]["rows"] as $row) {
    foreach ($rows["result"]["variables"] as $variable) {
        printf("%-20.20s", $row[$variable]);
        echo '|';
    }
    echo "\n";
}

Send a simple query via an endpoint sparql-auth (with OpenLink Virtuoso Open-Source Edition) :, (*10)

<?php
use BorderCloud\SPARQL\SparqlClient;

require_once ('../vendor/autoload.php');

$endpoint = "https://example.com/sparql-auth";
$sc = new SparqlClient();
$sc->setEndpointRead($endpoint);
//$sc->setEndpointWrite($endpoint);
$sc->setLogin("login");
$sc->setPassword("password");

$q = "select *  where {?x ?y ?z.} LIMIT 5";
$rows = $sc->query($q, 'rows');
$err = $sc->getErrors();
if ($err) {
    print_r($err);
    throw new Exception(print_r($err, true));
}

foreach ($rows["result"]["variables"] as $variable) {
    printf("%-20.20s", $variable);
    echo '|';
}
echo "\n";

foreach ($rows["result"]["rows"] as $row) {
    foreach ($rows["result"]["variables"] as $variable) {
        printf("%-20.20s", $row[$variable]);
        echo '|';
    }
    echo "\n";
}

Documentation

Copy Sources and tests

git clone http://github.com/BorderCloud/SPARQL.git
composer install

Before to execute tests, you need to start database's instances. For example, Virtuoso 7, (*11)

systemctl start docker
docker pull bordercloud/tft-virtuoso7-stable
docker run --privileged --name instance.tft_virtuoso7_stable -h tft_virtuoso7_stable -d bordercloud/tft-virtuoso7-stable

Execute PHPUnit, (*12)

phpunit --configuration phpunit.xml --coverage-text

Contact

If you have remarks, questions, or suggestions, please send them to karima.rafes@bordercloud.com, (*13)

Release-Notes

  • V2.1.0 ** Add tools to detect SPARQL update queries ** Add the timeout parameter at the send of the query, (*14)

  • V2.0.9 ** Fix : bugs in SPARQL client, (*15)

  • V2.0.8 ** Fix : bugs when there are error messages of SPARQL services, (*16)

  • V2.0.7 ** Fix : Insert the parameter User-agent in the header HTTP (for Wikidata), (*17)

  • V2.0.6 ** Fix : bug with the parser and the ASK query's results, (*18)

  • V2.0.5 ** Compatibility : PHP 7.1 and psr-4 ** Rename the class Endpoint to SparqlClient and simplify the constructor. You can set the endpoints only by their setters. ** Rename several functions (PHP Lint) ** Update PHPDoc ** Add the function SparqlClient->getLastErreur() : can read the SPARQL syntax error directly, if the pattern of error exists (Add the pattern of Wikidata and Virtuoso) ** Move files and add tests + phpunit.xml. SparqlClient is coverage to 82% for the moment (coverage with Virtuoso and Wikidata). ** Enable Travis in GitHub, (*19)

  • V1.2.1.0 Add fix for Wikidata and other, (*20)

  • V1.1.0.0 version SPARQL.Pro lib PHP by Karima Rafes karima.rafes@bordercloud.com, (*21)

license

SPARQL.Pro lib PHP (c)2019 by Karima Rafes - BorderCloud, (*22)

SPARQL.Pro lib PHP is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License., (*23)

You should have received a copy of the license along with this work. If not, see http://creativecommons.org/licenses/by-sa/4.0/., (*24)

Compile DOC

php vendor/clean/phpdoc-md/bin/phpdoc-md

Git...

Modify also the version in composer.json, (*25)

git pull
git push
git tag -a 2.0.8@dev -m "version dev"
git push --tags

The Versions

05/07 2018
10/09 2017
09/08 2016

1.2.1

1.2.1.0 https://github.com/BorderCloud/SPARQL

Lib PHP very easy for SPARQL 1.1

  Sources   Download

CC-BY-SA-4.0

The Requires

  • php >=5.3.0

 

The Development Requires

rdf sparql

04/12 2015

1.1.0

1.1.0.0 https://github.com/BorderCloud/SPARQL

Lib PHP very easy for SPARQL 1.1

  Sources   Download

CC-BY-SA-4.0

The Requires

  • php >=5.3.0

 

The Development Requires

rdf sparql

16/08 2014

1.0.0

1.0.0.0 https://github.com/BorderCloud/SPARQL

Lib PHP very easy for SPARQL 1.1

  Sources   Download

CC-BY-SA-4.0

The Requires

  • php >=5.3.0

 

The Development Requires

rdf sparql