Login   Register  
PHP Classes
elePHPant
Icontem

File: example.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Arturs Sosins  >  Sparql Query Builder  >  example.php  >  Download  
File: example.php
Role: Example script
Content type: text/plain
Description: Example usage building different SPARQL Queries
Class: Sparql Query Builder
Compose queries to XML RDF documents with SPARQL
Author: By
Last change: credits changed
Date: 2011-04-25 13:14
Size: 14,902 bytes
 

Contents

Class file image Download
<?php
/*************************************************************
 * This script is developed by Arturs Sosins aka ar2rsawseen, http://webcodingeasy.com
 * Fee free to distribute and modify code, but keep reference to its creator
 *
 * Sparql Query Builder class provides interface for generating 
 * SPARQL queries to use in RDF or SPARQL endpoints.
 * It complies with W3C Recommendations http://www.w3.org/TR/rdf-sparql-query/
 * This class reduces amount of text needs to be written comparing to simply writing SPARQL queries, 
 * increases code readability and helps you to create user friendly
 * interfaces for SPARQL endpoints
 *
 * For more information, examples and online documentation visit: 
 * http://webcodingeasy.com/PHP-classes/Sparql-Query-Builder
 **************************************************************/

//This is an example usage of SPARQL Query Builder
//Here you can find some examples from W3C Recommendation http://www.w3.org/TR/rdf-sparql-query/
//And specific class examples


//declaring class instance
include("./sparql.class.php");
$sparql = new sparql();

//outputs only end query
$sparql->show_query();

//outputs step by step debug information
//$sparql->debug();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#MultipleMatches
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#MultipleMatches' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#MultipleMatches</a></p>";
//defining prefix
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");
//adding what to select
$sparql->select("?name");
$sparql->select("?mbox");

//creating patterns with full graph
$sparql->new_ptrn("?x foaf:name ?name .");
//creating empty pattern,
$pat = $sparql->new_ptrn("");
//adding node after pattern creation
//patterns are interpreted as string, so we may add multiple patterns as one pattern, but they need to be in one clause
// or add nodes one by one, which will form pattern string
$sparql->add_ptrn($pat, "?x");
$sparql->add_ptrn($pat, "foaf:mbox ?mbox .");

//no need to add patterns to where clause, all unused patterns will automatically get to where clause if union wasn't used
//if union was used, then new union will be created and all unused patterns will go there

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#constructGraph
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#constructGraph' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#constructGraph</a></p>";

//defining prefixes
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");
$sparql->prefix("org", "http://example.com/ns#");

//creating pattern for construct
$pat = $sparql->new_ptrn("?x foaf:name ?name");
//pattern for where clause
$sparql->new_ptrn("?x org:employeeName ?name");
//adding pattern to construct clause
$sparql->construct($pat);

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#restrictString
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#restrictString' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#restrictString</a></p>";
//defining prefix
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");
//specifying what to select
$sparql->select("?title");

//pattern for where clause
$sparql->new_ptrn("?x dc:title ?title");
$sparql->new_ptrn("FILTER regex(?title, 'web', 'i' )");

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#MultipleOptionals
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#MultipleOptionals' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#MultipleOptionals</a></p>";

//defining prefix
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");
//specifying what to select
$sparql->select("?name ?mbox ?hpage");

//pattern for where clause
$sparql->new_ptrn("?x foaf:name ?name");
//array for optional patterns
$optionals = array();
//creating patterns which wil be used in option clauses
$optionals[] = $sparql->new_ptrn("?x foaf:mbox ?mbox");
$optionals[] = $sparql->new_ptrn("?x foaf:homepage ?hpage");

//putting patterns in optional clauses
foreach($optionals as $optional)
{
	$sparql->optional($optional);
}


//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#alternatives
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#alternatives' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#alternatives</a></p>";

//defining prefixes
$sparql->prefix("dc10", "http://purl.org/dc/elements/1.0/");
$sparql->prefix("dc11", "http://purl.org/dc/elements/1.1/");
//specifying what to select
$sparql->select("?title");

//array fr unions
$unions = array();
$unions[] = $sparql->new_ptrn("?book dc10:title ?title .");
$unions[] = $sparql->new_ptrn("?book dc10:creator ?author .");

//other unused patterns will be automatically added in another union clause
$sparql->new_ptrn("?book dc11:title ?title .");
$sparql->new_ptrn("?book dc11:creator ?author .");
$un = "";
foreach($unions as $union)
{
	//making sure that these patterns get in the same union clause
	if($un !== "")
	{
		$sparql->union($union, $un);
	}
	else
	{
		$un = $sparql->union($union);
	}
}

//generating query
$query = $sparql->query();


/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#specDataset
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#specDataset' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#specDataset</a></p>";

//defining prefixes
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");
$sparql->prefix("dc", "http://purl.org/dc/elements/1.1/");

$sparql->select("?who ?g ?mbox");

//specifying sources
$sparql->from("http://example.org/dft.ttl");
$sparql->from_named("http://example.org/alice");
$sparql->from_named("http://example.org/bob");

//creating pattern
$pat = $sparql->new_ptrn("?book dc11:title ?title .");
//adding to whre clause, to put this pattern in the beggining of where clause
$sparql->where($pat);
//creating pattern for graph
$pat = $sparql->new_ptrn("?x foaf:mbox ?mbox");
//putting pattern into graph
$sparql->graph($pat, "?g");

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#restrictInQuery
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#restrictInQuery' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#restrictInQuery</a></p>";

