Если я вас правильно понимаю, вы просто ищете для функции concat. Как я уже упоминал ранее, вы должны действительно просмотреть SPARQL 1.1 standard, по крайней мере, в оглавлении. Вам не нужно запоминать это, но это даст вам представление о том, что возможно, и о том, где искать. Кроме того, это очень полезно, если вы предоставите образцы данных, с которыми мы можем работать, потому что это делает намного понятнее, чтобы выяснить, что вы пытаетесь сделать. Формулировка вашего названия не была особенно ясна, и этот вопрос действительно не является примером того, что вы пытаетесь выполнить. Только потому, что я видел некоторые из ваших прошлых вопросов, у меня есть представление о том, к чему вы стремились. Во всяком случае, вот некоторые данные:
@prefix : <urn:ex:>
:p :hasSimilarity 0.3 .
:A :hasSimilarity 0.6 .
:a :p :b ; #-- is is related to :b
a :A . #-- and is an :A .
:c :p :b . #-- :c is also related to :b
:d a :A . #-- :d is also an :A .
:e :p :b ; #-- :e is related to :b
a :A . #-- and is also an :A .
И вот запрос и его результаты. Вы просто используете concat, чтобы присоединиться к форме str ваших переменных с соответствующими строками, а затем привязать к переменной.
prefix : <urn:ex:>
select ?item
(sum(?factor_) as ?factor)
(group_concat(distinct ?reason_; separator=", ") as ?reason)
{
values ?x { :a }
{ ?x ?p ?instance .
?item ?p ?instance .
?p :hasSimilarity ?factor_ .
bind(concat("has common ",str(?p)," value ",str(?instance)) as ?reason_) }
union
{ ?x a ?class.
?item a ?class.
?class :hasSimilarity ?factor_ .
bind(concat("has common class ",str(?class)) as ?reason_)
}
filter (?x != ?item)
}
group by ?item
-----------------------------------------------------------------------------------
| item | factor | reason |
===================================================================================
| :c | 0.3 | "has common urn:ex:p value urn:ex:b" |
| :d | 0.6 | "has common class urn:ex:A" |
| :e | 0.9 | "has common urn:ex:p value urn:ex:b, has common class urn:ex:A" |
-----------------------------------------------------------------------------------
Могу ли я спросить, почему вы связываете переменную в части союза в качестве переменной внешнего запроса? Не проще ли просто использовать имя переменной 'потомуOf'? – AKSW
@AKSW, очевидно, из-за вопроса, который я задаю сейчас, мне не нужна переменная? Потому что для того, чтобы быть привязанным только к varaible? P или классу переменных?, Я хочу делать то, что я прошу в этом вопросе, который связывает две переменные и статический текст с переменной? потому что переменная –
** "в моем предложении firstbind, я бы хотел не просто привязать переменную? p, но также экземпляр переменной. Кроме того, добавление поэтому текст такой ». ** Вы не привязываете переменную? p, вы привязываете переменную? потому что к значению? p. В соответствии с вашей инструкцией я не беспокоюсь о том, имеют ли данные смысл, но я не совсем понимаю, о чем вы спрашиваете. Или вы просто хотите что-то вроде «bind (concat (str (? P)», «почему», str (? instance)) как? потому что Of) '? –