gpt4 book ai didi

rdf - 在 SQL 中导入 RDF 数据?

转载 作者:行者123 更新时间:2023-12-04 13:07:32 27 4
gpt4 key购买 nike

我用起来很舒服 SQL但有一个不可能的时间理解SPARQL .对于初学者,我什至不明白如何查看数据的结构(在 MySQL 中我只会做 describe <table name> )所以我可以查询适当的字段。

有没有办法将整个 RDF 数据集导入 MySQL 数据库中的各个表?

除此之外,有没有办法到SELECT *来自所有表(或任何等效的描述符),以便我可以将所有输出数据放入 csv(并从那里取出?)

我试图查询的 RDF 数据集有一个 SPARQL endpoint甚至有关 How to SPARQL 的指南但我很难理解它。

例如:

PREFIX meannot: <http://rdf.myexperiment.org/ontologies/annotations/>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX mebase: <http://rdf.myexperiment.org/ontologies/base/>
SELECT DISTINCT ?annotator_name
WHERE {
?comment mebase:annotates <http://www.myexperiment.org/workflows/52> .
?comment rdf:type meannot:Comment .
?comment mebase:has-annotator ?annotator
?annotator sioc:name ?annotator_name
}

对我来说毫无意义。为什么有些 WHERE 语句的末尾有句点,而另一些则没有?什么是 ?comment mebase:has-annotator ?annotator简单的英语是什么意思?选择注释者名称,其中注释者名称是注释者名称?嗯?

如果您能提供任何资源,我将不胜感激。

最佳答案

尽管 SPARQL 在语法上看起来像 SQL,但它的功能实际上却大不相同,这是您和许多其他人在尝试学习它时遇到的问题。

模式匹配

SPARQL 是关于三重模式匹配,而不是像 SQL 那样从表中进行选择。您示例中的每组三个项目代表一个三重模式。例如:

?comment rdf:type meannot:Comment .

这告诉 SPARQL 处理器查找具有 rdf:type 的任何事物。的 meannot:Comment评论类型的东西 .在这种模式中 ?comment是一个充当通配符的变量,将其视为 SQL 中的一个字段,您可以选择

如果我们添加使用变量的额外三元组模式,那么我们要求 SPARQL 处理器查找与所有三元组模式匹配的所有内容,因此:
?comment mebase:annotates <http://www.myexperiment.org/workflows/52> .
?comment rdf:type meannot:Comment .

这会找到 对特定项目的评论的东西 .
在 SQL 术语中,这就像写 SELECT commentID FROM COMMENTS WHERE itemID=1234如果这有助于你理解它。

当我们开始添加其他变量时,您可以将其视为与其他表进行连接:
?comment mebase:annotates <http://www.myexperiment.org/workflows/52> .
?comment rdf:type meannot:Comment .
?comment mebase:has-annotator ?annotator .

这会找到 评论内容以及对特定项目发表评论的用户
它大致相当于 SELECT commentID, userID FROM COMMENTS C INNER JOIN USERS U ON C.userID=U.userID WHERE itemID=1234在 SQL 中

语法说明

就语法而言, .表示三重模式的结束。
在您的示例中省略它的事实实际上是发布如何指导的人的错误。我碰巧在参与该项目的一所大学工作,所以我给一位同事写了一张便条,要求他们解决这个问题。

您还可以在示例中看到 ; 的使用在三重模式的末尾。这些是重复主题的速记,例如
?comment mebase:annotates <http://www.myexperiment.org/workflows/52> ;
rdf:type meannot:Comment .

意味着您不必输入 ?comment再次用于后续模式。

同样 ,用于重复主语和谓语:
?comment rdf:type meannot:Comment , ex:Annotation .

意味着 ?commentrdf:type重复,用简单的英语,上面将是 属于注释类型和注释类型的事物

发现数据结构

RDF 不存储在表中,因为它是一个无模式的数据模型,最接近表的是命名图,它只是一种将三元组逻辑分组在一起的方法。

看看 exploratory SPARQL queries 上的这个问题有关要尝试的查询的一些建议。

如果你只想选择你能做的一切 SELECT * WHERE { ?s ?p ?o } - 请注意,许多端点会对一个查询的结果数量施加限制,因此即使端点背后有数百万个三元组,您也可能只得到几千个。您可以使用 LIMIT 翻阅结果和 OFFSET例如
SELECT * WHERE { ?s ?p ?o } LIMIT 1000 OFFSET 0
SELECT * WHERE { ?s ?p ?o } LIMIT 1000 OFFSET 1000
SELECT * WHERE { ?s ?p ?o } LIMIT 1000 OFFSET 2000
# And so forth until you find no further results

如果您只是想通过拖网获取所有数据,请尝试在站点上环顾四周,看看他们是否提供 RDF 转储,该转储通常是包含一堆 RDF 文件的压缩存档。这将让您在本地查看数据

将 RDF 放入 SQL 表

有一些系统可以让您将 RDF 存储在基于 SQL 的数据库中,但从使用过大量三重存储的人那里获取它的性能远不及使用原生三重存储。

您可能感兴趣 R2RML这是一个新的 W3C 标准(目前处于早期工作草案中),它定义了将关系数据映射到 RDF 的标准方法。他们的一些文档可能会帮助您更好地理解 RDF/SPARQL 和 SQL 之间的关系

教程

如需更完整的教程,我会查看 SPARQL by Example这是 SPARQL 规范的作者之一,强烈推荐

关于rdf - 在 SQL 中导入 RDF 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6541857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com