0

我想mybrandofmercedes在 OWL 中设置如下所示的类限制,这在语法上是否正确?我应该有如下所示的方括号吗?

mynamespace: mybrandofmercedes rdf:type owl:Class;

mynamespace: mybrandofmercedes
[

rdf:type owl:Restriction;

owl:onProperty mynamespace:hasOwner;

owl:hasValue mynamespace: Anders

]
4

1 回答 1

6

不。

但是有一些不同的事情可能会成为问题。首先,OWL 是一种抽象语言。它可以用几种不同的形式编写,其中一些是具体的(例如,OWL/XML 和 OWL 功能语法),而一些是抽象的。OWL 本体可以序列化为 RDF。RDF 和 OWL 一样,也是一种抽象语言,但有几种序列化,或者说 Turtle 只是其中的一种。所以,有几个问题你可以问:

  1. 这是合法的乌龟吗?
  2. 如果这是合法的 Turtle,那么 RDF 是否代表 OWL 本体的合法 RDF 序列化。

首先,这不是合法的海龟。我假设mynamespace: mybrandofmercedes你的意思不是 ,而是mynamespace:mybrandofmercedes。然后您的文本将如下(重新格式化,并带有一些前缀声明和最后一个句点):

@prefix mynamespace: <urn:ex:>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.

mynamespace:mybrandofmercedes
  rdf:type owl:Class ;
  mynamespace:mybrandofmercedes [ rdf:type owl:Restriction;
                                  owl:onProperty mynamespace:hasOwner;
                                  owl:hasValue mynamespace:Anders ] .

现在,这是合法的 Turtle,但它可能不是您想要的三元组。也就是说,它不是 OWL 本体的 RDF 序列化。如果我们将其序列化为 N-Triples,您可以看到它包含的五个三元组。我非常不希望您想<urn:ex:mybrandofmercedes>同时用作主语和谓语。无论如何,它不是一个 OWL 本体。

<urn:ex:mybrandofmercedes> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
<urn:ex:mybrandofmercedes> <urn:ex:mybrandofmercedes> _:B .
_:B <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
_:B <http://www.w3.org/2002/07/owl#onProperty> <urn:ex:hasOwner> .
_:B <http://www.w3.org/2002/07/owl#hasValue> <urn:ex:Anders> .

如果您尝试生成 OWL,我建议您从 OWL 编辑工具(例如,Protégé)或一种更易于编写的 OWL 语法开始,然后从中获取 RDF。在快速启动 Protégé 后,我想出了一个本体,在 Turtle 中序列化,如下所示:

@prefix :      <http://example.org/cars#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

<http://example.org/cars>
        a       owl:Ontology .

:Car    a       owl:Class .
:Person  a      owl:Class .
:hasOwner  a    owl:ObjectProperty .

:Anders  a      owl:NamedIndividual , :Person .

:CarOwnedByAnders  a     owl:Class ;
        rdfs:subClassOf  :Car ;
        rdfs:subClassOf  [ a               owl:Restriction ;
                           owl:hasValue    :Anders ;
                           owl:onProperty  :hasOwner
                         ] .

您特别询问了括号的位置。这不是您的代码片段的真正问题,但如果您想了解更多关于它们的信息,您可以查看我对使用 SPARQL 查询 RDF 时方括号“[]”的含义的回答?. 它专门询问 SPARQL 查询中的括号,但语法与 Turtle 共享,因此它也适用于此处。

于 2014-08-25T18:00:04.940 回答