构造SPARQL查询中的字段类型映射错误

构造SPARQL查询中的字段类型映射错误,sparql,semantic-web,virtuoso,Sparql,Semantic Web,Virtuoso,我正在尝试检查此三元组的文本值:skos:altSymbol“literal values of resource2”是否作为资源存在于我的端点中。 如果是,我想构造一个新的三元组谓词 我运行了以下查询,但出现了一个错误 我不知道这个问题出了什么问题。如果有人能帮助我或建议我一个不同的方式继续。那太棒了 谢谢 皮埃尔 Sparql端点: 系统是OpenLink Virtuoso 7.2.5开源(linux) BASE 前缀rdf: 前缀rdfs: 前缀skos: 前缀xsd: 前缀b: 前缀资源

我正在尝试检查此三元组的文本值:
skos:altSymbol“literal values of resource2”
是否作为资源
存在于我的端点中。 如果是,我想构造一个新的三元组
谓词

我运行了以下查询,但出现了一个错误

我不知道这个问题出了什么问题。如果有人能帮助我或建议我一个不同的方式继续。那太棒了

谢谢 皮埃尔

Sparql端点

系统是OpenLink Virtuoso 7.2.5开源(linux)

BASE
前缀rdf:
前缀rdfs:
前缀skos:
前缀xsd:
前缀b:
前缀资源:
前缀海外建筑运营管理局:
前缀sio:
构造{蛋白质id sio:sio_000339?existURI.}
哪里
{
?蛋白质id?p?o;
rdfs:标签?标签;
skos:altSymbol?符号;
海外建筑运营管理局:RO_0002162。
绑定(CONCAT(str(资源:),str(?symbol))为?uri)
过滤器IF(存在{uri rdf:type vocab:Gene},uri,“无”)
绑定(URI(?URI)为?存在)
}
限制100

返回错误=
Virtuoso 37000错误SP031:SPARQL编译器:内部错误:sparp\u check\u field\u mapping\u spo():字段既不是变量也不是文字?

如注释中所示,此查询修订版解决了此问题--

构造
{?蛋白质id sio:sio_000339?存在性}
哪里
{
{?蛋白质_id?p?o;
rdfs:标签?标签;
skos:altSymbol?符号;
海外建筑运营管理局:RO_0002162。
绑定(URI(CONCAT(str(资源:),str(?符号)))为?URI)
}
绑定(如果(存在{uri rdf:type vocab:Gene},?uri,“None”)为existURI)
} 
限制100

什么不起作用?我在web UI中尝试了您的查询,它可以正常工作。还是不?我的意思是,这个问题当然是不正确的。您只需将一个字符串绑定到
?uri
。文字永远不能是三元组的主题,因此检查
?uri rdf:type vocab:Gene
无效。您可以简单地将IF放入绑定,过滤器是无用的。或者我误解了你的查询?这就是你想要的吗?:
CONSTRUCT{protein_id sio:sio_000339?existURI.}其中{select?protein_id?uri{protein_id?p?o;rdfs:label?label;skos:altSymbol?symbol;obo:RO_0002162.BIND(uri(CONCAT(str(resource:),str(?symbol)))as?uri)}BIND(如果(存在{uri rdf:type vocab:Gene},uri,“None”)作为existURI)限制100
-我不确定输出。但是如果没有子查询,BIND orderok会出现一些问题,将其包装到一个单独的图形模式中也会起作用:
CONSTRUCT{protein_id sio:sio_000339?existURI.}其中{protein_id?p?o;rdfs:label?label;skos:altSymbol?symbol;obo:RO_0002162.BIND(URI(CONCAT(str(resource:),str(?symbol)))as?uri)}BIND(如果(存在{uri rdf:type vocab:Gene},uri,“None”)as?existURI)限制100
-因此,不需要子查询它是真的!我现在不能重现这个错误。
BASE <http://www.southgreen.fr/agrold/>
PREFIX      rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX     rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX     skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX      xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX    vocab: <vocabulary/>
PREFIX resource: <resource/>
PREFIX      obo: <http://purl.obolibrary.org/obo/>
PREFIX      sio: <http://semanticscience.org/resource/>

CONSTRUCT { ?protein_id sio:SIO_000339 ?existURI . }
WHERE
  {
    ?protein_id ?p             ?o      ;
                rdfs:label     ?label  ;
                skos:altSymbol ?symbol ;
                obo:RO_0002162 <http://identifiers.org/taxonomy/39947> .
    BIND ( CONCAT ( str ( resource: ) , str ( ?symbol ) ) AS ?uri)
    FILTER IF ( EXISTS { ?uri rdf:type vocab:Gene } , ?uri , "None" )
    BIND ( URI ( ?uri ) as ?existURI )
   }
LIMIT 100
CONSTRUCT
   { ?protein_id sio:SIO_000339 ?existURI . } 
WHERE
  {
    { ?protein_id ?p             ?o ;
                  rdfs:label     ?label ;
                  skos:altSymbol ?symbol ;
                  obo:RO_0002162 <http://identifiers.org/taxonomy/39947> .
      BIND ( URI ( CONCAT ( str ( resource: ) , str ( ?symbol ) ) ) AS ?uri)
    }
    BIND ( If ( EXISTS { ?uri rdf:type vocab:Gene } , ?uri , "None" ) AS ?existURI )
  } 
LIMIT 100