2016-12-23 32 views
2

我有一個三重存儲與RDF三元組,我想導出數據到一個表,其中列表示謂詞。舉例來說,如果我有以下三元RDF三元組到表

:s1 :p1 "v11" 
:s1 :p2 "v12" 
:s2 :p2 "v22" 
:s2 :p3 "v23" 

我想這是如下

----| p1 | p2 | p3 
s1 | v11 | v12 | (null) 
s2 | (null) | v22 | v23 

這可能似乎有些奇怪,因爲在大多數情況下,我們需要的其他方式出口,但在這裏我想將這些數據提供給數據挖掘軟件。

回答

3

使用另購的

如果你預先知道謂詞,你可以用每個謂詞在可選得到同樣的行中的所有謂詞所有科目 - 即使有些缺失。下面是一個example

SELECT ?name ?birth ?death 
WHERE { 
?person foaf:name ?name . 
?person dbo:birthPlace :Berlin . 
OPTIONAL { ?person dbo:birthDate ?birth . } 
OPTIONAL { ?person dbo:deathDate ?death .} 
} 
ORDER BY ?name 
LIMIT 1000 

我把我原來的答案以供參考:

使用UNION如果你事先知道的謂詞(會爲每個謂詞單獨行)

,你可以使用UNION可以獲得所有主題的所有謂詞 - 即使有一些缺失。下面是一個example

SELECT ?name ?birth ?field 
WHERE { 
?person foaf:name ?name . 
?person dbo:birthPlace :Berlin . 
{ 
?person dbo:birthDate ?birth . 
} UNION { 
?person dbo:field ?field . 
}} 
ORDER BY ?name 
LIMIT 100 
+0

感謝@勒,但在你的例子中,我看到,每個值都有一個獨立的行(例如「AgneteBræstrup」),和我想了一個辦法,整個圖形輸出。是的,我沒有每個謂詞的多個值。 –

+0

@Mostafaabdo \t 我用一種解決方案更新了我的答案,它將所有內容保存在一行中。 –

+0

@René的所有學分,在這裏它是一個'修改'版本,用於導出所有謂詞(當然要與'受限'圖形一起使用)。 得到所有謂詞 'SELECT DISTINCT 2 P WHERE { \t?的?五氧化二磷 }' 他們出口到Excel和使用concat函數來組裝查詢作爲在原來的答案。 –