使用自动生成的代码将RDB转换为RDF [英] Converting an RDB to RDF with autogenerated code

查看:57
本文介绍了使用自动生成的代码将RDB转换为RDF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用本教程使用OpenLink Virtuoso软件将关系数据库转换为RDF:使用Virtuoso在关系数据源上自动生成链接数据视图

I am using the OpenLink Virtuoso software to convert a Relational Database to RDF using this tutorial: Automated Generation of Linked Data Views over Relational Data Sources with Virtuoso

我有一个包含5个表(AuthorsKeywordsPublicationsReferencesRights)的数据库,并使用.csv文件将它们导入了Virtuoso数据库.

I have a database with 5 tables (Authors, Keywords, Publications, References, Rights) and I imported them in Virtuoso database using .csv files.

因此,基本上,我已经按照"

So basically I have followed the steps for the "Manual Linked Data Generation & Deployment using the Conductor's HTML-based wizard", because I need to use my own ontologies and this is the code that was generated for the R2RML Graph:

@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix CSV: <http://localhost:8890/schemas/CSV/> .
@prefix csv-stat: <http://localhost:8890/CSV/stat#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix void: <http://rdfs.org/ns/void#> .
@prefix scovo: <http://purl.org/NET/scovo#> .
@prefix aowl: <http://bblfish.net/work/atom-owl/2006-06-06/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix bibo: <http://purl.org/ontology/bibo/> . 


<#TriplesMapAuthors_csv> a rr:TriplesMap; 
rr:logicalTable [ rr:tableSchema "CSV" ;         
rr:tableOwner "DBA" ; rr:tableName "Authors_csv" ]; 
rr:subjectMap [ rr:termtype "IRI"  ; 
rr:template "http://localhost:8890/CSV/authors_csv/ID={ID}"; 
rr:class CSV:Authors_csv; rr:graph <http://localhost:8890/CSV#> ];
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:id ] ; 
rr:objectMap [ rr:column "ID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authorid ] ; 
rr:objectMap [ rr:column "AuthorID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authorname ] ; 
rr:objectMap [ rr:column "AuthorName" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authormidlename ] ; 
rr:objectMap [ rr:column "AuthorMidleName" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authorsurname ] ; 
rr:objectMap [ rr:column "AuthorSurname" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authorurl ] ; 
rr:objectMap [ rr:column "AuthorURL" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authoremail ] ; 
rr:objectMap [ rr:column "AuthorEmail" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:csd_dep ] ; 
rr:objectMap [ rr:column "CSD_DEP" ]; ] .

<#TriplesMapKeywords_csv> a rr:TriplesMap; rr:logicalTable [ rr:tableSchema "CSV" ; rr:tableOwner "DBA" ; rr:tableName "Keywords_csv" ]; 
rr:subjectMap [ rr:termtype "IRI"  ; rr:template "http://localhost:8890/CSV/keywords_csv/ID={ID}"; rr:class CSV:Keywords_csv; rr:graph <http://localhost:8890/CSV#> ];
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:id ] ; rr:objectMap [ rr:column "ID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationid ] ; rr:objectMap [ rr:column "PublicationID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:keyword ] ; rr:objectMap [ rr:column "Keyword" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:keywordorder ] ; rr:objectMap [ rr:column "KeywordOrder" ]; ] .

<#TriplesMapPublications_csv> a rr:TriplesMap; rr:logicalTable [ rr:tableSchema "CSV" ; rr:tableOwner "DBA" ; rr:tableName "Publications_csv" ]; 
rr:subjectMap [ rr:termtype "IRI"  ; rr:template "http://localhost:8890/CSV/publications_csv/ID={ID}"; rr:class CSV:Publications_csv; rr:graph <http://localhost:8890/CSV#> ];
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:id ] ; rr:objectMap [ rr:column "ID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationid ] ; rr:objectMap [ rr:column "PublicationID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationtitle ] ; rr:objectMap [ rr:column "PublicationTitle" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:mediatype ] ; rr:objectMap [ rr:column "MediaType" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationtype ] ; rr:objectMap [ rr:column "PublicationType" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:mediatitle ] ; rr:objectMap [ rr:column "MediaTitle" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:mediapublisher ] ; rr:objectMap [ rr:column "MediaPublisher" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:mediaeditors ] ; rr:objectMap [ rr:column "MediaEditors" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:mediavolinfo ] ; rr:objectMap [ rr:column "MediaVolInfo" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationyear ] ; rr:objectMap [ rr:column "PublicationYear" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationnoofpages ] ; rr:objectMap [ rr:column "PublicationNoOfPages" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationpagesinmedium ] ; rr:objectMap [ rr:column "PublicationPagesInMedium" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationfilename ] ; rr:objectMap [ rr:column "PublicationFileName" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationcomments ] ; rr:objectMap [ rr:column "PublicationComments" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationrelatedurl ] ; rr:objectMap [ rr:column "PublicationRelatedURL" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationrelatedurltext ] ; rr:objectMap [ rr:column "PublicationRelatedURLText" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationlocation ] ; rr:objectMap [ rr:column "PublicationLocation" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationpuburl ] ; rr:objectMap [ rr:column "PublicationPubURL" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:displayonmlkd ] ; rr:objectMap [ rr:column "DisplayOnMLKD" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:displayoniskp ] ; rr:objectMap [ rr:column "DisplayOnISKP" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publishonweb ] ; rr:objectMap [ rr:column "PublishOnWeb" ]; ] .

