Есть ли ярлык для создания класса на языке онтологии N3/Turtle

Вот как я знаю, чтобы создать класс в N3:

:Person a rdfs:Class.

А вот как указать, что конкретный ресурс является экземпляром этого класса:

:Pat a :Person.

Проблема: я хочу создать класс с более чем 20000 экземплярами (сгенерированными программно). Написание всего :Pat a :Person. для моих 20000 экземпляров делает файл онтологии многословным.

Вопрос: есть ли способ сделать файл меньше?

2 ответа

Решение

Вы можете определить собственный префикс для полного URI класса, а затем просто использовать префикс для ссылки на класс:

@prefix : <http://example.com/myOntology#>.
@prefix x: <http://example.com/myOntology#MyClass>.

:Alice a x: .
:Bob a x: .
:Charlie a x: .

Это не совсем читабельно, но настолько коротко, насколько это возможно.

Я согласен с Антуаном, что в этом обмане нет никакого смысла. Дисковое пространство дешево, и этот материал хорошо сжимается для передачи по сети, а для обработки в приложении он будет расширен в любом случае.

Если вы действительно используете N3, а не Turtle (в чем я сомневаюсь), вы можете использовать @is ... @of ключевые слова, как это:

:Person  a  rdfs:Class;
    @is a @of  :Pat, :Bob, :Chris, :Cindy, :Suzy .

Вряд ли есть какой-либо инструментарий Turtle, позволяющий это сделать.

На public-rdf-comments@w3.org была также длинная дискуссионная ветка о добавлении этой функции в Turtle (которая в настоящее время публикуется W3C в качестве рабочего проекта последнего вызова), начиная с комментария Тима Бернерса. Ли Затем последовал комментарий Дэйва Беккета с просьбой не включать эту функцию и снова длинную ветку. Затем было хорошее резюме позиций с комментарием Гэвина Каротерса, редактора спецификации Turtle в текущей рабочей группе RDF.

Однако я сомневаюсь, что это станет особенностью Turtle, когда она в конечном итоге будет стандартизирована.

Кстати, в чем проблема наличия 20 000 записей, когда все они сгенерированы (и я думаю, проанализированы) программно? Если вам нужно обмениваться таким большим количеством данных по сети, вы можете легко их сжать. Или вы можете использовать синтаксис компактной сериализации, такой как HDT, но существует несколько реализаций.

Другие вопросы по тегам