我创建了这个查询:
PREFIX VB: <http://VBnet#>
SELECT ?x ?y
WHERE
{
?x VB:HasName ?y
}
HasName是一个数据类型属性。当我在Protege中运行此查询时,系统只显示主题,而没有数据类型属性的任何值。 mwans?y是空的。当我在jena系统中运行时,只显示:(String)
如何查看数据类型属性的值?y
?
答案 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)。