我想从属于一个类并且具有给定注释的本体中检索个人,对象属性和数据属性。
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#>
PREFIX wel: <http://www.semanticweb.org/dell/ontologies/2014/2/untitled-ontology-11#>
SELECT *
WHERE {?s a wel:Sentence1 }
使用上面的代码,我可以获得属于class的所有个体,对象属性和数据属性wel:Sentence1
。但我的目标是获取属于类wel:Sentence1
并具有批注的个人,对象属性和数据属性
wel:belongs_to_story="SnowWhiteAndTheSevenDwarfs"
我按照注解过滤器-SPARQL中给出的方法进行操作,但未得到任何答案。这是我的查询。
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#>
PREFIX wel: <http://www.semanticweb.org/dell/ontologies/2014/2/untitled-ontology-11#>
SELECT *
WHERE {
?s wel:belongs_to_story ?label .
FILTER(CONTAINS(?label, "SnowWhiteAndTheSevenDwarfs"))
}
包含该belongs_to_story
属性的数据的一部分是SnowWhite个人的描述:
<!-- http://www.semanticweb.org/dell/ontologies/2014/2/untitled-ontology-11#SnowWhite -->
<NamedIndividual rdf:about="&untitled-ontology-11;SnowWhite">
<rdf:type rdf:resource="&untitled-ontology-11;Heroien"/>
<untitled-ontology-11:appearance>beatiful</untitled-ontology-11:appearance>
<untitled-ontology-11:quality>kind</untitled-ontology-11:quality>
<untitled-ontology-11:appearance>loving</untitled-ontology-11:appearance>
<untitled-ontology-11:appearance>fairest</untitled-ontology-11:appearance>
<untitled-ontology-11:ate rdf:resource="&untitled-ontology-11;Apple"/>
<untitled-ontology-11:loves rdf:resource="&untitled-ontology-11;Prince"/>
<untitled-ontology-11:belongs_to_story rdf:resource="&untitled-ontology-11;SnowWhiteAndTheSevenDwarfs"/>
<untitled-ontology-11:heroienOf rdf:resource="&untitled-ontology-11;SnowWhiteAndTheSevenDwarfs"/>
<untitled-ontology-11:livedWith rdf:resource="&untitled-ontology-11;StepMother"/>
<untitled-ontology-11:sleptOn rdf:resource="&untitled-ontology-11;bed"/>
<untitled-ontology-11:saw rdf:resource="&untitled-ontology-11;beds"/>
<untitled-ontology-11:livedIn rdf:resource="&untitled-ontology-11;castle"/>
<untitled-ontology-11:saw rdf:resource="&untitled-ontology-11;chairs"/>
<untitled-ontology-11:saw rdf:resource="&untitled-ontology-11;cottage"/>
<untitled-ontology-11:wentIn rdf:resource="&untitled-ontology-11;cottage"/>
<untitled-ontology-11:saw rdf:resource="&untitled-ontology-11;cups"/>
<untitled-ontology-11:fellOn rdf:resource="&untitled-ontology-11;dead"/>
<untitled-ontology-11:fellOn rdf:resource="&untitled-ontology-11;ground"/>
<untitled-ontology-11:combed rdf:resource="&untitled-ontology-11;hair"/>
<untitled-ontology-11:ranInto rdf:resource="&untitled-ontology-11;jungle"/>
<untitled-ontology-11:felt rdf:resource="&untitled-ontology-11;tired"/>
</NamedIndividual>
另一个是带有注释的公理:
<Axiom>
<untitled-ontology-11:seq rdf:resource="&untitled-ontology-11;Sentence2"/>
<annotatedSource rdf:resource="&untitled-ontology-11;SnowWhite"/>
<untitled-ontology-11:belongs_to_story rdf:resource="&untitled-ontology-11;SnowWhiteAndTheSevenDwarfs"/>
<annotatedTarget rdf:resource="&untitled-ontology-11;StepMother"/>
<annotatedProperty rdf:resource="&untitled-ontology-11;livedWith"/>
</Axiom>
我想连接这两个查询。请帮忙。
您的用语表明可能存在一些概念上的误解
SELECT * WHERE {?s a wel:Sentence1 }
使用上面的代码,我可以获得属于class的所有个体,对象属性和数据属性
wel:Sentence1
。
如果您在OWL中工作,并且wel:Sentence
是OWL类,那么?s a wel:Sentence1
个人形式中应该是形式的三倍的唯一事物。只有个人属于OWL类别;对象属性和数据属性不属于OWL类,因此根本不应该包含任何wel:Sentence1
要检索的对象属性或数据属性。
无论如何,a
这只是财产的简写rdf:type
。听起来您正在尝试检索以字符串"SnowWhiteAndTheSevenDwarfs"
作为属性值的个人wel:belongs_to_story
,在这种情况下,您应该可以使用查询
#-- ...prefixes...
select * where {
?s wel:belongs_to_story "SnowWhiteAndTheSevenDwarfs"
}
但是,您的数据实际上看起来像这样(通过您提供的链接):
<!-- http://www.semanticweb.org/dell/ontologies/2014/2/untitled-ontology-11#SnowWhite -->
<NamedIndividual rdf:about="&untitled-ontology-11;SnowWhite">
<rdf:type rdf:resource="&untitled-ontology-11;Heroien"/>
<!-- … -->
<untitled-ontology-11:belongs_to_story rdf:resource="&untitled-ontology-11;SnowWhiteAndTheSevenDwarfs"/>
<!-- … -->
</NamedIndividual>
该belongs_to_story
属性的值不是字符串。是另一种资源,由IRI标识为SnowWhiteAndTheSevenDwarfs
。如果您使用更具可读性的Turtle序列化,那么实际上实际上更清楚一点,此时您的数据将是:
wel:SnowWhite a wel:Heroien , owl:NamedIndividual ;
# …
wel:belongs_to_story wel:SnowWhiteAndTheSevenDwarfs ;
# …
wel:saw wel:beds , wel:cups , wel:cottage , wel:chairs ;
wel:sleptOn wel:bed ;
wel:wentIn wel:cottage .
Turtle序列化实际上与SPARQL语法非常相似。您的查询需要满足以下条件(结果由Jena的命令行工具生成):
prefix wel: <http://www.semanticweb.org/dell/ontologies/2014/2/untitled-ontology-11#>
select * where {
?s wel:belongs_to_story wel:SnowWhiteAndTheSevenDwarfs
}
------------------
| s |
==================
| _:b0 |
| wel:castle |
| _:b1 |
| wel:SnowWhite |
| wel:StepMother |
------------------
空白节点(由_:b0
和表示的_:b1
是您所标注的公理:
[ a owl:Axiom ;
wel:belongs_to_story
wel:SnowWhiteAndTheSevenDwarfs ;
wel:seq wel:Sentence1 ;
owl:annotatedProperty wel:livedIn ;
owl:annotatedSource wel:SnowWhite ;
owl:annotatedTarget wel:castle
] .
[ a owl:Axiom ;
wel:belongs_to_story
wel:SnowWhiteAndTheSevenDwarfs ;
wel:seq wel:Sentence2 ;
owl:annotatedProperty wel:livedWith ;
owl:annotatedSource wel:SnowWhite ;
owl:annotatedTarget wel:StepMother
] .
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句