我在这里读到*本体(RDF本质上)是数据驱动的,因为人们可以使用一个小的本体并将其用于应用程序,然后......将其他概念集成到同一本体中以使其更强大稳健。
我关心的是某个三元组 future 如何变得更加强大?例如。
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 这个词下面有几个属性,所以我决定创建一个 Specialist : Class 该怎么办
Specialist : Class <<--------------------------
has Specialization : String // can be**
followsNationalCurriculum : boolean
...and so forth
说,
MusicSpc : Specialist
has Specialization = Music : String
followsNationalCurriculum = true
etc.
我的问题是。
- 对于那些使用 hasType=Specialist^^string 的人,如何实现旧本体中的字符串文字“Specialist”必须连接到新本体中的 Specialist(Cls) 实例?你是在耶拿还是 OWL/RDF 做的?
- 关于 (1),我知道在 Java 中重载方法有时会很有用。重载对本体有好处吗?英石。 hasType:字符串,hasType:专家(Cls)?我是否在 OWL/RDF 中声明 URI=namespace#hasType 既是数据类型又是对象属性?
我希望有人能在这方面帮助我。
引用文献:
最佳答案
关于您的第一个问题,有多种方法可以更新您的数据,例如,您可以使用 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
设置的值是一组固定的类型,即事物的类。不要使用字符串值进行此类构造,而是为这些内容引入实际的类
关于java - 对本体为 "data-driven"s.t 感到困惑更新本体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941765/