【问题标题】:Extend owl of other ontology扩展其他本体的owl
【发布时间】:2016-02-02 18:48:49
【问题描述】:

我在 Protege 中创建了以下 OWL,当我在 dbpedia.org/sparql 中执行 SPARQL 时,它不返回任何内容。

@prefix : <http://www.wad.nistorandrei.com/ontology.owl#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://www.wad.nistorandrei.com/ontology.owl> a owl:Ontology .
# 
# 
# #################################################################
# #
# #    Object Properties
# #
# #################################################################
# 
# 
# http://www.wad.nistorandrei.com/ontology.owl#type

:type a owl:ObjectProperty ;
    rdfs:isDefinedBy rdf:type ;
    rdfs:label "type" .
# 
# 
# 
# #################################################################
# #
# #    Classes
# #
# #################################################################
# 
# 
# http://www.wad.nistorandrei.com/ontology.owl#Church

:Church a owl:Class ;
    rdfs:subClassOf :Place .
# 
# http://www.wad.nistorandrei.com/ontology.owl#Place

:Place a owl:Class .
# 
# Generated by the OWL API (version 4.1.3.20151118-2017) https://github.com/owlcs/owlapi

这是我要执行的查询

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
            PREFIX dbo: <http://dbpedia.org/ontology/>
            PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
            PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
            PREFIX dcterms: <http://purl.org/dc/terms/>
            PREFIX ontology: <http://wad.nistorandrei.com/ontology.owl>

            SELECT DISTINCT * WHERE {
                            ?s a dbo:Place;
                            geo:lat ?lat;
                            geo:long ?lng;
                            ontology:type ?type;
                            rdfs:label ?label;
                            dcterms:subject ?sub;
                            dbo:abstract ?description;
                            dbo:thumbnail ?thumbnail .

                        FILTER( lang(?label) = "en" )
                        FILTER( lang(?description) = "en" ) . FILTER ( ( ?lng > 27.577898 && ?lng < 27.597898 && ?lat > 47.144996 && ?lat < 47.164996 ) ) }
        ORDER BY ?s

如果你改变“ontology:type ?type;”到 "rdf:type ?type" 它将返回我需要的信息。

我想要实现的(如果我做错了)是将更多类型映射到一种类型。例如 ontology:Church 到 **dbo:ReligiousBuilding 或其他与教堂相关的 **。

重要的是让使用 ontology:type 的查询起作用。

谁能给我一个提示?

谢谢。

【问题讨论】:

  • 如果想法是基于 DBpedia 中的数据创建 RDF 数据,您可能希望使用 construct 查询来创建相应的三元组。有一个类似的问题可能会有所帮助,Is there a way to convert the data format of an RDF vocabulary to SKOS
  • You commented on my answer,“谢谢你的回复。有没有办法合并2个本体并返回需要的信息?”目前还不清楚“需要的信息”是什么是”。你能举一个你想要得到的结果的例子吗?除此之外,我们只是猜测您要做什么。
  • 如果你改变了查询“ontology:type ?type;”到“rdf:类型?类型;”并在dbpedia/sparql 中执行查询,您将看到结果。
  • 但是为什么不直接运行那个查询呢?该查询正在 DBpedia 数据中查找三元组。 DBpedia 有a rdf:type b 形式的三元组,但没有a yourontology:type b 形式的任何一种。你不能做你想做的事。
  • 明白了,谢谢你的帮助。

标签: sparql semantic-web owl dbpedia


【解决方案1】:

问题

这里有几个问题。

错误的前缀

第一个是你正在使用

PREFIX ontology: <http://wad.nistorandrei.com/ontology.owl>
#-- ...
   ontology:type ?type

表示ontology:type代表

        http://wad.nistorandrei.com/ontology.owltype(没有#

而您在本体中声明的属性是

        http://www.wad.nistorandrei.com/ontology.owl#type(带有#

所以您实际上使用的是不同的 IRI。您应该将前缀声明为:

PREFIX ontology: <http://wad.nistorandrei.com/ontology.owl#>

DBpedia 不知道你的本体

也就是说,即使你解决了这个问题,你仍然不会得到任何结果。该查询不返回任何内容,因为 DBpedia 没有来自您的本体的任何数据。声明前缀只是意味着您可以以更短的方式编写某些 URI。这并不意味着 DBpedia 以某种方式加载了您的本体或使用这些 IRI 拥有任何数据。

检查语言

这可能不会阻止您的查询,但请注意,您通常应该使用 langMatches 来比较语言标签,而不是 =lang强>。例如,您应该使用类似

filter langMatches(lang(?var), "en")

这将正确处理区域变体。例如,如果 ?var 绑定到 "colour"@en-gb,它仍然会匹配。

【讨论】:

  • 感谢您的回复。有没有办法合并 2 个本体并返回所需的信息?
  • 你想合并什么?你知道 DBpedia 数据集有多大吗?合并意味着在本地设置您自己的三重存储,然后将 DBpedia 和您的本体加载到其中。但即便如此,没有任何资源包含使用您的词汇的数据。
猜你喜欢
  • 2013-05-12
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
相关资源
最近更新 更多