【发布时间】:2014-04-12 21:38:26
【问题描述】:
在我尝试之前,这个问题对我来说似乎很容易......但也有可能我只是错误地考虑了这个问题。
假设我们从 dbpedia 中任意获取了 100 个主题。
SELECT ?s
WHERE {
?s ?p ?o .
}
LIMIT 100
我想做的是添加一个列,说明它们是 Person、Place 还是 SomeOtherType,如果都不是,则为“null”。
所以,我尝试了几种方法来解决这个问题:
-
使用
rdf:type和VALUES:SELECT ?s ?ppt WHERE { ?s rdf:type ?ppt . VALUES ?ppt { dbpedia-owl:Person dbpedia-owl:Place dbpedia-owl:SomeOtherType } }但这只是获取具有该值的主题列表,并且不一定回答它们是三种类型中的哪一种的问题(即,如果我有 1 个主题,比如说代替
?s,我可以'不要只是将VALUES { ... }块添加到针对该 1 个主题的查询中,因为如果它不是这三个主题中的任何一个,那么将返回零个结果。 我可以
BIND ( IF ... ELSE ... etc ) AS ?ppt,但这也有点奇怪。
那么,我应该使用哪些查询函数来确定某物属于这三种(如果算上“null”,则为四种)类型中的哪一种?
【问题讨论】:
-
Everything 是
Thing,包括人员。这是super class of all classes。 -
@unor 我已经删除了问题的那一部分;它实际上与我的要求无关。
-
好的。我想这个话题现在在一个单独的问题中找到了它的位置:How to differentiate between a Thing and an inanimate object with SPARQL