예제 #1
0
파일: importRdf.php 프로젝트: rdfio/RDFIO
 public function execute()
 {
     $indata_file = $this->getOption('indata', '');
     $chunksize = intval($this->getOption('chunksize', 0));
     $chunksleep = floatval($this->getOption('chunksleep', 0.0));
     $offset = intval($this->getOption('offset', 0));
     $verbose = $this->getOption('verbose', false);
     echo "Starting import from file: {$indata_file}\n";
     if ($offset > 0) {
         echo "Starting with offset {$offset} ...\n";
     }
     $rdfImporter = new RDFIORDFImporter();
     $indata_fh = fopen($indata_file, 'r');
     $lineinchunk = 1;
     $chunkindex = 1;
     $lineindex = 0;
     $totalimported = 0;
     $importdata = '';
     while ($line = fgets($indata_fh)) {
         if ($lineindex >= $offset) {
             if ($chunksize > 0 && $lineinchunk == 1) {
                 if ($verbose) {
                     echo "Starting chunk {$chunkindex} ...\n";
                 }
             }
             $importdata .= $line;
             if ($verbose) {
                 echo "Appended line {$lineinchunk} in chunk {$chunkindex}, to indata ...\n";
             }
             $totalimported++;
             if ($chunksize != 0 && $lineinchunk == $chunksize) {
                 $rdfImporter->importTurtle($importdata);
                 $totalwithoffset = $totalimported + $offset;
                 echo "Imported {$chunksize} triples in chunk {$chunkindex} ({$totalimported} triples imported in total, and {$totalwithoffset} including offset)!\n";
                 // Reset variables
                 $lineinchunk = 0;
                 $importdata = '';
                 // Bump chunk index
                 $chunkindex++;
                 if ($verbose) {
                     echo 'Now sleeping for ' . strval($chunksleep) . ' seconds before continuing with next chunk ...';
                 }
                 sleep($chunksleep);
             }
             $lineinchunk++;
         }
         $lineindex++;
     }
     // Import any remaining stuff, or all the stuff, if chunksize = 0
     $rdfImporter->importTurtle($importdata);
     fclose($indata_fh);
     echo "Finished importing everything ({$totalimported} triples in total)!\n";
 }
예제 #2
0
 /**
  * Import data into wiki pages
  */
 function importData(RDFIORequestData $requestData)
 {
     $rdfImporter = new RDFIORDFImporter();
     if ($requestData->importSource === 'url') {
         if ($requestData->externalRdfUrl === '') {
             throw new RDFIOException('URL field is empty!');
         } else {
             if (!RDFIOUtils::isURI($requestData->externalRdfUrl)) {
                 throw new RDFIOException('Invalid URL provided!');
             }
         }
         $rdfData = file_get_contents($requestData->externalRdfUrl);
     } else {
         if ($requestData->importSource === 'textfield') {
             if ($requestData->importData === '') {
                 throw new RDFIOException('RDF field is empty!');
             }
             $rdfData = $requestData->importData;
         } else {
             throw new RDFIOException('Import source is not selected!');
         }
     }
     switch ($requestData->dataFormat) {
         case 'rdfxml':
             $importInfo = $rdfImporter->importRdfXml($rdfData);
             $triples = $importInfo['triples'];
             break;
         case 'turtle':
             $importInfo = $rdfImporter->importTurtle($rdfData);
             $triples = $importInfo['triples'];
             break;
     }
     return $output = array('triples' => $triples);
 }