SPARQL,仅从模式中获取特定值并在不可用时使用 NaN?

问题描述 投票:0回答:1

我正在对瑞士公司注册数据库 zefix 进行 SPARQL 查询。

其中一家公司例如:
https://register.ld.admin.ch/zefix/company/182509

如您所见,它具有 schema:identifier 的三个不同条目。我只对 CompanyUID 感兴趣。

但是,通过我当前的查询,我为每个公司获取三行,每个标识符对应一行。我只想要 CompanyUID,或者如果不可用则什么也不需要。

我当前的SPARQL是:

PREFIX schema: <http://schema.org/>
PREFIX admin: <https://schema.ld.admin.ch/>
SELECT ?company_uri ?name ?company_type ?municipality ?adresse ?locality ?identifier_value ?identifier_name
WHERE {
?company_uri a admin:ZefixOrganisation ;
    schema:name ?name ;
    admin:municipality ?muni_id .
?muni_id schema:name ?municipality .
?company_uri schema:additionalType ?type_id .
?type_id schema:name ?company_type .
?company_uri schema:address ?adr.
?company_uri schema:identifier ?identifier .
?identifier schema:value ?identifier_value .
?identifier schema:name ?identifier_name .
?adr schema:streetAddress ?adresse ;
    schema:addressLocality ?locality .

filter langMatches(lang(?company_type), "de") .

}
LIMIT 10

每个公司给我三行。我只想要一个只有 CompanyUID 的。

schema sparql
1个回答
0
投票

不同类型的标识符通过其

schema:name
值进行识别。

你的三重模式

?identifier schema:name ?identifier_name .

有一个变量(

?identifier_name
)作为对象,所以你需要各种标识符。

不要使用变量,而是提供您感兴趣的文字:

?identifier schema:name "CompanyUID" .
© www.soinside.com 2019 - 2024. All rights reserved.