Soprano makes the distinction between two types of Models: Soprano::StorageModel and Soprano::FilterModel. The former one is intended to be the basic Model which actually stores the data while the latter ones can be stacked on top of a Soprano::StorageModel to perform certain filter operations. Thes filter operations can range from very basic things such as disallowing any write operation (Soprano::Util::ReadOnlyModel) to more complex things such as full text indexing of all literal statements (Soprano::Index::IndexFilterModel) or exporting the Model via D-Bus (Soprano::Server::DBusExportModel).
Apart from storage Soprano provides a system for RDF parser and serializer plugins. For more details on parsing or serializing RDF data see the Soprano::Parser and Soprano::Serializer classes.
Soprano::Model* model = Soprano::createModel();
Fill it with statements:
model->addStatement( Soprano::Statement( QUrl( "http://mysite.org/data#A"), Soprano::Vocabulary::RDFS::label(), Soprano::LiteralValue( "A test resource" ) ) );
Read the data back:
Soprano::StatementIterator it = model->listStatements(); while( it.next() ) { displayStatement( *it ); }
Query the data:
Soprano::QueryResultIterator it = model->executeQuery( "select ?r where { ?r ?p ?o . }", Soprano::Query::QueryLanguageSparql ); while( it.next() ) { displayResult( it.binding( "r" ) ); }