我有一个基于web的本体,我想用SPARQL进行查询。我使用的是JavaScript,所以我用comica设置了一个查询引擎,并让它工作:select * where {?s ?p ?o}
查询确实返回了我期望它返回的内容。但是,我在解决本体的前缀时遇到了问题。这似乎行不通。下面的查询返回一个空数组:
PREFIX lab2: <http://kalenav.github.io/ontology.rdf>
SELECT ?firearm
WHERE {
?firearm rdf:type/rdfs:subClassOf* lab2:Firearm .
}
而下面的查询返回预期的个体数组:
SELECT ?firearm
WHERE {
?firearmClass rdfs:label "Firearm"@en .
?firearm rdf:type/rdfs:subClassOf* ?firearmClass .
}
我尝试传递以下内容作为前缀的链接:
- https://kalenav.github.io/ontology.rdf
- https://kalenav.github.io/ontology
- https://kalenav.github.io/ontology.rdf
- https://kalenav.github.io/ontology 本地本体的绝对路径
- 本地本体的相对路径(产生错误)
- http://www.semanticweb.org/konst/ontologies/2023/1/lab2
- http://www.semanticweb.org/konst/ontologies/2023/1/lab2
所有这些(相对路径除外)产生一个空数组,这使我相信前缀没有被正确解析。
UninformedUser在评论中回答。问题是,由于某种原因,类IRIs被分配了OWLClass
和一些哈希字符串而不是它们的标签,这使我无法通过SPARQL中的lab2:{label}
访问所需的类。