将SPARQL查询转换为SQL查询

时间:2017-03-10 01:04:02

标签: 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

谢谢

1 个答案:

答案 0 :(得分:1)

这取决于人们决定存储三元组(s p o)的数据库模式。最常见也是最容易的是

  1. 包含spo列的单个表格。
  2. 属性表,即每个属性p的一个表,列so
  3. 对于选项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),必须完成表格和前缀解析的命名约定