我试图在两种实体类型之间获得所有可能的谓词。以下是具有Person
类型的两个实体的示例。
SELECT distinct ?p
WHERE { ?url1 rdf:type <http://dbpedia.org/ontology/Person> .
?url2 rdf:type <http://dbpedia.org/ontology/Person> .
?url1 ?p ?url2 .
FILTER(STRSTARTS(STR(?p), "http://dbpedia.org/ontology")).
}
但是,结果输出包含birthPlace
,deathPlace
之类的谓词,它们绝对不能介于两种Person
类型之间。
我是否缺少任何限制以获得更多逻辑输出?
答案 0 :(得分:1)
不确定是否值得将其作为答案提供......
您只缺少一点:
DBpedia中的数据并不完美,没有噪音,因为它是从维基百科自动提取的。
您可以使用
检查发生这种情况的原因SELECT * WHERE {
?url1 rdf:type <http://dbpedia.org/ontology/Person> .
?url2 rdf:type <http://dbpedia.org/ontology/Person> .
?url1 <http://dbpedia.org/ontology/birthPlace> ?url2 .
}
limit 10
除此之外,你得到了
+-------------------------------------------+------------------------------------------------------------------------+
| url1 | url2 |
+-------------------------------------------+------------------------------------------------------------------------+
| http://dbpedia.org/resource/Analía_Núñez | http://dbpedia.org/resource/David |
| http://dbpedia.org/resource/Jorvan_Vieira | http://dbpedia.org/resource/Luís_Alves_de_Lima_e_Silva,_Duke_of_Caxias |
| http://dbpedia.org/resource/Adebayo_Lawal | http://dbpedia.org/resource/Offa_of_Mercia+ |
| ... | ... |
+-------------------------------------------+------------------------------------------------------------------------+
让我们看看http://dbpedia.org/resource/Analía_Núñez:
DESCRIBE <http://dbpedia.org/resource/Analía_Núñez>
其中,它返回三元组
dbr:Analía_Núñez dbo:birthPlace dbr:Panama ,
dbr:David ,
<http://dbpedia.org/resource/David,_Chiriqu\u00ED> .
你可以看到三个出生地。虽然它应该是http://dbpedia.org/resource/David,_Chiriqu%C3%AD,但您可以看到从信息框中提取过程中出现了问题 在Wikipedia article about Analía Núñez。