0

如果我们使用本体,我们可以使用<s,p,o>语义三元组来表示许多事物。

我想知道如何表示这一点:

A和B导致C

或者

A 或 B 导致 C

?

我不想做推理,我只想代表。

是否可以在本体中使用和,或否定作为谓词/关系?

合取、析取和蕴涵具有适当的逻辑意义。

我只看到研究人员使用因果网络来表示因果关系,但我想知道为什么这在本体中是不可能的。

提前致谢,

4

1 回答 1

2

如果您只想表示而不是推理您编写的句子或公式,那么您只需要找到一个encoding。您可以解析回原始句子的任何编码都可以使用。例如,这里有一个建议。

考虑你的两个例子:

A and B cause C
A or B cause C

在这两种情况下,您都可以将句子分成 3 个部分:

something  causes  something

这是三连!让我们为谓词“原因”制作一个 IRI:http://example.com/causes,缩写ex:causes。右侧的第二个“东西”是示例中的 C。让我们用 来识别它ex:C。剩下的部分,左边的第一个“东西”更复杂,因为我们需要编码它是一个复合结构。在第一种情况下,它是具有组件 A 和 B 的连词。这可以编码为具有类型ex:Conjunction(例如)和连接它的两个三元组的空白节点ex:Aex:B(例如)。然后,在 Turtle 语法中,我们可以:

[
    a  ex:Conjunction;
    ex:component  ex:A, ex:B
]  ex:causes  ex:C .

或者:

[
    a  ex:Disjunction;
    ex:component  ex:A, ex:B
]  ex:causes  ex:C .

如果您需要更复杂的东西,例如:

(A and B) or (C and D and E) causes (F or (G and H))

你可以写:

[
    a  ex:Disjunction;
    ex:component  [
        a  ex:Conjunction;
        ex:component  ex:A, ex:B
    ], [
        a  ex:Conjunction;
        ex:component  ex:C, ex:D, ex:E
    ]
]  ex:causes  [
    a  ex:Disjunction;
    ex:component  ex:F, [
        a  ex:Conjunction;
        ex:component  ex:G, ex:H
    ]
] .

等等。没有办法在 RDF 或 OWL 的语义中表达因果关系。因此,如果您想做出有趣的推论,则必须对其进行解析并将其转换为因果关系的逻辑。从这个意义上说,RDF 表示并不比 XML 或 JSON 编码更“语义化”。与 XML 或 JSON 编码的唯一(重要)区别是您对所有内容都使用 IRI,这允许您以分布式、模块化和超媒体的方式将更多信息正式附加到每个组件。

于 2019-09-27T05:32:32.560 回答