2017-03-10 349 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)