如何确定谓词“方向”?

问题描述 投票:0回答:2

也许这是直觉并伴随着经验,但这是我在设计 OWL 本体时出现的;如何确定两个实体之间什么是客体,什么是主体?

通过一个具体示例来阐明:假设您有两个用户,您希望通过彼此“关注”的机制将两个用户链接在一起(假设Bob 关注 Alice)。

您(通常)是否应该对您的系统进行建模,以便:

(x:Bob) - x:跟随 → (x:Alice)

(x:Alice) - x:is_followed_by → (x:Bob)

(x是随机本体名称)

我尝试寻找一个会议或类似的东西,但我找不到。

rdf graph-databases owl graphdb
2个回答
4
投票

从语义的角度来看,这没有什么区别,所以你可以选择其中一个,或者,正如 @Ignazio pointet 指出的那样,两者都可以。然而,可能有务实的理由选择一个方向而不是另一个方向。例如:典型的个人资料文档会列出关注者或被关注者吗?在许多序列化中,同一类型的多个前向属性可以以更具可读性和更紧凑的方式表达。此外,许多 SPARQL 端点仅使用前向属性回答 DESCRIBE 查询,因此请问问自己,关系对于哪一端更重要。在解释你是什么时提到你是一个人,还是在解释人性是什么时,提到你是一个人更重要?根据答案,您可以选择 x:type of x:typeOf。


0
投票

在 RDF 中,属性通常具有逆属性,从 RDF 的角度来看,它们在技术上应该是等价的,但从概念上讲,一个属性可能比另一个更相关。

您可能会发现将其放在头上并将其可视化为通过输入/输出端口连接的节点很有帮助。当以这种信号处理链的方式思考时,距离链的末端越近,您就越重要,因此在两个节点之间,一个输出到另一个的节点之间,接受输入的节点总是更重要。在 RDF 的情况下,主语是链的末端,信号通过谓词从客体“流”到主语。

在像

M hasAddress N
这样的情况下,直观上很清楚:
N
是定义
M
的众多方面之一,但
M
的最终形状最终对您来说才是最重要的,所以
M
“接收
N
作为输入”。说“N isAddressOf M”通常没有意义。

M [hasAddress I-]-----<-----[-O] N

这里,“O”是输出端口,“I”是输入端口。我们假设输入端口总是在右边,输出在左边,信号从右到左流动,只是为了更容易与 RDF 进行类比。

在您的情况下,信号流是不确定的,因此该属性及其逆都相当于您:

X [follows x-]--------[-x hasFollower] A

您可以优先考虑一个方向而不是另一个方向,但需要超越 RDF 自己的模型,在该模型中它始终是“主题”<-predicate- object” no matter which way you spin it, and talk specifics of your use case.

X是否“馈送”到A中(例如,X正在给予A注意力),或者A是否“馈送”到X中(例如,A正在给予X内容)?两者都可能是正确的,但哪一个对您更重要可能取决于。

例如,如果您正在构建一个典型的社交网络,您不收费但依赖广告收入和网络效应,您可以优先考虑被关注的人(因为他们的行为对您更重要,他们的帖子驱动参与度指标和广告参与、吸引用户群等)。那么 A 将更接近链的末端,而 X 将是 A 的“输入”。然后,您会更喜欢

A hasFollower X
。流程如下所示:

A [hasFollower I-]---<----[-O] X

或者,您可以建立一个以关注者为中心的系统(我们将其称为“订阅者”,以纠正术语选择中的潜在偏见)。在这种情况下,您可以说

X subscribesTo A
,然后 X 优先作为主语:

X [subscribesTo I-]----<---[-O] A

如果您正在构建某种去中心化网络,您可能也更喜欢第二种选择,因为您想知道 X(当前用户)阅读了谁,以便从他们订阅的人那里获取新帖子,而不是相反的典型方法更新被推送到所有关注者时间线。

© www.soinside.com 2019 - 2024. All rights reserved.