Как загрузить ограничения и конструкторы SPARQL/SPIN, созданные в TopBraid Composer, для использования в Sesame в репозитории с поддержкой SPIN?
Я успешно сгенерировал и протестировал ограничения SPIN (используя SPARQL ASK
запросы) в онтологии OWL/RDF с использованием TopBraid Composer Maestro Edition версии 5.1.1. Теперь я хотел бы проверить эти ограничения SPIN в Сезам. Как я могу получить в Sesame свои ограничения SPIN, определения классов, определения свойств и тестовых лиц, содержащихся в онтологии OWL, созданной в TopBraid COmposer Maestro Edition?
Я использую Сезам OpenRDF Workbench:
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 OpenRDF 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 add RDF File / RDF File File, в результате чего появилось сообщение об ошибке выше.
Чтобы опередить некоторые возможные направления ответа, которые не помогут в моем конкретном случае:
- Я специально хочу использовать конструкторы и ограничения SPIN, а не SWRL или другой язык правил.
- Хотя я преуспел в TopBraid Composer Maestro Edition и высоко ценю помощь, которую я получил от TopQuadrant, я не могу позволить себе лицензию TopBraid Live, необходимую для использования моих конструкторов SPIN и ограничений при взаимодействии с другими компьютерами. (TopBraid Composer Maestro Edition имеет конечную точку SPARQL, но эта конечная точка доступна только с хост-компьютера через localhost.) Я также хочу определить, накладывает ли реализация Sesame некоторые ограничения на конструкторы SPIN и те же ограничения, что и инструменты TopBraid.
1 ответ
Мне удалось успешно загрузить RDF из TopBraid Composer Free Edition, изменив способ добавления RDF в Sesame и избегая создания экземпляров классов в RDF, откладывая его с помощью SPARQL UPDATE
запрос выполнен, используя вместо этого рабочее место Modify/SPARQL Update.
В частности, сообщение об ошибке в моем исходном сообщении появилось в результате "использования базового URI в качестве идентификатора контекста". Этот параметр установлен по умолчанию в Sesame Workbench Modify/Add. Если снять этот флажок, мой RDF загружается в график / контекст по умолчанию, где он работает. Технически я рассматриваю это как предотвращение проблемы, а не ее решение, поскольку RDF должен был бы быть в состоянии загрузить также и в названный граф / контекст, но пока мне это не нужно.
После устранения этой ошибки в моем файле RDF были созданы экземпляры некоторых пользователей, что вызвало проблемы при загрузке в Sesame. Я избежал этой проблемы, используя запрос SPARQL Update для создания моих тестовых экземпляров. Вот пример:
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 .
}