在 dbpedia 上列出个人的属性和值



如何列出任何给定 DBpedia 类的属性及其值?我是新手,并且已经查看了其他几个问题,但我还没有找到我正在寻找的内容。

试图做的是为我从文本挖掘中获得的对话主题提供一些相关的附加信息。例如,假设某个社区的对话主题是iPhone。我想用这个词在DBpedia页面上查询这个词,iPhone,以获得如下输出:

Type: Smartphone
Operating System: IOS 
Manufacturer: Foxconn

编辑:

使用 AKSW 的查询,我可以打印 p(属性?)和 o(对象?),尽管我仍然没有得到我想要的输出。而不是得到类似的东西:

weight: 133.0

我得到

http://dbpedia.org/property/weight:133.0

有没有办法只获取属性的名称而不是 DBpedia 链接?

我的代码

没有"具有"带有值的属性。实例(资源或个人)确实通过属性与某个值有关系,该值可以是个人本身或文字(或某个匿名实例,也称为空白节点)。实例属于一个类,例如柏林属于类城市

你想要的是获取 DBpedia 中给定资源的所有传出值:

SELECT * WHERE { <http://dbpedia.org/resource/IPhone> ?p ?o }

或者,您可以使用SPARQL DESCRIBE,它以RDF图的形式返回数据,或者一组RDF三元组:

DESCRIBE <http://dbpedia.org/resource/IPhone>

这也可能返回传入信息,因为 W3C 建议中并未真正指定必须返回的内容。

如 AKSW 所述,属性通常链接到其他类而不是值。如果你想要所有属性及其值,包括其他类,下面会按语言给你标签和过滤器(把你需要的语言代码放在放"en"的地方)。

SELECT DISTINCT ?label ?o
WHERE {
 <http://dbpedia.org/resource/IPhone> ?p ?o.
 ?p <http://www.w3.org/2000/01/rdf-schema#label> ?label .
FILTER(LANG(?label) = "" || LANGMATCHES(LANG(?label), "en"))
 }

如果您不需要链接到其他类的任何属性,则只需要数据类型属性,因此此代码可能会有所帮助:

SELECT DISTINCT ?label ?o
WHERE {
 <http://dbpedia.org/resource/IPhone> ?p ?o.
 ?p <http://www.w3.org/2000/01/rdf-schema#label> ?label .
 ?p a owl:DatatypeProperty .
FILTER(LANG(?label) = "" || LANGMATCHES(LANG(?label), "en"))
 }

显然,这为您提供的信息和功能要少得多,但这可能正是您所追求的?

编辑:在回复您的评论时,也可以使用相同的技术获取值的标签:

SELECT DISTINCT ?label ?oLabel
WHERE {
 <http://dbpedia.org/resource/IPhone> ?p ?o.
 ?p <http://www.w3.org/2000/01/rdf-schema#label> ?label .
 ?o <http://www.w3.org/2000/01/rdf-schema#label> ?oLabel
FILTER(LANG(?label) = "" || LANGMATCHES(LANG(?label), "en"))
 }

请注意,http://www.w3.org/2000/01/rdf-schema#label通常通过定义prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>来缩写为 rdfs:label

所以你也可以做:

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT DISTINCT ?label ?oLabel
WHERE {
 <http://dbpedia.org/resource/IPhone> ?p ?o.
 ?p rdfs:label ?label .
 ?o rdfs:label ?oLabel
FILTER(LANG(?label) = "" || LANGMATCHES(LANG(?label), "en"))
 }

并获得完全相同的结果,但可能更容易阅读。

最新更新