如这个标题相似的问题所示,我想通过知道其名称的一部分来检索 dbpedia 资源。我是 SPARQL 等方面的初学者,但问题中的示例对我有很大帮助,因为作者搜索“罗马尼亚”,而回答的人用 Sparql 请求将他联系起来以完成这项工作。这很好,但事情就是这样。
在示例中,他们已经“知道”罗马尼亚是一个国家,因此
?c a dbpedia-owl:Country ;
在 WHERE 子句中。完整的 sparql 请求是
SELECT ?c
WHERE {
?c a dbpedia-owl:Country ;
foaf:name "Romania"@en .
FILTER NOT EXISTS {?c dbpedia-owl:dissolutionYear ?y}
}
但是,这个问题并没有完全回答我们的需求,因此通过名称搜索任何资源,“名称”是资源的实际名称,或者它的一部分,无论其 (rdf:)type是什么。目标是搜索“任何东西”,只知道名称或其中的一部分。
在问你们这个问题之前,我一直在做一些研究,我已经知道可以使用 bif 函数(不好的方法,因为它不符合 sparql)或 CONTAINS 子句来解决“名称的一部分”问题,但我找不到任何展示如何使用它的例子。
现在让我们假设在 dbpedia 资源中要搜索一个“词”,该词将是某个用户的输入。我们称之为“输入”。
我想,请求看起来像:
SELECT ?something WHERE
{
?something a (dbpedia Resource).
CONTAINS(?something,"INPUT")
}
我的主要问题是关于两个主要方面:
- 是否有任何描述 Dbpedia Resource 类型的内容?我不认为它存在于本体或任何东西中。通过知道我想在所有资源中搜索以找到一个匹配...
- 我将提供的特定名称或一些字符串。我考虑了 FILTER 选项,但这意味着获取所有资源,然后在它们被检索后按它们的名称过滤它们,我想这不是那么理想。
那么,有没有人知道这个“主查询”通过提供它的名称来获取资源,或者它的一部分?(一个例子是提供“奥巴马”,不仅为 Barrack,而且为 Michelle 获得结果)。
先感谢您。