Rdf 这句乌龟语的语法正确吗?

Rdf 这句乌龟语的语法正确吗?,rdf,semantic-web,owl,turtle-rdf,Rdf,Semantic Web,Owl,Turtle Rdf,我想对下面用OWL编写的mybrandofmercedes类设置一个限制,这在语法上正确吗?我应该有如下所示的方括号吗 mynamespace: mybrandofmercedes rdf:type owl:Class; mynamespace: mybrandofmercedes [ rdf:type owl:Restriction; owl:onProperty mynamespace:hasOwner; owl:hasValue mynamespace: Anders ] 没有

我想对下面用OWL编写的
mybrandofmercedes
类设置一个限制,这在语法上正确吗?我应该有如下所示的方括号吗

mynamespace: mybrandofmercedes rdf:type owl:Class;

mynamespace: mybrandofmercedes
[

rdf:type owl:Restriction;

owl:onProperty mynamespace:hasOwner;

owl:hasValue mynamespace: Anders

]
没有

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

  • 这是合法的海龟吗
  • 如果这是合法的Turtle,那么RDF表示OWL本体的合法RDF序列化
  • 首先,这不是合法的海龟。我将假设,而不是
    mynamespace:mybrandofmercedes
    , 你的意思是
    mynamespace:mybrandofmercedes
    。然后您的文本将是以下内容(重新格式化,并带有一些前缀声明和最后一个句点):

    @前缀mynamespace:。
    @前缀rdf:。
    @前缀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,您可以看到它包含的五个Triples。我非常不希望您想将
    同时用作主语和谓语。无论如何,它不是一个猫头鹰本体

    <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> .
    
    。
    _:B。
    _:B。
    _:B。
    _:B。
    
    如果您试图生成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
                             ] .
    
    @前缀:。
    @前缀owl:。
    @前缀rdf:。
    @前缀xsd:。
    @前缀rdfs:。
    猫头鹰:本体论。
    :汽车猫头鹰:上课。
    :人猫头鹰:班级。
    :hasOwner一个owl:ObjectProperty。
    :Anders一只猫头鹰:名字是个人,:人。
    :CarOwnedByAnders猫头鹰:类;
    rdfs:子类:Car;
    rdfs:子类[a owl:限制;
    猫头鹰:hasValue:Anders;
    owl:onProperty:hasOwner
    ] .
    
    您特别询问了括号的位置。这不是代码片段的真正问题,但是如果您想了解更多关于它们的信息,可以查看。它专门询问SPARQL查询中的方括号,但该语法与Turtle共享,因此它在这里也适用。

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

  • 这是合法的海龟吗
  • 如果这是合法的Turtle,那么RDF表示OWL本体的合法RDF序列化
  • 首先,这不是合法的海龟。我将假设,而不是
    mynamespace:mybrandofmercedes
    , 你的意思是
    mynamespace:mybrandofmercedes
    。然后您的文本将是以下内容(重新格式化,并带有一些前缀声明和最后一个句点):

    @前缀mynamespace:。
    @前缀rdf:。
    @前缀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,您可以看到它包含的五个Triples。我非常不希望您想将
    同时用作主语和谓语。无论如何,它不是一个猫头鹰本体

    <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> .
    
    。
    _:B。
    _:B。
    _:B。
    _:B。
    
    如果您试图生成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
                             ] .
    
    @前缀:。
    @前缀owl:。
    @前缀rdf:。
    @前缀xsd:。
    @前缀rdfs:。
    猫头鹰:本体论。
    :汽车猫头鹰:上课。
    :人猫头鹰:班级。
    :hasOwner一个owl:ObjectProperty。
    :Anders一只猫头鹰:名字是个人,:人。
    :CarOwnedByAnders猫头鹰:类;
    rdfs:子类:Car;
    rdfs:子类[a owl:限制;
    猫头鹰:hasValue:Anders;
    owl:onProperty:hasOwner
    ] .
    
    您特别询问了括号的位置。这不是代码片段的真正问题,但是如果您想了解更多关于它们的信息,可以查看。它特别询问SPARQL查询中的方括号,但语法与Turtle共享,因此它也适用于这里