//defining prefixes
$sparql->prefix("data", "http://example.org/foaf/");
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");
$sparql->prefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");

$sparql->select("?mbox ?nick ?ppd");

//specifying sources
$sparql->from_named("http://example.org/foaf/aliceFoaf");
$sparql->from_named("http://example.org/foaf/bobFoaf");

//storage for first graph
$graphs["data:aliceFoaf"] = array();
//sotrage for second graph
$graphs["?ppd"] = array();

//creating needed patterns
$graphs["data:aliceFoaf"][] = $sparql->new_ptrn("?alice foaf:mbox <mailto:alice@work.example> ;");
$graphs["data:aliceFoaf"][] = $sparql->new_ptrn("foaf:knows ?whom .");
$graphs["data:aliceFoaf"][] = $sparql->new_ptrn("?whom  foaf:mbox ?mbox ;");
$graphs["data:aliceFoaf"][] = $sparql->new_ptrn("rdfs:seeAlso ?ppd .");
$graphs["data:aliceFoaf"][] = $sparql->new_ptrn("?ppd  a foaf:PersonalProfileDocument .");
$graphs["?ppd"][] = $sparql->new_ptrn("?w foaf:mbox ?mbox ;");
$graphs["?ppd"][] = $sparql->new_ptrn("foaf:nick ?nick");

//adding patterns to grpahs
foreach($graphs as $key => $graph)
{
	foreach($graph as $value)
	{
		$sparql->graph($value, $key);
	}
}

//generating query
$query = $sparql->query();


/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#modOrderBy
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#modOrderBy' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#modOrderBy</a></p>";

//addinf prefixes
$sparql->prefix("", "http://example.org/ns#");
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");
$sparql->prefix("xsd", "http://www.w3.org/2001/XMLSchema#");

//selecting node
$sparql->select("?name");

//new pattern
$sparql->new_ptrn("?x foaf:name ?name ; :empId ?emp");

//order information, true specifies descending, false or nothing provided will be treated as ascending
$sparql->order("?emp", true);

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#modDistinct
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#modDistinct' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#modDistinct</a></p>";

//addinf prefixes
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");

//selecting node
$sparql->select("?name");
//specifying select type
$sparql->select_type("distinct");

//new pattern
$sparql->new_ptrn("?x foaf:name ?name");

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#modReduced
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#modReduced' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#modReduced</a></p>";

//addinf prefixes
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");

//selecting node
$sparql->select("?name");
//specifying select type
$sparql->select_type("reduced");

//new pattern
$sparql->new_ptrn("?x foaf:name ?name");

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#modOffset
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#modOffset' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#modOffset</a></p>";

//addinf prefixes
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");

//selecting node
$sparql->select("?name");

//new pattern
$sparql->new_ptrn("?x foaf:name ?name");

//order information, true specifies descending, false or nothing provided will be treated as ascending
$sparql->order("?emp");

//setting limit

$sparql->limit(10);

//setting offset
$sparql->offset(5);

//generating query
$query = $sparql->query();


/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#ask
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#ask' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#ask</a></p>";

//addinf prefix
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");

//new pattern
$pat = $sparql->new_ptrn('?x foaf:name  "Alice"');

//adding pattern to ask
$sparql->ask($pat);

//generating query
$query = $sparql->query();


/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#explititURIs
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#explititURIs' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#explititURIs</a></p>";

$sparql->describe("<http://example.org/>");

//generating query
$query = $sparql->query();

/****************************************/
//example of sparql query from http://www.w3.org/TR/rdf-sparql-query/#identifyingResources
/****************************************/
echo "<p style='font-weight:bold;'>Example of sparql query from <a href='http://www.w3.org/TR/rdf-sparql-query/#identifyingResources' target='blank'>http://www.w3.org/TR/rdf-sparql-query/#identifyingResources</a></p>";

//addinf prefix
$sparql->prefix("foaf", "http://xmlns.com/foaf/0.1/");

//using describe type query
$sparql->describe("?x");

//new pattern
$sparql->new_ptrn("?x foaf:mbox <mailto:alice@org>");

//generating query
$query = $sparql->query();

/****************************************/
//example using union_h method
//which creates union pattern that will be used in every union clause
/****************************************/
echo "<p style='font-weight:bold;'>Example using union_h method which creates union pattern that will be used in every union clause</p>";

//addinf prefix
$sparql->prefix("table", "http://www.daml.org/2003/01/periodictable/PeriodicTable#");

//selecting nodes
$sparql->select("?symbol ?number");
//selectgin source
$sparql->from("http://www.daml.org/2003/01/periodictable/PeriodicTable#");

//union head patterns, which will be used in every union clause
$head1 = $sparql->new_ptrn("?element table:symbol ?symbol;");
$head2 = $sparql->new_ptrn("?element table:atomicNumber ?number;");

//patterns for different union clauses
$union1 = $sparql->new_ptrn("?element table:group table:group_17.");
$union2 = $sparql->new_ptrn("?element table:group table:group_18.");

//adding union head patterns
$sparql->union_h($head1);
$sparql->union_h($head2);

//adding union pattern, we need to add only one, other will be automatically included in new union clause
$sparql->union($union1);

//generating query
$query = $sparql->query();
?>