annotate sites/all/modules/rdfx/rdfx.import.inc @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * Functions for importing and parsing RDF data.
danielebarchiesi@4 6 */
danielebarchiesi@4 7
danielebarchiesi@4 8 /**
danielebarchiesi@4 9 * Loads an RDF file from an HTTP URI or local file, parses it, and builds an
danielebarchiesi@4 10 * RDF schema representation (associative array) from it.
danielebarchiesi@4 11 *
danielebarchiesi@4 12 * @param $uri
danielebarchiesi@4 13 * The namespace URI for this graph.
danielebarchiesi@4 14 * @param $prefix
danielebarchiesi@4 15 * The prefix for this graph.
danielebarchiesi@4 16 * @param $filename (optional)
danielebarchiesi@4 17 * A local RDF file to parse.
danielebarchiesi@4 18 * @return array
danielebarchiesi@4 19 * @throws Exception On network or parse error
danielebarchiesi@4 20 */
danielebarchiesi@4 21 function rdfx_fetch_rdf($uri, $prefix, $filename = NULL) {
danielebarchiesi@4 22 if ($filename != NULL) {
danielebarchiesi@4 23 if (!is_file($filename)) {
danielebarchiesi@4 24 throw new Exception("File not found: '$filename'");
danielebarchiesi@4 25 return;
danielebarchiesi@4 26 }
danielebarchiesi@4 27 $content = file_get_contents($filename);
danielebarchiesi@4 28 return _rdfx_parse_rdf($uri, $content);
danielebarchiesi@4 29 }
danielebarchiesi@4 30
danielebarchiesi@4 31 $schema_url = $uri;
danielebarchiesi@4 32 $i = strpos($schema_url, '#');
danielebarchiesi@4 33 if ($i !== false) {
danielebarchiesi@4 34 $schema_url = substr($schema_url, 0, $i);
danielebarchiesi@4 35 }
danielebarchiesi@4 36 return _rdfx_parse_rdf($uri);
danielebarchiesi@4 37 }
danielebarchiesi@4 38
danielebarchiesi@4 39 function _rdfx_parse_rdf($base_uri) {
danielebarchiesi@4 40 $namespaces = array();
danielebarchiesi@4 41
danielebarchiesi@4 42 $parser = ARC2::getRDFParser();
danielebarchiesi@4 43 $parser->parse($base_uri);
danielebarchiesi@4 44 // If this is an N3 file, the namespaces array isn't populated. Iterate
danielebarchiesi@4 45 // through the attached parser object's prefixes and remove the colon from
danielebarchiesi@4 46 // the end of the prefix.
danielebarchiesi@4 47 // @todo File an issue with ARC2.
danielebarchiesi@4 48
danielebarchiesi@4 49 switch ($parser->format) {
danielebarchiesi@4 50 case 'turtle':
danielebarchiesi@4 51 foreach ($parser->parser->prefixes as $prefix => $uri) {
danielebarchiesi@4 52 $formatted_prefix = str_replace(':', '', $prefix);
danielebarchiesi@4 53 $namespaces[$formatted_prefix] = $uri;
danielebarchiesi@4 54 }
danielebarchiesi@4 55 break;
danielebarchiesi@4 56 default:
danielebarchiesi@4 57 foreach ($parser->parser->nsp as $uri => $prefix) {
danielebarchiesi@4 58 $namespaces[$prefix] = $uri;
danielebarchiesi@4 59 }
danielebarchiesi@4 60 break;
danielebarchiesi@4 61 }
danielebarchiesi@4 62 return array($parser->getTriples(), $namespaces);
danielebarchiesi@4 63 }