Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于SPARQL创建查询以查看某些数据类型属性的值?_Sparql_Semantic Web_Jena_Ontology_Protege - Fatal编程技术网

如何基于SPARQL创建查询以查看某些数据类型属性的值?

如何基于SPARQL创建查询以查看某些数据类型属性的值?,sparql,semantic-web,jena,ontology,protege,Sparql,Semantic Web,Jena,Ontology,Protege,我创建此查询: PREFIX VB: <http://VBnet#> SELECT ?x ?y WHERE { ?x VB:HasName ?y } 前缀VB: 选择?x?y 哪里 { x VB:HasName?y } HasName是一个数据类型属性。当我在Protege中运行此查询时,系统只显示主题,而不显示datatype属性的任何值。mwans?y是空的。此外,当我在jena系统中运行时,只需显示:(字符串) 如何查看datatype属性的值?

我创建此查询:

PREFIX VB: <http://VBnet#>
SELECT  ?x ?y
WHERE 
{
  ?x VB:HasName ?y
}     
前缀VB:
选择?x?y
哪里
{
x VB:HasName?y
}     
HasName是一个数据类型属性。当我在Protege中运行此查询时,系统只显示主题,而不显示datatype属性的任何值。mwans?y是空的。此外,当我在jena系统中运行时,只需显示:(字符串)


如何查看datatype属性的值
?y

的值取决于RDF文档中包含的数据。如果值是类型化的文本,那么您可以解析SPARQL结果集,并请求绑定到?y变量的值的数据类型。如果以不符合RDF的方式(例如html)呈现值,则数据类型可能不会出现。否则,您将看到如下内容:

<sparql xmlns="http://www.w3.org/2005/sparql-results#"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd">
<head>
<variable name="y"/>
</head>
<results distinct="false" ordered="true">
 <result>
   <binding name="y"><literal xml:lang="en">John</literal></binding> //literals with language
 </result>
 <result>
   <binding name="y"><literal datatype="http://www.w3.org/2001/XMLSchema#integer">30</literal></binding> //typed literals
 </result>
...

约翰//文字与语言
30//类型化文本
...

要提取数据类型,您需要查询Jena API。

假设没有语言标记:

SELECT  ?x ?y (DATATYPE(?y) AS ?dt)

请注意,如果?y是纯文本,那么数据类型返回
xsd:string
,但?y没有^^^数据类型(直到RDF 1.1)。

您可以编辑您的问题并显示您正在查询的数据(最好是Turtle/NTriples格式),因为如果不查看数据,很难判断您的查询为何不起作用。查询本身似乎有效,但您的数据可能存在一些问题