getTurtleSerializer() static public method

static public getTurtleSerializer ( $a = '' )
示例#1
0
 public function __construct($a = '')
 {
     parent::__construct();
     $this->a = $a;
     /* parse the before and after graphs if necessary*/
     foreach (array('before', 'after', 'before_rdfxml', 'after_rdfxml') as $rdf) {
         if (!empty($a[$rdf])) {
             if (is_string($a[$rdf])) {
                 /** @var \ARC2_RDFParser $parser */
                 $parser = \ARC2::getRDFParser();
                 $parser->parse(false, $a[$rdf]);
                 $a[$rdf] = $parser->getSimpleIndex(0);
             } else {
                 if (is_array($a[$rdf]) and isset($a[$rdf][0]) and isset($a[$rdf][0]['s'])) {
                     //triples array
                     /** @var \ARC2_RDFSerializer $ser */
                     $ser = \ARC2::getTurtleSerializer();
                     /** @var string $turtle */
                     $turtle = $ser->getSerializedTriples($a[$rdf]);
                     /** @var \ARC2_RDFParser $parser */
                     $parser = \ARC2::getTurtleParser();
                     $parser->parse(false, $turtle);
                     $a[$rdf] = $parser->getSimpleIndex(0);
                 }
             }
             $nrdf = str_replace('_rdfxml', '', $rdf);
             $this->{$nrdf} = $a[$rdf];
         }
     }
     $this->__init();
 }
示例#2
0
文件: TTL.php 项目: tdt/formatters
 public function printGraph()
 {
     /* Serializer instantiation */
     $ser = \ARC2::getTurtleSerializer();
     foreach ($this->objectToPrint as $class => $prop) {
         $triples = $prop->getTriples();
     }
     /* Serialize a triples array */
     echo $ser->getSerializedTriples($triples);
 }
示例#3
0
 /**
  * getRdf get the full BIBO RDF serialization of the collection of entries
  * @param $format the serialization format
  * @throws Exception if PHP_ZOTERO_ENTRIES_ARC_PATH is not defined
  */
 public function getRdf($format = 'rdf/xml')
 {
     if (!defined('PHP_ZOTERO_ENTRIES_ARC_PATH')) {
         throw new Exception('PHP_ZOTERO_ENTRIES_ARC_PATH must be defined and valid to use RDF methods');
     }
     require_once PHP_ZOTERO_ENTRIES_ARC_PATH;
     switch ($format) {
         case 'rdf/xml':
             $ser = ARC2::getRDFXMLSerializer($this->arcConf);
             break;
         case 'rdf/json':
             $ser = ARC2::getRDFJsonSerializer($this->arcConf);
             break;
         case 'turtle':
             $ser = ARC2::getTurtleSerializer($this->arcConf);
             break;
         case 'ntriples':
             $ser = ARC2::getNTriplesSerializer($this->arcConf);
             break;
     }
     return $ser->getSerializedIndex($this->getArcIndex());
 }
示例#4
0
 function getTurtleDescribeResultDoc($r)
 {
     $this->setHeader('content-type', 'Content-Type: application/x-turtle');
     $index = $r['result'];
     $ser = ARC2::getTurtleSerializer($this->a);
     $dur = $r['query_time'];
     return '# query time: ' . $dur . "\n" . $ser->getSerializedIndex($index);
 }
示例#5
0
 public static function serializeRdf($data, $extension = 'rdf')
 {
     global $conf;
     global $lodspk;
     $ser;
     $dPointer;
     $docs = Utils::travelTree($data);
     require_once $conf['home'] . 'lib/arc2/ARC2.php';
     $parser = ARC2::getRDFParser();
     $triples = array();
     foreach ($docs as $d) {
         $parser->parse($conf['basedir'], $d);
         $t = $parser->getTriples();
         $triples = array_merge($triples, $t);
     }
     if ($lodspk['mirror_external_uris']) {
         global $uri;
         global $localUri;
         $t = array();
         $t['s'] = $localUri;
         $t['s_type'] = 'uri';
         $t['p'] = "http://www.w3.org/2002/07/owl#sameAs";
         $t['o'] = $uri;
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         $t['p'] = "http://www.w3.org/2000/10/swap/pim/contact#preferredURI";
         array_push($triples, $t);
     }
     switch ($extension) {
         case 'ttl':
             $ser = ARC2::getTurtleSerializer();
             break;
         case 'nt':
             $ser = ARC2::getNTriplesSerializer();
             break;
         case 'json':
             $ser = ARC2::getRDFJSONSerializer();
             break;
         case 'rdf':
             $ser = ARC2::getRDFXMLSerializer();
             break;
         case 'html':
             return array("content" => $triples, "serialized" => false);
             break;
         default:
             $ser = null;
     }
     if ($ser != null) {
         $doc = $ser->getSerializedTriples($triples);
     } else {
         $doc = var_export($data, true);
     }
     return array("content" => $doc, "serialized" => true);
 }
