如何在概念搜索中过滤维基数据标签?
How to filter wikidata labels in concept search?
我正在使用以下代码获取给定概念的 wikidata labels
(例如,network analysis
)。
SELECT ?item {
VALUES ?searchTerm { "network analysis" }
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 3 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
ORDER BY ?searchTerm ?num
这 returns 以下维基数据标签。
wd:Q618079 --> related to electronics
wd:Q4417999 --> related to graph theory (computer science)
wd:Q60640547 --> related to scholary article
我想获取仅与计算机科学相关的 wikidata labels
(即上例中的 wd:Q4417999
)。
在 DBpedia I 运行 中,下面的查询用于识别单词是否在 computer science
.
中
sparql.setQuery(" ASK { dbc:Network_analysis skos:broader{1,7} dbc:Computer_science } ")
是否可以在维基数据中做同样的事情(即检查 computer science
是否是给定概念的祖先,而 returns 是否只有维基数据标签)。
如果有比执行祖先搜索更好的解决方案,请给我建议。
如果需要,我很乐意提供更多详细信息。
下面提到的 sparql 查询解决了我的问题。
SELECT DISTINCT ?item {
VALUES ?searchTerm { "network analysis"}
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 3 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
filter exists {?type wdt:P279*/wdt:P361* wd:Q21198}
}
ORDER BY ?searchTerm ?num
我正在使用以下代码获取给定概念的 wikidata labels
(例如,network analysis
)。
SELECT ?item {
VALUES ?searchTerm { "network analysis" }
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 3 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
ORDER BY ?searchTerm ?num
这 returns 以下维基数据标签。
wd:Q618079 --> related to electronics
wd:Q4417999 --> related to graph theory (computer science)
wd:Q60640547 --> related to scholary article
我想获取仅与计算机科学相关的 wikidata labels
(即上例中的 wd:Q4417999
)。
在 DBpedia I 运行 中,下面的查询用于识别单词是否在 computer science
.
sparql.setQuery(" ASK { dbc:Network_analysis skos:broader{1,7} dbc:Computer_science } ")
是否可以在维基数据中做同样的事情(即检查 computer science
是否是给定概念的祖先,而 returns 是否只有维基数据标签)。
如果有比执行祖先搜索更好的解决方案,请给我建议。
如果需要,我很乐意提供更多详细信息。
下面提到的 sparql 查询解决了我的问题。
SELECT DISTINCT ?item {
VALUES ?searchTerm { "network analysis"}
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 3 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
filter exists {?type wdt:P279*/wdt:P361* wd:Q21198}
}
ORDER BY ?searchTerm ?num