RDF on top of external relational tables (in Postgresql)



I’d like to provide RDF on top of external relational tables (in Postgresql).

So i guess i will have to use linked data views (and Virtuoso commercial edition): am i right?

Are the linked data views dynamically synchronized with the relational database? I mean if something is changed in the (external) relational database, are these changes automatically available as RDF (via the views)?

And can I configure more than 1 view?

Any input will be appreciated,

Many thanks,


About the RDF Views over SQL Data Sources category

If you want to keep Tabular (SQL) Relational Data in PostgreSQL, and expose it as RDF, then yes, you’ll need to use the Virtuoso Enterprise Edition and Linked Data Views (as documented).

By default, the setup is dynamic because it is a VIEW of the external data (i.e., the PostgreSQL data is not replicated to Virtuoso) though it looks as if it’s Virtuoso-local.

I am not sure I understand your question about “more than 1 view.” Most likely the answer is yes. More details about what you mean may lead to a more definite answer.


First thanks for your answer.
More than 1 view = more than one db table.
E.g. each table is a different dataset and for each of them i want to create a dedicated view


Short answer = Yes, this can be done.

It is still not quite clear what you want to do – as “a dedicated view” doesn’t have a clear meaning in this context.

I would suggest you do a little experimentation, perhaps with the PostgreSQL sample database and see if that clarifies matters and/or leads to more concrete questions.


I’ll do the little experimentation.
By the way, imagine to have one table containing schools and one table (in the same database or even in another one) containing transportation stops and I want to provide both as RDF and each via it’s own ontology. Can/should I create 2 different views or am i obliged to map everything in one unique view?


As I understand your question, yes, you can create 2 different ontologies with the different mappings/views.

I think the answers to this and various other questions you may now have will be made obvious by working through the process a time or two.


For the sake of simplicity, I’m playing with Linked Data Views on top of an internal table (I’m using the schools_db_dav.vad). I’ve been able to create a simple view with customized ontology. So far so good, but a quick question: once a views gets created, is there then any way to modify the view definition?


Sure. This “Customizing R2RML Scripts in Virtuoso” article discusses just that, conveniently based on the same sample DB.