【问题标题】:How to query all properties of owl:Thing of dbpedia using SPARQL?如何使用 SPARQL 查询 owl:Thing of dbpedia 的所有属性?
【发布时间】:2017-10-11 09:48:05
【问题描述】:

当我使用以下 SPARQL 查询时,我得到了 DBpedia 类 Country 的所有属性:

select ?range ?domain ?prop ?label
Where{
    ?class rdfs:subClassOf{0,1} ?domain.
    ?prop rdfs:domain ?domain.
    ?prop rdfs:range ?range.
    ?prop rdfs:label ?label.
    FILTER(lang(?label) = 'en')
    FILTER(?class = <http://dbpedia.org/ontology/Country>)
}

当我尝试使用 'Thing' 或 'OWL:Thing' 或 'A Thing' 或任何等效项而不是 Country 来执行此操作时,我得到一个空结果。

我想采用DBpedia的owl:Thing的本体,所以我想检索http://mappings.dbpedia.org/server/ontology/classes/owl%3AThing的所有属性(包括labela和range)。

有谁知道我如何做到这一点?

【问题讨论】:

    标签: sparql owl ontology dbpedia


    【解决方案1】:

    DBpedia 中没有域owl:Thing 的属性:

    select * {
        ?prop rdfs:domain owl:Thing
    }
    

    这样做的原因可能是如果没有给出明确的域,owl:Thing 是平凡的域。如果您从推荐列表中查看特定属性,您也可以检查这一点,例如dbo:abbreviation

    解决方法查询:

    SELECT ?range (owl:Thing as ?domain) ?prop ?label {
     VALUES ?type {owl:DatatypeProperty owl:ObjectProperty}
     ?prop a ?type
     OPTIONAL {?prop rdfs:range ?range }
     ?prop rdfs:label ?label.
     FILTER(langmatches(lang(?label), 'en'))
     FILTER NOT EXISTS {?prop rdfs:domain ?domain}
    }
    

    【讨论】:

    • (针对 OP,而不是回答者:)另外,请注意 owl:Thing 每个 OWL 属性的域。在 OWL 中,“p rdfs:domain C”意味着从语句“p(x,y)”暗示“x rdf:type C”。当 C 为 owl:Thing 时,即为“x rdf:type owl:Thing”,总是为真。这意味着对于 any 属性 p,“p(x,y) 暗示 rdf:type(x,owl:Thing)”为真,所以 owl:Thing 为 a每个属性的域。
    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多