Sparql RDF三倍于一个表

Sparql RDF三倍于一个表,sparql,rdf,triples,Sparql,Rdf,Triples,我有一个带有RDF三元组的三元组存储,我想将数据导出到一个表中,其中列表示谓词。例如,如果我有以下三元组 :s1 :p1 "v11" :s1 :p2 "v12" :s2 :p2 "v22" :s2 :p3 "v23" 我希望它是这样的 ----| p1 | p2 | p3 s1 | v11 | v12 | (null) s2 | (null) | v22 | v23 这似乎有点奇怪,因为在大多数情况下,我们需要以另一种方式导出,但在这里,我想将这些数据输入到数据挖掘软件中

我有一个带有RDF三元组的三元组存储,我想将数据导出到一个表中,其中列表示谓词。例如,如果我有以下三元组

:s1 :p1 "v11"
:s1 :p2 "v12"
:s2 :p2 "v22"
:s2 :p3 "v23"
我希望它是这样的

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

这似乎有点奇怪,因为在大多数情况下,我们需要以另一种方式导出,但在这里,我想将这些数据输入到数据挖掘软件中。

使用可选的

如果您事先知道谓词,那么可以将每个谓词包装为OPTIONAL,以获得所有主语的同一行中的所有谓词,即使缺少一些谓词也是如此。以下是一份:

我保留我的原始答案供参考:

使用联合(为每个谓词创建单独的行)

如果您事先知道谓词,那么可以使用UNION获取所有主题的所有谓词,即使缺少一些谓词。以下是一份:


谢谢@René,但在您的示例中,我看到每个值都有一个单独的行(例如“Agnete Bræstrup”),我正在考虑一种导出整个图形的方法。是的,每个谓词没有多个值。@Mostafaabdo我用一个解决方案更新了我的答案,该解决方案将所有内容都保存在一行中。@René的所有学分,这里是导出所有谓词的“修改”版本(当然要与“有限”图一起使用)。获取所有谓词
选择DISTINCT?p WHERE{s?p?o}
将它们导出到excel,并使用concat函数像原始答案一样组装查询。
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
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