如何在 RDF/XML 中表示枚举?

sau*_*edo 3 xml rdf owl

我有这样的代码:

enum ElementKind {
    BASIC (0),
    INTERMEDIATE (1),
    COMPLETE (2);
}

class Element {
    private ElementKind elementKind;

    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我正在为此代码构建 RDF/XML(本体)表示:

enum ElementKind {
    BASIC (0),
    INTERMEDIATE (1),
    COMPLETE (2);
}

class Element {
    private ElementKind elementKind;

    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

表示该枚举的最佳方式是什么?

Wou*_*eek 5

如果您只想向人类读者传达含义,您可以选择以下两个 RDF(S) 选项之一:

\n\n

1.RDFS容器

\n\n

的实例rdfs:Container旨在向人类读者传达其元素构成一个开放集合。您是否正在处理开放集合取决于是否存在第四种选择。对于您的情况,这在概念上相当于以下三元组:

\n\n
\xe3\x80\x88ex:elementKind, rdf:type, rdfs:Container\xe3\x80\x89\n\xe3\x80\x88ex:elementKind, rdf:_1,   ex:basic\xe3\x80\x89\n\xe3\x80\x88ex:elementKind, rdf:_2,   ex:intermediate\xe3\x80\x89\n\xe3\x80\x88ex:elementKind, rdf:_3,   ex:complete\xe3\x80\x89\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您想传达更多人性化的含义,那么您可以选择 RDFS 容器的三个子类之一:

\n\n
    \n
  • 的实例rdf:Alt旨在向人类读者传达容器中的元素可以相互替代。如果一个元素不能(同时)有两种类型,这将适用于您的情况。
  • \n
  • 的实例rdf:Seq\n旨在向人类读者传达\n元素出现的顺序很重要。complete如果\n旨在 'follow-up' intermediate(在某种意义上\n该词)并且intermediate旨在 'follow-up' ,这可能适用于您的情况basic
  • \n
  • 的实例rdf:Bag旨在向人类读者传达\n传达这样的信息:元素出现的顺序并不重要。
  • \n
\n\n

请注意,如果您使用这三个子类之一,则rdfs:Container只需替换上述三元组中的类表示术语即可。

\n\n

2.RDF列表

\n\n

的实例rdfs:List旨在向人类读者传达“元素种类”的集合是封闭的。例如,这意味着不存在可以由其他人稍后添加的第四种“元素种类”。对于您的情况,这在概念上相当于以下三元组:

\n\n
\xe3\x80\x88ex:elementKind, \xe2\x88\x8a, rdf:List\xe3\x80\x89\n\xe3\x80\x88ex:elementKind, rdf:first, ex:basic\xe3\x80\x89\n\xe3\x80\x88ex:elementKind, rdf:rest, _:4\xe3\x80\x89\n\xe3\x80\x88_:4, \xe2\x88\x8a, rdf:List\xe3\x80\x89\n\xe3\x80\x88_:4, rdf:first, ex:intermediate\xe3\x80\x89\n\xe3\x80\x88_:4, rdf:rest, _:5\xe3\x80\x89\n\xe3\x80\x88_:5, \xe2\x88\x8a, rdf:List\xe3\x80\x89\n\xe3\x80\x88_:5, rdf:first, ex:complete\xe3\x80\x89\n\xe3\x80\x88_:5, rdf:rest, rdf:nil\xe3\x80\x89\n
Run Code Online (Sandbox Code Playgroud)\n