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

时间:2010-10-20 02:12:10

标签: sparql semantic-web jena ontology protege

我创建了这个查询:

PREFIX VB: <http://VBnet#>
SELECT  ?x ?y
WHERE 
{
  ?x VB:HasName ?y
}     

HasName是一个数据类型属性。当我在Protege中运行此查询时,系统只显示主题,而没有数据类型属性的任何值。 mwans?y​​是空的。当我在jena系统中运行时,只显示:(String)

如何查看数据类型属性的值?y

的值

2 个答案:

答案 0 :(得分:1)

这取决于您的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>
...

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

答案 1 :(得分:0)

假设没有语言标签:

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

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