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

如何用YARRRML匹配JSON特定值关联影片与导演实体?

解决YARRRML中影片与导演关联的问题

给定如下JSON数据源:

[
  {
    "crew":[
      {
        "id":123,
        "job":"Director",
        "name":"Director Testname"
      },
      {
        "id":456,
        "job":"Screenplay",
        "name":"Crew Testname"
      }
    ],
    "id":789
  }
]

要实现生成Director实体并让影片通过hasDirector关联对应导演的需求,可使用以下YARRRML映射配置,同时解决关联缺失或错误关联所有crew成员的问题:

prefixes:
  ex: http://example.org/
  rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#

mappings:
  # 生成影片实体并关联对应导演
  movie-mapping:
    sources:
      - ['input.json~jsonpath', '$[*]']
    s: ex:movie/$(id)
    po:
      - [rdf:type, ex:Movie]
      # 仅关联job为Director的crew成员
      - p: ex:hasDirector
        o: ex:director/$(crew[*].id)
        condition:
          function: equal
          parameters:
            - [str1, $(crew[*].job)]
            - [str2, "Director"]

  # 生成导演实体(仅筛选job为Director的crew条目)
  director-mapping:
    sources:
      - ['input.json~jsonpath', '$[*].crew[?(@.job == "Director")]']
    s: ex:director/$(id)
    po:
      - [rdf:type, ex:Director]
      - [ex:name, $(name)]
      - [ex:job, $(job)]

关键配置说明

  1. 影片映射(movie-mapping)

    • 通过condition的equal函数,严格匹配crew条目中job等于"Director"的记录,确保只有导演被关联到影片的hasDirector属性,避免错误关联其他crew成员。
    • 用影片自身的id生成唯一URI,保证实体标识正确。
  2. 导演映射(director-mapping)

    • 直接在sources的JSONPath中筛选crew[?(@.job == "Director")],只处理导演相关的条目,不会生成其他crew角色的实体。

常见问题排查

  • 若之前未生成hasDirector属性:检查影片映射中是否正确引用了crew[*].id作为对象值,同时确认条件判断的参数是否正确(比如字符串大小写是否匹配)。
  • 若错误关联所有crew成员:说明影片映射的hasDirector字段未添加条件筛选,导致所有crew条目都被当作导演关联,加上condition即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:43:32