识别维基百科页面的实体
Identify entity of a Wikipedia page
我的问题与 similar question/comment 相关,不幸的是,该问题从未得到答复。
给定多个维基百科页面的列表,例如:
- https://en.wikipedia.org/wiki/Donald_Trump
- https://en.wikipedia.org/wiki/The_Matrix
- https://en.wikipedia.org/wiki/Tiger
- ...
如何找出这些文章所指的实体类型。即理想情况下我想要更高层次的东西,例如人物、电影、动物等
到目前为止,我最好的猜测是 Wikidata API 使用 SPARQL 向后移动 instance_of
或 subclass
树。然而,这并没有带来有意义的结果。
SELECT ?lemma ?item ?itemLabel ?itemDescription ?instance ?instanceLabel ?subclassLabel WHERE {
VALUES ?lemma {
"Donald Trump"@en
"The Matrix"@en
"Tiger" @en
}
?sitelink schema:about ?item;
schema:isPartOf <https://en.wikipedia.org/>;
schema:name ?lemma.
?item wdt:P31* ?instance.
?item wdt:P279* ?subclass.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en,da,sv".}
}
结果可以在这里看到:https://w.wiki/ZmQ
当然还有一种选择是查看 itemDescription
,但我担心这过于精细,无法从较大的列表中构建有意义的组并在以后计算频率。
有人 hint/idea 关于如何获得更一般的实体类别吗?也许也来自 mediawiki API?
任何输入将不胜感激!
这里有三种可能,side-by-side:
SELECT ?lemma ?item (GROUP_CONCAT(DISTINCT ?instanceLabel; SEPARATOR = " ") AS ?a) (GROUP_CONCAT(DISTINCT ?subclassLabel; SEPARATOR = " ") AS ?b) (GROUP_CONCAT(DISTINCT ?isaLabel; SEPARATOR = " ") AS ?c) WHERE {
VALUES ?lemma {
"Donald Trump"@en
"The Matrix"@en
"Tiger"@en
}
?sitelink schema:about ?item;
schema:isPartOf <https://en.wikipedia.org/>;
schema:name ?lemma.
OPTIONAL { ?item (wdt:P31/(wdt:P279*)) ?instance. }
OPTIONAL { ?item wdt:P279 ?subclass. }
OPTIONAL { ?item wdt:P31 ?isa. }
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en,da,sv".
?instance rdfs:label ?instanceLabel.
?subclass rdfs:label ?subclassLabel.
?isa rdfs:label ?isaLabel.
}
# Here, you could add: FILTER(?instanceLabel in ("mammal"@en, "movie"@en, "musical"@en (and so on...)))
}
GROUP BY ?lemma ?item
直播here.
如果您正在查看“电影”和“哺乳动物”等标签,我。 e.最多几十个,您可以按优先顺序明确列出它们,然后使用出现的第一个。
请注意,您可能 运行 遇到此错误:https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial#wikibase:Label_and_aggregations_bug
我的问题与 similar question/comment 相关,不幸的是,该问题从未得到答复。
给定多个维基百科页面的列表,例如:
- https://en.wikipedia.org/wiki/Donald_Trump
- https://en.wikipedia.org/wiki/The_Matrix
- https://en.wikipedia.org/wiki/Tiger
- ...
如何找出这些文章所指的实体类型。即理想情况下我想要更高层次的东西,例如人物、电影、动物等
到目前为止,我最好的猜测是 Wikidata API 使用 SPARQL 向后移动 instance_of
或 subclass
树。然而,这并没有带来有意义的结果。
SELECT ?lemma ?item ?itemLabel ?itemDescription ?instance ?instanceLabel ?subclassLabel WHERE {
VALUES ?lemma {
"Donald Trump"@en
"The Matrix"@en
"Tiger" @en
}
?sitelink schema:about ?item;
schema:isPartOf <https://en.wikipedia.org/>;
schema:name ?lemma.
?item wdt:P31* ?instance.
?item wdt:P279* ?subclass.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en,da,sv".}
}
结果可以在这里看到:https://w.wiki/ZmQ
当然还有一种选择是查看 itemDescription
,但我担心这过于精细,无法从较大的列表中构建有意义的组并在以后计算频率。
有人 hint/idea 关于如何获得更一般的实体类别吗?也许也来自 mediawiki API?
任何输入将不胜感激!
这里有三种可能,side-by-side:
SELECT ?lemma ?item (GROUP_CONCAT(DISTINCT ?instanceLabel; SEPARATOR = " ") AS ?a) (GROUP_CONCAT(DISTINCT ?subclassLabel; SEPARATOR = " ") AS ?b) (GROUP_CONCAT(DISTINCT ?isaLabel; SEPARATOR = " ") AS ?c) WHERE {
VALUES ?lemma {
"Donald Trump"@en
"The Matrix"@en
"Tiger"@en
}
?sitelink schema:about ?item;
schema:isPartOf <https://en.wikipedia.org/>;
schema:name ?lemma.
OPTIONAL { ?item (wdt:P31/(wdt:P279*)) ?instance. }
OPTIONAL { ?item wdt:P279 ?subclass. }
OPTIONAL { ?item wdt:P31 ?isa. }
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en,da,sv".
?instance rdfs:label ?instanceLabel.
?subclass rdfs:label ?subclassLabel.
?isa rdfs:label ?isaLabel.
}
# Here, you could add: FILTER(?instanceLabel in ("mammal"@en, "movie"@en, "musical"@en (and so on...)))
}
GROUP BY ?lemma ?item
直播here.
如果您正在查看“电影”和“哺乳动物”等标签,我。 e.最多几十个,您可以按优先顺序明确列出它们,然后使用出现的第一个。
请注意,您可能 运行 遇到此错误:https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial#wikibase:Label_and_aggregations_bug