sql - 将SPARQL查询转换为SQL查询

标签 sql sqlite sparql

我正在学习数据库管理。一个任务是能够手动转换SPARQL查询。我对查询中的FROM子句以及如何识别它们感到困惑。

SELECT下面的查询中很简单,但是由什么决定FROMWHERE子句。

数据库格式:Triples(s text, p text, o text)

PREFIX dbr: <http://dbpedia.org/resource/> PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT ?place
WHERE {

    dbr:Lionel_Messi dbo:birthPlace ?place 
}


我的理解:

SELECT dbo:birthPlace
FROM dbr:Lionel_Messi


谢谢

最佳答案

这取决于数据库架构决定存储三元组(s p o)。最常见和最容易的是


包含spo列的单个表。
属性表,即每个属性p的一个表,其列为so


对于选项1,查询可能类似于



SELECT T.o
FROM triples T
WHERE T.s = "dbr:Lionel_Messi" AND T.p = "dbo:birthPlace"


对于选项2,可能类似于

SELECT T.o
FROM dbo:birthPlace T
WHERE T.s = "dbr:Lionel_Messi"


请注意,我在这里显示了一个简化的版本,即在创建表和加载数据(例如存储完整URI)时必须完成表的命名约定和前缀解析

关于sql - 将SPARQL查询转换为SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42708339/

相关文章:

sql - 使用 mysql 5.1.41 更新表中最高的几行

json - 使用 Core Data 一对多关系从 JSON 数组填充 sqlite 数据库

json - 核心数据和JSON问题

语句部分匹配的 SPARQL 查询(包含)

sql - 使用的SQL Server版本不支持datetime2数据类型?

mysql - Coldfusion 输出变量作为数据库中的图像

php - MySQL需要设置外键吗?

c++ - 如何使用 QSqlQueryModel 在 QTableView 中显示多个选择的结果

group-by - SPARQL 仅按一个变量分组

sparql - RDF - 一个主题属性的多个对象