如何通过行号从新查询的排序结果列表中访问谓词+对象?
来自维基数据的示例查询:
SELECT ?p ?o (COUNT (?o) as ?oCount) WHERE{
?s ?p ?o. #return every predicate + object...
?s wdt:P31 wd:Q5. #...for humans
?s wdt:P19 wd:Q37100. #...born in Auckland (NZL)
?s wdt:P21 wd:Q6581097. #...which are male
}
GROUP BY ?p ?o ?oCount
ORDER BY DESC(?oCount) #order by most common predicate/object combination
这些是第一批结果(为了更清晰而编辑):
p o oCount
--------------------------------------------------------------------
wdt:P19 (place of birth) wd:Q37100 (Auckland) 1083
wdt:P21 (gender) wd:Q6581097 (male) 1083
wdt:P31 (instance of) wd:Q5 (human) 1083
wdt:P27 (country) wd:Q664 (New Zealand) 844
(...)
wdt:P106 (occupation) wd:Q14373094 (rugby player) 202
(...)
wdt:P69 (educated at) wd:Q492467 (Univ. of Auckland) 62
现在我想做以下查询:
使用此结果列表的第n个谓词+对象返回所有主题。
我的实际用例是将这些结果的多行与' AND'或者'或者'返回给出前5个谓词+此结果对象的所有主题。
知道如何从结果中访问某些行将是一个良好的开端。我不想通过读取结果(使用脚本)并使用它们作为第二个查询的输入来使用单独的查询,如果可能的话。
答案 0 :(得分:3)
知道如何从结果中访问某些行将是一个良好的开端。我不想通过读取结果(使用脚本)并使用它们作为第二个查询的输入来使用单独的查询,如果可能的话。
这不太可能。您可以在子查询中使用 order by ,但结果在外部查询中不可用作结果的有序列表;它们只是提供给外部查询。但是,如果您真的只想要 n th 结果,您还可以使用 limit 和 offset ,可能就足够了。例如,您可以执行以下操作(为了示例而故意简化,并包括完整性的示例数据):
EditableModule
java.lang.RuntimeException: Unable to create application android.search786.apkia.com.MyApplication: io.realm.exceptions.RealmMigrationNeededException: The 'AL_QURAN_TBL' class is missing from the schema for this Realm.
@prefix : <urn:ex:>
:p :hasRank 1 .
:q :hasRank 2 .
:r :hasRank 3 .
:s :hasRank 4 .
:t :hasRank 5 .
:u :hasRank 6 .
:v :hasRank 7 .
:x :hasRank 8 .
:a :s :s0, :s1, :s2 ;
:t :t0, :t1 ;
:u :u0, :u1, :u2, :u3 .