如何基于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格式),因为如果不查看数据,很难判断您的查询为何不起作用。查询本身似乎有效,但您的数据可能存在一些问题