示例#6
0
 function runQueryEvaluationTest($id)
 {
     $nl = "\n";
     $r = '';
     /* get action */
     $q = '
   PREFIX mf:      <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> .
   PREFIX qt:      <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> .
   SELECT DISTINCT ?query ?data ?graph_data ?result WHERE { 
     <' . $id . '> mf:action ?action ;
                 mf:result ?result .
     ?action     qt:query  ?query .
     OPTIONAL {
       ?action qt:data ?data .
     }
     OPTIONAL {
       ?action qt:graphData ?graph_data .
     }
   }
 ';
     $qr = $this->store->query($q);
     $rows = $qr['result']['rows'];
     $infos = array();
     foreach (array('query', 'data', 'result', 'graph_data') as $var) {
         $infos[$var] = array();
         $infos[$var . '_value'] = array();
         foreach ($rows as $row) {
             if (isset($row[$var])) {
                 if (!in_array($row[$var], $infos[$var])) {
                     $infos[$var][] = $row[$var];
                     $infos[$var . '_value'][] = $this->getFile($row[$var]);
                 }
             }
         }
         ${$var} = $infos[$var];
         ${$var . '_value'} = $infos[$var . '_value'];
         if (count($infos[$var]) == 1) {
             ${$var} = $infos[$var][0];
             ${$var . '_value'} = $infos[$var . '_value'][0];
         }
         if (${$var} && $var != '-result') {
             //echo '<pre>' . $$var . $nl . $nl . htmlspecialchars(${$var . '_value'}) . '</pre><hr />';
         }
     }
     /* query infos */
     ARC2::inc('SPARQLPlusParser');
     $parser = new ARC2_SPARQLPlusParser($this->a, $this);
     $parser->parse($query_value, $query);
     $infos = $parser->getQueryInfos();
     $rest = $parser->getUnparsedCode();
     $errors = $parser->getErrors();
     $q_type = !$errors ? $infos['query']['type'] : '';
     /* add data */
     $dsets = array();
     $gdsets = array();
     if ($data) {
         $dsets = is_array($data) ? array_merge($dsets, $data) : array_merge($dsets, array($data));
     }
     if ($graph_data) {
         $gdsets = is_array($graph_data) ? array_merge($gdsets, $graph_data) : array_merge($gdsets, array($graph_data));
     }
     if (!$dsets && !$gdsets) {
         foreach ($infos['query']['dataset'] as $set) {
             if ($set['named']) {
                 $gdsets[] = $set['graph'];
             } else {
                 $dsets[] = $set['graph'];
             }
         }
     }
     $store = $this->data_store;
     $store->reset();
     foreach ($dsets as $graph) {
         $qr = $store->query('LOAD <' . $graph . '>');
     }
     foreach ($gdsets as $graph) {
         $qr = $store->query('LOAD <' . $graph . '> INTO <' . $graph . '>');
     }
     /* run query */
     if ($query) {
         $sql = $store->query($query_value, 'sql', $query);
         $qr = $store->query($query_value, '', $query);
         $qr_result = $qr['result'];
         if ($q_type == 'select') {
             $qr_result = $this->adjustBnodes($qr['result'], $id);
         } elseif ($q_type == 'construct') {
             $ser = ARC2::getTurtleSerializer($this->a);
             $qr_result = $ser->getSerializedIndex($qr_result);
         }
     }
     //echo '<pre>query result: ' . $nl . htmlspecialchars(print_r($qr_result, 1)) . '</pre>';
     if (!$query || $errors || $rest) {
         return array('pass' => 0, 'info' => 'query could not be parsed' . htmlspecialchars($query_value));
     }
     $m = 'isSame' . $q_type . 'Result';
     $sub_r = $this->{$m}($qr_result, $result_value, $result, $id);
     $pass = $sub_r['pass'];
     if (in_array($id, array('http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-6', 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-8', 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-builtin'))) {
         $pass = 0;
         /* manually checked 2007-09-18 */
     }
     if (in_array($id, array('http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-function', 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/reduced/manifest#reduced-1', 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/reduced/manifest#reduced-2'))) {
         $pass = 1;
         /* manually checked 2007-11-28 */
     }
     $pass_info = $sub_r['info'];
     $info = print_r($pass_info, 1) . $nl;
     $info .= '<hr />sql: ' . $nl . htmlspecialchars($sql['result']) . '<hr />';
     $info .= $pass ? '' : print_r($graph_data, 1) . $nl . htmlspecialchars(print_r($graph_data_value, 1)) . '<hr />';
     $info .= $pass ? '' : print_r($data, 1) . $nl . htmlspecialchars(print_r($data_value, 1)) . '<hr />';
     $info .= $pass ? '' : $query . $nl . htmlspecialchars($query_value) . '<hr />';
     $info .= $pass ? '' : '<pre>query result: ' . $nl . htmlspecialchars(print_r($qr_result, 1)) . '</pre>' . '<hr />';
     $info .= $pass ? '' : print_r($infos, 1);
     return array('pass' => $pass, 'info' => $info);
 }
示例#7
0
$ser = null;
switch ($outformat) {
    case "turtle":
        $ser = ARC2::getTurtleSerializer(array('ns' => $ns));
        break;
    case "rdfxml":
        $ser = ARC2::getRDFXMLSerializer(array('ns' => $ns));
        break;
    case "json":
        $ser = ARC2::getRDFJSONSerializer(array('ns' => $ns));
        break;
    case "ntriples":
        $ser = ARC2::getNTriplesSerializer(array('ns' => $ns));
        break;
    default:
        $ser = ARC2::getTurtleSerializer(array('ns' => $ns));
        break;
}
$output = "";
if ($outformat == "turtle") {
    $output = $ser->getSerializedTriples($triples);
    header("Content-Type: text/turtle");
} else {
    if ($outformat == "rdfxml") {
        $output = $ser->getSerializedTriples($triples);
        header("Content-Type: application/rdf+xml");
    } else {
        if ($outformat == "json") {
            $ser = ARC2::getRDFJSONSerializer(array('ns' => $ns));
            $output = $ser->getSerializedTriples($triples);
        } else {
 /**
  * Serialise the graph to Turtle
  * @see http://www.dajobe.org/2004/01/turtle/
  * @return string the Turtle version of the graph
  */
 function to_turtle()
 {
     $this->update_prefix_mappings();
     $serializer = ARC2::getTurtleSerializer(array('ns' => $this->_labeller->get_ns()));
     return $serializer->getSerializedIndex($this->_to_arc_index($this->_index));
 }
示例#9
0
 public function execute($service)
 {
     global $conf;
     $this->serialization = "";
     $this->graph = array();
     header('Content-Type: text/plain');
     define("CNT", "http://www.w3.org/2011/content#");
     define("NSVIZON", "http://graves.cl/vizon/");
     define("LS", "http://lodspeakr.org/lda/");
     define("LDA", "http://tw.rpi.edu/lda/");
     define("DC", "http://purl.org/dc/terms/");
     define("RDF", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
     define("RDFS", "http://www.w3.org/2000/01/rdf-schema#");
     define("OPMV", "http://openprovenance.org/ontology#");
     define("SKOS", "http://www.w3.org/2004/02/skos/core#");
     require $conf['home'] . 'lib/arc2/ARC2.php';
     $ser = ARC2::getTurtleSerializer();
     $triples = array();
     $t = array();
     $t['s'] = $conf['basedir'];
     $t['s_type'] = 'uri';
     $t['p'] = RDF . 'type';
     $t['o'] = OPMV . 'Agent';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     $t['o'] = SKOS . 'Concept';
     array_push($triples, $t);
     $t['o'] = LS . 'Application';
     array_push($triples, $t);
     if ($conf['parentApp'] != NULL) {
         $t['p'] = OPMV . 'wasDerivedFrom';
         $t['o'] = $conf['parentApp'];
         array_push($triples, $t);
     }
     $sparqlComponent = $conf['basedir'] . 'sparqlComponent';
     //uniqid("_:b");
     $baseComponent = $conf['basedir'];
     //uniqid("_:b");
     $components = $this->getComponents($conf['home'] . $conf['view']['directory'] . "/" . $conf['service']['prefix'], '');
     //var_dump($components);exit(0);
     //Define Process
     $t = array();
     foreach ($components as $k => $m) {
         $process = uniqid("_:b");
         $t['s'] = $process;
         $t['s_type'] = 'bnode';
         $t['p'] = RDF . 'type';
         $t['o'] = OPMV . 'Process';
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         //Controlled by
         $component = $baseComponent . $conf['service']['prefix'] . "/" . $k;
         $t['p'] = OPMV . 'wasControlledBy';
         $t['o'] = $component;
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         //Associated Agent to this installation
         $aux = $t['o'];
         $t['s'] = $t['o'];
         $t['p'] = RDF . 'type';
         $t['o'] = OPMV . 'Component';
         array_push($triples, $t);
         $t['p'] = SKOS . 'broader';
         $t['o'] = $conf['basedir'];
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         //$t['s']      = $process;
         //$t['s_type'] = 'bnode';
         $visualPart = uniqid("_:b");
         $queryPart = uniqid("_:b");
         $t['p'] = SKOS . 'broader';
         $t['s'] = $queryPart;
         $t['s_type'] = 'bnode';
         $t['o'] = $component;
         array_push($triples, $t);
         $t['s'] = $visualPart;
         array_push($triples, $t);
         foreach ($m as $l => $v) {
             if (strpos($l, "query") > -1) {
                 $t2['s'] = $queryPart;
                 $t2['p'] = RDF . 'type';
                 $t2['o'] = LS . 'LodspeakrDataComponent';
                 $t2['o_type'] = 'uri';
             } else {
                 $t2['s'] = $visualPart;
                 $t2['p'] = RDF . 'type';
                 $t2['o'] = LS . 'LodspeakrVisualComponent';
                 $t2['o_type'] = 'uri';
             }
             array_push($triples, $t2);
             $t2['p'] = NSVIZON . 'hasInput';
             $t2['o'] = $baseComponent . $conf['service']['prefix'] . "/" . $k . "/" . $l;
             $t2['o_type'] = 'uri';
             array_push($triples, $t2);
             $t2['s'] = $t2['o'];
             $t2['p'] = DC . "hasFormat";
             $t2['o'] = uniqid("_:b");
             $t2['o_type'] = 'bnode';
             array_push($triples, $t2);
             $t2['s'] = $t2['o'];
             $t2['s_type'] = $t2['o_type'];
             $t2['p'] = RDF . 'type';
             $t2['o'] = NSVIZON . 'Component';
             $t2['o_type'] = 'uri';
             array_push($triples, $t2);
             $t2['s_type'] = $t2['o_type'];
             $t2['p'] = DC . 'format';
             $t2['o'] = 'text/plain;charset=utf-8';
             $t2['o_type'] = 'literal';
             array_push($triples, $t2);
             $t2['p'] = CNT . 'ContentAsText';
             $t2['o'] = $v;
             array_push($triples, $t2);
         }
         //Return object for later triple
         //$t['o'] = $baseComponent;
         /*
           	  // Type of query
           	  $t2 = array();
           	  $t2['s']      = $t['o'];
           	  $t2['s_type'] = 'bnode';
           	  $t2['p']      = RDF.'type';
           	  $t2['o']      = LS.'LodspeakrVisualComponent';
           	  $t2['o_type'] = 'uri';  	 	 
           	  array_push($triples, $t2);
           	  
           	  $t3 = array();
           	  $t3['s']      = $t2['o'];
           	  $t3['s_type'] = 'uri';
           	  $t3['p']      = RDFS.'subClassOf';
           	  $t3['o']      = LDA."VisualComponent";
           	  $t3['o_type'] = 'uri';  	 	 
           	  array_push($triples, $t3);
           	  
           	  $t2['p']      = RDFS.'label';
           	  $t2['o']      = 'Haanga-based visualization component for LODSPeaKr';
           	  $t2['o_type'] = 'literal';  	 	 
           	  array_push($triples, $t2);
           	  
           	  $t['p']      = LS.'usedInput';
           	  $t['o']      = $conf['basedir'].$conf['view']['directory'].$k;
           	  $t['o_type'] = 'uri';  	   	  
           	  array_push($triples, $t);
           	  
           	  
           	  $t2 = array();
           	  $t2['s']      = $t['o'];
           	  $t2['s_type'] = 'uri';
           	  $t2['p']      = RDF.'type';
           	  $t2['o']      = LS."Input";
           	  $t2['o_type'] = 'uri';  	 	 
           	  array_push($triples, $t2);
           	  $t2['p']      = RDFS.'label';
           	  $t2['o']      = $conf['view']['directory'].$k;
           	  $t2['o_type'] = 'literal';  	 	 
           	  array_push($triples, $t2);
           	  $t2['p']      = DC.'hasFormat';
           	  $t2['o']      = uniqid("_:b");
           	  $t2['o_type'] = 'bnode';  	 	 
           	  array_push($triples, $t2);
           	  
           	  $t2['s']      = $t2['o'];
           	  $t2['s_type'] = 'bnode';
           	  $t2['p']      = RDF.'type';
           	  $t2['o']      = CNT."ContentAsText";
           	  $t2['o_type'] = 'uri';  	 	 
           	  array_push($triples, $t2);
           	  $t2['p']      = CNT.'chars';
           	  $t2['o']      = ($m);
           	  $t2['o_type'] = 'literal';  	 	 
           	  array_push($triples, $t2);
           	  $t2['p']      = DC.'format';
           	  $t2['o']      = 'text/plain;charset=utf-8';
           	  $t2['o_type'] = 'literal';  	 	 */
         //  array_push($triples, $t2);
         //break;
     }
     //Static files
     $staticComponent = $conf['basedir'] . 'staticComponent';
     //uniqid("_:b");
     //$statics = $this->getComponents($conf['home'].$conf['static']['directory'], '');
     //Define Process
     $t = array();
     $t['s'] = uniqid("_:b");
     $t['s_type'] = 'bnode';
     $t['p'] = RDF . 'type';
     $t['o'] = OPMV . 'Process';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     foreach ($statics as $k => $m) {
         //Controlled by
         $t['p'] = OPMV . 'wasControlledBy';
         $t['o'] = $staticComponent;
         $t['o_type'] = 'bnode';
         array_push($triples, $t);
         //Associated Agent to this installation
         $aux = $t['o'];
         $t['s'] = $t['o'];
         $t['p'] = SKOS . 'broader';
         $t['o'] = $conf['basedir'];
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         //Return object for later triple
         $t['o'] = $staticComponent;
         // Type of query
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . 'LodspeakrStaticElementsComponent';
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t3 = array();
         $t3['s'] = $t2['o'];
         $t3['s_type'] = 'uri';
         $t3['p'] = RDFS . 'subClassOf';
         $t3['o'] = LDA . "ProcessComponent";
         $t3['o_type'] = 'uri';
         array_push($triples, $t3);
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = 'Component of LODSPeaKr in charge of static content';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t['p'] = LS . 'usedInput';
         $t['o'] = $conf['basedir'] . $conf['static']['directory'] . $k;
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'uri';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . "Input";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = $conf['static']['directory'] . $k;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'hasFormat';
         $t2['o'] = uniqid("_:b");
         $t2['o_type'] = 'bnode';
         array_push($triples, $t2);
         $t2['s'] = $t2['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = CNT . "ContentAsText";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = CNT . 'chars';
         $t2['o'] = $m;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'format';
         $t2['o'] = 'text/plain;charset=utf-8';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         //break;
     }
     echo "#You can copy and paste the following data into a new\n";
     echo "#LODSPeaKr instance at http://exampleofinstance.org/import\n";
     echo "#As a side note: this is a turtle document but is served as text/plain to make it easier to copy&paste\n\n\n";
     echo $ser->getSerializedTriples($triples);
 }
 function toTurtle()
 {
     $index = $this->toIndex();
     $ser = ARC2::getTurtleSerializer(array('ns' => $this->ns));
     return $ser->getSerializedIndex($index);
 }
示例#11
0
function xml2turtle($file)
{
    //Andrea Mazzocchi
    include_once "semsol-arc2-c7c03da/ARC2.php";
    //Leggo il database in una stringa
    $string = file_get_contents($file);
    //Interpreto una stringa XML in un oggetto
    $obj = simplexml_load_string($string);
    //Ritorna la rappresentazione JSON di un valore, prende una
    //stringa JSON encoded e la converte in una variabile
    $data = json_decode(json_encode((array) $obj), 1);
    //Array associativo utile per la gestione dei prefix
    $namespace = array(':' => 'http://www.essepuntato.it/resource/', 'vcard' => 'http://www.w3.org/2006/vcard/ns#', 'cs' => 'http://cs.unibo.it/ontology/', 'dcterms' => 'http://purl.org/dc/terms/', 'xsd' => 'http://www.w3.org/2001/XMLSchema#', 'this' => 'http://vitali.web.cs.unibo.it/twiki/pub/TechWeb12/DataSource2/posteBO2011.ttl');
    $namespace2 = array("ns" => $namespace);
    //Elimino "@attributes" creando nuove chiavi apposta per "id", "lat"
    //e "long", salvandole dalla rimozione di "@attributes"
    for ($i = 0; $i < count($data['location']); $i++) {
        //Memorizzo le chiavi dell'array associativo
        $attr = array_keys($data['location'][$i]['@attributes']);
        for ($a = 0; $a < count($attr); $a++) {
            $attr_temp = $attr[$a];
            $data['location'][$i][$attr_temp] = $data['location'][$i]['@attributes'][$attr_temp];
        }
        //Cancello le posizioni, ormai inutili, dove
        //"id", "lat" e "long" erano prima contenuti
        unset($data['location'][$i]['@attributes']);
    }
    //Per la conversione in Turtle ho convertito da XML ad array associativo
    //che memorizza il documento da convertire in Turtle
    $newarray = array();
    foreach ($data as $key => $value) {
        //Codice per il riempimento del blocco "metadata"
        if (strcasecmp($key, 'metadata') == 0) {
            //Memorizzo le chiavi di $value...
            $s = array_keys($value);
            //...eseguendo un ciclo di riempimento
            for ($j = 0; $j < count($value); $j++) {
                //$deep memorizza i nomi dei tag XML del
                //campo metadata (creator, created, ...)
                $deep = $s[$j];
                //Richiamo da $namespace i prefix per i metadata
                $meta_subj = $namespace['this'];
                $dcterms = $namespace['dcterms'];
                $xsd = $namespace['xsd'];
                //"created" e "valid" sono delle date e devono essere validati
                //dal prefix xsd in modo da distinguerli da semplice stringhe
                if (stristr($deep, 'created') or stristr($deep, 'valid')) {
                    $newarray[$meta_subj . 'metadata'][$dcterms . $deep] = array($data['metadata'][$deep], $xsd . 'date');
                } else {
                    $newarray[$meta_subj . 'metadata'][$dcterms . $deep] = $data['metadata'][$deep];
                }
            }
        }
        //Codice per il riempimento del blocco "location"
        if (strcasecmp($key, 'location') == 0) {
            for ($z = 0; $z < count($value); $z++) {
                //Richiamo i quattro prefix che serviranno per questo blocco
                $n_this = $namespace['this'];
                $loc_subj = $namespace[':'];
                $v_card = $namespace['vcard'];
                $cs = $namespace['cs'];
                //$id memorizza i vari "id" (far0001, far0002, ...)
                $id = $value[$z]['id'];
                //Cancello "id" in modo da renderlo soggetto con ":",
                //altrimenti sarebbe stato l'oggetto di "vcard"
                unset($data['location'][$z]['id']);
                //$keys_z contiene un'array associativo i cui valori sono
                //i nomi dei tag XML (category, subcategory, name, ..)
                $keys_z = array_keys($data['location'][$z]);
                //Con questo ciclo for popolo l̈́'array da passare alla conversione
                for ($kz = 0; $kz < count($keys_z); $kz++) {
                    $temp = $keys_z[$kz];
                    //I campi "opening" e "closing" sono oggetti del predicato "cs"...
                    if (stristr($temp, 'opening') or stristr($temp, 'closing')) {
                        $newarray[$loc_subj . $id][$cs . $temp] = $data['location'][$z][$temp];
                    } else {
                        $newarray[$loc_subj . $id][$v_card . $temp] = $data['location'][$z][$temp];
                    }
                }
            }
        }
    }
    //Salvo in formato Turtle valido
    $doc = ARC2::getTurtleSerializer($namespace2);
    $fromXMLtoTTL = $doc->getSerializedIndex($newarray);
    return $fromXMLtoTTL;
}
示例#12
0
 /**
  * getItemAsRdf returns the BIBO RDF for the entire Zotero Item
  * @param $format default 'rdf/xml' the rdf serialization to use
  * @return string the RDF serialization
  * @throw Exception if PHP_ZOTERO_ENTRIES_ARC_PATH is not defined
  */
 public function getItemAsRdf($format = 'rdf/xml')
 {
     if (!defined('PHP_ZOTERO_ENTRIES_ARC_PATH')) {
         throw new Exception('PHP_ZOTERO_ENTRIES_ARC_PATH must be defined and valid to use RDF methods');
     }
     if (!$this->arcIndex) {
         $this->setRdf();
     }
     switch ($format) {
         case 'rdf/xml':
             $ser = ARC2::getRDFXMLSerializer($this->arcConf);
             break;
         case 'rdf/json':
             $ser = ARC2::getRDFJsonSerializer($this->arcConf);
             break;
         case 'turtle':
             $ser = ARC2::getTurtleSerializer($this->arcConf);
             break;
         case 'ntriples':
             $ser = ARC2::getNTriplesSerializer($this->arcConf);
             break;
     }
     return $ser->getSerializedIndex(array($this->itemUri => $this->arcIndex[$this->itemUri]));
 }
示例#13
0
 /**
  * Serialise the graph to Turtle
  * @see http://www.dajobe.org/2004/01/turtle/
  * @return string the Turtle version of the graph
  */
 public function to_turtle()
 {
     /** @var \ARC2_RDFSerializer $serializer */
     $serializer = \ARC2::getTurtleSerializer(array('ns' => $this->_labeller->get_ns()));
     return $serializer->getSerializedIndex($this->_to_arc_index($this->_index));
 }
示例#14
0
$store = ARC2::getStore($arc_config);
if (!$store->isSetUp()) {
    $store->setUp();
    /* create MySQL tables */
}
/* query handling */
$query = $argv[1];
$result = $store->query($query);
/* error handling */
if ($errors = $store->getErrors()) {
    error_log("arc2sparql error:\n" . join("\n", $errors));
    exit(10);
}
/* result handling */
if ($result["query_type"] == "construct" || $result["query_type"] == "describe") {
    $ser = ARC2::getTurtleSerializer();
    print $ser->getSerializedIndex($result["result"]);
    print "\n";
} else {
    if ($result["query_type"] == "select") {
        $vars = $result['result']['variables'];
        $rows = $result['result']['rows'];
        foreach ($vars as $var) {
            print $var . " ";
        }
        print "\n";
        foreach ($rows as $row) {
            foreach ($vars as $var) {
                print $row[$var] . " ";
            }
            print "\n";
示例#15
0
 public function run()
 {
     global $conf;
     $triples = array();
     $t = array();
     $t['s'] = $conf['basedir'];
     $t['s_type'] = 'uri';
     $t['p'] = RDF . 'type';
     $t['o'] = OPMV . 'Agent';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     $t['o'] = SKOS . 'Concept';
     array_push($triples, $t);
     $t['o'] = LS . 'Application';
     array_push($triples, $t);
     if ($conf['parentApp'] != NULL) {
         $t['p'] = OPMV . 'wasDerivedFrom';
         $t['o'] = $conf['parentApp'];
         array_push($triples, $t);
     }
     $t['p'] = LS . 'usedParameter';
     $t['o'] = uniqid("_:b");
     $t['o_type'] = 'bnode';
     array_push($triples, $t);
     $t2 = array();
     $t2['s'] = $t['o'];
     $t2['s_type'] = 'uri';
     $t2['p'] = RDF . 'type';
     $t2['o'] = LS . "Parameter";
     $t2['o_type'] = 'uri';
     array_push($triples, $t2);
     $t2['p'] = RDFS . 'label';
     $t2['o'] = 'root';
     $t2['o_type'] = 'literal';
     array_push($triples, $t2);
     $t2['p'] = DC . 'hasFormat';
     $t2['o'] = uniqid("_:b");
     $t2['o_type'] = 'bnode';
     array_push($triples, $t2);
     $t2['s'] = $t2['o'];
     $t2['s_type'] = 'bnode';
     $t2['p'] = RDF . 'type';
     $t2['o'] = CNT . "ContentAsText";
     $t2['o_type'] = 'uri';
     array_push($triples, $t2);
     $t2['p'] = CNT . 'chars';
     $t2['o'] = $conf['root'];
     $t2['o_type'] = 'literal';
     array_push($triples, $t2);
     $t2['p'] = DC . 'format';
     $t2['o'] = 'text/plain;charset=utf-8';
     $t2['o_type'] = 'literal';
     array_push($triples, $t2);
     $t['s'] = $conf['basedir'] . 'endpointManagerComponent';
     $t['s_type'] = 'uri';
     $t['p'] = SKOS . 'broader';
     $t['o'] = $conf['basedir'];
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     $t['p'] = RDF . 'type';
     $t['o'] = LS . 'LodspeakrEndpointManagerComponent';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     $t2 = array();
     $t2['s'] = $t['o'];
     $t2['s_type'] = 'uri';
     $t2['p'] = RDFS . 'subClassOf';
     $t2['o'] = LDA . "SparqlEndpointRetriever";
     $t2['o_type'] = 'uri';
     array_push($triples, $t2);
     //Endpoints
     foreach ($conf['endpoint'] as $k => $v) {
         $t['p'] = LS . 'usedParameter';
         $t['o'] = uniqid("_:b");
         $t['o_type'] = 'bnode';
         array_push($triples, $t);
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'uri';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . "Parameter";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = $k;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'hasFormat';
         $t2['o'] = uniqid("_:b");
         $t2['o_type'] = 'bnode';
         array_push($triples, $t2);
         $t2['s'] = $t2['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = CNT . "ContentAsText";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = CNT . 'chars';
         $t2['o'] = $v;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'format';
         $t2['o'] = 'text/plain;charset=utf-8';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
     }
     $t['s'] = $conf['basedir'] . 'namespaceManagerComponent';
     $t['s_type'] = 'uri';
     $t['p'] = SKOS . 'broader';
     $t['o'] = $conf['basedir'];
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     $t['p'] = RDF . 'type';
     $t['o'] = LS . 'LodspeakrNamespaceManagerComponent';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     $t2['s'] = $t['o'];
     $t2['s_type'] = 'uri';
     $t2['p'] = RDFS . 'subClassOf';
     $t2['o'] = LDA . "ProcessComponent";
     $t2['o_type'] = 'uri';
     array_push($triples, $t2);
     //Namepsaces
     foreach ($conf['ns'] as $k => $v) {
         $t['p'] = LS . 'usedParameter';
         $t['o'] = uniqid("_:b");
         $t['o_type'] = 'bnode';
         array_push($triples, $t);
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'uri';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . "Parameter";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = $k;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'hasFormat';
         $t2['o'] = uniqid("_:b");
         $t2['o_type'] = 'bnode';
         array_push($triples, $t2);
         $t2['s'] = $t2['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = CNT . "ContentAsText";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = CNT . 'chars';
         $t2['o'] = $v;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'format';
         $t2['o'] = 'text/plain;charset=utf-8';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
     }
     require $conf['home'] . 'lib/arc2/ARC2.php';
     $ser = ARC2::getTurtleSerializer();
     $sparqlComponent = $conf['basedir'] . 'sparqlComponent';
     //uniqid("_:b");
     //echo $ser->getSerializedTriples($triples);
     //var_dump($this->getComponents($conf['home'].$conf['view']['directory']));
     $models = $this->getComponents($conf['home'] . $conf['model']['directory'], '');
     //Define Process
     $t = array();
     $t['s'] = uniqid("_:b");
     $t['s_type'] = 'bnode';
     $t['p'] = RDF . 'type';
     $t['o'] = OPMV . 'Process';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     foreach ($models as $k => $m) {
         //Controlled by
         $t['p'] = OPMV . 'wasControlledBy';
         $t['o'] = $sparqlComponent;
         $t['o_type'] = 'bnode';
         array_push($triples, $t);
         //Associated Agent to this installation
         $aux = $t['o'];
         $t['s'] = $t['o'];
         $t['p'] = SKOS . 'broader';
         $t['o'] = $conf['basedir'];
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         //Return object for later triple
         $t['o'] = $sparqlComponent;
         // Type of query
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . 'LodspeakrSparqlEndpointRetriever';
         $t2['o_type'] = 'uri';
         $t3 = array();
         $t3['s'] = $t2['o'];
         $t3['s_type'] = 'uri';
         $t3['p'] = RDFS . 'subClassOf';
         $t3['o'] = LDA . "ProcessComponent";
         $t3['o_type'] = 'uri';
         array_push($triples, $t3);
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = 'Sparql endpoint component for LODSPeaKr';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t['p'] = LS . 'usedInput';
         $t['o'] = $conf['basedir'] . $conf['model']['directory'] . $k;
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'uri';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . "Input";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = $conf['model']['directory'] . $k;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'hasFormat';
         $t2['o'] = uniqid("_:b");
         $t2['o_type'] = 'bnode';
         array_push($triples, $t2);
         $t2['s'] = $t2['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = CNT . "ContentAsText";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = CNT . 'chars';
         $t2['o'] = $m;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'format';
         $t2['o'] = 'text/plain;charset=utf-8';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         //break;
     }
     //Views
     $viewsComponent = $conf['basedir'] . 'visualizationComponent';
     //uniqid("_:b");
     $views = $this->getComponents($conf['home'] . $conf['view']['directory'], '');
     //Define Process
     $t = array();
     $t['s'] = uniqid("_:b");
     $t['s_type'] = 'bnode';
     $t['p'] = RDF . 'type';
     $t['o'] = OPMV . 'Process';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     foreach ($views as $k => $m) {
         //Controlled by
         $t['p'] = OPMV . 'wasControlledBy';
         $t['o'] = $viewsComponent;
         $t['o_type'] = 'bnode';
         array_push($triples, $t);
         //Associated Agent to this installation
         $aux = $t['o'];
         $t['s'] = $t['o'];
         $t['p'] = SKOS . 'broader';
         $t['o'] = $conf['basedir'];
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         //Return object for later triple
         $t['o'] = $viewsComponent;
         // Type of query
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . 'LodspeakrVisualComponent';
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t3 = array();
         $t3['s'] = $t2['o'];
         $t3['s_type'] = 'uri';
         $t3['p'] = RDFS . 'subClassOf';
         $t3['o'] = LDA . "VisualComponent";
         $t3['o_type'] = 'uri';
         array_push($triples, $t3);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = 'Haanga-based visualization component for LODSPeaKr';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t['p'] = LS . 'usedInput';
         $t['o'] = $conf['basedir'] . $conf['view']['directory'] . $k;
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'uri';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . "Input";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = $conf['view']['directory'] . $k;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'hasFormat';
         $t2['o'] = uniqid("_:b");
         $t2['o_type'] = 'bnode';
         array_push($triples, $t2);
         $t2['s'] = $t2['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = CNT . "ContentAsText";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = CNT . 'chars';
         $t2['o'] = $m;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'format';
         $t2['o'] = 'text/plain;charset=utf-8';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         //break;
     }
     //Static files
     $staticComponent = $conf['basedir'] . 'staticComponent';
     //uniqid("_:b");
     $statics = $this->getComponents($conf['home'] . $conf['static']['directory'], '');
     //Define Process
     $t = array();
     $t['s'] = uniqid("_:b");
     $t['s_type'] = 'bnode';
     $t['p'] = RDF . 'type';
     $t['o'] = OPMV . 'Process';
     $t['o_type'] = 'uri';
     array_push($triples, $t);
     foreach ($statics as $k => $m) {
         //Controlled by
         $t['p'] = OPMV . 'wasControlledBy';
         $t['o'] = $staticComponent;
         $t['o_type'] = 'bnode';
         array_push($triples, $t);
         //Associated Agent to this installation
         $aux = $t['o'];
         $t['s'] = $t['o'];
         $t['p'] = SKOS . 'broader';
         $t['o'] = $conf['basedir'];
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         //Return object for later triple
         $t['o'] = $staticComponent;
         // Type of query
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . 'LodspeakrStaticElementsComponent';
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t3 = array();
         $t3['s'] = $t2['o'];
         $t3['s_type'] = 'uri';
         $t3['p'] = RDFS . 'subClassOf';
         $t3['o'] = LDA . "ProcessComponent";
         $t3['o_type'] = 'uri';
         array_push($triples, $t3);
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = 'Component of LODSPeaKr in charge of static content';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t['p'] = LS . 'usedInput';
         $t['o'] = $conf['basedir'] . $conf['static']['directory'] . $k;
         $t['o_type'] = 'uri';
         array_push($triples, $t);
         $t2 = array();
         $t2['s'] = $t['o'];
         $t2['s_type'] = 'uri';
         $t2['p'] = RDF . 'type';
         $t2['o'] = LS . "Input";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = RDFS . 'label';
         $t2['o'] = $conf['static']['directory'] . $k;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'hasFormat';
         $t2['o'] = uniqid("_:b");
         $t2['o_type'] = 'bnode';
         array_push($triples, $t2);
         $t2['s'] = $t2['o'];
         $t2['s_type'] = 'bnode';
         $t2['p'] = RDF . 'type';
         $t2['o'] = CNT . "ContentAsText";
         $t2['o_type'] = 'uri';
         array_push($triples, $t2);
         $t2['p'] = CNT . 'chars';
         $t2['o'] = $m;
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         $t2['p'] = DC . 'format';
         $t2['o'] = 'text/plain;charset=utf-8';
         $t2['o_type'] = 'literal';
         array_push($triples, $t2);
         //break;
     }
     echo "#You can copy and paste the following data into a new\n";
     echo "#LODSPeaKr instance at http://exampleofinstance.org/import\n";
     echo "#As a side note: this is a turtle document but is served as text/plain to make it easier to copy&paste\n\n\n";
     echo $ser->getSerializedTriples($triples);
 }
示例#16
0
            }
        }
    }
}
$facets = $Store->getFacetsForLastQuery();
$resultCount = $Store->getResultsCountForLastQuery();
$showMap = strpos($query, '_near') !== false || isset($_GET['_near']) ? true : false;
header("Access-Control-Allow-Origin: *");
$output = getOutputType();
if ($output == 'html') {
    $innerTemplate = 'browser.html';
    require 'templates/outer.html';
    exit;
}
if ($output == 'json' || $output == 'turtle') {
    require 'metadata.php';
    $namespaces = $Store->getNamespaces();
    $data = \Trilby\addMetadata($data, $Config, $types, $facets, $namespaces);
    if ($output == 'json') {
        header("Content-type: application/json");
        echo json_encode($data);
        exit;
    } else {
        require_once 'vendor/kwijibo/arc2/ARC2.php';
        $conf = array('ns' => $prefixes);
        $ser = ARC2::getTurtleSerializer($conf);
        header("Content-type: text/plain");
        echo $ser->getSerializedIndex($data);
        exit;
    }
}