sweetrdf / quick-rdf-io-raptor
Allows access to Raptor RDF parsing and serializing utility (https://librdf.org/raptor/rapper.html).
Requires
- php: >=8.0
- sweetrdf/quick-rdf-io: ^1.1.1
- sweetrdf/rdf-interface: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.49.0
- phpstan/phpstan: ^1
- phpunit/phpunit: ^9||^10
- sweetrdf/quick-rdf: ^2.0.1
Suggests
- sweetrdf/quick-rdf: Fast implementations of interfaces from sweetrdf dfInterface
This package is auto-updated.
Last update: 2024-11-16 10:33:57 UTC
README
It provides a RDF parser using rapper
command line tool from Raptor RDF parsing and serializing utility.
The generated internal PHP-representations (quads, ...) are compatible to https://github.com/sweetrdf/rdfInterface and can be used together with other rdfInterface implementations, such as quickRdfIo to serialize RDF in another format, for instance.
Installation
Requirements
- PHP 8.0+
- Raptor RDF parser utility is installed (we need its
rapper
command line tool); its usually not part of the default installation- on Debian/Ubuntu: run
apt-get install raptor2-utils
- Package might be namend differently in other Linux distributions
- on Debian/Ubuntu: run
Composer
Install it using Composer: composer require sweetrdf/quick-rdf-io-raptor
.
You need an implementation of rdfInterfaces, such as quickRdf.
For starters, just use composer require sweetrdf/quick-rdf
Usage
Note: We are using rdfInterface implementations from https://github.com/sweetrdf/quickRdf in the following. Make sure you installed the package before running the code.
Parsing
Parse a file:
use \quickrdf\DataFactory; use \quickRdfIo\Raptor\Parser; // create a file handle for a n-quads/n-triple file $fileHandle = fopen('/path/to/n-quads-file.nq', 'r'); // init a parser instance and read file handle $parser = new Parser(new DataFactory()); $quadsIterator = $parser->parseStream($fileHandle); // iterate through the quads // note: the file isn't read before, only as you iterating $quadIterator foreach ($quadsIterator as $quad ) { var_dump($quad); } // free file handle fclose($fileHandle);
Parse a string:
use \quickrdf\DataFactory; use \quickRdfIo\Raptor\Parser; $str = '_:foo <http://foo> <http://bar> .'; // init a parser instance and read RDF string $parser = new Parser(new DataFactory()); $quadsIterator = $parser->parse($str); // iterate through the quads foreach ($quadsIterator as $quad ) { var_dump($quad); }
Caveats and known issues
When using this class keep the following in mind:
- The
Parser
class is basically a wrapper around therapper
command, which means input must be prepared for further processing (may impact performance). A readable local file as source is needed as well as a local file for generated N-Quads output, which is used for the internal NQuads parser later on.