Skip to content

Instantly share code, notes, and snippets.

@jctoledo
Created July 11, 2014 15:59
Show Gist options
  • Save jctoledo/d08752760c6bc1a9e2b2 to your computer and use it in GitHub Desktop.
Save jctoledo/d08752760c6bc1a9e2b2 to your computer and use it in GitHub Desktop.
Void queries - subset
<?php
function getGraphs()
{
global $options;
$sparql = "SELECT DISTINCT ?g WHERE {GRAPH ?g {[] a ?o}}";
$r = query($sparql);
foreach($r AS $g) {
$graphs[] = $g->g->value;
}
return $graphs;
}
function addDistinctGraphs()
{
global $options;
$sparql = "SELECT (COUNT(distinct ?g) AS ?n) {GRAPH ?g {[] ?p ?o} ".$options['filter']."}";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$label = $c->n->value." unique graphs in ".$options['dataset'];
write(
// standard
Quad($options['uri'], "http://rdfs.org/ns/void#classPartition", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://rdfs.org/ns/void#class", "http://www.w3.org/ns/sparql-service-description#Graph").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $c->n->value, "long").
// enhanced
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Graph-Count").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Graph-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addTriples()
{
global $options;
$sparql = "SELECT (COUNT(*) AS ?n) ".$options['from-graph']." {?s ?p ?o}";
$r = query($sparql);
$id = getId($r);
write(
// standard
QuadLiteral($options['uri'], "http://rdfs.org/ns/void#triples", $r[0]->n->value, "long").
// enhanced
Quad($options['uri'],'http://rdfs.org/ns/void#subset', $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Triples").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $r[0]->n->value." triples in ".$options['dataset_name'], null, "en").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $r[0]->n->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Triples", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
function addDistinctEntities()
{
global $options;
$sparql = "SELECT (COUNT(DISTINCT ?s) AS ?n) ".$options['from-graph']." {?s a []}";
$r = query($sparql);
$id = getId($r);
write(
// standard
QuadLiteral($options['uri'], "http://rdfs.org/ns/void#entities", $r[0]->n->value, "long").
// enhanced
Quad($options['uri'],'http://rdfs.org/ns/void#subset', $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Entities").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $r[0]->n->value." distinct entities in ".$options['dataset_name'], null, "en").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $r[0]->n->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Entities", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
function addDistinctSubjects()
{
global $options;
$sparql = "SELECT (COUNT(DISTINCT ?s) AS ?n) ".$options['from-graph']." {?s ?p ?o}";
$r = query($sparql);
$id = getId($r);
write(
// standard
QuadLiteral($options['uri'], "http://rdfs.org/ns/void#distinctSubjects", $r[0]->n->value, "long").
// enhanced
Quad($options['uri'],'http://rdfs.org/ns/void#subset', $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Subjects").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $r[0]->n->value." distinct subjects in ".$options['dataset_name'], null, "en").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $r[0]->n->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Subjects", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
function addDistinctProperties()
{
global $options;
$sparql = "SELECT (COUNT(DISTINCT ?p) AS ?n) ".$options['from-graph']." {?s ?p ?o}";
$r = query($sparql);
$id = getId($r);
write(
// standard
QuadLiteral($options['uri'], "http://rdfs.org/ns/void#properties", $r[0]->n->value, "long").
// enhanced
Quad($options['uri'],'http://rdfs.org/ns/void#subset', $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Properties").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $r[0]->n->value." distinct subjects in ".$options['dataset_name'], null, "en").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $r[0]->n->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Properties", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
function addDistinctObjects()
{
global $options;
$sparql = "SELECT (COUNT(DISTINCT ?o) AS ?n) ".$options['from-graph']." {?s ?p ?o FILTER(!isLiteral(?o))}";
$r = query($sparql);
$id = getId($r);
write(
// standard
QuadLiteral($options['uri'], "http://rdfs.org/ns/void#distinctObjects", $r[0]->n->value, "long").
// enhanced
Quad($options['uri'],'http://rdfs.org/ns/void#subset', $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Objects").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $r[0]->n->value." distinct objects in ".$options['dataset_name'], null, "en").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $r[0]->n->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Objects", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
function addDistinctLiterals()
{
global $options;
$sparql = "SELECT (COUNT(DISTINCT ?o) AS ?n) ".$options['from-graph']." {?s ?p ?o FILTER(isLiteral(?o))}";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$label = $c->n->value." distinct literals in ".$options['dataset_name'];
write(
// standard
QuadLiteral($options['uri'], "http://rdfs.org/ns/void#distinctLiterals", $r[0]->n->value, "long"). // we made this predicate up
Quad($options['uri'], "http://rdfs.org/ns/void#classPartition", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://rdfs.org/ns/void#class", "http://www.w3.org/2000/01/rdf-schema#Literal").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $c->n->value, "long").
// enhanced
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Literals").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Literal-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addDistinctTypes()
{
global $options;
$sparql = "SELECT (COUNT(DISTINCT ?t) AS ?n) ".$options['from-graph']." {?s ?p ?o . ?o a ?t}";
$r = query($sparql);
$id = getId($r);
write(
QuadLiteral($options['uri'], "http://rdfs.org/ns/void#distinctTypes", $r[0]->n->value, "long"). // we made this up
// enhanced
Quad($options['uri'],'http://rdfs.org/ns/void#subset', $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Types").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $r[0]->n->value." distinct types in ".$options['dataset_name'], null, "en").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $r[0]->n->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Distinct-Types", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
function addTypeCount()
{
global $options;
$sparql = "SELECT ?type ?n ?dn (str(?label) AS ?slabel)
".$options['from-graph']."
{
{
SELECT ?type (COUNT(DISTINCT ?s) AS ?dn) (COUNT(?s) AS ?n)
{?s a ?type}
GROUP BY ?type
}
OPTIONAL {?type rdfs:label ?label}
}";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$label = $c->n->value." ".makeLabel($c,'type','slabel')." in ".$options['dataset_name'];
write(
Quad($options['uri'], "http://rdfs.org/ns/void#classPartition", $id).
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://rdfs.org/ns/void#class", $c->type->value).
(isset($c->label)?QuadLiteral($c->type->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->label->value):"").
QuadLiteral($id, "http://rdfs.org/ns/void#entities", $c->n->value, "long").
QuadLiteral($id, "http://rdfs.org/ns/void#distinctEntities", $c->dn->value, "long"). // made this up
// enhanced
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Type-Count").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Type-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addPropertyCount()
{
global $options;
$sparql = "SELECT ?p str(?plabel) ?n
".$options['from-graph']."
{
{ SELECT ?p (COUNT(?p) AS ?n)
{?s ?p ?o}
GROUP BY ?p
}
OPTIONAL {?p rdfs:label ?plabel}
}
";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$label = $c->n->value." triples with ".makeLabel($c,'p','plabel')." in ".$options['dataset_name'];
write(
// standard
Quad($options['uri'], "http://rdfs.org/ns/void#propertyPartition", $id).
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Property-Count").
Quad($id, "http://rdfs.org/ns/void#property", $c->p->value).
(isset($c->plabel)? QuadLiteral($c->p->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->plabel->value):'').
QuadLiteral($id, "http://rdfs.org/ns/void#triples", $c->n->value, "long").
// enhanced
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Property-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addObjectPropertyCount()
{
global $options;
$sparql = "SELECT ?p (str(?label) AS ?plabel) (?n AS ?n) (?dn AS ?dn)
".$options['from-graph']."
{
{ SELECT ?p (COUNT(?o) AS ?n) (COUNT(DISTINCT ?o) AS ?dn)
{ ?s ?p ?o FILTER (!isLiteral(?o)) }
GROUP BY ?p
}
OPTIONAL {?p rdfs:label ?label}
}
";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$oid = getID($c);
$label = $c->n->value." (".$c->dn->value." unique) objects linked by property ".makeLabel($c, 'p', 'plabel')." in ".$options['dataset_name'];
write(
// standard
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://rdfs.org/ns/void#LinkSet").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Property-Count").
Quad($id, "http://rdfs.org/ns/void#linkPredicate", $c->p->value).
(isset($c->plabel)? QuadLiteral($c->p->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->plabel->value):'').
Quad($id, "http://rdfs.org/ns/void#objectsTarget", $oid).
Quad($oid, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count").
Quad($oid, "http://rdfs.org/ns/void#class", "http://www.w3.org/2000/01/rdf-schema#Resource").
QuadLiteral($oid, "http://rdfs.org/ns/void#entities", $c->n->value, "long").
QuadLiteral($oid, "http://rdfs.org/ns/void#distinctEntities", $c->dn->value, "long").
// enhanced
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Property-Object-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addDatatypePropertyCount()
{
global $options;
$sparql = "SELECT ?p (str(?label) AS ?plabel) (?n AS ?n) (?dn AS ?dn)
".$options['from-graph']."
{
{ SELECT ?p (COUNT(?o) AS ?n) (COUNT(DISTINCT ?o) AS ?dn)
{?s ?p ?o FILTER (isLiteral(?o))}
GROUP BY ?p
}
OPTIONAL {?p rdfs:label ?label}
}";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$oid = getID($c);
$label = $c->n->value." (".$c->dn->value." unique) literals linked to datatype property ".makeLabel($c, 'p', 'plabel')." in ".$options['dataset_name'];
write(
// standard
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://rdfs.org/ns/void#LinkSet").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Datatype-Property-Count").
Quad($id, "http://rdfs.org/ns/void#linkPredicate", $c->p->value).
(isset($c->plabel)? QuadLiteral($c->p->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->plabel->value):'').
Quad($id, "http://rdfs.org/ns/void#objectsTarget", $oid).
Quad($oid, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Literal-Count").
Quad($oid, "http://rdfs.org/ns/void#class", "http://www.w3.org/2000/01/rdf-schema#Literal").
QuadLiteral($oid, "http://rdfs.org/ns/void#entities", $c->n->value, "long").
QuadLiteral($oid, "http://rdfs.org/ns/void#distinctEntities", $c->dn->value, "long").
// enhanced
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Datatype-Property-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Datatype-Literal-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addPropertyObjectTypeCount()
{
global $options;
$sparql = "SELECT ?p (str(?plabel) AS ?plabel) ?otype (str(?otype_label) AS ?otype_label) (?n AS ?n) (?dn AS ?dn)
".$options['from-graph']." {
{
SELECT ?p ?otype (COUNT(?o) AS ?n) (COUNT(DISTINCT ?o) AS ?dn)
{
?s ?p ?o .
?o a ?otype .
}
GROUP BY ?p ?otype
}
OPTIONAL {?p rdfs:label ?plabel}
OPTIONAL {?otype rdfs:label ?otype_label}
}";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$oid = getID($c);
$label = $c->n->value." (".$c->dn->value." unique) objects of type ".makeLabel($c, 'otype', 'otype_label').
" linked by ".makeLabel($c,'p','plabel')." in ".$options['dataset_name'];
write(
// enhanced
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://rdfs.org/ns/void#LinkSet").
Quad($id, "http://rdfs.org/ns/void#linkPredicate", $c->p->value).
(isset($c->plabel)? QuadLiteral($c->p->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->plabel->value):'').
Quad($id, "http://rdfs.org/ns/void#objectsTarget", $oid).
Quad($oid, "http://rdfs.org/ns/void#class", $c->otype->value).
(isset($c->otype_label)? QuadLiteral($c->otype->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->otype_label->value):'').
QuadLiteral($oid, "http://rdfs.org/ns/void#entities", $c->n->value, "long").
QuadLiteral($oid, "http://rdfs.org/ns/void#distinctEntities", $c->dn->value, "long").
// enhanced
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Property-Object-Type-Count").
Quad($oid, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Type-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addSubjectPropertyObjectCount()
{
global $options;
$sparql = "SELECT ?p (str(?plabel) AS ?plabel) (?sn AS ?sn) (?dsn AS ?dsn) (?on AS ?on) (?don AS ?don)
".$options['from-graph']." {
{
SELECT ?p (COUNT(?s) AS ?sn) (COUNT(DISTINCT ?s) AS ?dsn) (COUNT(?o) AS ?on) (COUNT(DISTINCT ?o) AS ?don)
{
?s ?p ?o .
}
GROUP BY ?p
}
OPTIONAL {?p rdfs:label ?plabel}
}";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$sid = getID($c);
$oid = getID($c);
$label = $c->sn->value." (".$c->dsn->value." unique) subjects linked by ".makeLabel($c,'p','plabel')." to ".
$c->on->value." (".$c->don->value." unique) objects in ".$options['dataset_name'];
write(
// enhanced
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://rdfs.org/ns/void#LinkSet").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Subject-Property-Object-Count").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Subject-Property-Object-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor").
Quad($id, "http://rdfs.org/ns/void#linkPredicate", $c->p->value).
(isset($c->plabel)? QuadLiteral($c->p->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->plabel->value):'').
Quad($id, "http://rdfs.org/ns/void#subjectsTarget", $sid).
Quad($sid, "http://rdfs.org/ns/void#class", "http://www.w3.org/2000/01/rdf-schema#Resource").
QuadLiteral($sid, "http://rdfs.org/ns/void#entities", $c->sn->value, "long").
QuadLiteral($sid, "http://rdfs.org/ns/void#distinctEntities", $c->dsn->value, "long").
Quad($sid, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Subject-Count").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Subject-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor").
Quad($id, "http://rdfs.org/ns/void#objectsTarget", $oid).
Quad($oid, "http://rdfs.org/ns/void#class", "http://www.w3.org/2000/01/rdf-schema#Resource").
QuadLiteral($oid, "http://rdfs.org/ns/void#entities", $c->on->value, "long").
QuadLiteral($oid, "http://rdfs.org/ns/void#distinctEntities", $c->don->value, "long").
Quad($oid, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addTypePropertyTypeCount()
{
global $options;
$sparql = "SELECT
?stype (str(?stype_label) AS ?stype_label) (?sn AS ?sn) (?dsn AS ?dsn)
?p (str(?plabel) AS ?plabel)
?otype (str(?otype_label) AS ?otype_label) (?on AS ?on) (?don AS ?don)
".$options['from-graph']."
{
{
SELECT ?stype ?p ?otype (COUNT(?s) AS ?sn) (COUNT(DISTINCT ?s) AS ?dsn) (COUNT(?o) AS ?on) (COUNT(DISTINCT ?o) AS ?don)
{
?s ?p ?o .
?s a ?stype .
?o a ?otype .
}
GROUP BY ?p ?stype ?otype
}
OPTIONAL {?stype rdfs:label ?stype_label}
OPTIONAL {?p rdfs:label ?plabel}
OPTIONAL {?otype rdfs:label ?otype_label}
}
";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
$sid = getID($c);
$oid = getID($c);
$label = $c->sn->value." (".$c->dsn->value." unique) ".makeLabel($c,'stype','stype_label')." linked by property ".makeLabel($c, 'p', 'plabel')
." to ".$c->on->value." (".$c->don->value." unique) ".makeLabel($c,'otype','otype_label')." in ".$options['dataset_name'];
write(
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://rdfs.org/ns/void#LinkSet").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Type-Property-Type-Count").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://rdfs.org/ns/void#linkPredicate", $c->p->value).
(isset($c->plabel)? QuadLiteral($c->p->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->plabel->value):'').
Quad($id, "http://rdfs.org/ns/void#subjectsTarget", $sid).
Quad($sid, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Subject-Count").
Quad($sid, "http://rdfs.org/ns/void#class", $c->stype->value).
(isset($c->stype_label)? QuadLiteral($c->stype->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->stype_label->value):'').
QuadLiteral($sid, "http://rdfs.org/ns/void#entities", $c->sn->value, "long").
QuadLiteral($sid, "http://rdfs.org/ns/void#distinctEntities", $c->dsn->value, "long").
Quad($id, "http://rdfs.org/ns/void#objectsTarget", $oid).
Quad($oid, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count").
Quad($oid, "http://rdfs.org/ns/void#class", $c->otype->value).
(isset($c->otype_label)? QuadLiteral($c->otype->value, "http://www.w3.org/2000/01/rdf-schema#label", $c->otype_label->value):'').
QuadLiteral($oid, "http://rdfs.org/ns/void#entities", $c->on->value, "long").
QuadLiteral($oid, "http://rdfs.org/ns/void#distinctEntities", $c->don->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Type-Property-Type-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Subject-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Object-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
function addDatasetPropertyDatasetCount()
{
global $options;
$sparql = "SELECT DISTINCT ?p ?stype ?otype (COUNT(?s) AS ?n)
".$options['from-graph']."
{
?s ?p ?o .
?s a ?stype .
?o a ?otype .
FILTER regex (?stype, \"vocabulary:Resource\")
FILTER regex (?otype, \"vocabulary:Resource\")
FILTER (?stype != ?otype)
}";
$r = query($sparql);
foreach($r AS $c) {
$id = getID($c);
preg_match("/http:\/\/bio2rdf.org\/([^_]+)_vocabulary/",$c->stype->value,$m1);
preg_match("/http:\/\/bio2rdf.org\/([^_]+)_vocabulary/",$c->otype->value,$m2);
if(isset($m1[1]) and isset($m2[1])) {
$d1 = $m1[1];
$d2 = $m2[1];
$r = $c->p->value;
$label = "$d1 connected to $d2 through ".$c->n->value." <$r> in ".$options['dataset_name'];
write(
Quad($options['uri'], "http://rdfs.org/ns/void#subset", $id).
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://rdfs.org/ns/void#LinkSet").
Quad($id, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Dataset-Property-Dataset-Count").
QuadLiteral($id, "http://www.w3.org/2000/01/rdf-schema#label", $label, null, "en").
Quad($id, "http://rdfs.org/ns/void#linkPredicate", $c->p->value).
Quad($id, "http://rdfs.org/ns/void#subjectsTarget", $c->stype->value).
Quad($id, "http://rdfs.org/ns/void#objectsTarget", $c->otype->value).
QuadLiteral($id, "http://rdfs.org/ns/void#triples", $c->n->value, "long").
Quad("http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Dataset-Property-Dataset-Count", "http://www.w3.org/2000/01/rdf-schema#subClassOf", "http://bio2rdf.org/bio2rdf.dataset_vocabulary:Dataset-Descriptor")
);
}
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment