我有以下SPARQL查询:
SELECT * FROM {
?measurement a oboe-core:Measurement ;
oboe-core:ofCharacteristic oboe-core:Name ;
oboe-core:usesStandard :Anaee-franceExperimentalSiteNamingStandard ;
oboe-core:hasValue ?anaeeSiteNameStandard .
BIND ( IRI( CONCAT( "http://www.anaee-france.fr/ontology/anaee-france_ontology" ,
?anaeeSiteNameStandard ) ) AS ?site ) .
OPTIONAL { ?site rdfs:label ?_anaeeSiteName . }
BIND ( IF (BOUND (?_anaeeSiteName), ?_anaeeSiteName, "NULL_anaeeSiteName"@en ) AS
?anaeeSiteName) .
FILTER (lang( ?anaeeSiteName ) = "en") .
} limit 3_anaeeSiteName是空的,知道我的图包含:
<http://www.anaee-france.fr/ontology/anaee-france_ontology#Guyaflux>
rdfs:label "Guyaflux"@en .当我直接使用
BIND ( IRI( "http://www.anaee-france.fr/ontology/anaee-france_ontology#Guyaflux" ) AS ?site ) .而不是BIND IRI CONCAT
BIND ( IRI( CONCAT( "http://www.anaee-france.fr/ontology/anaee-france_ontology" ,
?anaeeSiteNameStandard ) ) AS ?site ) .我得到了一些结果。
有人能告诉我怎么回事吗?
谢谢
发布于 2020-09-24 14:49:14
我们同意“不知情”和“安迪”的观点,认为存在语法错误。您缺少了FROM和WHERE关键字的图URI,需要在concat中的#与您的示例uri匹配。
免责声明:我在剑桥语义公司工作。
发布于 2020-09-25 15:48:25
对不起,为了简化查询,我删除了"FROM“。
完整的Sparql查询如下:
SELECT * FROM <foret> WHERE {
?measurement a oboe-core:Measurement ;
oboe-core:ofCharacteristic oboe-core:Name ;
oboe-core:usesStandard :Anaee-franceExperimentalSiteNamingStandard ;
oboe-core:hasValue ?anaeeSiteNameStandard .
BIND ( IRI( CONCAT( "http://www.anaee-france.fr/ontology/anaee-france_ontology" ,
?anaeeSiteNameStandard ) ) AS ?site ) .
OPTIONAL { ?site rdfs:label ?_anaeeSiteName . }
BIND ( IF (BOUND (?_anaeeSiteName), ?_anaeeSiteName, "NULL_anaeeSiteName"@en ) AS
?anaeeSiteName) .
FILTER (lang( ?anaeeSiteName ) = "en") .
} limit 3奇怪的是,当我添加:
BIND ( str(?anaeeSiteNameStandard) AS ?anaeeSiteNameStandard ) . 就在此之前:
BIND ( IRI( CONCAT( "http://www.anaee-france.fr/ontology/anaee-france_ontology" ,
?anaeeSiteNameStandard ) ) AS ?site ) .我得到了预期的结果!
https://stackoverflow.com/questions/63973724
复制相似问题