Есть ли ярлык для создания класса на языке онтологии 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, но существует несколько реализаций.