如何在新网格端点中使用SPARQL构造?

如何在新网格端点中使用SPARQL构造?,sparql,endpoint,Sparql,Endpoint,我试图在SPARQL网格端点中使用构造,但这一个总是返回一个空查询。 特别是我找到了一些医学名称的别名 基本上,有效的SELECT查询是: PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PRE

我试图在SPARQL网格端点中使用构造,但这一个总是返回一个空查询。 特别是我找到了一些医学名称的别名

基本上,有效的SELECT查询是:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX meshv: <http://id.nlm.nih.gov/mesh/vocab#>
PREFIX mesh: <http://id.nlm.nih.gov/mesh/>
PREFIX mesh2015: <http://id.nlm.nih.gov/mesh/2015/>

SELECT ?d ?dName ?c ?cName 
FROM <http://id.nlm.nih.gov/mesh>
WHERE {
  ?d a meshv:Descriptor .
  ?d meshv:concept ?c .
  ?d rdfs:label ?dName .
  ?c rdfs:label ?cName
  FILTER(REGEX(?dName,'infection','i') || REGEX(?cName,'infection','i')) 
} 
ORDER BY ?d 
前缀rdf:
前缀rdfs:
前缀xsd:
前缀owl:
前缀meshv:
前缀网格:
2015年4月31日:
选择?d?dName?c?cName
从…起
在哪里{
?d a meshv:描述符。
?d meshv:概念?c。
?d rdfs:标签?dName。
?c rdfs:标签?cName
过滤器(REGEX(?dName,'infection','i')| | REGEX(?cName,'infection','i'))
} 
按?d?订购
我发现如下情况:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX meshv: <http://id.nlm.nih.gov/mesh/vocab#>
PREFIX mesh: <http://id.nlm.nih.gov/mesh/>
PREFIX mesh2015: <http://id.nlm.nih.gov/mesh/2015/>

CONSTRUCT{
            ?dName a (subject)
            is alias of (predicate)
            ?cName (object)
}
WHERE {
  ?d a meshv:Descriptor .
  ?d meshv:concept ?c .
  ?d rdfs:label ?dName .
  ?c rdfs:label ?cName
  FILTER(REGEX(?dName,'infection','i') || REGEX(?cName,'infection','i')) 
} 
前缀rdf:
前缀rdfs:
前缀xsd:
前缀owl:
前缀meshv:
前缀网格:
2015年4月31日:
构造{
?dName a(受试者)
是(谓词)的别名
?cName(对象)
}
在哪里{
?d a meshv:描述符。
?d meshv:概念?c。
?d rdfs:标签?dName。
?c rdfs:标签?cName
过滤器(REGEX(?dName,'infection','i')| | REGEX(?cName,'infection','i'))
} 
通知支持构造,并且您可以尝试查询,SPARQL端点应为


谢谢您的帮助。

您的第二个查询不是合法的SPARQL查询。我不知道MeSH应该支持其他东西,但是构造需要使用where部分中出现的变量<代码>构造{s?p 42},其中{s?p?o}。请注意,文字不能作为RDF三元组的主题,而且
rdfs:label
属性的值很可能是文字,因此
构造{label?p?o},其中{s?p?o;rdfs:label?label}
可能不起作用。你遇到了什么样的错误?嗨@JoshuaTaylor谢谢你的回复。我也可以使用WHERE来构造,而不需要在两者之间指定任何内容。。。但是结果总是一样的,查询没有给我任何特别的错误,给了我一个空表,表的头部有写的主语、谓语和宾语。
构造其中{mesh:D015242 meshv:pharmacologicalAction?pa.?pa rdfs:label?paLabel.}
好的,这是可行的。。。我的问题是一个概念问题。谢谢。您的第二个查询不是合法的SPARQL查询。我不知道MeSH应该支持其他东西,但是构造需要使用where部分中出现的变量<代码>构造{s?p 42},其中{s?p?o}。请注意,文字不能作为RDF三元组的主题,而且
rdfs:label
属性的值很可能是文字,因此
构造{label?p?o},其中{s?p?o;rdfs:label?label}
可能不起作用。你遇到了什么样的错误?嗨@JoshuaTaylor谢谢你的回复。我也可以使用WHERE来构造,而不需要在两者之间指定任何内容。。。但是结果总是一样的,查询没有给我任何特别的错误,给了我一个空表,表的头部有写的主语、谓语和宾语。
构造其中{mesh:D015242 meshv:pharmacologicalAction?pa.?pa rdfs:label?paLabel.}
好的,这是可行的。。。我的问题是一个概念问题。非常感谢。