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"; }
/** * 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); }