Установите базовый URI при загрузке троек с использованием Jena tdbloader
Я хотел бы установить базовый URL-адрес при загрузке данных в Fuseki с помощью tdbloader
или же tdbloader2
, В настоящее время в качестве базы используется локальный путь, а это не то, что я хочу. Пример:
# mytriple.ttl
@prefix owl: <http://www.w3.org/2002/07/owl#> .
<#myitem> a owl:Thing .
./tdbloader --loc /path/to/database /path/to/local/file/mytriple.ttl
# sparql query example
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?subject ?predicate ?object
WHERE {
?subject ?predicate ?object .
?subject a owl:Thing .
}
Результат запроса:
<file:///path/to/local/file/mytriple.ttl#myitem> rdf:type owl:Thing
Это (1) не очень чисто, чтобы иметь в базе данных и (2) это приводит к проблемам с обслуживаемостью, когда я хочу запросить конкретный элемент, когда необходимо указать базу:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?subject ?predicate ?object
WHERE {
?subject a owl:Thing .
<file:///path/to/local/file/mytriple.ttl#myitem> ?predicate ?object .
}
или же
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
BASE <file:///path/to/local/file/mytriple.ttl>
SELECT ?subject ?predicate ?object
WHERE {
?subject a owl:Thing .
<#myitem> ?predicate ?object .
}
Как я могу указать другую базу в tdbloader
, например <mydomain:myontology#>
?
1 ответ
Положить в BASE
или же @base
утверждение в данные. Таким образом, данные будут стабильными - они будут обеспечивать одинаковые тройки при использовании в любом месте.
Или чтобы избежать редактирования файла:
cat "MyBase.ttl" "MyData.ttl" > D.ttl
tdbloader --loc DB D.ttl