В соответствии со спецификацией SPARQL каждый подвыбор будет выполняться независимо. Если первый подвыбор вернет 1 000 результатов, а второй 300, декартово произведение между двумя наборами данных будет 300 000. Сравнение 300'00, вероятно, будет намного медленнее.
Почему бы просто не выполнить запрос как:
# The whole query takes ~20 seconds
SELECT ?baseUri_s1 {
# Here goes some more complex business logic query 1
?baseUri_s myOntology:hasProperty1 'myProperty1'
# Here goes some more complex business logic query 2
?baseUri_s myOntology:hasProperty2 'myProperty2'
}
Тогда вы исключите неприятный декартово произведение между подзапросами безобщие переменные и оптимизатор запросов могут выдвинуть некоторые из сложных оптимизаций бизнес-логики ранее.