【发布时间】:2015-08-19 19:40:03
【问题描述】:
我有这样的代码:
enum ElementKind {
BASIC (0),
INTERMEDIATE (1),
COMPLETE (2);
}
class Element {
private ElementKind elementKind;
/* ... */
}
我正在为此代码构建 RDF/XML(本体)表示:
<owl:Class rdf:about="#ElementKind">
// how to define?
</owl:Class>
<owl:Class rdf:about="#Element">
</owl:Class>
表示该枚举的最佳方式是什么?
【问题讨论】:
-
1) 我希望您不是手动构建 RDF/XML 表示;如果你需要手工编写 RDF,使用 N3/Turtle 会容易得多。 2) 如果您使用 owl:Class 之类的东西,那么您可能正在编写 OWL 本体,在这种情况下,OWL 本体编辑器(如 Protege)可能会更有帮助。
-
至于如何做到这一点,这真的取决于你想如何做到这一点。您可以定义一个数据属性,其范围是值的枚举(例如,具有范围 {"Kind1"、"Kind2"、"Kind3"} 的 hasElementKind。或者,您可以使枚举元素成为某个 OWL 类的个体,例如, ElementKind = { Kind1, Kind2, Kind3 }。哪个更有意义取决于你想用它做什么。
-
感谢您的评论,Joshua Taylor。我目前正在使用 Protégé。你能把它改写成 Protégé 的步骤吗?我也在尽量避免使用实例。
-
您有什么特别的原因要避开个人吗?这似乎有点适得其反?毕竟,您在编程语言中使用枚举,而不是使用整数等“原始数据”值。使用枚举值提供一些有意义的抽象不是重点之一。如果您不想使用抽象,那么您可能不应该在代码中使用“ElementType”,对吗?如果“ElementType”值实际上对应于整数 (0,1,2),那么您可以在任何地方都使用整数,不是吗?