2017-05-03 106 views
1

我想使用维基百科数据创建名称实体识别器,我需要获取单词的所有超类以查看哪个类别(地点,人员,组织或无)是。我上网习惯了很多,发现像一些网页:在SPARQL中查找超类实体

,当我执行查询结果“没有符合条件的记录发现,”即使在页面中提到的字和尝试其他的命名空间。 和:

这是非常相似,我的工作,但我得到的结果太“没有找到符合条件的记录”。

我认为这些链接中提到的查询在逻辑上是正确的,但我不知道为什么它们对我没有任何结果。我也试图通过在这些网站上提到的例子来学习SPARQL:

,我没有找到查找单词的超类的任何信息。

有,我没有得到结果代码的一些例子:

PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
PREFIX ns:<http://dbpedia.org/> 

SELECT ?subClass ?label WHERE { 
    ?subClass rdfs:subClassOf ns:Albert . 
    ?subClass rdfs:label ?label . } 

或:

SELECT * WHERE { 
    dbpedia:Albert a ?c1 ; a ?c2 . 
    ?c1 rdfs:subClassOf ?c2 . 
} 

如果你回答我的问题我真的很感激。在先进

+0

你会介意附上确切的查询,你没有得到任何结果吗? –

+0

肯定@msalvadores我加了一些例子。 –

回答

0

也许,你正在寻找的是这样的查询:

SELECT DISTINCT ?c WHERE { 
    ?Q wdt:P31/wdt:P279? ?c . 
    ?Q rdfs:label "Tom Hanks"@en 
} 

维基数据(分别wdt:P31wdt:P279)使用它自己的断言,而不是rdf:typerdfs:subClassOf

+0

谢谢@Stanislav。 –

0
  1. 感谢谁是 “伟业”?您只能查询DBpedia中存在的数据。没有资源http://dbpedia.org/resource/Albert

  2. 你的第一个查询使用了错误的命名空间,至少我从来没有见过http://dbedia.org的命名空间,资源,它通常是http://dbpedia.org/resource/

  3. 你的第一个查询使用rdfs:subClassOf断言错误的情况下, “阿尔伯特”应该是一种资源。表示资源“:x”属于类:C由RDF三元组:x a :C .完成。并且类别:C具有超类:D在RDF中由:C rdfs:subClassOf :D .表示。

  4. 你的第二个查询再次使用一些旧的命名空间前缀dbpedia:,现在被称为dbr:和不正是代表了命名空间http://dbpedia.org/resource/。但正如我在第一点中提到的,“Albert”没有资源。

  5. 什么是“一个词的超类”?为了澄清,资源属于一个类,一个类可以有超类。

如果你想让所有的类包括一个资源所属的超类,你可以使用例如:对于“汤姆·汉克斯”

PREFIX dbr: <http://dbpedia.org/resource/> 
SELECT DISTINCT ?c WHERE { 
    dbr:Tom_Hanks a/rdfs:subClassOf* ?c . 
} 
+0

非常感谢@AKSW为您的答案,是“Albert”不存在。我只是想举个例子。我从DBpedia查询服务的查询中获得结果,但它不适用于wikidata查询服务。我想让它在wikidata上工作的原因是它可以通过wd和wdt前缀获取项目id。我没有在dbpedia查询服务中找到这样的功能。 –

0

所以subClassOf谓语只适用于类的东西一般不会实例。您需要通过rdf:type与班级联系。

SELECT * WHERE { 
    <http://dbpedia.org/resource/Albert_Einstein> a ?c1 ; a ?c2 . 
    ?c1 rdfs:subClassOf ?c2 . 
} 

我不确定可以从Albert获得什么类型的实体,它可能需要消歧。我的示例查询使用Albert Einstein作为DBPEDIA资源。

请记住,根据您感兴趣的抽象级别,您可能会多次跳到根类。这第二个查询上升了两个级别。

SELECT DISTINCT ?c3 WHERE { 
    <http://dbpedia.org/resource/Albert_Einstein> a ?c1 ; a ?c2 . 
    ?c1 rdfs:subClassOf ?c2 . 
    ?c2 rdfs:subClassOf ?c3 . 
} 
+0

谢谢@msalvadores您的有用答案。你的查询在DBpedia查询服务上工作,但我需要它在wikidata查询服务上工作,这是行不通的。 –