sparql - 如何创建一只猫头鹰 :intersectionOf two owl:Classes?

标签 sparql rdf owl rdfs

对于学校练习,我有一个 RDF 文件和一个 OWL 文件。

有一位owl:Class讲师和一位owl:Class Researcher。两者的交集应该是教授。我已将 RDF 和 OWL 文件放在下面。

问题是:当我执行查询时,没有资源属于教授类型,而在 RDF 文件中我们可以看到 Laura 应该是教授。

rdf文件的简化版本:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [
<!ENTITY humans   "http://www.inria.fr/2007/09/11/humans.rdfs"> 
<!ENTITY xsd      "http://www.w3.org/2001/XMLSchema#"> ]> 
<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:xsd ="&xsd;" 
   xmlns     ="&humans;#" 
   xml:base  ="&humans;-instances" > 
    <Person rdf:ID="Laura">
        <name>Laura</name>
    </Person>
    <Lecturer rdf:about="#Laura"/>
    <Researcher rdf:about="#Laura">
      <name>Laura</name>
    </Researcher>
</rdf:RDF>

猫头鹰文件的简化版本:

<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="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.inria.fr/2007/09/11/humans.rdfs"
xmlns:owl="http://www.w3.org/2002/07/owl#">

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

    <owl:Class rdf:ID="Lecturer">
        <subClassOf rdf:resource="#Person"/>
    </owl:Class>

    <owl:Class rdf:ID="Researcher">
        <subClassOf rdf:resource="#Person"/>
    </owl:Class>

    <owl:Class rdf:id="Professor">
        <owl:intersectionOf rdf:parseType="Collection">
            <owl:Class rdf:about="#Lecturer"/>
            <owl:Class rdf:about="#Researcher"/>
        </owl:intersectionOf>
    </owl:Class>

</rdf:RDF>

我使用的查询是默认查询:

 select * where {
   ?x ?p ?y
 }

但我实际上期望做的是以下事情:

select * where {
   ?x a <http://www.inria.fr/2007/09/11/humans.rdfs#Professor>
}

我确实看过这个答案:Why do we need to use rdf:parseType="Collection" with owl:intersectionOf?但我不明白应该以何种方式使用它来解决我的具体问题。

希望有人能帮忙。顺便说一下,这是我在这里发表的第一篇文章,所以如果有什么遗漏请告诉我。

最佳答案

转述自comments通过@stanislav-kralin :

使用正确的 rdf:ID 大写(而不是 rdf:id),并在将 RDF 加载到 GraphDB 时启用“OWL-Max”推理。

关于sparql - 如何创建一只猫头鹰 :intersectionOf two owl:Classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46316549/

相关文章:

sparql - 使用包含 owl :sameAs triples 的 SPARQL 本体进行查询时避免计数爆炸

sparql - 为什么 TripleStore 不像 Property-Graph Store 那样实现为 Native Graph Store?

sparql - 删除除最早事件时间之外的所有关于事件时间的三元组

java - 大型数据集的三重存储

rdf - 猫头鹰有芝麻之类的东西吗

rdf - 如何返回单个foaf :name?

rdf - Fuseki 索引 (Lucene) 文本搜索不返回任何结果

rdf - SHACL 相当于 JSON 模式 "uniqueItems"

java - 用 Jena 加载 owl 文件

semantic-web - 猫头鹰的含义 :hasValue?