使用语义本体将关系数据库转换为RDF

时间:2014-06-02 10:48:08

标签: rdf sparql semantic-web ontology virtuoso

我最近一直试图使用Virtuoso来描述具有特定语义本体的给定RDB(关系数据库)。我想要使​​用的本体是:dc,foaf,dct,bibo,cito(我是新手,所以我不太明白dc和dct是否相同)。
我一直在关注如何执行此操作: http://virtuoso.openlinksw.com/whitepapers/relational%20rdf%20views%20mapping.html
我的问题是,在本教程中,类是从零创建的,而我需要使用现有的类。不幸的是,我也不允许发布本体的链接。
我特别要描述:

"作者"表(已发表的论文作者),其中包含以下列:

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

A"关键字"表(出版物' s关键字),列为:

PublicationID,关键字(字符串类型),KeywordOrder(整数类型),

A"出版物"带有列的表:

PublicationID,PublicationTitle,MediaType(字符串类型),PublicationType(整数),MediaTitle,MediaPublisher,MediaEditors,MediaVolInfo,PublicationYear,PublicationNoOfPages,PublicationPagesInMedium,PublicationFileName,PublicationComments,PublicationRelatedURL,PublicationRelatedURLText,PublicationLocation,PublicationPubURL,DisplayOnMLKD(Integer的类型) ),DisplayOnISKP(整数类型),DisplayOnWeb(整数类型)

A"参考文献"表(出版物的参考文献),列:

RefID,RefPaperID,RefDetails,RefYear

A"权利"表格(出版物的权利),列为:

PublicationID,AuthorID,AuthorOrder

我尝试过这项工作,但我想我可能会遇到一些问题 例如,我目前正试图表达"出版物"表格和我的文件中有以下内容:

@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" .

问题1:

所以这只是一个片段,但我的问题是如何表达&#34;出版物&#34;是一类现有的本体论?正如你在上面所看到的,我从零开始定义了#34; Publication&#34;。

问题2(更重要):

正如您在教程中看到的那样,以某种方式将在virtuoso工具中导入的表映射到特定的URL。但是,我无法找到导入virtuoso的每个表的URL,我只是放了一些占位符URL(这些是localhost URL)。如何找到导入virtuoso的每个表的URL?

PS。任何信息都非常有用,谢谢。

PPS。这是我的第一篇文章,如果不对,请原谅我的格式。

2 个答案:

答案 0 :(得分:4)

这可能过于宽泛,因为您已经提出了一些不同的问题,并且没有真正提供足够的信息来让我们清楚地了解您正在尝试做什么。那说......

  

问题1:

     

所以这只是一个片段,但我的问题是如何表达   “出版物”是现有本体论的一类吗?尽你所能   见上文我从零开始定义“出版物”。

如果您在普通的RDF(不使用OWL或其他本体语言)中执行此操作,则只需使用本体中的Publication类的URI。例如,如果您从数据中描述了某些资源http://.../pub73,并且某些本体中的出版物是http://publication-ontology/Publication,那么您只需说:

<http://.../pub73> rdf:type <http://publication-ontology/Publication>

如果您正在创建OWL本体,那么您还应该包含owl:imports语句来声明您正在导入http://publication-ontology/(或者该本体的本体IRI),以便您得到所有适当的宣言公理。

  

问题2(更重要):

     

正如您在教程中看到的那样,以某种方式导入了表格   在virtuoso工具中映射到特定的URL。但是,我不是   能够找到我导入virtuoso和我的每个表的URL   只需放置一些占位符URL(这些是localhost URL)。怎么能   我找到了导入virtuoso的每个表的URL?

请注意,本教程包含一个部分:

  

关键步骤

     

基于上面概述的映射过程,一些关键   确定的要求是:

     
      
  • 为每个表定义RDF类IRI
  •   
  • 为每个主键列值构建主题IRI
  •   
  • 为每个非关键列构建谓词IRI
  •   

我对Virtuoso并不是特别熟悉,但不是该教程后面部分描述的过程,从主键创建IRI Quad Map Patterns&amp;四重存储?也就是说,看起来他们首先在第一个图(有向图)中显示预期的数据模型,然后编写一些RDFS来描述它,其中包括类声明,例如,(清单1):

prd:Product a rdfs:Class ;
  rdfs:label "Product" ;
  rdfs:comment "An OpenLink product" .

然后,他们在清单5中定义了一个映射,定义了如何从自动映射开始获取此类的实例:

graph <http://localhost:8890/rdfv_demo/testdata/products#>
subject prd:product_iri(OPLWEB.DBA.PRODUCT.PRODUCT_ID)
predicate rdf:type
object prd:Product

使用清单3中定义的prd:product_iri函数:

sparql

prefix prd: <http://localhost:8890/rdfv_demo/schemas/product#>
create iri class prd:product_iri "http://localhost:8890/rdfv_demo/testdata/products#%s"
    (in product_id varchar not null) .

要声明数据行对应于某些其他类的实例,您只需在对应的清单5中使用该类的URI。例如,为了生成类型bibo:Document的内容,您需要做类似的事情:

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix bibo: <…>

graph <…>

subject …
predicate rdf:type
object bibo:Document

答案 1 :(得分:0)

我认为您的问题始于以相当旧的白皮书作为指南,而不是the more recent documentation。我鼓励你通过上面的渠道跟进后者。