You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SPARQL查询需求:获取合作最频繁的男女演员对

查询合作最频繁的男女演员对(SPARQL)

需求背景

  • 正在构建电影与演员的本体,包含Movie和Actor类,每个电影实例关联对应的演员
  • Actor类有对象属性hasGender,用于标记演员性别为Male(男)或Female(女)
  • 需要编写SPARQL查询,返回男演员、女演员、该对演员合作的电影数量三个值,找出合作最频繁的男女演员对

已尝试的查询(不符合需求)

查询最频繁男演员的语句:

PREFIX ontology: <https://....../>
SELECT ?Actor (count (?Movie) as ?MoviesCount)
WHERE { 
    ?Movie ontology:hasActor ?Actor.
    ?Actor ontology:hasGender ?Gender
  filter regex (str(?Gender), "Male")
 }
Group by ?Actor
Order by desc (?MoviesCount)

查询最频繁女演员的语句:

PREFIX ontology: <https://....../>
SELECT ?Actor (count (?Movie) as ?MoviesCount)
WHERE { 
    ?Movie ontology:hasActor ?Actor.
    ?Actor ontology:hasGender ?Gender
  filter regex (str(?Gender), "Female")
 }
Group by ?Actor
Order by desc (?MoviesCount)

目标SPARQL查询语句

PREFIX ontology: <https://....../>
SELECT ?maleActor ?femaleActor (COUNT(?movie) AS ?collaborationCount)
WHERE {
    # 关联同一部电影中的男女演员
    ?movie ontology:hasActor ?maleActor ;
           ontology:hasActor ?femaleActor .
    
    # 限定演员性别
    ?maleActor ontology:hasGender ontology:Male .
    ?femaleActor ontology:hasGender ontology:Female .
    
    # 避免重复统计同一对演员(如A&B和B&A视为同一组合)
    FILTER(STR(?maleActor) < STR(?femaleActor))
}
GROUP BY ?maleActor ?femaleActor
ORDER BY DESC(?collaborationCount)
# 可选:添加LIMIT N返回前N组最频繁的合作对,比如LIMIT 5

说明

  1. 通过同一?movie节点关联男女演员,确保两人出现在同一部电影中
  2. 直接引用本体中的性别实例替代正则匹配,查询更精准高效
  3. FILTER语句用于去重,避免同一对演员被重复统计
  4. 按演员对分组统计合作电影数量,降序排序后最靠前的就是合作最频繁的组合

内容的提问来源于stack exchange,提问作者Haya Akkad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:32:32