0

我有一些层次结构,我需要用 owl 语法编写它们。所有对象都是类,这里没有个体。

每个层次结构中的类之间的关系是相同的。例如,“相关”是所有类之间的一个层次结构中的关系。

我应该如何定义这些关系?我知道对象属性,但我需要subClassof 树中所有类之间的关系(protege)。

是否可以在 owl 语法中定义这样的关系,我应该如何定义它?

我做到了,但是当我验证我的文件时出现错误。

<?xml version="1.0"?>
<rdf:RDF
    xmlns="http://example.org/1#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xml:base="http://example.org/1">
  <owl:Ontology rdf:about="">
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Created with TopBraid Composer</owl:versionInfo>
  </owl:Ontology>
  <owl:Class rdf:ID="a">
    <haspart>
      <owl:Class rdf:ID="b"/>
    </haspart>
  </owl:Class>
  <rdf:Property rdf:ID="haspart">
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  </rdf:Property>
</rdf:RDF>

这些是错误

无类型对象属性:http ://example.org/1#haspart 无类型类:http ://www.w3.org/2000/01/rdf-schema#Class

4

1 回答 1

4

问题在于您对hasPart关系的定义。要摆脱您提到的两个错误,您首先应该将其定义为 anowl:ObjectProperty而不是 an rdf:Property,其次,域和范围应该指向http://www.w3.org/2002/07/owl#Class,而不是http://www.w3.org/2000/01/rdf-schema#Class

但请注意评论中的建议:不要手动编写 RDF/XML 语法。这是学习如何使用 OWL 的最糟糕的方法。

FWIW,这是您的本体(带有更正)在 Turtle 中的样子:

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

[] a owl:Ontology ;
   owl:versionInfo "Created with TopBraid Composer"^^xsd:string .

:a a owl:Class ;
   :hasPart :b .
:b a owl:Class .

:hasPart a owl:ObjectProperty ;
         rdfs:domain owl:Class ;
         rdfs:range owl:Class .
于 2012-10-28T04:39:09.273 回答