rdf - RDF 1.1 语义中语句标识符的模型理论语义
问题描述
我想格式化将语句标识符添加到 RDF 的语义。这些标识符的目的是表示语句并用于具体化这些语句,以便可以对它们进行断言,向它们添加属性等(1)。他们应该是:
- 新鲜出炉的 IRI (2)
- 每个语句的唯一性 (3)
- 可用作进一步陈述的主题和/或客体。
这对我来说似乎相当清楚,但正式定义这些语句标识符的模型理论语义也会很有用。RDF 1.1 Semantics 文档 [1] 定义了一个简单的解释如下:
1. A non-empty set IR of resources, called the domain or universe of I.
2. A set IP, called the set of properties of I.
3. A mapping IEXT from IP into the powerset of IR x IR
i.e. the set of sets of pairs < x, y > with x and y in IR .
4. A mapping IS from IRIs into (IR union IP)
5. A partial mapping IL from literals into IR
我想出的第一种方法
是通过
添加 ID 来修改这个定义:
6'. A set ID', called the set of statement identifiers of I.
- 将 IS 修改为 IS':
4'. A mapping IS' from IRIs into (IR union IP union ID')
- 并将 IEXT 修改为 IEXT':
3'. A mapping IEXT' from IP into the powerset of
(IR union ID') x (IR union ID') x ID'
i.e. the set of sets of triples <x,y,id>
with x and y in (IR union ID') and id in ID'.
但是,我不确定这是否按预期工作。尤其令我困扰的是,IR,即上述 1. 中定义的 I 的域或全域,与 ID' 是不相交的。必须可以将语句标识符用作其他语句中的主题或对象(这就是这项工作的重点)。OTOH,还必须确保这些标识符不是从现有的 IRI 集中获取的,而是新铸造的。
第二种方法可能是
- 将集合 ID' 更改为映射 ID”:
6". A mapping ID" from an IRI p of IP and a pair <x,y> with x and y in IR
to an IRI id, adding id to IR.
- 并将每对的 IEXT 修改为 IEXT",调用 ID":
3". A mapping IEXT" from IP into the powerset of IR x IR x ID"
i.e. the set of sets of triples <x,y,id> with x and y in IR
and id minted by ID".
在这里,我首先定义一个函数 ID" 来为给定的属性 p 和 p 的扩展中的一对创建标识符。然后我为每个映射 IEXT" 调用该函数,从 IP 中的 p 到其扩展中的一对。ID" 为该特定映射返回一个 id 到 IEXT" 并且还将 id 添加到 IR 以便它可以在更多对中使用。
我很不确定这是否是定义形式语义的合法方式。可能将映射作为函数“调用”的想法已经不合适了。
(1) 这个想法并不新鲜:它已经在内部的 RDF 存储中实现,它被称为“命名三元组”等。但是我不知道它的语义有任何正式的模型理论规范。我知道 RDF 的标准物化机制和其他在 RDF 中物化的方法。我不想在这里讨论任何这些方法的优点和缺点。我提到它们只是为了为这个问题提供一些背景信息。在这里,我只想讨论如何正确地形式化这个特定的方法。我相信这是一个真正的技术问题,在这里讨论它会更好,使用 Stackoverflow 提供的精美工具,而不是在邮件列表中。
(2) 也许通过哈希函数,但我想暂时保持打开状态。
(3) 为了示例的简单,这里忽略如何保证语句标识符的全局唯一性或如何处理语句的不同标识符的图的合并或反之的问题。
解决方案
经过更多的思考和阅读,我得出结论,简单解释的 RDF 1.1 语义定义可能不需要任何修改。毕竟,我正在为每个语句定义新的 IRI。这些 IRI 应是唯一的,并且应在其他陈述中用作主语或客体。所有这些都包含在标准 RDF 模型理论中。RDF 抽象语法当然需要修改,但这是另一回事。
推荐阅读
- qt - QMake:将文件和文件夹从源目录复制到构建目录
- python-3.x - 如何在状态空间模型中添加时间延迟
- spring-boot - Flux parallel:只占用一个线程
- node.js - 纽曼上的 NTLM 身份验证
- javascript - 如何将字符串转换为 12 位二进制而不改变它在 asp.net c# 中的值
- c# - C# 在类的新实例中使用 Forms 元素
- c++ - 如何在不使用“开发工具”组的情况下通过 yum 命令安装 c++?
- python - 描述快速排序算法
- reactjs - React Router ALL LINK IS WORKING FINE EXPECT to="/" 不起作用,我想访问另一个路径="/"
- c - 不同的写作,同样的事情:一个给出分段错误,另一个没有