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

如何在支持SPIN的存储库中加载在TopBraid Composer中创建的SPARQL/SPIN约束和构造函数,以便在Sesame中使用?,sparql,rdf,sesame,topbraid-composer,spin-rdf,Sparql,Rdf,Sesame,Topbraid Composer,Spin Rdf,我已经使用TopBraid Composer Maestro Edition 5.1.1版在OWL/RDF本体中成功地生成并测试了自旋约束(使用SPARQLASKquerys)。我现在想在Sesame中测试这些自旋约束。如何将TopBraid COmposer Maestro Edition中编写的OWL本体中包含的自旋约束、类定义、属性定义和测试个体转换为Sesame 我正在使用Sesame OpenRDF工作台: System Information Application Informat

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

我正在使用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
我的约束、类、属性和示例个体包含在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:模式的多个语句:\节点1 ALQLR2EIX590http://spinrdf.org/sp#where 空

也许我没有正确地从TopBraid作曲家大师版导出?在TopBraid Composer Maestro Edition中,我使用了RDF文件到文件系统的通用导出,并且使用了Sesame OpenRDF workbench add RDF file/RDF Data file命令,导致了上述错误消息

为了抢先回答一些可能对我的具体情况没有帮助的问题:

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

  • 通过修改我在Sesame中添加RDF的方式,并避免在RDF中实例化类,通过使用
    SPARQL更新执行的查询(而不是使用workbench Modify/SPARQL更新),我能够成功地从TopBraid Composer Free Edition加载RDF

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

    清除此错误后,我的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 .
    }
    
    前缀rdf:
    前缀sxxicc:
    前缀owl:
    前缀sp:
    前缀rdfs:
    前缀smf:
    前缀fn:
    前缀spl:
    前缀旋转:
    前缀arg:
    前缀SXXIComplianceCheckIndividuals:
    前缀sxxicci:
    前缀xsd:
    插入数据
    {
    sxxicci:testpub7提案a sxxicc:pub7提案;
    sxxicc:pub7ProposalHasDataItem sxxicci:testPub7Proposal_DataItem005;
    sxxicc:pub7ProposalHasDataItem sxxicci:testPub7Proposal_DataItem017;
    sxxicc:pub7ProposalHasDataItem sxxicci:testPub7Proposal\u DataItem102。
    sxxicci:testPub7Proposal\u DataItem005 a sxxicc:Pub7DataItem005;
    sxxicc:pub7DataItemHasStringValue“S”^^xsd:string。
    sxxicci:testPub7Proposal\u DataItem102 a sxxicc:Pub7DataItem102;
    sxxicc:pub7DataItemHasStringValue“AF 881234”^^xsd:string。
    sxxicci:testPub7Proposal\u DataItem017 a sxxicc:Pub7DataItem017;
    sxxicc:pub7DataItemHasStringValue“U”^^xsd:string。
    }
    
    您是否选择了带有旋转推理的Sesame存储库类型?是的,Scott,我选择了一个支持SPIN+RDFS的内存存储。我本想把这一点包括在我的问题中,但没有包括在内。错误消息引用了Sail,我相信它提供了SPIN的Sesame实现。另外请注意,我尝试导入的RDF文件相对较小,总共不到2000个事实,因此内存中应该没有问题。Sesame/RDF4J中的SPIN支持仍然是测试版,很可能您发现了一个bug。您能否提交一份包含相关细节的bug报告(包括导致问题的实际RDF/SPIN文件)?谢谢Jeen Broekstrat。这项工作是国防部的。虽然它没有分类,但我还是应该从本体中去掉一些东西,确保它仍然存在相同的问题。我可以保留其中一个约束条件,而不用担心披露一些我不应该披露的东西。然后,假设问题仍然存在,我可以提交bug报告。如果这个问题没有持续下去,这本身就是一个重要的线索。谢谢你重新格式化,塔尔特。下次提交时,我会尽量把它格式化得更好。我还不熟悉问题格式工具。