Search code examples
rdfsparqlsemantic-webontologyvirtuoso

Using semantic ontologies to convert a Relational Database to RDF


I have been lately trying to describe a given RDB(Relational Database) with specific semantic ontologies, using Virtuoso. The ontologies that i want to use are: dc,foaf,dct,bibo,cito(I am new to this so I didnt quite understand if dc and dct are the same thing).
I have been following this tutorial on how to do this: http://virtuoso.openlinksw.com/whitepapers/relational%20rdf%20views%20mapping.html
My problem is that in this tutorial classes are created from zero while I need to use existing ones. Unfortunately I am not allowed to post the links of the ontologies too.
In particular I want to describe:

An "author" table(a published paper author) that has the following columns:

AuthorID, AuthorName, AuthorMiddleName, AuthorSurname, AuthorURL, AuthorEmail, Department

A "Keywords" table(publication's keywords) with the columns:

PublicationID, Keyword(type of string), KeywordOrder(type of Integer),

A "Publications" table with the columns:

PublicationID, PublicationTitle, MediaType(type of string), PublicationType(Integer), MediaTitle, MediaPublisher, MediaEditors, MediaVolInfo, PublicationYear, PublicationNoOfPages, PublicationPagesInMedium, PublicationFileName, PublicationComments, PublicationRelatedURL, PublicationRelatedURLText, PublicationLocation, PublicationPubURL, DisplayOnMLKD(type of Integer), DisplayOnISKP(type of Integer), DisplayOnWeb(type of Integer)

A "References" table (publication's references) with the columns:

RefID, RefPaperID, RefDetails, RefYear

A "Rights" table (publication's rights) with the columns:

PublicationID, AuthorID, AuthorOrder

I tried doing some of this work but I think I might have some problems.
For example, I am currently trying to express the "Publications" table and in my file I have the following:

@prefix dc:      <http://purl.org/dc/elements/1.1/> .
@prefix db:      <http://lpis.csd.auth.gr/> .
@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
@prefix cito:    <http://purl.org/net/cito/> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct:     <http://purl.org/dc/terms/> .
@prefix bibo:    <http://purl.org/ontology/bibo/> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix map:     <http://lpis.csd.auth.gr#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix vocab:   <http://localhost:2020/vocab/resource/> .
@prefix atr: <http://localhost:8890/rdfv_pt/schemas/authors#> .
@prefix kwrd: <http://localhost:8890/rdfv_pt/schemas/keywords#> .
@prefix pub: <http://localhost:8890/rdfv_pt/schemas/publications#> .
@prefix ref: <http://localhost:8890/rdfv_pt/schemas/references#> .
@prefix rig: http://localhost:8890/rdfv_pt/schemas/rights#> .

pub:Publication a rdfs:Class 
rdfs:label "Publication" ;
rdfs:comment "Publication Class" .

pub:PublicationID a dc:identifier .

pub:PublicationTitle a dc:title .

pub:MediaType a rdf:Property ;
rdfs:domain pub:Publication;
rdfs:range xsd:string ;
rdfs:label "Media type" .

Question 1:

So this is just a fragment but my question here is how do I express that the "Publication" is a class of an existing ontology? As you can see above I am defining from zero the class "Publication".

Question 2(more important):

As you can see in the tutorial, somehow the tables that were imported in the virtuoso tool were mapped to a specific URL. However, I wasn't able to find the URL to each table that I imported to virtuoso and I just put some placeholder URLs (These are the localhost URLs). How can i find out the URL to each of the tables that I imported to virtuoso?

PS. Any information at all would be extremely useful, thank you.

PPS. This is my first post so please excuse my formatting if it's wrong.


Solution

  • I think your issues start with following a rather old Whitepaper as a guide, rather than the more recent documentation. I encourage you to follow up on the latter through the channels above.