Karima Rafes has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/374797 )
Change subject: Update lib SPARQL ...................................................................... Update lib SPARQL Change-Id: I0dc0c88b173fc8c5052161428b24e3d35c33adb8 --- M vendor/bordercloud/sparql/.gitignore D vendor/bordercloud/sparql/Base.php D vendor/bordercloud/sparql/ConversionMimetype.php D vendor/bordercloud/sparql/Curl.php D vendor/bordercloud/sparql/Endpoint.php D vendor/bordercloud/sparql/Namespace.php D vendor/bordercloud/sparql/Net.php D vendor/bordercloud/sparql/ParserCSV.php D vendor/bordercloud/sparql/ParserSparqlResult.php D vendor/bordercloud/sparql/ParserTurtle.php M vendor/bordercloud/sparql/README.md D vendor/bordercloud/sparql/ToolsBlankNode.php D vendor/bordercloud/sparql/ToolsConvert.php M vendor/bordercloud/sparql/composer.json D vendor/bordercloud/sparql/query 15 files changed, 251 insertions(+), 3,163 deletions(-) Approvals: Karima Rafes: Verified; Looks good to me, approved jenkins-bot: Checked diff --git a/vendor/bordercloud/sparql/.gitignore b/vendor/bordercloud/sparql/.gitignore index 7eab032..e4cdcd5 100644 --- a/vendor/bordercloud/sparql/.gitignore +++ b/vendor/bordercloud/sparql/.gitignore @@ -1,5 +1,74 @@ -composer.lock -/output -/nbproject -/vendor -/nbproject/private/ +# External libraries +/vendor/ +/composer.phar + +# Configuration files with possibly sensitive information + +# Files and folders related to build/test tools + +# Ignore other .gitignore files to allow for personal customizations +.gitignore +!/.gitignore + +# Temporary files +.temp/ +tmp/ +output/ +doc_old/ + +# Files related to applying patches +*.rej +*.orig +*.patch +*.diff +.svn + + + +################# +## NetBeans specific +################# + +/nbproject/ +/nbbuild/ +/dist/ +/nbdist/ +/nbactions.xml +/nb-configuration.xml +/.nb-gradle/ + + + +################# +## Eclipse specific +################# + +*.pydevproject +.project +.metadata +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + +################# +## PHPStorm +################# +.idea/ diff --git a/vendor/bordercloud/sparql/Base.php b/vendor/bordercloud/sparql/Base.php deleted file mode 100644 index 745fbbd..0000000 --- a/vendor/bordercloud/sparql/Base.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ -class Base { - - private $_errors; - private $_max_errors; - - function __construct() { - $this->_errors = array(); - $this->_max_errors = 25; - } - - function AddError($error) { - if (!in_array($error, $this->_errors)) { - $this->_errors[] = $error; - } - if (count($this->_errors) > $this->_max_errors) { - die('Too many errors (limit: ' . $this->_max_errors . '): ' . print_r($this->_errors, 1)); - } - return true; - } - - /** - * Give the errors - * @return array - * @access public - */ - function GetErrors() { - return $this->_errors; - } - - function ResetErrors() { - $this->_errors = array(); - } -} \ No newline at end of file diff --git a/vendor/bordercloud/sparql/ConversionMimetype.php b/vendor/bordercloud/sparql/ConversionMimetype.php deleted file mode 100644 index 84ec1d2..0000000 --- a/vendor/bordercloud/sparql/ConversionMimetype.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ - -class ConversionMimetype { - - private static $_mimetypeToShortname; - private static $_filenameExtensionToMimetype; - - private static function init() - { - $_mimetypeToShortname = array(); - $_filenameExtensionToMimetype = array(); - self::add('rdf','rdf', 'application/rdf+xml'); - self::add('nt','text', 'text/plain'); - self::add('csv','csv', 'text/csv; charset=utf-8'); - self::add('','csv', 'text/csv'); - self::add('tsv','tsv', 'text/tab-separated-values; charset=utf-8'); - self::add('','tsv', 'text/tab-separated-values'); - self::add('ttl','ttl', 'text/turtle'); - self::add('srx','xml', 'application/sparql-results+xml'); - self::add('srj','json', 'application/sparql-results+json'); - } - - private static function add($extension, $shortname, $mimetype) - { - self::$_mimetypeToShortname[$mimetype] = $shortname; - - if(!EMPTY($extension)) - self::$_filenameExtensionToMimetype[$extension] = $mimetype; - } - - public static function getMimetypeOfFilenameExtensions($extension) - { - if (self::$_filenameExtensionToMimetype == null) - self::init(); - - if (array_key_exists($extension, self::$_filenameExtensionToMimetype)) { - return self::$_filenameExtensionToMimetype[$extension]; - }else{ - return NULL; - } - } - - public static function getShortnameOfMimetype($mimetype) - { - if (self::$_mimetypeToShortname == null) - self::init(); - - if (array_key_exists($mimetype, self::$_mimetypeToShortname)) { - return self::$_mimetypeToShortname[$mimetype]; - }else{ - return NULL; - } - } -} \ No newline at end of file diff --git a/vendor/bordercloud/sparql/Curl.php b/vendor/bordercloud/sparql/Curl.php deleted file mode 100644 index 6ab2856..0000000 --- a/vendor/bordercloud/sparql/Curl.php +++ /dev/null @@ -1,684 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ - -class Curl -{ - /** - * Curl handler - * @access private - * @var resource - */ - var $ch ; - - /** - * set debug to true in order to get usefull output - * @access private - * @var string - */ - var $debug = false; - - /** - * Contain last error message if error occured - * @access private - * @var string - */ - var $error_msg; - - /** - * Curl_HTTP_Client constructor - * @param boolean debug - * @access public - */ - function __construct($debug = false) - { - $this->debug = $debug; - - // initialize curl handle - $this->ch = curl_init(); - - //set various options - - //set error in case http return code bigger than 300 - curl_setopt($this->ch, CURLOPT_FAILONERROR, true); - - // allow redirects - curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true); - - //hack to make code work on windows - //if(strpos(PHP_OS,"WIN") !== false) - { - curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0); - } - } - - /** - * Set username/pass for basic http auth - * @param string user - * @param string pass - * @access public - */ - function set_credentials($username,$password) - { - - curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($this->ch, CURLOPT_USERPWD, $username.":".$password); - curl_setopt($this->ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); - curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true); - } - - /** - * Set referrer - * @param string referrer url - * @access public - */ - function set_referrer($referrer_url) - { - curl_setopt($this->ch, CURLOPT_REFERER, $referrer_url); - } - - /** - * Set client's useragent - * @param string user agent - * @access public - */ - function set_user_agent($useragent) - { - curl_setopt($this->ch, CURLOPT_USERAGENT, $useragent); - } - - /** - * Set to receive output headers in all output functions - * @param boolean true to include all response headers with output, false otherwise - * @access public - */ - function include_response_headers($value) - { - curl_setopt($this->ch, CURLOPT_HEADER, $value); - } - - - /** - * Set proxy to use for each curl request - * @param string proxy - * @access public - */ - function set_proxy($proxy) - { - curl_setopt($this->ch, CURLOPT_PROXY, $proxy); - } - - /** - * Send post data to target URL - * return data returned from url or false if error occured - * @param string url - * @param array assoc post data array ie. $foo['post_var_name'] = $value - * @param string ip address to bind (default null) - * @param int timeout in sec for complete curl operation (default 600) - * @return string data - * @access public - */ - function send_post_data($url, $postdata, $arrayHeader=null, $ip=null, $timeout=600) - { - //set various curl options first - if($this->debug) - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - - // set url to post to - curl_setopt($this->ch, CURLOPT_URL,$url); - - // return into a variable rather than displaying it - curl_setopt($this->ch, CURLOPT_RETURNTRANSFER,true); - - //bind to specific ip address if it is sent trough arguments - if($ip) - { - if($this->debug) - { - echo "Binding to ip $ip\n"; - } - curl_setopt($this->ch,CURLOPT_INTERFACE,$ip); - } - - //set curl function timeout to $timeout - curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); - - //set method to post - curl_setopt($this->ch, CURLOPT_POST, true); - - //generate post string - $post_array = array(); - if(!is_array($postdata)) - { - return false; - } - foreach($postdata as $key=>$value) - { - $post_array[] = urlencode($key) . "=" . urlencode($value); - } - - $post_string = implode("&",$post_array); - - if($this->debug) - { - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - echo "Post String: $post_string\n"; - } - - // set post string - curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post_string); - - // set header - if($arrayHeader != null) - curl_setopt($this->ch, CURLOPT_HTTPHEADER, $arrayHeader); - - //and finally send curl request - $result = curl_exec($this->ch); - - if(curl_errno($this->ch)) - { - if($this->debug) - { - echo "Error Occured in Curl\n"; - echo "Error number: " .curl_errno($this->ch) ."\n"; - echo "Error message: " .curl_error($this->ch)."\n"; - } - - return false; - } - else - { - return $result; - } - } - - /** - * fetch data from target URL - * return data returned from url or false if error occured - * @param string url - * @param array assoc get data array ie. $foo['post_var_name'] = $value - * @param string ip address to bind (default null) - * @param int timeout in sec for complete curl operation (default 600) - * @return string data - * @access public - */ - function fetch_url($url,$getdata=null, $ip=null, $timeout=600) - { - if($this->debug) - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - - - //generate get string - $get_array = array(); - if(is_array($getdata)) - { - foreach($getdata as $key=>$value) - { - $get_array[] = urlencode($key) . "=" . urlencode($value); - } - $get_string = implode("&",$get_array); - - if($this->debug) - { - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - echo "GET String: $get_string\n"; - } - } - else - { - $get_string = null; - } - - // set url to post to - if(empty($get_string)){ - curl_setopt($this->ch, CURLOPT_URL,$url); - }else{ - curl_setopt($this->ch, CURLOPT_URL,$url."?".$get_string); - } - - //set method to get - curl_setopt($this->ch, CURLOPT_HTTPGET,true); - - // return into a variable rather than displaying it - curl_setopt($this->ch, CURLOPT_RETURNTRANSFER,true); - - //bind to specific ip address if it is sent trough arguments - if($ip) - { - if($this->debug) - { - echo "Binding to ip $ip\n"; - } - curl_setopt($this->ch,CURLOPT_INTERFACE,$ip); - } - - //set curl function timeout to $timeout - curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); - - //and finally send curl request - $result = curl_exec($this->ch); - - if(curl_errno($this->ch)) - { - if($this->debug) - { - echo "Error Occured in Curl\n"; - echo "Error number: " .curl_errno($this->ch) ."\n"; - echo "Error message: " .curl_error($this->ch)."\n"; - } - - return false; - } - else - { - return $result; - } - } - - /** - * Fetch data from target URL - * and store it directly to file - * @param string url - * @param resource value stream resource(ie. fopen) - * @param string ip address to bind (default null) - * @param int timeout in sec for complete curl operation (default 5) - * @return boolean true on success false othervise - * @access public - */ - function fetch_into_file($url, $fp, $ip=null, $timeout=5) - { - if($this->debug) - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - // set url to post to - curl_setopt($this->ch, CURLOPT_URL,$url); - - //set method to get - curl_setopt($this->ch, CURLOPT_HTTPGET, true); - - // store data into file rather than displaying it - curl_setopt($this->ch, CURLOPT_FILE, $fp); - - //bind to specific ip address if it is sent trough arguments - if($ip) - { - if($this->debug) - { - echo "Binding to ip $ip\n"; - } - curl_setopt($this->ch, CURLOPT_INTERFACE, $ip); - } - - //set curl function timeout to $timeout - curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); - - //and finally send curl request - $result = curl_exec($this->ch); - - if(curl_errno($this->ch)) - { - if($this->debug) - { - echo "Error Occured in Curl\n"; - echo "Error number: " .curl_errno($this->ch) ."\n"; - echo "Error message: " .curl_error($this->ch)."\n"; - } - - return false; - } - else - { - return true; - } - } - - /** - * Send multipart post data to the target URL - * return data returned from url or false if error occured - * (contribution by vule nikolic, [email protected]) - * @param string url - * @param array assoc post data array ie. $foo['post_var_name'] = $value - * @param array assoc $file_field_array, contains file_field name = value - path pairs - * @param string ip address to bind (default null) - * @param int timeout in sec for complete curl operation (default 30 sec) - * @return string data - * @access public - */ - function send_multipart_post_data($url, $postdata, $file_field_array=array(), $ip=null, $timeout=30) - { - if($this->debug) - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - //curl_setopt($this->ch, CURLOPT_VERBOSE, true); - //set various curl options first - - // set url to post to - curl_setopt($this->ch, CURLOPT_URL, $url); - - // return into a variable rather than displaying it - curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true); - - //bind to specific ip address if it is sent trough arguments - if($ip) - { - if($this->debug) - { - echo "Binding to ip $ip\n"; - } - curl_setopt($this->ch,CURLOPT_INTERFACE,$ip); - } - - //set curl function timeout to $timeout - curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); - - //set method to post - curl_setopt($this->ch, CURLOPT_POST, true); - - // disable Expect header - // hack to make it working - $headers = array("Expect: "); - curl_setopt($this->ch, CURLOPT_HTTPHEADER, $headers); - - // initialize result post array - $result_post = array(); - - //generate post string - $post_array = array(); - $post_string_array = array(); - if(!is_array($postdata)) - { - return false; - } - - foreach($postdata as $key=>$value) - { - $post_array[$key] = $value; - $post_string_array[] = urlencode($key)."=".urlencode($value); - } - - $post_string = implode("&",$post_string_array); - - - if($this->debug) - { - echo "Post String: $post_string\n"; - } - - // set post string - //curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post_string); - - // set multipart form data - file array field-value pairs - if(!empty($file_field_array)) - { - foreach($file_field_array as $var_name => $var_value) - { - if(strpos(PHP_OS, "WIN") !== false) $var_value = str_replace("/", "\\", $var_value); // win hack - $file_field_array[$var_name] = "@".$var_value; - } - } - - // set post data - $result_post = array_merge($post_array, $file_field_array); - curl_setopt($this->ch, CURLOPT_POSTFIELDS, $result_post); - - - //and finally send curl request - $result = curl_exec($this->ch); - - if(curl_errno($this->ch)) - { - if($this->debug) - { - echo "Error Occured in Curl\n"; - echo "Error number: " .curl_errno($this->ch) ."\n"; - echo "Error message: " .curl_error($this->ch)."\n"; - } - - return false; - } - else - { - return $result; - } - } - - /** - * Set file location where cookie data will be stored and send on each new request - * @param string absolute path to cookie file (must be in writable dir) - * @access public - */ - function store_cookies($cookie_file) - { - // use cookies on each request (cookies stored in $cookie_file) - curl_setopt ($this->ch, CURLOPT_COOKIEJAR, $cookie_file); - } - - /** - * Get last URL info - * usefull when original url was redirected to other location - * @access public - * @return string url - */ - function get_effective_url() - { - return curl_getinfo($this->ch,CURLINFO_EFFECTIVE_URL); - } - - /** - * Get http response code - * @access public - * @return int - */ - function get_http_response_code() - { - return curl_getinfo($this->ch,CURLINFO_HTTP_CODE); - } - - function get_info() - { - return curl_getinfo($this->ch); - - } - - /** - * Return last error message and error number - * @return string error msg - * @access public - */ - function get_error_msg() - { - $err = "Error number: " .curl_errno($this->ch) ."\n"; - $err .="Error message: " .curl_error($this->ch)."\n"; - - return $err; - } - - function send_post_content($url, $headersdata,$postdata, $content, $ip=null, $timeout=10) - { - if($this->debug) - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - //set various curl options first - - // set url to post to - curl_setopt($this->ch, CURLOPT_URL,$url); - - // return into a variable rather than displaying it - curl_setopt($this->ch, CURLOPT_RETURNTRANSFER,true); - - //bind to specific ip address if it is sent trough arguments - if($ip) - { - if($this->debug) - { - echo "Binding to ip $ip\n"; - } - curl_setopt($this->ch,CURLOPT_INTERFACE,$ip); - } - - //set curl function timeout to $timeout - curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); - - curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, 'POST'); - - //generate post string - $post_array = array(); - - if(count($postdata)> 0){ - foreach($postdata as $key=>$value) - { - $post_array[] = urlencode($key) . "=" . urlencode($value); - } - $post_array[] ="data=" . urlencode($content); - $post_string = implode("&",$post_array); - }else{ - $post_string=$content; - } - - if($this->debug) - { - echo "content String: $content\n"; - echo "header : ".print_r($headersdata,true)."\n"; - echo "Post String: $post_string\n"; - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - } - - // set header - curl_setopt($this->ch, CURLOPT_HTTPHEADER, array_merge(array('Content-Length: ' . strlen($post_string)),$headersdata)); - - // set post string - curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post_string); - - //and finally send curl request - $result = curl_exec($this->ch); - - if(curl_errno($this->ch)) - { - if($this->debug) - { - echo "Error Occured in Curl\n"; - echo "Error number: " .curl_errno($this->ch) ."\n"; - echo "Error message: " .curl_error($this->ch)."\n"; - } - - return false; - } - else - { - return $result; - } - } - - function send_put_data($url, $headersdata,$putdata, $ip=null, $timeout=10) - { - if($this->debug) - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - //set various curl options first - - // set url to post to - curl_setopt($this->ch, CURLOPT_URL,$url); - - // return into a variable rather than displaying it - curl_setopt($this->ch, CURLOPT_RETURNTRANSFER,true); - - //bind to specific ip address if it is sent trough arguments - if($ip) - { - if($this->debug) - { - echo "Binding to ip $ip\n"; - } - curl_setopt($this->ch,CURLOPT_INTERFACE,$ip); - } - - //set curl function timeout to $timeout - curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); - - //set method to put - - curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, 'PUT'); - - if($this->debug) - { - echo "data String: $putdata\n"; - echo "header String: $headersdata\n"; - } - - // set header - curl_setopt($this->ch, CURLOPT_HTTPHEADER, array_merge(array('Content-Length: ' . strlen($putdata)),$headersdata)); - - // set post string - curl_setopt($this->ch, CURLOPT_POSTFIELDS, $putdata); - - //and finally send curl request - $result = curl_exec($this->ch); - - if(curl_errno($this->ch)) - { - if($this->debug) - { - echo "Error Occured in Curl\n"; - echo "Error number: " .curl_errno($this->ch) ."\n"; - echo "Error message: " .curl_error($this->ch)."\n"; - } - - return false; - } - else - { - return $result; - } - } - - - function send_delete($url, $ip=null, $timeout=10) - { - if($this->debug) - curl_setopt($this->ch, CURLOPT_VERBOSE, true); - //set various curl options first - - // set url to post to - curl_setopt($this->ch, CURLOPT_URL,$url); - - // return into a variable rather than displaying it - curl_setopt($this->ch, CURLOPT_RETURNTRANSFER,true); - - //bind to specific ip address if it is sent trough arguments - if($ip) - { - if($this->debug) - { - echo "Binding to ip $ip\n"; - } - curl_setopt($this->ch,CURLOPT_INTERFACE,$ip); - } - - //set curl function timeout to $timeout - curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); - - //set method to put - - curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, "DELETE"); - - //and finally send curl request - $result = curl_exec($this->ch); - - if(curl_errno($this->ch)) - { - if($this->debug) - { - echo "Error Occured in Curl\n"; - echo "Error number: " .curl_errno($this->ch) ."\n"; - echo "Error message: " .curl_error($this->ch)."\n"; - } - - return false; - } - else - { - return $result; - } - } - -} diff --git a/vendor/bordercloud/sparql/Endpoint.php b/vendor/bordercloud/sparql/Endpoint.php deleted file mode 100644 index 88266bb..0000000 --- a/vendor/bordercloud/sparql/Endpoint.php +++ /dev/null @@ -1,686 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ -require_once("Curl.php"); -require_once("Net.php"); -require_once("Base.php"); -require_once("ToolsConvert.php"); -require_once("ToolsBlankNode.php"); -require_once("ParserSparqlResult.php"); -require_once("ConversionMimetype.php"); - -/** - * Sparql HTTP Client for SPARQL1.1's Endpoint - * - * You can send a query to any endpoint sparql - * and read the result in an array. - * - * Example : send a simple query to DBpedia - * ```php - * <?php - * - * require_once('bordercloud/Endpoint.php'); - * - * $endpoint ="http://dbpedia.org/"; - * $sp_readonly = new Endpoint($endpoint); - * $q = "select * where {?x ?y ?z.} LIMIT 5"; - * $rows = $sp_readonly->query($q, 'rows'); - * $err = $sp_readonly->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"; - * } - * ?> - * ``` - * - * For the different server, you can use the property setEndpointQuery, - * setEndpointUpdate,setNameParameterQueryRead or setNameParameterQueryWrite. - * - * EXAMPLE to config : Virtuoso - * ```php - * $sp_readonly = new Endpoint("http://localhost/tests/",$modeRead,$modeDebug); - * ``` - * - * EXAMPLE to config : 4Store - * ```php - * $sp_readonly = new Endpoint("http://localhost/",$modeRead,$modeDebug); - * ``` - * - * EXAMPLE to config : Sesame - * ```php - * $sp_readonly = new Endpoint("",$modeRead,$modeDebug); - * $sp_readonly->setEndpointQuery("http://localhost/openrdf-sesame/repositories/tests"); - * $sp_readonly->setEndpointUpdate("http://localhost/openrdf-sesame/repositories/tests/statements"); - * ``` - * - * EXAMPLE to config : Fuseki - * ```php - * $sp_readonly = new Endpoint("",$modeRead,$modeDebug); - * $sp_readonly->setEndpointQuery("http://localhost/tests/query"); - * $sp_readonly->setEndpointUpdate("http://localhost/tests/update"); - * ``` - * - * EXAMPLE to config : Allegrograph - * ```php - * $sp_readonly = new Endpoint("",$modeRead,$modeDebug); - * $sp_readonly->setEndpointQuery("http://localhost/repositories/tests"); - * $sp_readonly->setEndpointUpdate("http://localhost/repositories/tests"); - * $sp_readonly->setNameParameterQueryWrite("query"); - * ``` - * - * With a query ASK, you can use the parameter 'raw' - * in the function query and read directly the result true or false. - * - * Example : send a query ASK with the parameter raw - * ```php - * <?php - * $q = "PREFIX a: <http://example.com/test/a/> - * PREFIX b: <http://example.com/test/b/> - * ask where { GRAPH <".$graph."> {a:A b:Name \"Test3\" .}} "; - * $res = $sp_readonly->query($q, 'raw'); - * $err = $sp_readonly->getErrors(); - * if ($err) { - * print_r($err); - * throw new Exception(print_r($err,true)); - * } - * var_dump($res); - * ?> - * ``` - * - * You can insert data also with SPARQL and the function query in your graphs. - * The BorderCloud's service can host your graphs ( http://www.bordercloud.com ). - * You can choose your graph's name and Bordercloud will give you a code. - * With 3 parameters, you are alone to update your graph. - * - * Example : send a query Insert - * ```php - * $sp_write = new Endpoint($MyEndPointSparql,$MyCode,$MyGraph); - * echo "\nInsert :"; - * $q = " - * PREFIX a: <http://example.com/test/a/> - * PREFIX b: <http://example.com/test/b/> - * INSERT DATA { - * GRAPH <".$MyGraph."> { - * a:A b:Name \"Test1\" . - * a:A b:Name \"Test2\" . - * a:A b:Name \"Test3\" . - * }}"; - * $res = $sp_write->query($q,'raw'); - * $err = $sp_write->getErrors(); - * if ($err) { - * print_r($err); - * throw new Exception(print_r($err,true)); - * } - * var_dump($res); - * ``` - * - * Example : send a query Delete - * ```php - * $sp_write = new Endpoint($MyEndPointSparql,$MyCode,$MyGraph); - * - * echo "\nDelete :"; - * $q = " - * PREFIX a: <http://example.com/test/a/> - * PREFIX b: <http://example.com/test/b/> - * DELETE DATA { - * GRAPH <".$MyGraph."> { - * a:A b:Name \"Test2\" . - * }}"; - * - * $res = $sp_write->query($q,'raw'); - * $err = $sp_write->getErrors(); - * if ($err) { - * print_r($err); - * throw new Exception(print_r($err,true)); - * } - * var_dump($res); - * ``` - * - * You can change the format of the response with the function - * QueryRead and QueryUpdate. - */ -class Endpoint extends Base { - /** - * Root of the URL Endpoint - * @access private - * @var string - */ - private $_endpoint_root; - - /** - * URL of Endpoint to read - * @access private - * @var string - */ - private $_endpoint; - - /** - * URL sparql to write - * @access private - * @var string - */ - private $_endpoint_write; - - /** - * in the constructor set debug to true in order to get usefull output - * @access private - * @var bool - */ - private $_debug; - - /** - * in the constructor set the right to write or not in the store - * @access private - * @var string - */ - private $_readOnly; - - /** - * in the constructor set the proxy_host if necessary - * @access private - * @var string - */ - private $_proxy_host; - - /** - * in the constructor set the proxy_port if necessary - * @access private - * @var int - */ - private $_proxy_port; - - /** - * Parser of XML result - * @access private - * @var ParserSparqlResult - */ - private $_parserSparqlResult; - - /** - * Name of parameter HTTP to send a query SPARQL to read data. - * @access private - * @var string - */ - private $_nameParameterQueryRead; - - /** - * Name of parameter HTTP to send a query SPARQL to write data. - * @access private - * @var string - */ - private $_nameParameterQueryWrite; - - /** - * Method HTTP to send a query SPARQL to read data. - * @access private - * @var string - */ - private $_MethodHTTPRead; - private $_MethodHTTPWrite; - - - private $_login; - private $_password; - - - /** - * Constructor of Graph - * @param string $endpoint : url of endpoint, example : http://lod.bordercloud.com/sparql - * @param boolean $readOnly : true by default, if you allow the function query to write in the database - * @param boolean $debug : false by default, set debug to true in order to get usefull output - * @param string $proxy_host : null by default, IP of your proxy - * @param string $proxy_port : null by default, port of your proxy - * @access public - */ - public function __construct($endpoint, - $readOnly = true, - $debug = false, - $proxy_host = null, - $proxy_port = null) - { - parent::__construct(); - - if($readOnly){ - $this->_endpoint = $endpoint; - }else{ - if (preg_match("|/sparql/?$|i", $endpoint)) { - $this->_endpoint = $endpoint; - $this->_endpoint_root = preg_replace("|^(.*/)sparql/?$|i", "$1", $endpoint); - } else { - $this->_endpoint_root = $endpoint; - $this->_endpoint = $this->_endpoint_root."sparql/"; - } - } - - $this->_debug = $debug; - $this->_endpoint_write = $this->_endpoint_root."update/"; - $this->_readOnly = $readOnly; - - $this->_proxy_host = $proxy_host; - $this->_proxy_port = $proxy_port; - - if($this->_proxy_host != null && $this->_proxy_port != null){ - $this->_config = array( - /* remote endpoint */ - 'remote_store_endpoint' => $this->_endpoint, - /* network */ - 'proxy_host' => $this->_proxy_host, - 'proxy_port' => $this->_proxy_port, - ); - }else{ - $this->_config = array( - /* remote endpoint */ - 'remote_store_endpoint' => $this->_endpoint, - ); - } - - // init parameter in the standard - $this->_nameParameterQueryRead = "query"; - $this->_nameParameterQueryWrite = "update"; - - //init parser - $this->_parserSparqlResult = new ParserSparqlResult(); - - //FIX for Wikidata - if( $endpoint == "https://query.wikidata.org/sparql"){ - $this->_MethodHTTPRead= "GET"; - }else{ - $this->_MethodHTTPRead= "POST"; // by default - } - - } - - //FIX for WIKIDATA - /** - * Set the method HTTP to read - * @param string $method : HTTP method (GET or POST) for reading data (by default is POST) - * @access public - */ - public function setMethodHTTPRead($method) { - $this->_MethodHTTPRead = $method; - } - - /** - * Set the method HTTP to write - * @param string $method : HTTP method (GET or POST) for writing data (by default is POST) - * @access public - */ - public function setMethodHTTPWrite($method) { - $this->_MethodHTTPWrite = $method; - } - - /** - * Set the url to read - * @param string $url : endpoint's url to read - * @access public - */ - public function setEndpointQuery($url) { - $this->_endpoint = $url; - } - - /** - * Get the url to read - * @return string $url : endpoint's url to read - * @access public - */ - public function getEndpointQuery() { - return $this->_endpoint; - } - - /** - * Set the url to write - * @param string $url : endpoint's url to write - * @access public - */ - public function setEndpointUpdate($url) { - $this->_endpoint_write = $url; - } - - /** - * Get the url to write - * @return string $url : endpoint's url to write - * @access public - */ - public function getEndpointUpdate() { - return $this->_endpoint_write; - } - - /** - * Set the parameter in the query to write - * @param string $name : name of parameter - * @access public - */ - public function setNameParameterQueryWrite($name) { - $this->_nameParameterQueryWrite = $name; - } - - /** - * Get the parameter in the query to write - * @return string $name : name of parameter - * @access public - */ - public function getNameParameterQueryWrite() { - return $this->_nameparameterQueryWrite; - } - - /** - * Set the parameter in the query to read - * @param string $name : name of parameter - * @access public - */ - public function setNameParameterQueryRead($name) { - $this->_nameParameterQueryRead = $name; - } - - /** - * Get the parameter in the query to read - * @return string $name : name of parameter - * @access public - */ - public function getNameParameterQueryRead() { - return $this->_nameparameterQueryRead; - } - - /** - * Set the server login - * @param string $login : server login - * @access public - */ - public function setLogin($login) { - $this->_login = $login; - } - - /** - * Get the server login - * @return string $login : server login - * @access public - */ - public function getLogin() { - return $this->_login; - } - - /** - * Set the server password - * @param string $password : server password - * @access public - */ - public function setPassword($password) { - $this->_password = $password; - } - - /** - * Get the server login - * @return string $password : server password - * @access public - */ - public function getPassword() { - return $this->_password; - } - - /** - * Check if the server is up. - * @return boolean true if the triplestore is up. - * @access public - */ - public function check() { - return Net::ping($this->_endpoint) != -1; - } - - /** - * This function parse a SPARQL query, send the query and parse the SPARQL result in a array. - * You can custom the result with the parameter $result_format : - * <ul> - * <li>rows to return array of results - * <li>row to return array of first result - * <li>raw to return boolean for request ask, insert and delete - * </ul> - * @param string $q : Query SPARQL - * @param string $result_format : Optional, rows, row or raw - * @return array|boolean in function of parameter $result_format - * @access public - */ - public function query($q, $result_format = 'rows') { - $t1 = Endpoint::mtime(); - $result = null; - switch($result_format) - { - case "json" : - $response = $this->queryRead($q,"application/sparql-results+json"); - $result = json_decode($response); - break; - case "row" : - case "raw" : - default: //rows - $response =""; - if(preg_match("/(INSERT|DELETE|CLEAR|LOAD)/i",$q)){ - $response = $this->queryUpdate($q); - }else{ - $response = $this->queryRead($q); - } - $parser = $this->_parserSparqlResult->getParser(); - $success = xml_parse($parser,$response, true); - $result = $this->_parserSparqlResult->getResult(); - if(!$success ){ //if(! array_key_exists("result",$result)){ - $message = "Error parsing XML result:" - .xml_error_string(xml_get_error_code($parser)) - .' Response : '.$response."\n"; - $error = $this->errorLog($q,null, $this->_endpoint,200,$message); - $this->addError($error); - return false; - } - } - $result['query_time'] = Endpoint::mtime() - $t1 ; - switch($result_format) - { - case "row" : - return $result["result"]["rows"][0]; - case "raw" : - return $result["result"]["rows"][0][$result["result"]["variables"][0]]; - case "json" : - default: //rows - return $result; - } - } -/* - public function queryConstruct($q) { - $t1 = Endpoint::mtime(); - $result = null; - - $response = $this->queryRead($q,"text/turtle"); - return $response; - $result = ParserTurtle::turtle_to_array($response,""); - - $result['query_time'] = Endpoint::mtime() - $t1 ; - - return $result; - } - */ - - /** - * Send a request SPARQL of type select or ask to endpoint directly and output the response - * of server. If you want parse the result of this function, it's better and simpler - * to use the function query(). - * - * @param string $query : Query Sparql - * @param string $typeOutput by default "application/sparql-results+xml", - * @return string response of server or false if error (to do getErrors()) - * @access public - */ - public function queryRead($query,$typeOutput="application/sparql-results+xml" ) { - $client = $this->initCurl(); - $sUri = $this->_endpoint; - $response =""; - - if($typeOutput == null){ - $data = array($this->_nameParameterQueryRead => $query); - if($this->_MethodHTTPRead == "POST"){ - $response = $client->send_post_data($sUri,$data); - }else{ - $response = $client->fetch_url($sUri,$data);//fix for wikidata - } - }else{ - $data = array($this->_nameParameterQueryRead => $query, - "output" => ConversionMimetype::getShortnameOfMimetype($typeOutput), //possible fix for 4store/fuseki.. - "Accept" => $typeOutput); //fix for sesame - //print_r($data); - if($this->_MethodHTTPRead == "POST"){ - $response = $client->send_post_data($sUri,$data,array('Accept: '.$typeOutput)); - }else{ - $response = $client->fetch_url($sUri,$data);//fix for wikidata - } - } - - $code = $client->get_http_response_code(); - - $this->debugLog($query,$sUri,$code,$response); - - if(($code < 200 || $code >= 300) ) - { - $error = $this->errorLog($query,$data,$sUri,$code,$response. - $client->get_error_msg() ); - $this->addError($error); - return false; - } - return $response; - } - - /** - * Send a request SPARQL of type insert data or delete data to endpoint directly. - * <ul> - * <li>Example insert : PREFIX ex: <http://example.com/> INSERT DATA { GRAPH <http://mygraph> { ex:a ex:p 12 .}} - * <li>Example delete : PREFIX ex: <http://example.com/> DELETE DATA { GRAPH <http://mygraph> { ex:a ex:p 12 .}} - * </ul> - * @param string $query : Query Sparql of type insert data or delete data only - * @param string $typeOutput by default "application/sparql-results+xml", - * @return boolean true if it did or false if error (to do getErrors()) - * @access public - */ - public function queryUpdate($query,$typeOutput="application/sparql-results+xml") { - if($this->_readOnly){ - $message = "Sorry, you have not the right to update the database.\n"; - $error = $this->errorLog('',null, $this->_endpoint,0,$message); - $this->addError($error); - return false; - } - - $client = $this->initCurl(); - $sUri = $this->_endpoint_write; - $response =""; - - if($typeOutput == null){ - $data = array($this->_nameParameterQueryWrite => $query); - if($this->_MethodHTTPWrite == "POST"){ - $response = $client->send_post_data($sUri,$data); - }else{ - $response = $client->fetch_url($sUri,$data);//fix for wikidata - } - }else{ - $data = array($this->_nameParameterQueryWrite => $query, - //"output" => ConversionMimetype::getShortnameOfMimetype($typeOutput), //possible fix for 4store/fuseki.. - "Accept" => $typeOutput); //fix for sesame - //print_r($data); - if($this->_MethodHTTPWrite == "POST"){ - $response = $client->send_post_data($sUri,$data,array('Accept: '.$typeOutput)); - }else{ - $response = $client->fetch_url($sUri,$data);//fix for wikidata - } - } - - $code = $client->get_http_response_code(); - - $this->debugLog($query,$sUri,$code,$response); - - if($code < 200 || $code >= 300 ){ - $error = $this->errorLog($query,$data,$sUri,$code,$response); - $this->addError($error); - return false; - } - //echo "OK".$response; - return $response; - } - - /************************************************************************/ - //PRIVATE Function - - static function mtime(){ - list($msec, $sec) = explode(" ", microtime()); - return ((float)$msec + (float)$sec); - } - - /** - * write error for human - * @param string $query - * @param string $endPoint - * @param number $httpcode - * @param string $response - * @access private - */ - private function errorLog($query,$data,$endPoint,$httpcode=0,$response=''){ - $error = "Error query : " .$query."\n" . - "Error endpoint: " .$endPoint."\n" . - "Error http_response_code: " .$httpcode."\n" . - "Error message: " .$response."\n"; - "Error data: " .print_r($data,true)."\n"; - if($this->_debug){ - echo '=========================>>>>>>'.$error ; - }else{ - error_log($error); - } - return $error; - } - - /** - * Print infos - * @param unknown_type $query - * @param unknown_type $endPoint - * @param unknown_type $httpcode - * @param unknown_type $response - * @access private - */ - private function debugLog($query,$endPoint,$httpcode='',$response=''){ - if($this->_debug) - { - $error = "\n#######################\n". - "query : " .$query."\n" . - "endpoint : " .$endPoint."\n" . - "http_response_code : " .$httpcode."\n" . - "message : " .$response. - "\n#######################\n"; - - echo $error ; - } - } - - /** - * Init an object Curl in function of proxy. - * @return an object of type Curl - * @access private - */ - private function initCurl(){ - $objCurl = new Curl();//$this->_debug - if($this->_proxy_host != null && $this->_proxy_port != null){ - $objCurl->set_proxy($this->_proxy_host.":".$this->_proxy_port); - } - if($this->_login != null && $this->_password != null){ - $objCurl->set_credentials($this->_login,$this->_password); - } - return $objCurl; - } -} diff --git a/vendor/bordercloud/sparql/Namespace.php b/vendor/bordercloud/sparql/Namespace.php deleted file mode 100644 index 4be54ed..0000000 --- a/vendor/bordercloud/sparql/Namespace.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ - -class FourStore_Namespace { - - protected static $_namespaces = array(); - - public static function addW3CNamespace() - { - self::add('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'); - self::add('rdfs', 'http://www.w3.org/2000/01/rdf-schema#'); - self::add('xsd', 'http://www.w3.org/2001/XMLSchema#'); - } - - public static function add($short, $long) - { - self::$_namespaces[$short] = $long; - } - - public static function get($short) - { - return self::$_namespaces[$short]; - } - - public static function to_sparql() { - $sparql = ""; - foreach(self::$_namespaces as $short => $long) { - $sparql .= "PREFIX $short: <$long>\n"; - } - return $sparql; - } - - public static function to_turtle() { - $turtle = ""; - foreach(self::$_namespaces as $short => $long) { - $turtle .= "@prefix $short: <$long> .\n"; - } - return $turtle; - } -} - -?> diff --git a/vendor/bordercloud/sparql/Net.php b/vendor/bordercloud/sparql/Net.php deleted file mode 100644 index e240ff4..0000000 --- a/vendor/bordercloud/sparql/Net.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ - -class Net { - - /** - * Ping a address - * @return int if -1 the server is down - * @access public - */ - static function ping($address){ - $urlInfo = parse_url($address); - $domain = $urlInfo['host']; - $port = Net::getUrlPort( $urlInfo ); - $starttime = microtime(true); - $file = @fsockopen ($domain,$port, $errno, $errstr, 10); - $stoptime = microtime(true); - $status = 0; - - if (!$file) $status = -1; // Site is down - else { - fclose($file); - $status = ($stoptime - $starttime) * 1000; - $status = floor($status); - } - return $status; - } - - private static function getUrlPort( $urlInfo ) - { - if( isset($urlInfo['port']) ) { - $port = $urlInfo['port']; - } else { // no port specified; get default port - if (isset($urlInfo['scheme']) ) { - switch( $urlInfo['scheme'] ) { - case 'http': - $port = 80; // default for http - break; - case 'https': - $port = 443; // default for https - break; - case 'ftp': - $port = 21; // default for ftp - break; - case 'ftps': - $port = 990; // default for ftps - break; - default: - $port = 0; // error; unsupported scheme - break; - } - } else { - $port = 0; // error; unknown scheme - } - } - return $port; - } -} - diff --git a/vendor/bordercloud/sparql/ParserCSV.php b/vendor/bordercloud/sparql/ParserCSV.php deleted file mode 100644 index 3409fca..0000000 --- a/vendor/bordercloud/sparql/ParserCSV.php +++ /dev/null @@ -1,204 +0,0 @@ - <?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ - -class ParserCSV { - - function csv_to_array($csv, $delimiter = ',', $enclosure = '\'', $escape = '\\', $terminator = "\n") { - - $r = array(); - //$string = utf8_encode($csv); - //echo mb_detect_encoding($names); - //echo $csv; - $rows = explode($terminator,trim($csv)); - $names = array_shift($rows); - $names = str_getcsv($names,$delimiter,$enclosure,$escape) ; - $nc = count($names); - foreach ($rows as $row) { - if (trim($row)) { - $values =str_getcsv($row,$delimiter,$enclosure,$escape) ; - - if (!$values) $values = array_fill(0,$nc,null); - - $tabTemp = array(); - //array_combine($names,$values); - foreach($names as $key=>$nameCol){ - if(isset($values[$key])){ - - $value = $values[$key]; - if (ToolsConvert::isTrueFloat($value)) { - $value = floatval($value); - } elseif (is_int($value)) { - $value = intval($value); - } - $tabTemp[$nameCol] = $value; - }else{ - $tabTemp[$nameCol] = NULL; - } - } - $r[] = $tabTemp; - - } - } - return $r; - } - - function mySortAllColumn($row1, $row2){ - $result = 0; - $countTab = 0; - if( count($row1) > count($row2)){ - $countTab = count($row1); - }else{ - $countTab = count($row2); - } - - for($i=0; $i < $countTab; $i++){ - if((!isset($row1[$i])) || (!isset($row2[$i]))){ - if(isset($row1[$i]) && isset($row2[$i])){//impossible in theory - $result = 0; - break; - }elseif(!isset($row1[$i])){ - $result = -1; - break; - }elseif(!isset($row2[$i])){ - $result = 1; - break; - } - } - else if($row1[$i] < $row2[$i]){ - $result = 1; - break; - } - else if($row1[$i] < $row2[$i]){ - $result = -1; - break; - } - } - return $result; - } - - function sortTable($array){ - $result = $array; - usort($result, 'ParserCSV::mySortAllColumn'); - return $result; - } - - public static function compare($rs1,$rs2,$ordered=false,$distinct=false) { - $difference=array(); - //A/ Check the variables lists in the header are the same. - if(count($rs1) ==0 && count($rs2) ==0){ - return $difference; //return true ; - }elseif (count($rs1[0]) != count($rs2[0])) { - $difference[1]="Nb columns :".count($rows1); - $difference[2]="Nb columns :".count($rows2); - return $difference; //return false ; - } - - - //Check if there are blanknodes////////////////////// - //ref : http://blog.datagraph.org/2010/03/rdf-isomorphism - - // 1.Compare graph sizes and all statements without blank nodes. If they do not match, fail. - //1.1 remove blank nodes - $clone1WithoutBlanknodes = NULL; - $clone2WithoutBlanknodes = NULL; - if($distinct){ - $clone1WithoutBlanknodes = $rs1; - $clone2WithoutBlanknodes = $rs2; - }else{ - $clone1WithoutBlanknodes = ToolsBlankNode::removeDuplicate($rs1); - $clone2WithoutBlanknodes = ToolsBlankNode::removeDuplicate($rs2); - } - - $bnodesInRs1=array(); - $bnodesInRs2=array(); - $patternBlankNode = '/^_:/'; - - // echo "AVANT"; - // print_r($clone1); - // print_r($clone2); - foreach ($clone1WithoutBlanknodes as &$row) { - foreach ($row as $key=>&$value) { - if (preg_match($patternBlankNode, $value)) { - $bnodesInRs1[] = $value ; - $value = "BLANKNODE";//remove - } - } - } - foreach ($clone2WithoutBlanknodes as &$row) { - foreach ($row as $key=>&$value) { - if (preg_match($patternBlankNode, $value)) { - $bnodesInRs2[] = $value ; - $value = "BLANKNODE";//remove - } - } - } - - // print_r($clone1WithoutBlanknodes); - //print_r($clone2WithoutBlanknodes); - //exit(); - //1.2 compare - if($ordered){ - $difference = ToolsBlankNode::array_diff_assoc_recursive( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes); - }else{ - $difference = ToolsBlankNode::array_diff_assoc_unordered( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes) ; - } - - //Check if there are blank nodes - if((count($bnodesInRs1) == 0 && count($bnodesInRs2) == 0 ) || count($difference) != 0) - return $difference; - - //With blank nodes - $bnodesInRs1=array_values(array_unique($bnodesInRs1)); - $bnodesInRs2=array_values(array_unique($bnodesInRs2)); - if(count($bnodesInRs1) != count($bnodesInRs2)) { - $difference[1]="Nb bnode :".count($bnodesInRs1); - $difference[2]="Nb bnode :".count($bnodesInRs2); - return $difference; //return false ; - } - -// echo "BLANKNODE\n"; -// print_r($bnodesInRs1); -// print_r($bnodesInRs2); - - $clone1 = $rs1; -// print_r($clone1); - - // 2.Repeat, for each graph: - $arrayPermutationsBnode = ToolsBlankNode::AllPermutations($bnodesInRs2); - //echo "PERMUTATION\n"; - //print_r($arrayPermutationsBnode ); - //exit(); - foreach ( $arrayPermutationsBnode as $permute) { -// print_r($permute); - $clone2 = $rs2; - foreach ( $clone2 as $key=>&$row) { - $arrayVariableTypeBnode = array_keys( $row , "bnode") ; - foreach ($arrayVariableTypeBnode as $variableTypeBnode) { - $variableArray = split(" ",$variableTypeBnode); - $variable=$variableArray[0]; - - $row[$variable] = $bnodesInRs1[array_search($row[$variable] ,$permute)]; - } - } - -// print_r($clone2); - - if($ordered){ - $difference = ToolsBlankNode::array_diff_assoc_recursive( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes); - }else{ - $difference = ToolsBlankNode::array_diff_assoc_unordered( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes) ; - } - if(count($difference) == 0){ - return $difference; //true - } - } - - return $difference; - } - - -} diff --git a/vendor/bordercloud/sparql/ParserSparqlResult.php b/vendor/bordercloud/sparql/ParserSparqlResult.php deleted file mode 100644 index ae5fa4f..0000000 --- a/vendor/bordercloud/sparql/ParserSparqlResult.php +++ /dev/null @@ -1,320 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ - -class ParserSparqlResult extends Base { - private $_result; - private $_rowCurrent; - private $_cellCurrent; - private $_value; - - function __construct() { - parent::__construct(); - $this->_result = array(); - } - - function getParser(){ - $objectParser = xml_parser_create(); - xml_set_object ($objectParser, $this); - - //Don't alter the case of the data - xml_parser_set_option($objectParser, XML_OPTION_CASE_FOLDING, false); - - xml_set_element_handler($objectParser,"startElement","endElement"); - xml_set_character_data_handler($objectParser, "contentHandler"); - return $objectParser; - } - - function getResult(){ - return $this->_result; - } - - //callback for the start of each element - function startElement($parser_object, $elementname, $attribute) { - if($elementname == "sparql"){ - $this->_result['result'] = array(); - }else if($elementname == "head"){ - $this->_result['result']['variables'] = array(); - }else if($elementname == "variable"){ - $this->_result['result']['variables'][] = $attribute['name']; - }else if($elementname == "results"){ - $this->_rowCurrent = -1; - $this->_result['result']['rows'] = array(); - }else if($elementname == "result"){ - $this->_rowCurrent++; - $this->_result['result']['rows'][] = array(); - }else if($elementname == "binding"){ - $this->_value = ""; - $this->_cellCurrent = $attribute['name']; - }else if($this->_cellCurrent != null){ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." type"] = $elementname; - - if(isset($attribute['xml:lang'])) - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." lang"] = $attribute['xml:lang']; - - if(isset($attribute['datatype'])) - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." datatype"] = $attribute['datatype']; - } - } - - //callback for the end of each element - function endElement($parser_object, $elementname) { - if($elementname == "binding"){ - - if(strlen(trim($this->_value)) == 0) - return; - - if(!isset($this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." type"])) - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." type"]=NULL; - - if($this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." type"] == "uri"){ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = trim($this->_value); - }elseif($this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." type"] == "bnode"){ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = trim($this->_value); - }elseif($this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." type"] == "literal"){ - $value = trim($this->_value); - if(array_key_exists($this->_cellCurrent." datatype",$this->_result['result']['rows'][$this->_rowCurrent])){ - if($this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." datatype"] == "http://www.w3.org/2001/XMLSchema#double" || - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." datatype"] == "http://www.w3.org/2001/XMLSchema#decimal" - ){ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = floatval($value); - }elseif($this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." datatype"] == "http://www.w3.org/2001/XMLSchema#integer" - ){ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = intval($value); - }elseif($this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent." datatype"] == "http://www.w3.org/2001/XMLSchema#boolean" - ){ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = $value === "true" ? true : false; - }else{ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = $value; - } - }else{ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = $value; - } - }else{ - $this->_result['result']['rows'][$this->_rowCurrent][$this->_cellCurrent] = $this->_value; - } - $this->_cellCurrent = null; - $this->_value = ""; - } - } - - //callback for the content within an element - function contentHandler($parser_object,$data) - { - if($this->_cellCurrent != null){ - // echo "DATA". $data." - ".$this->_cellCurrent."\n"; - $this->_value .= $data; - } - } - - function sortResult($array){ - $result = $array; - if(isset($result['result']['rows'])) - usort($result['result']['rows'], 'ParserSparqlResult::mySortResult'); - return $result; - } - - function mySortResult($row1, $row2){ - $result = 0; - $countTab = 0; - if( count($row1) > count($row2)){ - $countTab = count($row1); - }else{ - $countTab = count($row2); - } - - for($i=0; $i < $countTab; $i++){ - if((!isset($row1[$i])) || (!isset($row2[$i]))){ - if(isset($row1[$i]) && isset($row2[$i])){//impossible in theory - $result = 0; - break; - }elseif(!isset($row1[$i])){ - $result = -1; - break; - }elseif(!isset($row2[$i])){ - $result = 1; - break; - } - } - else if($row1[$i] < $row2[$i]){ - $result = 1; - break; - } - else if($row1[$i] < $row2[$i]){ - $result = -1; - break; - } - } - return $result; - } - - public static function compare($rs1,$rs2,$ordered=false,$distinct=false) { - $difference=array(); - //A/ Check the variables lists in the header are the same. - if(! isset($rs1['result']['variables']) && ! isset($rs2['result']['variables'])){ - return $difference; //return true ; - }elseif (! isset($rs1['result']['variables']) || ! isset($rs2['result']['variables']) ) { - $difference[1]=$rs1['result']['variables']; - $difference[2]=$rs2['result']['variables']; - return $difference; //return false ; - } - - //Check if there are blanknodes////////////////////// - //ref : http://blog.datagraph.org/2010/03/rdf-isomorphism - -// 1.Compare graph sizes and all statements without blank nodes. If they do not match, fail. -//1.1 remove blank nodes - $clone1WithoutBlanknodes = NULL; - $clone2WithoutBlanknodes = NULL; - if($distinct){ - $clone1WithoutBlanknodes = $rs1['result']['rows']; - $clone2WithoutBlanknodes = $rs2['result']['rows']; - }else{ - $clone1WithoutBlanknodes = ToolsBlankNode::removeDuplicate($rs1['result']['rows']); - $clone2WithoutBlanknodes = ToolsBlankNode::removeDuplicate($rs2['result']['rows']); - } - - $bnodesInRs1=array(); - $bnodesInRs2=array(); - - // echo "AVANT"; - // print_r($clone1); - // print_r($clone2); - foreach ($clone1WithoutBlanknodes as $key=>&$row) { - $arrayVariableTypeBnode = array_keys( $row , "bnode") ; - foreach ($arrayVariableTypeBnode as $variableTypeBnode) { - $variableArray = split(" ",$variableTypeBnode); - $variable=$variableArray[0]; - $bnodesInRs1[] = $row[$variable] ; - $row[$variable] = "BLANKNODE";//remove - } - } - foreach ( $clone2WithoutBlanknodes as $key=>&$row) { - $arrayVariableTypeBnode = array_keys( $row , "bnode") ; - foreach ($arrayVariableTypeBnode as $variableTypeBnode) { - $variableArray = split(" ",$variableTypeBnode); - $variable=$variableArray[0]; - $bnodesInRs2[] = $row[$variable] ; - $row[$variable] = "BLANKNODE";//remove - } - } - - //print_r($clone1WithoutBlanknodes); - //print_r($clone2WithoutBlanknodes); -//1.2 compare - if($ordered){ - $difference = ToolsBlankNode::array_diff_assoc_recursive( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes); - }else{ - $difference = ToolsBlankNode::array_diff_assoc_unordered( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes) ; - } - - //Check if there are blank nodes - if((count($bnodesInRs1) == 0 && count($bnodesInRs2) == 0 ) || count($difference) != 0) - return $difference; - - //With blank nodes - $bnodesInRs1=array_values(array_unique($bnodesInRs1)); - $bnodesInRs2=array_values(array_unique($bnodesInRs2)); - if(count($bnodesInRs1) != count($bnodesInRs2)) { - $difference[1]="Nb bnode :".count($bnodesInRs1); - $difference[2]="Nb bnode :".count($bnodesInRs2); - return $difference; //return false ; - } - -// echo "BLANKNODE\n"; -// print_r($bnodesInRs1); -// print_r($bnodesInRs2); - $clone1 = $rs1['result']['rows']; - // print_r($clone1); - //$clone2 = $rs2['result']['rows']; - // 2.Repeat, for each graph: - $arrayPermutationsBnode = ToolsBlankNode::AllPermutations($bnodesInRs2); - //echo "PERMUTATION\n"; - //print_r($arrayPermutationsBnode ); - // exit(); - foreach ( $arrayPermutationsBnode as $permute) { - $clone2 = $rs2['result']['rows']; - - //print_r($clone2); - foreach ( $clone2 as $key=>&$row) { - $arrayVariableTypeBnode = array_keys( $row , "bnode") ; - foreach ($arrayVariableTypeBnode as $variableTypeBnode) { - $variableArray = split(" ",$variableTypeBnode); - $variable=$variableArray[0]; - - $row[$variable] = $bnodesInRs1[array_search($row[$variable] ,$permute)]; - } - } - //print_r($clone2); - //$difference = self::sub_array_diff_assoc_unordered( $clone1,$clone2) ; - if($ordered){ - $difference = ToolsBlankNode::array_diff_assoc_recursive($clone1,$clone2); - }else{ - $difference = ToolsBlankNode::array_diff_assoc_unordered($clone1,$clone2) ; - } - - if(count($difference) == 0){ - return $difference; //true - } - } - - return $difference; - } -/* - private static function sub_array_diff_assoc_unordered( $rows1, $rows2) { - $difference=array(); - - //B/ Check the result set have the same number of rows. - if(count($rows1) != count($rows2)) { - $difference[1]="Nb rows :".count($rows1); - $difference[2]="Nb rows :".count($rows2); - return $difference; //return false ; - } - - //C/ Pick a row from the test results, scan the expected results - // to find a row with same variable/value bindings, and remove - // from the expected results. If all test rows, match then - // (because of B) the result sets have the same rows. - // - //return equivalent(convert(rs1), convert(rs2), new BNodeIso(NodeUtils.sameValue)) ; - $clone1 = $rows1; - $clone2 = $rows2; - - // echo "AVANT"; - // print_r($clone1); - // print_r($clone2); - foreach ($rows1 as $key1=>&$value1) { - $tmpclone2 = $clone2; - foreach ($tmpclone2 as $key2=>&$value2) { - - //echo "-------------"; - //print_r($value1); - //print_r($value2); - if(count(array_diff_assoc($value1,$value2)) == 0 && - count(array_diff_assoc($value2,$value1)) == 0 ){ - unset($clone1[$key1]); - unset($clone2[$key2]); - break; - } - } - //echo "-------------APRES"; - //print_r($clone1); - //print_r($clone2); - } - - if(count($clone1) != 0 || - count($clone2) != 0 ){ - $difference[1]=$clone1; - $difference[2]=$clone2; - $difference[1]=$clone1; - $difference[2]=$clone2; - return $difference; //return false ; - } - return $difference; - } - */ -} - diff --git a/vendor/bordercloud/sparql/ParserTurtle.php b/vendor/bordercloud/sparql/ParserTurtle.php deleted file mode 100644 index e4623e6..0000000 --- a/vendor/bordercloud/sparql/ParserTurtle.php +++ /dev/null @@ -1,335 +0,0 @@ - <?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ - -class ParserTurtle { - - static function turtle_to_array($turtle,$baseGraph,$idMD5 = false){ - $tabResult = array(); - $tabResult["prefix"] = array(); - $tabResult["prefix"]["base"] = $baseGraph; - $tabResult["triples"] = array(); - - preg_match_all("/((?:(?:\"|').*(?:\"|')(?:\^\^[^\s]*)?|a|<[^\s]*>|[^\s]*:[^\s]+|;|,|@prefix\s*[^\s]*\s*:\s*<[^\s<>]+>|\s*\r?\n?)+\s?\.)/i",$turtle, $matches, PREG_SET_ORDER); - - foreach ($matches as $val) { - //// http://answers.semanticweb.com/questions/2025/what-is-the-meaning-of-base-and-prefix-in-turtle-documents - - if(preg_match("/^\s*@base\s*<([^\s<>]+)>\s*\.\s*$/i", $val[0], $valMatches)){ - $tabResult["prefix"]["base"] = $valMatches[1]; - }elseif(preg_match("/^\s*@prefix\s*([^\s]+)?\s*:\s*<([^\s<>]+)>\s*\.\s*$/i", $val[0], $valMatches)){ - $namePrefix = $valMatches[1] == "" ? "empty" : $valMatches[1]; - $tabResult["prefix"][$namePrefix] = $valMatches[2]; - }elseif(preg_match("/^\s*(<[^\s]*>|[^\s]*:[^\s]+)\s*(.*)\s*\.$/is", $val[0], $valMatches)){ - $object = ParserTurtle::relativeToExplicitURI($valMatches[1],$tabResult["prefix"]) ; - preg_match_all("/\s*(a|<[^\s\,\;]*>|[^\s]*:[^\s\;]+)\s*((?:(?:<[^\s\,\;]*>|[^\s]*:[^\s\;]+|(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*')(?:\^\^[^\s\;]*)?|\s*),?)+\s*);?/is",$valMatches[2], $propertyMatches, PREG_SET_ORDER); - foreach ($propertyMatches as $propertyVal) { - - $property =""; - if($propertyVal[1] == "a"){ - $property = "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>" ; - }else{ - $property = ParserTurtle::relativeToExplicitURI($propertyVal[1],$tabResult["prefix"]) ; - } - preg_match_all("/(<[^\s\,\;]*>|[^\s]*:[^\s\,]+|(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*')(?:\^\^[^\s\,]*)?)\s*,?/is",$propertyVal[2], $valueMatches, PREG_SET_ORDER); - foreach ($valueMatches as $valueVal) { - $value = ParserTurtle::relativeToExplicitURI($valueVal[1],$tabResult["prefix"]) ; - //echo "s=>".$object." p=>".$property." o=>".$value."\n"; - if($idMD5) - $tabResult["triples"][md5($object.$property.$value)] = array("s"=>$object,"p"=>$property,"o"=>$value); - else - $tabResult["triples"][] = array("s"=>$object,"p"=>$property,"o"=>$value); - } - } - } - } - return $tabResult; - } - - static function relativeToExplicitURI($uri,$prefix){ - $result = $uri; - if(preg_match("/^(\"(?:\\\"|[^\"])*\"|'(?:\\'|[^'])*')(?:\^\^([^\s]*))?$/i",$uri, $matches)){//<> - if(isset($matches[2])){ - $type = ParserTurtle::relativeToExplicitURI($matches[2],$prefix); - $value = $matches[1]; - if($type == "http://www.w3.org/2001/XMLSchema#double" || - $type == "http://www.w3.org/2001/XMLSchema#decimal" ){ - $value = floatval($value); - }elseif($type == "http://www.w3.org/2001/XMLSchema#integer"){ - $value = intval($value); - //}elseif($type == "http://www.w3.org/2001/XMLSchema#boolean"){ - // $value = $value === "true" ? true : false; - } - $result = "\"".$value."\"^^".$type; - }else{ - $value = $matches[1]; - if (ToolsConvert::isTrueFloat($value)) { - $value = floatval($value); - } elseif (is_int($value)) { - $value = intval($value); - } - $result = $value; - } - - }elseif(preg_match("/^<>$/i",$uri, $matches)){//<> - $result = "<".$prefix["base"].">"; - }elseif(preg_match("/^<#([^:]+)>$/i",$uri, $matches)){//<#truc> - $result = "<".$prefix["base"].$matches[1].">"; - }elseif(preg_match("/^<([^:]+)>$/i",$uri, $matches)){//<truc> - $len = strlen( $prefix["base"]); - $prefixbase = substr( $prefix["base"], 0, strrpos ($prefix["base"] , "/")); - $result = "<".$prefixbase.$matches[1].">"; - }elseif(preg_match("/^:([^\s]*)$/i",$uri, $matches)){//:truc - $result = "<".$prefix["empty"].$matches[1].">"; - }elseif(preg_match("/^([^:_]*):([^><]*)$/i",$uri, $matches)){//x:truc - $result = "<".$prefix[$matches[1]].$matches[2].">"; - }else{ - $value = $uri; - if (ToolsConvert::isTrueFloat($value)) { - $value = floatval($value); - } elseif (is_int($value)) { - $value = intval($value); - } - $result = $value; - } - return $result; - } - - static function mySortTriples($itm1, $itm2){ - if($itm1["s"] > $itm2["s"]){ - return 1; - } - else if($itm1["s"] < $itm2["s"]){ - return -1; - } - else{ - if($itm1["p"] > $itm2["p"]){ - return 1; - } - else if($itm1["p"] < $itm2["p"]){ - return -1; - } - else{ - if($itm1["o"] > $itm2["o"]){ - return 1; - } - else if($itm1["o"] < $itm2["o"]){ - return -1; - } - else{ - return 0; - } - } - } - } - - static function sortTriples($arrayTurtle){ - $result = $arrayTurtle; - array_multisort($result["prefix"],SORT_ASC,SORT_STRING); - - usort($result["triples"], 'ParserTurtle::mySortTriples'); - - return $result; - } - - static function getKey($arrayTurtle, $s,$p){ - $result = null; - if(!EMPTY($arrayTurtle)){ - foreach ($arrayTurtle["triples"] as $key=>$triple) { - if("<".$s.">" == $triple["s"] && "<".$p.">" == $triple["p"] ){ - $result = $key; - break; - } - } - } - return $key; - } - static function getTriple($arrayTurtle, $s,$p){ - $result = null; - if(!EMPTY($arrayTurtle)){ - foreach ($arrayTurtle["triples"] as $key=>$triple) { - if("<".$s.">" == $triple["s"] && "<".$p.">" == $triple["p"] ){ - $result = $triple; - preg_match( '@^(?:<tel\:([^<>]+)>|<mailto\:([^<>]+)>|<([^<>]+)>|([^\"<>]+)|\"(.*)\"[^\"]*)$@i',$triple["o"], $matches); -//\<mailto\:([^\<\>])+\>|\<([^\<\>])+\>| -//print_r($triple["o"]); - //print_r($matches); - foreach ($matches as $key=>$match) { - if($key != 0 && ! EMPTY($match)){ - $result["value"] = $match; - break; - } - } - break; - } - } - } - return $result; - } - - public static function compare($rs1,$rs2,$ordered=false,$distinct=false) { - $difference=array(); - $rs1Triples = NULL; - $rs2Triples = NULL; - - if($distinct){ - $rs1Triples = $rs1["triples"]; - $rs2Triples = $rs2["triples"]; - }else{ - $rs1Triples = ToolsBlankNode::removeDuplicate($rs1["triples"]); - $rs2Triples = ToolsBlankNode::removeDuplicate($rs2["triples"]); - } - - //B/ Check the result set have the same number of rows. - if(count($rs1Triples) != count($rs2Triples)) { - $difference[1]="Nb rows :".count($rs1Triples); - $difference[2]="Nb rows :".count($rs2Triples); - return $difference; //return false ; - } - - //Check if there are blanknodes////////////////////// - //ref : http://blog.datagraph.org/2010/03/rdf-isomorphism - -// 1.Compare graph sizes and all statements without blank nodes. If they do not match, fail. -//1.1 remove blank nodes - $clone1WithoutBlanknodes =$rs1Triples; - $clone2WithoutBlanknodes = $rs2Triples; - $bnodesInRs1=array(); - $bnodesInRs2=array(); - $patternBlankNode = '/^_:/'; - - // echo "AVANT"; - // print_r($clone1); - // print_r($clone2); - foreach ($clone1WithoutBlanknodes as &$row) { - foreach ($row as $key=>&$value) { - if (preg_match($patternBlankNode, $value)) { - $bnodesInRs1[] = $value ; - $value = "BLANKNODE";//remove - } - } - } - foreach ($clone2WithoutBlanknodes as &$row) { - foreach ($row as $key=>&$value) { - if (preg_match($patternBlankNode, $value)) { - $bnodesInRs2[] = $value ; - $value = "BLANKNODE";//remove - } - } - } - - //print_r($clone1WithoutBlanknodes); - //print_r($clone2WithoutBlanknodes); -//1.2 compare - if($ordered){ - $difference = ToolsBlankNode::array_diff_assoc_recursive( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes); - }else{ - $difference = ToolsBlankNode::array_diff_assoc_unordered( $clone1WithoutBlanknodes, $clone2WithoutBlanknodes) ; - } - - //Check if there are blank nodes - if((count($bnodesInRs1) == 0 && count($bnodesInRs2) == 0 ) || count($difference) != 0) - return $difference; - - //With blank nodes - $bnodesInRs1=array_values(array_unique($bnodesInRs1)); - $bnodesInRs2=array_values(array_unique($bnodesInRs2)); - if(count($bnodesInRs1) != count($bnodesInRs2)) { - $difference[1]="Nb bnode :".count($bnodesInRs1); - $difference[2]="Nb bnode :".count($bnodesInRs2); - return $difference; //return false ; - } - - //echo "BLANKNODE\n"; - //print_r($bnodesInRs1); - //print_r($bnodesInRs2); - $clone1 = $rs1Triples; - // print_r($clone1); - // 2.Repeat, for each graph: - $arrayPermutationsBnode = ToolsBlankNode::AllPermutations($bnodesInRs2); - //echo "PERMUTATION\n"; - //print_r($arrayPermutationsBnode ); - //exit(); - foreach ( $arrayPermutationsBnode as $permute) { - //print_r($permute); - $clone2 = $rs2Triples; - foreach ( $clone2 as $key=>&$row) { - $arrayVariableTypeBnode = array_keys( $row , "bnode") ; - foreach ($arrayVariableTypeBnode as $variableTypeBnode) { - $variableArray = split(" ",$variableTypeBnode); - $variable=$variableArray[0]; - - $row[$variable] = $bnodesInRs1[array_search($row[$variable] ,$permute)]; - } - } - - //print_r($clone2); - //$difference = self::sub_array_diff_assoc_unordered( $clone1,$clone2) ; - if($ordered){ - $difference = ToolsBlankNode::array_diff_assoc_recursive($clone1,$clone2); - }else{ - $difference = ToolsBlankNode::array_diff_assoc_unordered($clone1,$clone2) ; - } - if(count($difference) == 0){ - return $difference; //true - } - } - - return $difference; - } - /* - public static function array_diff_assoc_unordered( $rs1, $rs2) { - $difference=array(); - $rs1Triples = $rs1["triples"]; - $rs2Triples = $rs2["triples"]; - - //B/ Check the result set have the same number of rows. - if(count($rs1Triples) != count($rs2Triples)) { - $difference[1]="Nb rows :".count($rs1Triples); - $difference[2]="Nb rows :".count($rs2Triples); - return $difference; //return false ; - } - - //C/ Pick a row from the test results, scan the expected results - // to find a row with same variable/value bindings, and remove - // from the expected results. If all test rows, match then - // (because of B) the result sets have the same rows. - // - //return equivalent(convert(rs1), convert(rs2), new BNodeIso(NodeUtils.sameValue)) ; - $clone1 = $rs1Triples; - $clone2 = $rs2Triples; -// echo "AVANT"; -// print_r($clone1); -// print_r($clone2); - foreach ($rs1Triples as $key1=>&$value1) { - $tmpclone2 = $clone2; - foreach ($tmpclone2 as $key2=>&$value2) { - -// echo "-------------"; -// print_r($value1); -// print_r($value2); - if(count(array_diff_assoc($value1,$value2)) == 0 && - count(array_diff_assoc($value2,$value1)) == 0 ){ - unset($clone1[$key1]); - unset($clone2[$key2]); - break; - } - } -// echo "-------------APRES"; -// print_r($clone1); -// print_r($clone2); - } - - if(count($clone1) != 0 || - count($clone2) != 0 ){ - $difference[1]=$clone1; - $difference[2]=$clone2; - return $difference; //return false ; - } - - return $difference; - }*/ -} diff --git a/vendor/bordercloud/sparql/README.md b/vendor/bordercloud/sparql/README.md index af76222..e012344 100644 --- a/vendor/bordercloud/sparql/README.md +++ b/vendor/bordercloud/sparql/README.md @@ -1,28 +1,32 @@ -## Lib Sparql 1.1 HTTP Client +[](https://travis-ci.org/BorderCloud/SPARQL) -###Installation -This project assumes you have composer installed. -Simply add: - "require" : { - - "BorderCloud/SPARQL" : "*" - - } +## Lib Sparql 1.1 HTTP Client + +Very simple SparqlClient for PHP. + +Thanks to [contributors](https://github.com/BorderCloud/SPARQL/graphs/contributors). + +### Installation + +This project assumes you have composer installed. Simply add new dependency via Composer: +```sh +composer require bordercloud/sparql +``` To your composer.json, and then you can simply install with: - - composer install +```sh +composer install +``` ### Test the lib with a php script : query You can test your first query sparql with DBPEDIA via a command line : -``` +```sh ./query -r -e http://dbpedia.org/sparql -f ./example/queryReadDBpedia.rq ``` And the doc of this script with virtuoso, 4store, Allegrograph, Fuseki and Sesame : - ``` USAGE : query [-r|-w][-e URL|--endpointQueryAndUpdate=URL] [--file=FILE|-f FILE] @@ -30,7 +34,7 @@ -r READ ONLY -w WRITE ONLY - -e, --endpointQueryAndUpdate=URL Put url of endpoint to do query or + -e, --endpointQueryAndUpdate=URL Put url of endpoint to do query or update : URL/sparql/?query=... URL/update/?update=... (POST) @@ -38,19 +42,19 @@ URL?query=... -u, --endpointUpdateOnly=URL Put url of endpoint to do query : URL?update=... (POST) - --nameParameterQuery=PARAMETER Change the name of parameter in + --nameParameterQuery=PARAMETER Change the name of parameter in the request http to read. (by default : query) - --nameParameterUpdate=PARAMETER Change the name of parameter in + --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 @@ -98,131 +102,162 @@ Send a simple query to Wikidata : ```php <?php +use BorderCloud\SPARQL\SparqlClient; -require_once('../Endpoint.php'); +require_once ('../vendor/autoload.php'); -$endpoint ="https://query.wikidata.org/sparql"; -$sp_readonly = new Endpoint($endpoint); +$endpoint = "https://query.wikidata.org/sparql"; +$sc = new SparqlClient(); +$sc->setEndpointRead($endpoint); +//$sc->setMethodHTTPRead("GET"); $q = "select * where {?x ?y ?z.} LIMIT 5"; -$rows = $sp_readonly->query($q, 'rows'); -$err = $sp_readonly->getErrors(); +$rows = $sc->query($q, 'rows'); +$err = $sc->getErrors(); if ($err) { - print_r($err); - throw new Exception(print_r($err,true)); + 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"]["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]); +foreach ($rows["result"]["rows"] as $row) { + foreach ($rows["result"]["variables"] as $variable) { + printf("%-20.20s", $row[$variable]); echo '|'; - } - echo "\n"; - } -?> + } + echo "\n"; +} ``` Send a simple query to DBpedia : ```php <?php +use BorderCloud\SPARQL\SparqlClient; -require_once('bordercloud/Endpoint.php'); +require_once ('../vendor/autoload.php'); - $endpoint ="http://dbpedia.org/sparql"; - $sp_readonly = new Endpoint($endpoint); - $q = "select * where {?x ?y ?z.} LIMIT 5"; - $rows = $sp_readonly->query($q, 'rows'); - $err = $sp_readonly->getErrors(); - if ($err) { - print_r($err); - throw new Exception(print_r($err,true)); +$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 '|'; } - - 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"; - } -?> + echo "\n"; +} ``` Send a simple query via an endpoint sparql-auth (with OpenLink Virtuoso Open-Source Edition) : ```php <?php +use BorderCloud\SPARQL\SparqlClient; -require_once('../Endpoint.php'); +require_once ('../vendor/autoload.php'); - $endpoint = "https://example.com/sparql-auth"; - $sp_ReadAndWrite = new Endpoint($endpoint,false); - - $sp_ReadAndWrite->setLogin("login"); - $sp_ReadAndWrite->setPassword("password"); - - $q = "select * where {?x ?y ?z.} LIMIT 5"; - $rows = $sp_ReadAndWrite->query($q, 'rows'); - $err = $sp_ReadAndWrite->getErrors(); - if ($err) { - print_r($err); - throw new Exception(print_r($err,true)); +$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 = $sp_ReadAndWrite->query($q, 'rows'); +$err = $sp_ReadAndWrite->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 '|'; } - - 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"; - } -?> + echo "\n"; +} ``` -### Documentation API -[API](doc/Endpoint.md) +### Documentation API +* [SparqlClient](doc/BorderCloud-SPARQL-SparqlClient.md) +* [API](doc/ApiIndex.md) -### Copy Sources and tests +### Copy Sources and tests + TODO !! +```sh git clone http://github.com/BorderCloud/SPARQL.git +``` -### Contact +### Contact If you have remarks, questions, or suggestions, please send them to [email protected] -### Release-Notes +### Release-Notes + +* V2.0.0@DEV +** 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 * V1.2.1.0 Add fix for Wikidata and other * V1.1.0.0 version SPARQL.Pro lib PHP by Karima Rafes <[email protected]> -### license +### license + SPARQL.Pro lib PHP (c)2014 by Karima Rafes - BorderCloud SPARQL.Pro lib PHP is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. You should have received a copy of the license along with this -work. If not, see <http://creativecommons.org/licenses/by-sa/4.0/>. +work. If not, see <http://creativecommons.org/licenses/by-sa/4.0/>. -### Compile DOC -php vendor/phpdocumentor/phpdocumentor/bin/phpdoc --template="xml" -f Base.php -f ConversionMimetype.php -f Endpoint.php -f ParserCSV.php -f ToolsConvert.php -f Curl.php -f Net.php -f ParserSparqlResult.php -f Namespace.php -f ParserTurtle.php -f ToolsBlankNode.php +### Compile DOC + +```sh +php vendor/phpdocumentor/phpdocumentor/bin/phpdoc --directory=src --template="xml" vendor/evert/phpdoc-md/bin/phpdocmd ./output/structure.xml doc +``` + +### Git... +```sh +git pull +git push +git tag -a 2.0.1@dev -m "version dev" +git push --tags +``` + + diff --git a/vendor/bordercloud/sparql/ToolsBlankNode.php b/vendor/bordercloud/sparql/ToolsBlankNode.php deleted file mode 100644 index 31b5523..0000000 --- a/vendor/bordercloud/sparql/ToolsBlankNode.php +++ /dev/null @@ -1,165 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ -class ToolsBlankNode { - - public static function removeDuplicate($set) - { - $find = false; - $result = array(); - foreach ($set as $key1=>$value1) { - $find = false; - foreach ($result as $key2=>$value2) { - if(count(array_diff_assoc($value1,$value2)) == 0 ){ - $find = true; - break; - } - } - if(! $find) - $result[] = $value1; - - } - return $result; - } - - public static function AllPermutations($set) - { - $solutions=array(); - $solutions[]=$set; - $n=count($set); - $p=array_keys($set); - $i=1; - - while ($i<$n) - { - if ($p[$i]>0){ - $p[$i]--; - $j=0; - if ($i%2==1) - $j=$p[$i]; - //swap - $tmp=$set[$j]; - $set[$j]=$set[$i]; - $set[$i]=$tmp; - $i=1; - $solutions[]=$set; - } - elseif ($p[$i]==0){ - $p[$i]=$i; - $i++; - } - } - return $solutions; - } - - - public static function array_diff_assoc_unordered( $rows1, $rows2) { - $difference=array(); - - //B/ Check the result set have the same number of rows. - if(count($rows1) != count($rows2)) { - $difference[1]="Nb rows :".count($rows1); - $difference[2]="Nb rows :".count($rows2); - return $difference; //return false ; - } - - //C/ Pick a row from the test results, scan the expected results - // to find a row with same variable/value bindings, and remove - // from the expected results. If all test rows, match then - // (because of B) the result sets have the same rows. - // - //return equivalent(convert(rs1), convert(rs2), new BNodeIso(NodeUtils.sameValue)) ; - $clone1 = $rows1; - $clone2 = $rows2; - - // echo "AVANT"; - // print_r($clone1); - // print_r($clone2); - foreach ($rows1 as $key1=>&$value1) { - $tmpclone2 = $clone2; - foreach ($tmpclone2 as $key2=>&$value2) { - - //echo "-------------"; - //print_r($value1); - //print_r($value2); - if(count(array_diff_assoc($value1,$value2)) == 0 && - count(array_diff_assoc($value2,$value1)) == 0 ){ - unset($clone1[$key1]); - unset($clone2[$key2]); - break; - } - } - //echo "-------------APRES"; - //print_r($clone1); - //print_r($clone2); - } - - if(count($clone1) != 0 || - count($clone2) != 0 ){ - $difference[1]=$clone1; - $difference[2]=$clone2; - $difference[1]=$clone1; - $difference[2]=$clone2; - return $difference; //return false ; - } - return $difference; - } - - public static function array_diff_assoc_recursive($array1, $array2) { - $difference=array(); - foreach($array1 as $key => $value) { - if( is_array($value) ) { - if( !isset($array2[$key]) || !is_array($array2[$key]) ) { - $difference[1][$key] = $value; - $difference[2][$key] = "Not set"; - } else { - $new_diff = self::array_diff_assoc_recursive($value, $array2[$key]); - if( count($new_diff)>0 ){ - $difference[1][$key] = $new_diff[1]; - $difference[2][$key] = $new_diff[2]; - } - } - } else if( !array_key_exists($key,$array2)) { - $difference[1][$key] = $value; - $difference[2][$key] = "Key doesnt exist"; - } else if($array2[$key] !== $value) { - $difference[1][$key] = $value; - $difference[2][$key] = $array2[$key]; - } - } - return $difference; - } - /* - function array_diff_assoc_recursive_with_blanknode($array1, $array2) { - $difference=array(); - $node = array(); - foreach($array1 as $key => $value) { - if( is_array($value) ) { - if( !isset($array2[$key]) || !is_array($array2[$key]) ) { - $difference[$key] = $value; - } else { - $new_diff = Tools::array_diff_assoc_recursive_with_blanknode($value, $array2[$key]); - if( !empty($new_diff) ) - $difference[$key] = $new_diff; - } - } else if( !array_key_exists($key,$array2) ) { - $difference[$key] = $value; - } else if( $array2[$key] !== $value && floatval($array2[$key]) !== floatval($value)) { - if(isset($value[0]) && $value[0] == "_"){//(array_key_exists("type",$array1) && $array1["type"] == "bnode"){ - if(!array_key_exists($value,$node )){ - $node[$value] = $array2[$key]; - }else if($node[$value] !== $array2[$key] ){ - $difference[$key] = $value; - } - }else{ - $difference[$key] = $value; - } - } - } - return $difference; - } - */ -} \ No newline at end of file diff --git a/vendor/bordercloud/sparql/ToolsConvert.php b/vendor/bordercloud/sparql/ToolsConvert.php deleted file mode 100644 index 6ff57ea..0000000 --- a/vendor/bordercloud/sparql/ToolsConvert.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -/** - * @git [email protected]:BorderCloud/SPARQL.git - * @author Karima Rafes <[email protected]> - * @license http://creativecommons.org/licenses/by-sa/4.0/ -*/ -class ToolsConvert { - - public static function isTrueFloat($val) - { - $pattern = '/^[+-]?(\d*\.\d+([eE]?[+-]?\d+)?|\d+[eE][+-]?\d+)$/'; - //echo 'Val:'. $val."\n"; - //var_dump(is_float($val) || preg_match($pattern, trim($val))); - return (is_float($val) || preg_match($pattern, trim($val))); - } -} \ No newline at end of file diff --git a/vendor/bordercloud/sparql/composer.json b/vendor/bordercloud/sparql/composer.json index d63fcd4..439e5a0 100644 --- a/vendor/bordercloud/sparql/composer.json +++ b/vendor/bordercloud/sparql/composer.json @@ -1,31 +1,46 @@ { - "name": "bordercloud/sparql", - "type": "library", - "description": "Lib PHP very easy for SPARQL 1.1", - "keywords": ["SPARQL","RDF"], - "homepage": "https://github.com/BorderCloud/SPARQL", - "license": "CC-BY-SA-4.0", - "version": "1.2.1", - "authors": [ - { - "name": "Karima Rafes", - "email": "[email protected]", - "homepage": "http://www.bordercloud.com/", - "role": "Developer" - } - ], - "require": { - "php": ">=5.3.0" - }, - - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/BorderCloud/SPARQL" - } - ], - "require-dev": { - "evert/phpdoc-md" : "0.0.*", - "phpdocumentor/phpdocumentor": "2.*" - } + "name" : "bordercloud/sparql", + "type" : "library", + "description" : "Lib PHP very easy for SPARQL 1.1", + "keywords" : [ + "SPARQL", + "RDF" + ], + "homepage" : "https://github.com/BorderCloud/SPARQL", + "license" : "CC-BY-SA-4.0", + "version" : "2.0.1@dev", + "authors" : [{ + "name" : "Karima Rafes", + "email" : "[email protected]", + "homepage" : "http://www.bordercloud.com/", + "role" : "Developer" + } + ], + "require" : { + "php" : ">=5.2" + }, + "repositories" : [{ + "type" : "vcs", + "url" : "https://github.com/BorderCloud/SPARQL" + } + ], + "require-dev" : { + "evert/phpdoc-md": "^0.2.0@dev", + "twig/twig": "~1.3@dev", + "phpdocumentor/phpdocumentor":"2.9.0@dev", + "michelf/php-markdown": "^1.7", + "phpunit/phpunit": "^6.3" + }, + "autoload" : { + "psr-4" : { + "BorderCloud\\SPARQL\\" : "src/", + "BorderCloud\\SPARQL\\Tests\\" : "tests/" + } + }, + "bin" : [ + "bin/query" + ], + "config" : { + "bin-dir" : "bin" + } } diff --git a/vendor/bordercloud/sparql/query b/vendor/bordercloud/sparql/query deleted file mode 100755 index c106a24..0000000 --- a/vendor/bordercloud/sparql/query +++ /dev/null @@ -1,414 +0,0 @@ -#!/usr/bin/php -<?php - -require_once 'Endpoint.php'; -//require_once 'Test.php'; - -//List of servers available that you can test with this script - -$usage = " -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 - -"; - -// Variables - inputs -$modeVerbose = false; -$modeDebug = false; -$modeRead = false; -$modeWrite = false; - -$triplestore = "standard"; -$endpointQueryAndUpdate = ""; -$endpointQueryOnly = ""; -$endpointUpdateOnly = ""; -$nameParameterQuery = "query"; -$nameParameterUpdate = "update"; -$endpointLogin = ""; -$endpointPassword = ""; - -$modeRead = false; -$modeWrite = false; - -$filename= ""; -$typeOutput="table"; -$type=""; - -//Client web -$CURL = new Curl($modeDebug); - -if(count($argv) < 2){ - echo $usage; - exit(); -} - -for($i = 1; $i < count($argv); $i++) { - $param=explode("=",$argv[$i]); - - switch($param[0]){ - case "-h": - case "--help": - echo $usage; - exit(); - case "-v": - case "--verbose": - $modeVerbose = true; - break; - case "-r": - case "--read": - $modeRead = true; - break; - case "-w": - case "--write": - $modeWrite = true; - break; - case "-d": - case "--debug": - $modeDebug = true; - $modeVerbose = true; - break; -////////////////////////////////////////////////////////////////////////////////// - case "-e": - if(! array_key_exists($i + 1, $argv)){ - echo "ERROR : forget parameter after -e (see --help)\n"; - exit(); - } - $endpointQueryAndUpdate = $argv[$i + 1]; - if(! filter_var($endpointQueryAndUpdate, FILTER_VALIDATE_URL)){ - echo "ERROR : The URL of endpoint is not valid\n"; - exit(); - } - $i++; - break; - case "--endpointQueryAndUpdate": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --endpointQueryAndUpdate (see --help)\n"; - exit(); - } - $endpointQueryAndUpdate = $param[1]; - if(! filter_var($endpointQueryAndUpdate, FILTER_VALIDATE_URL)){ - echo "ERROR : The URL of endpoint is not valid\n"; - exit(); - } - break; - case "-q": - if(! array_key_exists($i + 1, $argv)){ - echo "ERROR : forget parameter after -q (see --help)\n"; - exit(); - } - $endpointQueryOnly = $argv[$i + 1]; - if(! filter_var($endpointQueryOnly, FILTER_VALIDATE_URL)){ - echo "ERROR : The URL of endpoint is not valid\n"; - exit(); - } - $i++; - break; - case "--endpointQueryOnly": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --endpointQueryOnly (see --help)\n"; - exit(); - } - $endpointQueryOnly = $param[1]; - if(! filter_var($endpointQueryOnly, FILTER_VALIDATE_URL)){ - echo "ERROR : The URL of endpoint is not valid\n"; - exit(); - } - break; - case "-u": - if(! array_key_exists($i + 1, $argv)){ - echo "ERROR : forget parameter after -u (see --help)\n"; - exit(); - } - $endpointUpdateOnly = $argv[$i + 1]; - if(! filter_var($endpointUpdateOnly, FILTER_VALIDATE_URL)){ - echo "ERROR : The URL of endpoint is not valid\n"; - exit(); - } - $i++; - break; - case "--endpointUpdateOnly": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --endpointUpdateOnly (see --help)\n"; - exit(); - } - $endpointUpdateOnly = $param[1]; - if(! filter_var($endpointUpdateOnly, FILTER_VALIDATE_URL)){ - echo "ERROR : The URL of endpoint is not valid\n"; - exit(); - } - break; - case "--nameParameterQuery": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --nameParameterQuery (see --help)\n"; - exit(); - } - $nameParameterQuery = $param[1]; - break; - case "--nameParameterUpdate": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --nameParameterUpdate (see --help)\n"; - exit(); - } - $nameParameterUpdate = $param[1]; - break; - case "-f": - if(! array_key_exists($i + 1, $argv)){ - echo "ERROR : forget parameter after -f (see --help)\n"; - exit(); - } - $filename = $argv[$i + 1]; - if(! file_exists($filename)){ - echo "The file $filename does not exist"; - exit(); - } - $i++; - break; - case "--file": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --endpointQueryOnly (see --help)\n"; - exit(); - } - $filename = $param[1]; - if(! file_exists($filename)){ - echo "The file $filename does not exist"; - exit(); - } - break; - case "-t": - if(! array_key_exists($i + 1, $argv)){ - echo "ERROR : forget parameter after -t (see --help)\n"; - exit(); - } - $typeOutput = $argv[$i + 1]; - $i++; - break; - case "--typeOutput": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --typeOutput (see --help)\n"; - exit(); - } - $typeOutput = $param[1]; - break; - - case "-l": - if(! array_key_exists($i + 1, $argv)){ - echo "ERROR : forget parameter after -l (see --help)\n"; - exit(); - } - $endpointLogin = $argv[$i + 1]; - $i++; - break; - case "--login": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --login (see --help)\n"; - exit(); - } - $endpointLogin = $param[1]; - break; - case "-p": - if(! array_key_exists($i + 1, $argv)){ - echo "ERROR : forget parameter after -p (see --help)\n"; - exit(); - } - $endpointPassword = $argv[$i + 1]; - $i++; - break; - case "--password": - if(! array_key_exists(1, $param)){ - echo "ERROR : forget parameter after --password (see --help)\n"; - exit(); - } - $endpointPassword = $param[1]; - break; - default: - //echo $usage; exit(); - echo "ERROR usage ! (".$param[0]."?)"; - echo $usage; exit(); - } -} - -if($modeDebug){ - ini_set('display_errors','On'); -}else{ - ini_set('error_log','/dev/null'); - ini_set('display_errors','Off'); -} - -/////////////// INIT ENDPOINT -$ENDPOINT = null; -if($endpointQueryOnly == "" && $endpointUpdateOnly == "" && $endpointQueryAndUpdate == ""){ - echo "ERROR : The endpoint didn't find\n"; exit(); -}elseif($endpointQueryAndUpdate != ""){ - $ENDPOINT = new Endpoint($endpointQueryAndUpdate,$modeRead,$modeDebug); -}elseif($endpointQueryOnly == "" || $endpointUpdateOnly == ""){ - echo "ERROR : The endpoint SPARQL query or update didn't find\n"; exit(); -}else{ - $ENDPOINT = new Endpoint($endpointQueryOnly,$modeRead,$modeDebug); - $ENDPOINT->setEndpointQuery($endpointQueryOnly); - $ENDPOINT->setEndpointUpdate($endpointUpdateOnly); - $ENDPOINT->setNameParameterQueryRead($nameParameterQuery); - $ENDPOINT->setNameParameterQueryWrite($nameParameterUpdate); -} - -if($endpointLogin != "" && $endpointPassword != ""){ - $ENDPOINT->setLogin($endpointLogin); - $ENDPOINT->setPassword($endpointPassword); -} - - -switch($typeOutput){ - case "txt": - $type = "text/plain"; - break; - case "csv": - $type = "text/csv; charset=utf-8"; - break; - case "tsv": - $type = "text/tab-separated-values; charset=utf-8"; - break; - case "ttl": - $type = "text/turtle"; - break; - case "table": - case "srx": - $type = "application/sparql-results+xml"; - break; - case "srj": - $type = "application/sparql-results+json"; - break; - default : - $type = $typeOutput; -} - -if($modeVerbose){ -echo " -Configuration : -- Endpoint query : ".$ENDPOINT->getEndpointQuery()." -- Endpoint update : ".$ENDPOINT->getEndpointUpdate()." -- Mode verbose : ".($modeVerbose?"ON":"OFF")." -- Mode debug : ".($modeDebug?"ON":"OFF")." -- Type output : ".$type." -- Endpoint login : ".$ENDPOINT->getLogin()." -- Endpoint password : ".$ENDPOINT->getPassword()." -"; -} - -///////// - -$ENDPOINT->ResetErrors(); - -//queryRead -/* - -*/ - - - -if($typeOutput === "table"){ - $rows = $ENDPOINT->query( file_get_contents($filename), 'rows'); - $err = $ENDPOINT->getErrors(); - - if ($err) { - echo "ERROR \n"; - print_r($err,true); - exit(1); - } - - 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"; - } - }else{ - if($modeRead) - $response = $ENDPOINT->queryRead( file_get_contents($filename),$type); - elseif ($modeWrite) - $response = $ENDPOINT->queryUpdate( file_get_contents($filename),$type); - else{ - echo "ERROR : forget parameter after -r or -w (see --help)\n"; - exit(1); - } - - $err = $ENDPOINT->getErrors(); - - if ($err) { - echo "ERROR \n"; - print_r($err,true); - exit(1); - } - echo $response; - } -- To view, visit https://gerrit.wikimedia.org/r/374797 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0dc0c88b173fc8c5052161428b24e3d35c33adb8 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/LinkedWiki Gerrit-Branch: master Gerrit-Owner: Karima Rafes <[email protected]> Gerrit-Reviewer: Karima Rafes <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
