Как загрузить ограничения и конструкторы SPARQL/SPIN, созданные в TopBraid Composer, для использования в Sesame в репозитории с поддержкой SPIN?

Я успешно сгенерировал и протестировал ограничения SPIN (используя запросы SPARQL ASK) в онтологии OWL/RDF, используя TopBraid Composer Maestro Edition версии 5.1.1. Теперь я хотел бы проверить эти ограничения SPIN в Sesame. Как мне перенести в Sesame ограничения SPIN, определения классов, определения свойств и тестовых индивидуумов, содержащиеся в онтологии OWL, созданной в TopBraid COmposer Maestro Edition?

Я использую рабочую среду Sesame OpenRDF:

System Information
Application Information
Application Name    OpenRDF Workbench
Version 4.1.2
Runtime Information
Operating System    Windows 8.1 6.3 (amd64)
Java Runtime    Oracle Corporation Java HotSpot(TM) 64-Bit Server VM (1.8.0_91)
Process User    Greg
Memory
Used    357 MB
Maximum 3463 MB

Мои ограничения, классы, свойства и отдельные примеры содержатся в одном файле RDF в TopBraid Composer Maestro Edition.

Я попытался использовать команду Sesame Open RDF workbench Modify/Add для извлечения RDF-файла, созданного TopBraid Maestro Edition, но получаю сообщение об ошибке, которое, по-видимому, связано с пустым узлом:

javax.servlet.ServletException: org.openrdf.repository.RepositoryException: org.openrdf.repository.RepositoryException: org.openrdf.sail.SailException: org.openrdf.query.QueryEvaluationException: Multiple statements for pattern: _:node1alqlr2eix590 http://spinrdf.org/sp#where null

Возможно, я неправильно экспортирую из TopBraid Composer Maestro Edition? Я использовал общий экспорт RDF-файла в файловую систему в TopBraid Composer Maestro Edition, а также использовал команду Sesame OpenRDF workbench add RDF File / RDF Data File, что привело к приведенному выше сообщению об ошибке.

Чтобы упредить некоторые возможные направления ответов, которые не помогли бы в моем конкретном случае:

  1. Я специально хочу использовать конструкторы и ограничения SPIN, а не SWRL или другой язык правил.
  2. Несмотря на то, что я успешно освоил TopBraid Composer Maestro Edition и ценю помощь, полученную от TopQuadrant, я не могу позволить себе лицензию TopBraid Live, необходимую для использования моих конструкторов SPIN и ограничений при взаимодействии с другими компьютерами. (TopBraid Composer Maestro Edition имеет конечную точку SPARQL, но эта конечная точка доступна только с хост-компьютера через локальный хост.) Я также хочу определить, налагает ли реализация Sesame некоторые из тех же ограничений на ограничения SPIN и конструкторы, что и инструменты TopBraid.

