2016-10-27 5 views
1

Я хотел бы установить базовый url, когда я загружаю данные в Fuseki, используя tdbloader или tdbloader2. В настоящее время локальный путь используется как база, чего я не хочу. Пример:Установить базовый URI при загрузке троек с помощью Jena tdbloader

# 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 
Смежные вопросы