当SPARQL中有多个条目时,使用第二个过滤器
我有以下疑问:当SPARQL中有多个条目时,使用第二个过滤器,sparql,Sparql,我有以下疑问: PREFIX owl: <http://carre.kmi.open.ac.uk/ontology/risk.owl#> SELECT distinct ?name ?value ?condition ?condition_json WHERE { ?node owl:has_observable_condition ?condition . ?node owl:has_risk_evidence_ratio_value ?value . ?node owl:h
PREFIX owl: <http://carre.kmi.open.ac.uk/ontology/risk.owl#>
SELECT distinct ?name ?value ?condition ?condition_json
WHERE
{
?node owl:has_observable_condition ?condition .
?node owl:has_risk_evidence_ratio_value ?value .
?node owl:has_risk_factor ?factor.
?factor owl:has_risk_factor_target ?target.
?target owl:has_risk_element_name ?name.
?node owl:has_observable_condition_json ?condition_json .
FILTER regex(str(?condition), "OB_58") .}
前缀owl:
选择不同的?名称?值?条件?条件
哪里
{
节点猫头鹰:具有可观察的条件。
?节点owl:具有\u风险\u证据\u比率\u值?值。
?节点猫头鹰:有风险因素。
因子owl:有风险因子目标。
?目标猫头鹰:具有\u风险\u元素\u名称?名称。
?节点owl:具有可观察的条件?条件?条件?json。
过滤正则表达式(str(?条件),“OB_58”)。}
可以找到查询的结果
正如您在第一列中看到的,所有条目(这是正确的术语吗?)都有3个元素名,这使得数据重复2次。有没有办法只展示一个?(最好是英文的?)我试过了
前缀owl:
选择不同的?名称?值?条件?条件
哪里
{
节点猫头鹰:具有可观察的条件。
?节点owl:具有\u风险\u证据\u比率\u值?值。
?节点猫头鹰:有风险因素。
因子owl:有风险因子目标。
?目标猫头鹰:具有\u风险\u元素\u名称?名称。
?节点owl:具有可观察的条件?条件?条件?json。
过滤器(正则表达式(str(?condition),“OB_58”)&正则表达式(str(?name),“en”)。}
但它返回一个空表。你的“条目”似乎是risk\u factor\u target
s(owl:has\u risk\u factor\u target
),它们的risk\u元素名称有多个值(owl:has\u risk\u element\u name
)
那些risk\u element\u name
值似乎是具有相同含义的不同语言标记的翻译
@AKSW建议使用过滤器(langmatches(lang(?name),'en'))
,这很好,但请注意,这只会返回有英文名称的?目标
完成修订和--
前缀owl:
选择不同的?名称?值?条件?条件
哪里
{
节点猫头鹰:具有可观察的条件。
?节点owl:具有\u风险\u证据\u比率\u值?值。
?节点猫头鹰:有风险因素。
因子owl:有风险因子目标。
?目标猫头鹰:具有\u风险\u元素\u名称?名称。
?节点owl:具有可观察的条件?条件?条件?json。
过滤正则表达式(str(?条件),“OB_58”)。
过滤器(langmatches(lang(?name),'en'))
}
filter(langmatches(lang(?name),'en'))
谢谢你,我想所有条目都至少有一个英文名称,我需要的所有条目都会出现在结果中。我最终使用了FILTER(regex(str(?condition),“ob58”)&langmatches(lang(?name),“en”),我不知道你可以像那样堆叠过滤器(第一次使用sparql)
PREFIX owl: <http://carre.kmi.open.ac.uk/ontology/risk.owl#>
SELECT distinct ?name ?value ?condition ?condition_json
WHERE
{
?node owl:has_observable_condition ?condition .
?node owl:has_risk_evidence_ratio_value ?value .
?node owl:has_risk_factor ?factor.
?factor owl:has_risk_factor_target ?target.
?target owl:has_risk_element_name ?name.
?node owl:has_observable_condition_json ?condition_json .
FILTER (regex(str(?condition), "OB_58")&®ex(str(?name), "en")) .}
PREFIX owl: <http://carre.kmi.open.ac.uk/ontology/risk.owl#>
SELECT distinct ?name ?value ?condition ?condition_json
WHERE
{
?node owl:has_observable_condition ?condition .
?node owl:has_risk_evidence_ratio_value ?value .
?node owl:has_risk_factor ?factor .
?factor owl:has_risk_factor_target ?target .
?target owl:has_risk_element_name ?name .
?node owl:has_observable_condition_json ?condition_json .
FILTER regex(str(?condition), "OB_58") .
FILTER (langmatches(lang(?name), 'en'))
}