Sparql 如何克服数据类型属性导致的重复结果
我正在使用JavaWS查询存储库。我无法更改此存储库中的数据。 当我查询任何内容时,如果任何变量具有“datatype”属性,我会得到重复的结果 是否有一种方法可以仅使用查询来删除重复项 谢谢你的帮助。问题示例如下: 我的固定名称空间Sparql 如何克服数据类型属性导致的重复结果,sparql,Sparql,我正在使用JavaWS查询存储库。我无法更改此存储库中的数据。 当我查询任何内容时,如果任何变量具有“datatype”属性,我会得到重复的结果 是否有一种方法可以仅使用查询来删除重复项 谢谢你的帮助。问题示例如下: 我的固定名称空间 public static final String PREFIX = "prefix kb: <http://protege.stanford.edu/kb#>\n" +
public static final String PREFIX = "prefix kb: <http://protege.stanford.edu/kb#>\n" +
"prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" +
"prefix owl: <http://www.w3.org/2002/07/owl#>\n" +
"prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
"prefix xsd: <http://www.w3.org/2001/XMLSchema#>\n";
当我使用这个查询时,我会得到“数据类型”的重复值,例如
小时
每小时米数
每小时米数
米每分钟
完成百分比
每小时件数
每小时件数
每分钟件数
每分钟件数
产品零件
每日产品
每日产品
硅立方米
每小时欧元
每分钟欧元
每种产品欧元
您的查询与此类似
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select distinct ?name where {
values ?name { "meters per hour"
"meters per hour"^^xsd:string }
}
相反,您应该选择str(?name)
的不同值(即literal的字符串值):
请注意,在将来,这可能不会成为太多问题。RDF 1.1将使所有文字都有一个数据类型,以前简单的文字(例如,
“每小时米数”
)将有数据类型xsd:string
(例如,“每小时米数”^^xsd:string
) 谢谢,这真的很有帮助:)
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="name"/>
</head>
<results>
<result>
<binding name="name">
<literal>Hours</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>Meters per Hour</literal>
</binding>
</result>
<result>
<binding name="name">
<literal datatype="http://www.w3.org/2001/XMLSchema#string">Meters per Hour</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>Meters per Minute</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>PercentageCompleted</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>Pieces per Hour</literal>
</binding>
</result>
<result>
<binding name="name">
<literal datatype="http://www.w3.org/2001/XMLSchema#string">Pieces per Hour</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>Pieces per Minute</literal>
</binding>
</result>
<result>
<binding name="name">
<literal datatype="http://www.w3.org/2001/XMLSchema#string">Pieces per Minute</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>Product parts</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>Products per Day</literal>
</binding>
</result>
<result>
<binding name="name">
<literal datatype="http://www.w3.org/2001/XMLSchema#string">Products per Day</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>SI Cubic Meter</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>€ per Hour</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>€ per Minute</literal>
</binding>
</result>
<result>
<binding name="name">
<literal>€ per Product</literal>
</binding>
</result>
</results>
</sparql>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select distinct ?name where {
values ?name { "meters per hour"
"meters per hour"^^xsd:string }
}
---------------------------------
| name |
=================================
| "meters per hour" |
| "meters per hour"^^xsd:string |
---------------------------------
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select distinct (str(?name) as ?sname) where {
values ?name { "meters per hour"
"meters per hour"^^xsd:string }
}
---------------------
| sname |
=====================
| "meters per hour" |
---------------------