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 也出现在其他声明中,这使您看到的答案成倍增加。它类似于跨表联接,其中联接值匹配所涉及的一个表中的多行。
我在 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 也出现在其他声明中,这使您看到的答案成倍增加。它类似于跨表联接,其中联接值匹配所涉及的一个表中的多行。