RDF 三倍于 table
RDF triples to a table
我有一个带有 RDF 三元组的三元组存储,我想将数据导出到 table,其中列代表谓词。例如,如果我有以下三元组
:s1 :p1 "v11"
:s1 :p2 "v12"
:s2 :p2 "v22"
:s2 :p3 "v23"
我要如下
----| p1 | p2 | p3
s1 | v11 | v12 | (null)
s2 | (null) | v22 | v23
这可能看起来有点奇怪,因为在大多数情况下我们需要以其他方式导出,但在这里我想将这些数据输入数据挖掘软件。
使用可选的
如果您事先知道谓词,您可以将每个谓词包装在可选中,以使所有主题的所有谓词都在同一行中 - 即使缺少某些谓词。这是一个 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
我有一个带有 RDF 三元组的三元组存储,我想将数据导出到 table,其中列代表谓词。例如,如果我有以下三元组
:s1 :p1 "v11"
:s1 :p2 "v12"
:s2 :p2 "v22"
:s2 :p3 "v23"
我要如下
----| p1 | p2 | p3
s1 | v11 | v12 | (null)
s2 | (null) | v22 | v23
这可能看起来有点奇怪,因为在大多数情况下我们需要以其他方式导出,但在这里我想将这些数据输入数据挖掘软件。
使用可选的
如果您事先知道谓词,您可以将每个谓词包装在可选中,以使所有主题的所有谓词都在同一行中 - 即使缺少某些谓词。这是一个 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