我正在学习数据库管理。一个任务是能够手动转换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
谢谢
答案 0 :(得分:1)
这取决于人们决定存储三元组(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),必须完成表格和前缀解析的命名约定