首页 文章

使用SPARQL访问链接的数据图

提问于
浏览
2

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

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

在从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 回答

  • 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> { ... }
    

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

    选择*
    FROM <http:// localhost:8890 / CSV>
    在哪里{?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>
    

相关问题