我写了一个Sparql查询。
PREFIX table:<http://www.daml.org/2003/01/periodictable/PeriodicTable#>
SELECT ?name ?color
FROM <PeriodicTable.owl>
WHERE
{ ?element table:group ?group.
?group table:name "Noble Gas".
?element table:name ?name.
?element table:color ?color.
}
我正在获取附加了架构标签的输出,如下所示:
| "chlorine"^^<http://www.w3.org/2001/XMLSchema#string> | "green"^^<again link>
依旧...... |
为什么会发生这种情况,我该如何纠正呢?
答案 0 :(得分:3)
在RDF数据中,您正在查询类型文字,类型文字,顾名思义是与数据类型相关联的文字。
对于常见数据类型,RDF和SPARQL推迟到XML Schema Datatypes,因此您可以在输出中看到这些特定的URIS。
您可以让SPARQL引擎使用STR()
函数从数据中删除数据类型,如下所示:
PREFIX table:<http://www.daml.org/2003/01/periodictable/PeriodicTable#>
SELECT (STR(?name) AS ?NameString) (STR(?color) AS ?ColourString)
FROM <PeriodicTable.owl>
WHERE
{
?element table:group ?group.
?group table:name "Noble Gas".
?element table:name ?name.
?element table:color ?color.
}
这需要一个支持SPARQL 1.1的SPARQL引擎,因为它使用SELECT Expressions功能,现在大多数SPARQL引擎都支持这一功能。