<#TriplesMapReferences_csv> a rr:TriplesMap; rr:logicalTable [ rr:tableSchema "CSV" ; rr:tableOwner "DBA" ; rr:tableName "References_csv" ]; 
rr:subjectMap [ rr:termtype "IRI"  ; rr:template "http://localhost:8890/CSV/references_csv/ID={ID}"; rr:class CSV:References_csv; rr:graph <http://localhost:8890/CSV#> ];
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:id ] ; rr:objectMap [ rr:column "ID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:refid ] ; rr:objectMap [ rr:column "RefID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:refpaperid ] ; rr:objectMap [ rr:column "RefPaperID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:refdetails ] ; rr:objectMap [ rr:column "RefDetails" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:refyear ] ; rr:objectMap [ rr:column "RefYear" ]; ] .

<#TriplesMapRights_csv> a rr:TriplesMap; rr:logicalTable [ rr:tableSchema "CSV" ; rr:tableOwner "DBA" ; rr:tableName "Rights_csv" ]; 
rr:subjectMap [ rr:termtype "IRI"  ; rr:template "http://localhost:8890/CSV/rights_csv/ID={ID}"; rr:class CSV:Rights_csv; rr:graph <http://localhost:8890/CSV#> ];
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:id ] ; rr:objectMap [ rr:column "ID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:publicationid ] ; rr:objectMap [ rr:column "PublicationID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authorid ] ; rr:objectMap [ rr:column "AuthorID" ]; ] ;
rr:predicateObjectMap [ rr:predicateMap [ rr:constant CSV:authororder ] ; rr:objectMap [ rr:column "AuthorOrder" ]; ] .

这是本体自动生成的代码:

And this is the Ontology auto-generated code:

@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix aowl: <http://bblfish.net/work/atom-owl/2006-06-06/> .
@prefix virtrdf: <http://www.openlinksw.com/schemas/virtrdf#> .
@prefix CSV: <http://localhost:8890/schemas/CSV/> .
@prefix dcterms: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix bibo: <http://purl.org/ontology/bibo/> . 

CSV: a owl:Ontology .

# CSV.DBA.Authors_csv
CSV:Authors_csv a rdfs:Class .
CSV:Authors_csv rdfs:isDefinedBy CSV: .
CSV:Authors_csv rdfs:label "CSV.DBA.Authors_csv" .
CSV:Authors_csv rdfs:subClassOf foaf:Person .
CSV:id a owl:DatatypeProperty .
CSV:id rdfs:range xsd:int .
CSV:id rdfs:domain CSV:Authors_csv .
CSV:id rdfs:isDefinedBy CSV: .
CSV:id rdfs:label "ID" .
CSV:authoremail a owl:DatatypeProperty .
CSV:authoremail rdfs:range xsd:string .
CSV:authoremail rdfs:domain CSV:Authors_csv .
CSV:authoremail rdfs:isDefinedBy CSV: .
CSV:authoremail rdfs:label "AuthorEmail" .
CSV:csd_dep a owl:DatatypeProperty .
CSV:csd_dep rdfs:range xsd:int .
CSV:csd_dep rdfs:domain CSV:Authors_csv .
CSV:csd_dep rdfs:isDefinedBy CSV: .
CSV:csd_dep rdfs:label "CSD_DEP" .

# CSV.DBA.Keywords_csv
CSV:Keywords_csv a rdfs:Class .
CSV:Keywords_csv rdfs:isDefinedBy CSV: .
CSV:Keywords_csv rdfs:label "CSV.DBA.Keywords_csv" .
CSV:id a owl:DatatypeProperty .
CSV:id rdfs:range xsd:int .
CSV:id rdfs:domain CSV:Keywords_csv .
CSV:id rdfs:isDefinedBy CSV: .
CSV:id rdfs:label "ID" .
CSV:publicationid a owl:DatatypeProperty .
CSV:publicationid rdfs:range xsd:int .
CSV:publicationid rdfs:domain CSV:Keywords_csv .
CSV:publicationid rdfs:isDefinedBy CSV: .
CSV:publicationid rdfs:label "PublicationID" .
CSV:keyword a owl:DatatypeProperty .
CSV:keyword rdfs:range xsd:string .
CSV:keyword rdfs:domain CSV:Keywords_csv .
CSV:keyword rdfs:isDefinedBy CSV: .
CSV:keyword rdfs:label "Keyword" .
CSV:keywordorder a owl:DatatypeProperty .
CSV:keywordorder rdfs:range xsd:int .
CSV:keywordorder rdfs:domain CSV:Keywords_csv .
CSV:keywordorder rdfs:isDefinedBy CSV: .
CSV:keywordorder rdfs:label "KeywordOrder" .

