rdf - JSON-LD 中顶级索引键的上下文
问题描述
我正在尝试使用 JSON-LD 使旧的 JSON 文件机器可读。有问题的 JSON 文件有一个顶级对象,其item
成员引用包含实际相关数据的对象。
{
"item": {
"id": "123",
"name": "Test"
}
}
当我现在介绍如下上下文时:
{
"@context": {
"name": "https://example.org/name"
}
}
没有知识被提取,这意味着不能从中解释三元组。为了让它发挥作用,我意识到我可以做到以下几点:
{
"@context": {
"item": "https://example.org/exists",
"name": "https://example.org/name"
}
}
这个可行,这意味着很好地提取了名称谓词的三元组。然而,这种方法的问题是,带有exists
谓词的不必要的三元组也被提取了。
因此,我尝试将顶级对象标记为索引容器,以便item
完全忽略键。我只是找不到一种方法来执行此操作,而无需为该item
术语分配 IRI,如果我分配一个,则再次提取不必要的三元组。
{
"@context": {
"name": "https://example.org/name"
}
}
没有知识被提取,这意味着不能从中解释三元组。为了让它发挥作用,我意识到我可以做到以下几点:
这根本不起作用(因为该item
术语没有 IRI):
{
"@context": {
"item": {
"@container": "@index"
},
"name": "https://example.org/name"
}
}
这确实有效,但又出现了不必要的三元组:
{
"@context": {
"@container": "@index",
"item": "https://example.org/exists",
"name": "https://example.org/name"
}
}
我在这里想念什么?如何创建仅提取name
三元组的上下文?
解决方案
对照您的 JSON-LD 处理器检查这一点:
{
"item": {
"id": "123",
"name": "Test"
} ,
"@context": {
"@base": "http://example.com/id/",
"id": "@id",
"item": "@nest",
"name": "https://example.org/name"
}
}
在 JSON-LD Playground 中,此上下文生成以下单个 RDF 三元组:
<http://example.com/id/123> <https://example.org/name> "Test" .
使用的 JSON-LD 功能:
- 4.1.6 关键字别名(
"id": "@id"
); - 4.4 嵌套属性(
"item": "@nest"
) — JSON-LD 1.1 中的新功能。
您也可能对RML感兴趣。
推荐阅读
- javascript - 将整个模块导出为默认导出
- mysql - 当两行的值相同并且一行匹配到两个不同的行时,SQL JOIN with WHERE 条件
- python - 如何预测经过训练的 SVR 模型并解决错误 Value Error: X.shape[1] = 1 should be equal to 22
- django - 我正在学习一门使用 Django 开设电子商务商店的课程。问题:异常值:__str__ 返回非字符串(NoneType 类型)
- php - PHP 7 的 Laravel TCPDF 替代品
- ios - 在 xcode 10.1 上制作的 iOS 应用程序会在 iOS 13 或更高版本上运行吗?
- node.js - 为什么机器人只能减去硬币?
- javascript - Java Script getSelection() 忽略内部 HTML
- node.js - 打字稿错误:此表达式不可调用。类型 'typeof import("koa-session")' 没有调用签名
- python - Python 3 请求错误