Рассмотрим использование cts:triple-range-query
. Его можно использовать в cts:search
напрямую и вставить в ваш другой запрос. Это позволяет искать только отдельные троики, хотя ваш пример довольно прост.
Чтобы найти все отчеты AP Newswire и BBC, рассказывающие о посещающих страны Никсона:
query version "1.0-ml";
for $doc in cts:search(
collection(),
cts:and-query( (
cts:element-value-query( xs:QName("source"), ("AP Newswire", "BBC") ),
cts:triple-range-query(
sem:iri("http://example.org/news/Nixon"),
sem:iri("http://example.org/wentTo"),
()
)
) )
)[1 to 10]
return (xdmp:node-uri($doc), $doc)
Вы также можете предварительно -execute SPARQL сначала разрешить более сложные запросы SPARQL и передать результат в cts: search с трехдиапазонным запросом. Например: найти все отчеты о конкретных странах, которые посетил Никсон (как сообщается AP Newswire и BBC):
let $countries := sem:sparql('
SELECT DISTINCT ?country
WHERE {
?country
}
',
(),
(),
cts:element-value-query( xs:QName("source"), ("AP Newswire", "BBC") )
) ! map:get(., "country")
for $doc in cts:search(
collection(),
cts:triple-range-query(
sem:iri("http://example.org/news/Nixon"),
sem:iri("http://example.org/wentTo"),
$country[1 to 3]
)
)[1 to 10]
return (xdmp:node-uri($doc), $doc)
Обратите внимание на тонкие различия между двумя приведенными выше примерами.
НТН!
Хорошо, это то, что ты можешь сделать
foreach (var item in NewsTotal.items) {
string newsItemsQuery = @"INSERT INTO [dbo].[TBL_T_NewsItems] ([NewsId],[ItemId]) SELECT NewsId, ItemId FROM ABC";
}
. Пожалуйста, проверьте мой ответ ниже
transaction = con.BeginTransaction();
string query1 ="Insert Into ABC(NewsCode,Comment) output INSERTED.ID Values (@NewsCode,@Comment)";
cmd = db.GetSqlStringCommand(query1);
cmd.Transaction = transaction;
cmd.Connection = con;
db.AddInParameter(cmd, "NewsCode", DbType.Int32, News.NewsCode);
db.AddInParameter(cmd, "Comment", DbType.String,News.Comment);
int modifiedRowId =(int)cmd.ExecuteScalar();