如何加载在TopBraid Composer中创建的SPARQL / SPIN约束和构造函数,以便在支持SPIN的存储库中的Sesame中使用?

时间:2016-06-23 16:47:41

标签: sparql rdf sesame topbraid-composer spin-rdf

我已经使用TopBraid Composer Maestro Edition版本5.1.1在OWL / RDF本体中成功生成并测试了SPIN约束(使用SPARQL ASK查询)。我现在想在Sesame中测试这些SPIN约束。如何将我在TopBraid COmposer Maestro Edition中编写的OWL本体中包含的SPIN约束,类定义,属性定义和测试个体转换为芝麻?

我正在使用Sesame 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

我的约束,类,属性和示例个人包含在TopBraid Composer Maestro Edition下的一个RDF文件中。

我尝试使用Sesame Open RDF workbench Modify/Add命令来提取TopBraid Maestro Edition生成的RDF文件,但是我收到一条似乎与空白节点相关的错误:

  

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导出?我在TopBraid Composer Maestro Edition中使用了RDF文件的通用导出到文件系统,我使用了Sesame OpenRDF工作台添加RDF文件/ RDF数据文件命令,导致出现上述错误消息。

要取代某些可能的答案指示,这些指示在我的特定情况下无济于事:

  1. 我特别想要使用SPIN构造函数和约束,而不是 SWRL或其他规则语言。
  2. 虽然我在TopBraid Composer Maestro Edition中取得了成功并感谢我从TopQuadrant获得的帮助,但我无法负担在与其他计算机交互时使用我的SPIN构造函数和约束所需的TopBraid Live许可证。 (TopBraid Composer Maestro Edition有一个SPARQL端点,但该端点只能通过localhost从主机访问。)我还想确定Sesame实现是否对TopBraid工具执行的SPIN约束和构造器施加了一些相同的限制。

1 个答案:

答案 0 :(得分:1)

我能够通过修改我在Sesame中添加RDF的方式以及避免在RDF中实例化类来成功加载TopBraid Composer免费版中的RDF,并通过使用工作台执行的SPARQL UPDATE查询来推迟修改/ / SPARQL更新。

具体来说,我原始帖子中的错误消息来自“使用基URI作为上下文标识符”。默认情况下,在Sesame Workbench修改/添加中选中此选项。取消选中此框会将我的RDF加载到其工作的默认图形/上下文中。从技术上讲,我认为这是避免问题而不是解决问题,因为RDF应该能够加载到命名的图形/上下文中,但我现在不需要它。

Add RDF Into Default Graph/Context by Unckecking "use base URI as context identifier"

清除此错误后,我的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 .
}