2017-03-10 173 views
1

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

在下面的查询中SELECT是直截了当的,但是什么决定了FROMWHERE条款。

数据库格式:​​

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

这取决于数据库模式一个决定为存储三元(s p o)。最常见和最简单的有

  1. 一个表格,表格中spo列。
  2. 属性表,即一个表中的每个属性ps列和o

对于第一种情况,查询可能看起来像

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

对于第二种情况,这可能是一些像

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

请注意,我表演在此创建一个简化版本,即创建表格和加载数据时必须完成表格的命名约定和前缀解析。存储完整的URI)