# CSV.DBA.Publications_csv
CSV:Publications_csv a rdfs:Class .
CSV:Publications_csv rdfs:isDefinedBy CSV: .
CSV:Publications_csv rdfs:label "CSV.DBA.Publications_csv" .
CSV:Publications_csv rdfs:subClassOf bibo:Article .
CSV:publicationtitle a owl:DatatypeProperty .
CSV:publicationtitle rdfs:range xsd:string .
CSV:publicationtitle rdfs:domain CSV:Publications_csv .
CSV:publicationtitle rdfs:isDefinedBy CSV: .
CSV:publicationtitle rdfs:label "PublicationTitle" .
CSV:mediatype a owl:DatatypeProperty .
CSV:mediatype rdfs:range xsd:string .
CSV:mediatype rdfs:domain CSV:Publications_csv .
CSV:mediatype rdfs:isDefinedBy CSV: .
CSV:mediatype rdfs:label "MediaType" .
CSV:publicationtype a owl:DatatypeProperty .
CSV:publicationtype rdfs:range xsd:int .
CSV:publicationtype rdfs:domain CSV:Publications_csv .
CSV:publicationtype rdfs:isDefinedBy CSV: .
CSV:publicationtype rdfs:label "PublicationType" .
CSV:mediatitle a owl:DatatypeProperty .
CSV:mediatitle rdfs:range xsd:string .
CSV:mediatitle rdfs:domain CSV:Publications_csv .
CSV:mediatitle rdfs:isDefinedBy CSV: .
CSV:mediatitle rdfs:label "MediaTitle" .
CSV:publicationyear a owl:DatatypeProperty .
CSV:publicationyear rdfs:range xsd:int .
CSV:publicationyear rdfs:domain CSV:Publications_csv .
CSV:publicationyear rdfs:isDefinedBy CSV: .
CSV:publicationyear rdfs:label "PublicationYear" .
CSV:publicationfilename a owl:DatatypeProperty .
CSV:publicationfilename rdfs:range xsd:string .
CSV:publicationfilename rdfs:domain CSV:Publications_csv .
CSV:publicationfilename rdfs:isDefinedBy CSV: .
CSV:publicationfilename rdfs:label "PublicationFileName" .
CSV:publicationcomments a owl:DatatypeProperty .
CSV:publicationcomments rdfs:range xsd:string .
CSV:publicationcomments rdfs:domain CSV:Publications_csv .
CSV:publicationcomments rdfs:isDefinedBy CSV: .
CSV:publicationcomments rdfs:label "PublicationComments" .
CSV:displayonmlkd a owl:ObjectProperty .
CSV:displayonmlkd rdfs:range aowl:Content .
CSV:displayonmlkd rdfs:domain CSV:Publications_csv .
CSV:displayonmlkd rdfs:isDefinedBy CSV: .
CSV:displayonmlkd rdfs:label "DisplayOnMLKD" .
CSV:displayoniskp a owl:ObjectProperty .
CSV:displayoniskp rdfs:range aowl:Content .
CSV:displayoniskp rdfs:domain CSV:Publications_csv .
CSV:displayoniskp rdfs:isDefinedBy CSV: .
CSV:displayoniskp rdfs:label "DisplayOnISKP" .
CSV:publishonweb a owl:ObjectProperty .
CSV:publishonweb rdfs:range aowl:Content .
CSV:publishonweb rdfs:domain CSV:Publications_csv .
CSV:publishonweb rdfs:isDefinedBy CSV: .
CSV:publishonweb rdfs:label "PublishOnWeb" .

# CSV.DBA.References_csv
CSV:References_csv a rdfs:Class .
CSV:References_csv rdfs:isDefinedBy CSV: .
CSV:References_csv rdfs:label "CSV.DBA.References_csv" .
CSV:References_csv rdfs:subClassOf bibo:ReferenceSource .
CSV:refyear a owl:DatatypeProperty .
CSV:refyear rdfs:range xsd:int .
CSV:refyear rdfs:domain CSV:References_csv .
CSV:refyear rdfs:isDefinedBy CSV: .
CSV:refyear rdfs:label "RefYear" .