person Greg Cox    schedule 23.06.2016    source источник
comment
Вы выбрали тип репозитория Sesame с аргументацией SPIN? См. поддержку сервера Sesame для SPIN.   -  person scotthenninger    schedule 23.06.2016
comment
Да, Скотт, я выбрал хранилище в памяти с поддержкой SPIN+RDFS. Я хотел включить это в свой вопрос, но он не попал. Я полагаю, что сообщение об ошибке ссылается на Sail, который предоставляет реализацию SPIN Sesame. Также обратите внимание, что RDF-файл, который я пытаюсь импортировать, относительно небольшой, всего менее 2000 фактов, поэтому проблем с памятью быть не должно.   -  person Greg Cox    schedule 24.06.2016
comment
Поддержка SPIN в Sesame / RDF4J все еще находится в стадии бета-тестирования, и вполне возможно, что вы обнаружили ошибку. Не могли бы вы отправить отчет об ошибке с соответствующими подробностями (включая фактический файл RDF/SPIN, который вызывает проблему)?   -  person Jeen Broekstra    schedule 24.06.2016
comment
Спасибо, Джин Брокстрат. Работа предназначена для Министерства обороны США. Хотя она не классифицирована, я все же должен убрать пару вещей из онтологии и убедиться, что она по-прежнему имеет ту же проблему. Я могу сохранить одно из ограничений, не беспокоясь о раскрытии того, чего не должен. Затем, если проблема не устранена, я могу отправить отчет об ошибке. Если проблема не сохраняется, это само по себе будет важной подсказкой.   -  person Greg Cox    schedule 24.06.2016
comment
Спасибо за переформатирование, TallTed. Я постараюсь отформатировать его лучше при отправке в следующий раз. Я еще не знаком с инструментами форматирования вопросов.   -  person Greg Cox    schedule 24.06.2016
comment
О проблеме сообщается на странице github.com/eclipse/rdf4j/issues/195.   -  person Jeen Broekstra    schedule 25.06.2016
comment
Спасибо за ссылку на мой отчет о проблеме, Джин Брукстра. Я должен сделать это сам в будущем. Новичок еще...   -  person Greg Cox    schedule 25.06.2016


Ответы (1)


Мне удалось успешно загрузить RDF из TopBraid Composer Free Edition, изменив способ добавления RDF в Sesame и отказавшись от создания экземпляров классов в RDF, отложив это с помощью запроса SPARQL UPDATE, выполненного с использованием рабочей среды Modify/SPARQL Update.

В частности, сообщение об ошибке в моем исходном сообщении возникло из-за «использовать базовый URI в качестве идентификатора контекста». Эта опция включена по умолчанию в Sesame Workbench Modify/Add. Снятие этого флажка загружает мой RDF в график/контекст по умолчанию, где он работал. Технически я рассматриваю это как избежание проблемы, а не как ее решение, поскольку RDF также должен был иметь возможность загружаться в именованный граф/контекст, но пока мне это не нужно.

Добавить RDF в граф/контекст по умолчанию, сняв флажок "использовать базовый URI в качестве идентификатора контекста"

После устранения этой ошибки в моем файле RDF были созданы экземпляры некоторых лиц, которые вызывали проблемы при загрузке в Sesame. Я избежал этой проблемы, используя запрос обновления SPARQL для создания своих тестовых экземпляров. Вот пример:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sxxicc: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/SXXIComplianceCheck#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX sp: <http://spinrdf.org/sp#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX smf: <http://topbraid.org/sparqlmotionfunctions#>
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
PREFIX spl: <http://spinrdf.org/spl#>
PREFIX spin: <http://spinrdf.org/spin#>
PREFIX arg: <http://spinrdf.org/arg#>
PREFIX SXXIComplianceCheckIndividuals: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/SXXIComplianceCheckIndividuals#>
PREFIX sxxicci: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/SXXIComplianceCheckIndividuals#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

INSERT DATA
{
   sxxicci:TestPub7Proposal a sxxicc:Pub7Proposal ;
           sxxicc:pub7ProposalHasDataItem sxxicci:testPub7Proposal_DataItem005 ;
           sxxicc:pub7ProposalHasDataItem sxxicci:testPub7Proposal_DataItem017 ;
           sxxicc:pub7ProposalHasDataItem sxxicci:testPub7Proposal_DataItem102 .

   sxxicci:testPub7Proposal_DataItem005 a sxxicc:Pub7DataItem005 ;
           sxxicc:pub7DataItemHasStringValue "S"^^xsd:string .

   sxxicci:testPub7Proposal_DataItem102 a sxxicc:Pub7DataItem102 ;
           sxxicc:pub7DataItemHasStringValue "AF  881234"^^xsd:string .

   sxxicci:testPub7Proposal_DataItem017 a sxxicc:Pub7DataItem017 ;
           sxxicc:pub7DataItemHasStringValue "U"^^xsd:string .
}
person Greg Cox    schedule 30.06.2016