使用SPARQL访问链接的数据图

时间:2014-06-20 10:18:20

标签: rdf sparql virtuoso linked-data rdb

我使用OpenLink Virtuoso使用this tutorial将关系数据库转换为RDF。

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

在从RDB到Linked-Data图表的“转换”结束时,它显示了操作的状态,结果没问题,并给了我以下链接:

SQL关系(表)到RDF语句(谓词/属性图)映射

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/

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

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

但我需要的是分别检查每个图表。

问题1:

根据以上结果,我如何访问使用SPARQL创建的每个图表(对于表AuthorsPublicationsReferences等)?

问题2:

我应该写什么查询来删除图表?

1 个答案:

答案 0 :(得分:3)

我建议您至少粗略地浏览SPARQL 1.1 Query LanguageSPARQL 1.1 Update。您不需要记住它们的每个方面,但浏览目录会让您了解语言中的内容,并且您将了解将来的位置。 (在我看来,对于您可能学习或使用的任何工具包,语言等,这是一个很好的建议。)

在一个或多个图表中查询

查看13.3 Querying the Dataset及其子部分,您可以在其中找到有关如何查询不同图表的示例。简而言之,您使用类似

的模式
select ... where {
  ...
  graph ?g { ... }
  ...
}

默认情况下,?g将覆盖数据集中的所有图表。如果您在查询中使用了一些from named部分,那么您可以限制它的范围。您也可以直接指定图形IRI,如

graph <http://example.org/graph-to-check> { ... }

当然,规范中有更多的例子。

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

但我需要的是分别检查每个图形。

您可以使用

之类的查询
select * where { graph ?g { ?s ?p ?o } }

获取每个三元组及其出现的图形。注意(如RobV did in an answer to one of your earlier questions),我已经更改了变量名称,因为三元组是(主语,谓语,对象),所以?s ?p ?o?s ?o ?p更具记忆意义。

删除图表

3.2 Graph Management部分描述了可用于操作图形的五个操作(强调添加):

  
      
  • CREATE操作会在支持空图形的商店中创建新图表。
  •   
  • DROP操作会删除图表及其所有内容。
  •   
  • COPY操作会修改图表以包含其他图像的副本。
  •   
  • MOVE操作会将所有数据从一个图表移动到另一个图表。
  •   
  • ADD操作会将所有数据从一个图表复制到另一个图表。
  •   

给定的语法是

DROP  ( SILENT )? (GRAPH IRIref | DEFAULT | NAMED | ALL )

所以你只需要做,例如,

drop graph <http://example.org/graph-to-delete>