# CSV.DBA.Rights_csv
CSV:Rights_csv a rdfs:Class .
CSV:Rights_csv rdfs:isDefinedBy CSV: .
CSV:Rights_csv rdfs:label "CSV.DBA.Rights_csv" .
CSV:Rights_csv rdfs:subClassOf dcterms:RightsStatement .
CSV:id a owl:DatatypeProperty .
CSV:id rdfs:range xsd:int .
CSV:id rdfs:domain CSV:Rights_csv .
CSV:id rdfs:isDefinedBy CSV: .
CSV:id rdfs:label "ID" .
CSV:publicationid a owl:DatatypeProperty .
CSV:publicationid rdfs:range xsd:int .
CSV:publicationid rdfs:domain CSV:Rights_csv .
CSV:publicationid rdfs:isDefinedBy CSV: .
CSV:publicationid rdfs:label "PublicationID" .
CSV:authorid a owl:DatatypeProperty .
CSV:authorid rdfs:range xsd:int .
CSV:authorid rdfs:domain CSV:Rights_csv .
CSV:authorid rdfs:isDefinedBy CSV: .
CSV:authorid rdfs:label "AuthorID" .
CSV:authororder a owl:DatatypeProperty .
CSV:authororder rdfs:range xsd:int .
CSV:authororder rdfs:domain CSV:Rights_csv .
CSV:authororder rdfs:isDefinedBy CSV: .
CSV:authororder rdfs:label "AuthorOrder" .

在转换"末尾,它显示了操作的状态,结果证明是正常的,并提供了以下链接:

In the end of the "convertion" it presents the status of the operations which turn out OK and gives me the following links:

http://localhost:8890/schemas/CSV/qm-authors_csv
http://localhost:8890/schemas/CSV/qm-keywords_csv
http://localhost:8890/schemas/CSV/qm-publications_csv
http://localhost:8890/schemas/CSV/qm-references_csv
http://localhost:8890/schemas/CSV/qm-rights_csv
http://localhost:8890/schemas/CSV/qm-VoidStatistics

样本图IRI和链接的数据实体URI

RDFDocument(命名图)IRI:

Transient Views: http://localhost:8890/CSV#
http://localhost:8890/CSV/authors_csv/ID/1#this
http://localhost:8890/CSV/authors_csv/ID/1#this
http://localhost:8890/CSV/keywords_csv/ID/1#this
http://localhost:8890/CSV/publications_csv/ID/1#this
http://localhost:8890/CSV/publications_csv/ID/1#this
http://localhost:8890/CSV/objects/publications_csv/ID/1/DisplayOnMLKD.bin
http://localhost:8890/CSV/references_csv/ID/1#this
http://localhost:8890/CSV/references_csv/ID/1#this
http://localhost:8890/CSV/rights_csv/ID/1#this
http://localhost:8890/CSV/rights_csv/ID/1#this
Metadata Data Document (VoiD) URI/URL: http://localhost:8890/CSV/stat#
Linked Data Ontology URI: http://localhost:8890/schemas/CSV/

我尝试使用以下查询来查看所有结果以进行检查:

I tried using the following query to view all the results to check them:

SELECT *
FROM <http://localhost:8890/CSV>
WHERE {?s ?o ?p}

上面的查询返回的内容什么都没有,只有3个空列,标题为s,o,p.

What the above query returns is nothing, just 3 empty columns with the titles s,o,p.

因此,根据上述结果,如何找到图形存储的位置以及在Virtuoso端点上应使用哪些SPARQL查询来查看结果?

So based on the above results how can I find where my graphs are stored and what SPARQL queries should I use on my Virtuoso endpoint to view my results?

推荐答案

您在查询中打了一个小错字.

You've made a minor typo in your query.

URI中的所有标点符号都很重要,您的图形名称列表显示为http://localhost:8890/CSV#,但已查询了http://localhost:8890/CSV-注意缺少的#符号.

All punctuation in a URI is significant, your list of graph names shows http://localhost:8890/CSV# but you've queried for http://localhost:8890/CSV - note the missing # sign.

您需要像这样修改查询:

You need to modify your query like so:

SELECT *
FROM <http://localhost:8890/CSV#>
WHERE {?s ?p ?o}

请注意,我还将变量顺序更改为?s ?p ?o而不是?s ?o ?p,这没有什么区别,因为变量名称是用户定义的,但是如果您选择图形中的所有三元组,则通常使用?s ?p ?o,因为名称对应于三元组的主语,谓语和宾语

Note that I also change your variable ordering to ?s ?p ?o rather than ?s ?o ?p, this makes no difference because variable names are user defined but if you are selecting all triples in a graph it is typical to use ?s ?p ?o since the names corresponds to the subject, predicate and object of the triples

这篇关于使用自动生成的代码将RDB转换为RDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