2

考虑在 2 个资源之间建立关系/谓词:<#A> <#isRelatedTo> <#B>。

我想向 <#isRelatedTo> 关系添加属性:关系强度、描述等。

所以我可以这样建模:

  1. 定义谓词的实例并向这些实例添加属性,类似于此处描述的内容
  2. 使用四元存储,因此我有一个唯一的三元组 ID 并向三元组添加属性(问题是由于数据库限制,我必须使用三元组存储)
  3. 定义具有 <#From>、<#To>、<#RelStrength>、<#Description> 属性的关系类 (isRelatedToClass)。创建代表关系并连接 A 和 B 的该类的实例。

例如:

<#isRelatedToInstance1> <rdf:type> <#isRelatedToClass>  
<#isRelatedToInstance1> <#isRelated/From> <#A>  
<#isRelatedToInstance1> <#isRelated/To>   <#B>  
<#isRelatedToInstance1> <#isRelated/RelStrength> "2"  
<#isRelatedToInstance1> <#isRelated/Description> "some desc"

4. 其他实现?

实际的例子是:
- 通过交通系统连接城市/国家,每个交通属性都有自己的属性
- 连接我想说“X 知道(自 1955 年以来)Y”或“X 级(5 星)ZProduct”的人

4

1 回答 1

1

除了评论中提到的 RDF 具体化之外,您还可以执行以下操作:对于(A,B)关系 wrt 中的每一对isRelatedTo,创建一个isRelatedTo_A_B您指定强度、描述等的子属性。

<#A>  <#isRelatedTo_A_B>  <#B> .
<#isRelatedTo_A_B>  rdfs:subPropertyOf  <#isRelatedTo>;
    <#relStrength>  2;
    <#description>  "A is in relation with B"@en .

您甚至可以使用 OWL 限制isRelatedTo_A_B仅持有 pair (A,B)

<#isRelatedTo_A_B>  rdfs:domain  [
    a  owl:Class;
    owl:oneOf  ( <#A> )
];  rdfs:range  [
    a  owl:Class;
    owl:oneOf  ( <#B> )
] .

稍加注意,它就会成为一个有效的 OWL DL 本体。

于 2013-06-02T08:37:01.463 回答