这个乌龟语句在语法上是否正确?

时间:2014-08-25 15:44:00

标签: rdf semantic-web owl turtle-rdf

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

mynamespace: mybrandofmercedes rdf:type owl:Class;

mynamespace: mybrandofmercedes
[

rdf:type owl:Restriction;

owl:onProperty mynamespace:hasOwner;

owl:hasValue mynamespace: Anders

]

1 个答案:

答案 0 :(得分:5)

没有。

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

  1. 这是合法的海龟吗?
  2. 如果这是合法的Turtle,则RDF代表OWL本体的合法RDF序列化。
  3. 首先,这不是合法的海龟。我假设而不是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 ] .
    

    现在,这是合法的海龟,但它可能不是你想要的三胞胎。也就是说,它不是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
                             ] .
    

    您特别询问了括号的位置。这不是您的代码段的真正问题,但如果您想了解更多有关它们的信息,可以查看my answerMeaning of square brackets "[]" when querying RDF with SPARQL?。它特别询问SPARQL查询中的括号,但语法与Turtle共享,所以它也适用于此。