显示哪个结果是由 ASK 查询中的哪个绑定组合决定的

Show which result was determinated by which combination of bindings in an ASK query

有没有办法显示 ASK 查询的哪个绑定用于哪个结果?

为了阐明我的意思:对于 SELECT 查询来说非常简单:

SELECT DISTINCT * WHERE {
 ?class_0 ?property_0 ?uri . 
 VALUES (?class_0) {(<http://dbpedia.org/resource/Angela_Merkel>) } 
 VALUES (?property_0) {(<http://dbpedia.org/ontology/birthPlace>) (<http://dbpedia.org/ontology/birthDate>) }
} 

会给这个:

╔════════════════════════════════════════════╦═════════════════════════════════════════╦══════════════════════════════════════════════════════╗
║                  class_0                   ║               property_0                ║                         uri                          ║
╠════════════════════════════════════════════╬═════════════════════════════════════════╬══════════════════════════════════════════════════════╣
║ http://dbpedia.org/resource/Angela_Merkel  ║ http://dbpedia.org/ontology/birthPlace  ║ http://dbpedia.org/resource/Hamburg                  ║
║ http://dbpedia.org/resource/Angela_Merkel  ║ http://dbpedia.org/ontology/birthPlace  ║ http://dbpedia.org/resource/Barmbek-Nord             ║
║ http://dbpedia.org/resource/Angela_Merkel  ║ http://dbpedia.org/ontology/birthDate   ║ 1954-07-17                                           ║
║ http://dbpedia.org/resource/Angela_Merkel  ║ http://dbpedia.org/ontology/birthDate   ║ "1954-7-17"^^<http://www.w3.org/2001/XMLSchema#date> ║
╚════════════════════════════════════════════╩═════════════════════════════════════════╩══════════════════════════════════════════════════════╝

所以我确切地知道结果是如何确定的:

http://dbpedia.org/resource/Angela_Merkel + http://dbpedia.org/ontology/birthPlace -> http://dbpedia.org/resource/Hamburg, http://dbpedia.org/resource/Barmbek-Nord

有没有办法为以下查询获取此信息?

PREFIX dbr: <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
ASK WHERE { 
 ?class_0 a dbo:Sport . 
 VALUES (?class_0) {(dbr:Horse_racing) (dbr:Angela_Merkel)}
}

所以我可以看到

dbo:Sport + dbr:Horse_racing -> true
dbo:Sport + dbr:Angela_Merkel -> false

注意:我知道可以将此查询分成两部分,但我想尽可能避免这种情况。

SPARQL ASK 只能 return 布尔值;因此,您不能使用此查询类型。

此查询可能会执行您想要的操作:

PREFIX dbr: <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT * WHERE { 
 VALUES (?class_0) {(dbr:Horse_racing) (dbr:Angela_Merkel)}
 BIND(xsd:boolean(exists{?class_0 a dbo:Sport}) as ?exists)
}