Поиск по префиксу должен работать по умолчанию из коробки.Я подозреваю, что есть еще одна проблема с вашим запросом.Что произойдет, если вы будете искать все возможные значения с помощью :query "*:*"
?
Вот контрольный пример, чтобы проверить и повторить его с вашим набором данных.
Создание образца фиктивных данных
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
INSERT DATA
{
<urn:1> a <urn:type>;
rdfs:label "FooBar".
<urn:2> a <urn:type>;
rdfs:label "FooBaz".
<urn:3> a <urn:type>;
rdfs:label "BazFoo".
}
Вам также потребуетсяопределить оператор rdf:type
для каждого ресурса RDF.
Создать соединитель Lucene
PREFIX :<http://www.ontotext.com/connectors/lucene#>
PREFIX inst:<http://www.ontotext.com/connectors/lucene/instance#>
INSERT DATA {
inst:my_index :createConnector '''
{
"fields": [
{
"fieldName": "label",
"propertyChain": [
"http://www.w3.org/2000/01/rdf-schema#label"
],
"indexed": true,
"stored": true,
"analyzed": true,
"multivalued": true,
"facet": true
}
],
"types": [
"urn:type"
],
"stripMarkup": false
}
''' .
}
Соединитель будет индексировать все значения rdfs:label
для всех классов urn:type
.
Проверка поиска префикса
PREFIX : <http://www.ontotext.com/connectors/lucene#>
PREFIX inst: <http://www.ontotext.com/connectors/lucene/instance#>
SELECT ?entity {
?search a inst:my_index ;
:query "label:Foo*" ;
:entities ?entity .
}
База данных возвращает urn:1
и urn:2