Ontology 中 Punned Entities 的 SPARQL 查询答案

SPARQL query answers for Punned Entities in Ontology

我在 Protege 中构建了一个小的 ontology 来测试使用 SPARQL 查询的双关语。 Ontology 是:

<?xml version="1.0"?>
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
     xml:base="http://www.semanticweb.org/usr/ontologies/2022/2/untitled-ontology-88"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:xml="http://www.w3.org/XML/1998/namespace"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     ontologyIRI="http://www.semanticweb.org/usr/ontologies/2022/2/untitled-ontology-88">
    <Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
    <Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
    <Prefix name="xml" IRI="http://www.w3.org/XML/1998/namespace"/>
    <Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/>
    <Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/>
    <Declaration>
        <Class IRI="#B"/>
    </Declaration>
    <Declaration>
        <Class IRI="#CL"/>
    </Declaration>
    <Declaration>
        <Class IRI="#E"/>
    </Declaration>
    <Declaration>
        <Class IRI="#ES"/>
    </Declaration>
    <Declaration>
        <Class IRI="#GE"/>
    </Declaration>
    <Declaration>
        <Class IRI="#RLS"/>
    </Declaration>
    <Declaration>
        <ObjectProperty IRI="#Lives_in"/>
    </Declaration>
    <Declaration>
        <DataProperty IRI="#hasAge"/>
    </Declaration>
    <Declaration>
        <NamedIndividual IRI="#CPZ"/>
    </Declaration>
    <Declaration>
        <NamedIndividual IRI="#ES"/>
    </Declaration>
    <Declaration>
        <NamedIndividual IRI="#GE"/>
    </Declaration>
    <Declaration>
        <NamedIndividual IRI="#Harry"/>
    </Declaration>
    <SubClassOf>
        <Class IRI="#E"/>
        <Class IRI="#B"/>
    </SubClassOf>
    <SubClassOf>
        <Class IRI="#ES"/>
        <Class IRI="#RLS"/>
    </SubClassOf>
    <SubClassOf>
        <Class IRI="#GE"/>
        <Class IRI="#E"/>
    </SubClassOf>
    <ClassAssertion>
        <Class IRI="#ES"/>
        <NamedIndividual IRI="#GE"/>
    </ClassAssertion>
    <ClassAssertion>
        <Class IRI="#GE"/>
        <NamedIndividual IRI="#Harry"/>
    </ClassAssertion>
    <ObjectPropertyAssertion>
        <ObjectProperty IRI="#Lives_in"/>
        <NamedIndividual IRI="#Harry"/>
        <NamedIndividual IRI="#CPZ"/>
    </ObjectPropertyAssertion>
</Ontology>



<!-- Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi -->

我用来测试双关语实体 (GE) 的 SPARQL 查询是:

SELECT ?y ?x ?z
    WHERE { 
        ?x a ?y.    
        ?z a ?x.    
        ?z :Lives_in :CPZ.  
}

我得到的输出是:

我的问题是为什么我在输出中得到 6 个答案而不是第一个答案?以及 ?y(owl:Class 和 owl:NamedIndividual) 的其他 5 个绑定是什么意思?

谢谢!

从你的断言来看,Harry 是一个 GE。 GE既是class又是个人;所以 GE 也出现在其他声明中,这使您看到的答案成倍增加。它类似于跨表联接,其中联接值匹配所涉及的一个表中的多行。