【问题标题】:Using OWl in XML Syntax. First Steps在 XML 语法中使用 OWl。第一步
【发布时间】:2012-11-30 14:12:57
【问题描述】:

我刚开始在大学的一个项目中使用 OWL。 该项目是关于披萨的,这似乎是 RDF 和 OWL 的常见问题。所以我们首先要做的是模拟一个由两种配料组成的比萨饼:西红柿和奶酪。我使用属性madeof 连接它们。这是我尝试验证的最小代码 sn-p:http://www.mygrid.org.uk/OWL/Validator

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="http://example.org/pizzeria#">

    <owl:Ontology rdf:about=""/>  

    <!-- ========================= -->



    <owl:Class rdf:ID="Topping"/>

    <Topping rdf:ID="Cheese"/>
    <Topping rdf:ID="Tomato"/>

     <owl:ObjectProperty rdf:ID="madeOf">
            <rdfs:range rdf:resource="#Topping"/>
            <rdfs:domain rdf:resource="#Pizza"/>
     </owl:ObjectProperty>

     <!-- Pizza -->
     <owl:Class rdf:ID="Pizza">
         <!-- comes with Cheese and Tomato -->
         <rdfs:subClassOf>
                 <owl:Restriction>
                     <owl:onProperty rdf:resource="#madeOf"/>
                     <owl:hasValue rdf:resource="#Tomato"/>
                 </owl:Restriction>
         </rdfs:subClassOf>
         <rdfs:subClassOf>
             <owl:Restriction>
                 <owl:onProperty rdf:resource="#madeOf"/>
                 <owl:hasValue rdf:resource="#Cheese"/>
             </owl:Restriction>
         </rdfs:subClassOf>
     </owl:Class>
 </rdf:RDF>

但是,验证器告诉我:

猫头鹰深度学习
个人价值:限制(a:madeOf value (a:Cheese))
个人价值:restriction(a:madeOf value (a:Tomato))

猫头鹰完整版
无类型类:http://example.org/pizzeria#Topping

这意味着,我猜,Toppings 类没有定义(我想我这样做了……)并且madeof 属性有问题。我想我在这里做错了什么,现在几乎被困住了。

【问题讨论】:

    标签: rdf owl


    【解决方案1】:

    您的 OWL 很好,唯一的问题是 RDF 的 XML 编码。一般来说,如果可以,请避免直接使用 RDF/XML。 Turtle 是一种更紧凑、更易读的语法,并且比 RDF/XML 具有更少的陷阱。

    所以你遇到的问题是,虽然你确实为空前缀定义了扩展:

    xmlns="http://example.org/pizzeria#"
    

    您没有为文档定义基本 URI。主题资源,例如:

    <Topping rdf:ID="Cheese"/>
    

    将被解释为相对于基本 URI,而不是好像它们具有默认的空白前缀。见上文第一段!

    修复方法是定义基本 URI 以及默认前缀:

    <rdf:RDF
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns="http://example.org/pizzeria#"
     xml:base="http://example.org/pizzeria#"
    >
    

    【讨论】:

    • 非常感谢!这有助于进一步了解我在做什么:)。 DL层出现的逻辑错误怎么办?
    • 这只是告诉您hasValue 限制在 OWL Lite 之外,但属于 OWL DL 的一部分。有关详细信息,请参阅here。除非您特别需要针对 OWL Lite(不太可能),否则请将您的验证器设置为 OWL DL。 DL 和 Full 之间的区别更可能是您的问题。
    • 我明白了。只是读一下。非常感谢你。认为我现在可以完成项目的其余部分了 :)
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多