2

我在这里读到*,本体(本质上是 RDF)是数据驱动的,因为可以使用小型本体并将其用于应用程序,然后......将其他概念集成到同一本体中以使其更健壮。

我担心的是某个三元组在未来如何变得更加强大?例如。

School : Class
Properties:
has Name : String
has Area : float
has Type : String // can be** , choices are Specialist, Faith, Free etc.

此时,实例化 School 会给我们...

School X : School
has Name = School X : String
has Area = 20000.00 : float
has Type = Specialist : String                    <<--------------------------

我感兴趣的三元组是

SchoolX  hasType Specialist^^string

如果后来我发现“专家”这个词下面有几个属性,所以我决定创建一个专家:类

Specialist : Class                                <<--------------------------
has Specialization : String // can be**
followsNationalCurriculum : boolean
...and so forth

说,

MusicSpc : Specialist
has Specialization = Music : String
followsNationalCurriculum = true
etc.

我的问题是。

  1. 对于那些使用 hasType=Specialist^^string 的人,您如何实现旧本体中的字符串文字“Specialist”必须连接到新本体中的 Specialist(Cls) 实例?你是在耶拿还是 OWL/RDF 做的?
  2. 关于 (1),我知道在 Java 中重载方法有时会很有用。重载对本体有好处吗?st hasType:字符串,hasType:专家(Cls)?我是否在 OWL/RDF 中声明 URI=namespace#hasType 既是数据类型又是对象属性?

我希望有人能在这方面帮助我。

参考:

4

1 回答 1

2

关于您的第一个问题,有一些方法可以更新您的数据,例如,您可以使用 SPARQL 1.1 更新操作来更新您的数据,在这种特定情况下:

DELETE { ?x :hasType "Specialist"@en }
INSERT { ?x :hasType :Specialist } 
WHERE { ?x :hasType "Specialist"@en } 

至于您的第二个问题:您可以在 RDF(S) 中从这个意义上“重载”属性:任何属性都可以将字符串和单个资源作为值。这样做是否明智则是另一回事,因为有效查询和处理数据将变得更加困难。你可能最好不要重载它 - 也因为在 OWL(至少 OWL DL)中,你不能这样做:属性可以是 DatatypeProperty 或 ObjectProperty,但不能同时是两者。

一般来说:如果您不确定属性是否应该具有字符串值或更复杂的值,请从一开始就选择一个复杂的值。这样一来,您的本体被设计为在未来可扩展,您不必太担心跳过箍来更新。在您的示例案例中,您已经知道您的值集:hasType是一组固定的types,即事物的类。不要将字符串值用于此类构造,而是为这些事物引入实际的类

于 2012-10-23T01:36:46.297 回答