我正在学习数据库管理。一个任务是能够手动转换SPARQL查询。我对查询中的FROM
子句以及如何识别它们感到困惑。
在SELECT
下面的查询中很简单,但是由什么决定FROM
和WHERE
子句。
数据库格式: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)
。最常见和最容易的是
包含s
,p
和o
列的单个表。
属性表,即每个属性p
的一个表,其列为s
和o
对于选项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/