【问题标题】:Get all properties for a DBpedia class获取 DBpedia 类的所有属性
【发布时间】:2011-10-20 02:11:31
【问题描述】:

如何获取特定类的属性列表?考虑类dbpedia-owl:PersonPerson 类的所有实例都有一些以dbpprop: 为前缀的属性。如何获取所有dbpprop: 属性,我们可以为Person 类的所有实例找到这些属性?

【问题讨论】:

    标签: sparql semantic-web dbpedia


    【解决方案1】:

    有效的是:

    select distinct ?property where { 
       ?property <http://www.w3.org/2000/01/rdf-schema#domain> 
                                 <http://dbpedia.org/ontology/Person> . }
    

    在此查询中,您要查询具有dbpedia:Personrdfs:domain 的所有属性。此查询需要模式定义才能工作,有时数据集并不能完全遵循模式。对于那些数据集,您可以尝试其他查询

    select distinct ?property where {
             ?instance a <http://dbpedia.org/ontology/Person> . 
             ?instance ?property ?obj . }
    

    这个查询查看绑定了它的每个属性的每个人的实例。它比第一个要困难得多,并且在 dbpedia 公共实例中你会得到一个超时。因此,如果您想使用公共端点,最好使用第一个。

    【讨论】:

    • 这只会找到那些其域是exactly dbpedia-owl:Person 的属性。但是,由于每个人都是 Person 的每个超类的实例,因此任何“适用于”超类的属性也适用于 Person。您可能应该检索其域为 Person 或其超类的所有属性。参照。 stackoverflow.com/q/22797424/1281433.
    • 这里为什么需要distinct?可能我还没有真正理解这个关键字的作用。
    • 否则您将获得每条语句的所有属性。与 distinct 他们只显示一次。这就像应用 uniq 来列出重复项。
    【解决方案2】:

    要获取所有传递属性,您可以询问此查询

    select distinct ?property where{
    {
      ?property rdfs:domain ?class . 
      dbpedia-owl:Person rdfs:subClassOf+ ?class.
    } UNION {
      ?property rdfs:domain dbpedia-owl:Person.
    }}
    

    “rdfs:subClassOf”中的“+”是一个属性路径表达式 [1],它也获取 Person 的所有上类。 这些属性也对 Person 有效。

    另请注意,不推荐使用 dbprop 命名空间,因为数据是原始数据且未标准化为数据类型。

    [1]http://www.w3.org/TR/2010/WD-sparql11-property-paths-20100126/

    披露:我是一名 DBpedia 开发人员

    【讨论】:

    • 我怎样才能获得独立于类的最合适的查询?例如,我有一个查询“Paris”,如何在值旁边提取其所有属性
    • 类似select * where {dbr:Paris ?p ?o}
    • Jim 我有一个问题,我之前发布过stackoverflow.com/questions/28671935/…。我真的不明白为什么缺少某些属性。我的查询有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多