我在Sparql中查询很长,我想按数字字段“情感”对结果进行排序如果我在SELECT和GROUPBY中包含该字段,则一切工作正常,否则会崩溃。但是我想呈现查询而不显示SQL查询中的“情感”字段。在SPARQL中可以吗?
查询是:
SELECT ?Sentiment ?Restaurant ?Name ?Address ?Score ?City ?State (SAMPLE(?photo) as ?image) SAMPLE(?Text) as ?text) (SAMPLE(?Review) as ?review) (SAMPLE(?TStyle) as ?style) (SAMPLE(?TAmbiance) as ?ambient) (SAMPLE(?TService) as ?service)
where { ?Restaurant :hasName ?Name;
:Dish ?Dish;
:Score ?Score;
:hasAddress ?Address;
:photo ?photo;
:HasReview ?Review;
:Parking ?Parking;
:CreditCard ?CreditCard;
:Delivery ?Delivery;
:Kids ?Kids;
:hasTopic ?o;
:Sentiment ?Sentiment.
?Address :hasCity ?City;
:hasState ?State;
:Lat ?Lat;
:Long ?Long.
?Review :Text ?Text.
BIND (exists{?Restaurant :hasTopic :style} AS ?TStyle).
BIND (exists{?Restaurant :hasTopic :ambiance} AS ?TAmbiance).
BIND (exists{?Restaurant :hasTopic :service} AS ?TService).
FILTER(contains(str(?Text), "sushi"))
} GROUP BY ?Restaurant ?Name ?Address ?Score ?City ?State ?Sentiment
ORDER BY DESC((?Sentiment))
我如何构成查询并对结果进行排序,而不显示字段“情感”本身或总体上改善查询?
谢谢。
虽然我不了解SPARQL的规格足以决定是否在错误解决方法之外是否有意义,但是您始终可以通过将查询包装为SPARQL 1.1子查询来“屏蔽”结果:
SELECT ?var1 ?var2 ... ?varn
{
...
}
“ masking”?var x变成
SELECT ?var1 ?var2 ... ?var(x-1) ?var(x+1) ... ?varn
{
SELECT ?var1 ?var2 ... ... ?varn
{
...
}
}