gpt4 book ai didi

SPARQL 查找孙子的数量

转载 作者:行者123 更新时间:2023-12-02 05:51:21 25 4
gpt4 key购买 nike

我正在使用schema.org本体论。我想返回 <http://schema.org/Event> 的子类每个返回子类的子级数。我的查询当前返回一个子类。

PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?uri (count(?children) as ?childrenCount) WHERE
{
?uri rdfs:subClassOf <http://schema.org/Event>.
?children rdfs:subClassOf ?uri
}
GROUP BY ?uri

我想要 <http://schema.org/Event> 的每个子类以及它拥有的 child 数量。

最佳答案

您没有提到“其子项的错误计数”是什么。当我在 schema.org OWL document 上运行您的查询时,我得到这些结果:

-------------------------------------------------------
| uri | childrenCount |
=======================================================
| <http://schema.org/UserInteraction> | 9 |
-------------------------------------------------------

我认为这个计数是正确的。如果您期望不同的计数,请更新问题以说明您期望的计数以及原因。根据schema.org Full Hierarchy页面显示了这个层次结构,在该层次结构下,Event 的唯一孙子类是 UserInteraction 的子类,其中有九个。

type hierarchy for Event from schema.org

无论如何,您在此列表中看不到更多结果的原因是查询现在只能找到实际上拥有自己 child 的 child ,这会严重限制您的结果。如果您想选择本身没有子项的 Event 子项,则可以在 可选 模式内选择 Event 的子项。举例说明:

prefix schema:  <http://schema.org/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select * where {
?child rdfs:subClassOf schema:Event .
optional {
?grandchild rdfs:subClassOf ?child
}
}

产生:

$ arq --data schemaorg.owl --query query.sparql
--------------------------------------------------
| child | grandchild |
==================================================
| schema:FoodEvent | |
| schema:Festival | |
| schema:SportsEvent | |
| schema:SaleEvent | |
| schema:EducationEvent | |
| schema:ChildrensEvent | |
| schema:DanceEvent | |
| schema:BusinessEvent | |
| schema:TheaterEvent | |
| schema:SocialEvent | |
| schema:VisualArtsEvent | |
| schema:MusicEvent | |
| schema:ComedyEvent | |
| schema:LiteraryEvent | |
| schema:UserInteraction | schema:UserCheckins |
| schema:UserInteraction | schema:UserTweets |
| schema:UserInteraction | schema:UserLikes |
| schema:UserInteraction | schema:UserPlays |
| schema:UserInteraction | schema:UserDownloads |
| schema:UserInteraction | schema:UserPlusOnes |
| schema:UserInteraction | schema:UserComments |
| schema:UserInteraction | schema:UserBlocks |
| schema:UserInteraction | schema:UserPageVisits |
--------------------------------------------------

Event 的大多数子类没有任何子类;只有 UserInteraction 可以。也就是说,既然我们了解了如何找到这些类,即使它们没有子类,计数也应该与您原来的查询非常相似:

prefix schema:  <http://schema.org/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select ?child (count(?grandchild) as ?nGrandchildren) where {
?child rdfs:subClassOf schema:Event .
optional {
?grandchild rdfs:subClassOf ?child
}
}
group by ?child

当然,结果显示大多数类的计数为零,UserInteraction 的计数为 9。

$ arq --data schemaorg.owl --query query.sparql
-------------------------------------------
| child | nGrandchildren |
===========================================
| schema:ComedyEvent | 0 |
| schema:ChildrensEvent | 0 |
| schema:SportsEvent | 0 |
| schema:FoodEvent | 0 |
| schema:BusinessEvent | 0 |
| schema:Festival | 0 |
| schema:EducationEvent | 0 |
| schema:LiteraryEvent | 0 |
| schema:SaleEvent | 0 |
| schema:TheaterEvent | 0 |
| schema:SocialEvent | 0 |
| schema:UserInteraction | 9 |
| schema:MusicEvent | 0 |
| schema:DanceEvent | 0 |
| schema:VisualArtsEvent | 0 |
-------------------------------------------

关于SPARQL 查找孙子的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18184814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com