I think it is best to answer these two questions together.
First, it is definitely possible to implement a database backend that is not an RDBMS.
As to the correct way to implement it, I think there are two good options.
To understand them, we have to get into the data store abstraction hierarchy in PSL a bit.
To access data on a large scale, PSL uses a
Database abstraction that is generally implemented by an
RDBMSDatabase.
Additionally, an RDBMSDatabase uses a
DatabaseDriver abstraction, which is implemented by specific RDBMS backends (H2 and PostgreSQL currently).
I think the best places for you to add support for a database using SPARQL would either be as an implementation of DatabaseDriver or Database.
I would first see if you can provide the functionality specified by DatabaseDriver, even if your database is not strictly relational.
This would be the route that would probably be the quickest and involve the less code.
If you can't extend DatabaseDriver, then the next best thing would be to extend Database.
This would take more code, but should always be possible.
Online PSL is almost certainty relevant to your use case, but I would try with non-online PSL first so you can get an idea how the data flow will work.
In Online PSL, PSL will manage it's own database, so that shouldn't be a concern.
In the long run, I agree with you that there are better ways to implement this.
But, this setup sounds very reasonable to me for a prototype or proof of concept.
-eriq