2015-02-23 6 views
0

Я использую Йену, чтобы читать онтологию, и пока она работает очень хорошо. К сожалению, я не смог понять, как использовать компактный uris, который я определил в модели. Я определил префиксы, используя метод модели setNSPrefix(String prefix, String uri). Когда я пытаюсь извлечь утверждения с помощью префикса, я ничего не получаю. Кроме того, когда я успешно извлекаю заявление, он содержит полный uri вместо компактного, который я определил. Он даже сделает это для XSD URI http://www.w3.org/2001/XMLSchema#Использование компактного URI в Йене

Например, я использую Ури http://www.example.com#, я определил мое отображение префикса, как ex, и мое заявление является http://www.example.com#father http://www.example.com#parentOf http://www.example.com#child, где отец является предметом, parentOf является сказуемое , а дочерний объект - это объект. Если я попытаюсь получить его с помощью ex:father, я не получаю никаких результатов, и когда я получу заявление, полный uri существует для объекта, предиката и объекта. Я видел, что он использует префикс вместо uri, когда я делаю model.write(OutputStream), но это не особенно полезно для меня. Могу ли я использовать префикс в качестве замены для ури, как я пытался это сделать, или это не то, что Йена предоставит мне?

ответ

1

Когда я пытаюсь получить заявления с использованием префикса, я ничего не получаю.

Вы не можете сделать, например,

model.getResource("ex:foo")` 

Вы должны сделать

model.getResource("http://example.org/foo"); 

Вы можете сделать это проще, конечно же,

String EX = "http://example.org/"; 
model.getResource(EX+"foo"); 

Префиксы действительно предназначены для того, чтобы сделать сериализации более приятными читать и писать.

+0

Итак, когда я получаю заявление, основанное на ресурсе, есть ли способ показать префикс вместо полного uri или он находится в подобной ситуации? Например, statement.getObject() вернет 'http: // www.example.com # child', когда я действительно хочу' ex: child'. – endorphins

+0

Нет общего способа сделать это. Что, если, например, в модели были определены два префикса: «ex: http: //www.example.com#» и «ex2: ex: http: //www.example.com#chi»? Вы хотите, чтобы ex: child или ex2: ld? Что делать, если нет префикса? Что делать, если это не абсорбируемый IRI? Если вам нужно что-то подобное, вам придется сворачивать самостоятельно, проверяя, может ли данный IRI сокращаться любым из префиксов, объявленных в модели. –

+0

Хорошо, вот что я подумал, что мне придется это делать. Моя мысль заключалась в том, чтобы захватить отображение префикса из модели, использовать это, чтобы увидеть, имеет ли uri префикс, а затем записать его как этот префикс вместо полного uri. – endorphins