GraphDB 拒绝 OGC GeoSparql SHACL

问题描述 投票:0回答:1

问题:为什么 GraphDB 拒绝 OGC GeoSparql SHACL 约束?

背景

GraphDB 支持 针对传入和现有数据进行 SHACL 验证。 OGC 为 GeoSparql 标准提供了shapes,并在形状文件中包含了传递和非传递数据。

我的存储库设置为启用 SHACL,启用 GeoSparql 插件,并且默认命名图形用于形状。

将形状插入到形状的默认命名图形中时,

http://rdf4j.org/schema/rdf4j#SHACLShapeGraph
,我遇到以下异常和堆栈跟踪

org.eclipse.rdf4j.repository.RepositoryException: org.eclipse.rdf4j.sail.SailException: Invalid shacl constraint pattern: "^\s*$|^\s*({)(.*)(})\s*$"^^<http://www.w3.org/2001/XMLSchema#string>

我实际上并没有在形状中看到这种模式,这就是我的困惑开始的地方。我还能够使用 pyshacl 毫无问题地处理形状,所以我很好奇这是否可能是 GraphDB 中的某个错误。

21:01:53.284 [repository-manager-6] INFO  c.o.rio.parallel.ParallelLoader - Using 1 threads for inference
21:01:53.350 [repository-manager-6] INFO  o.eclipse.rdf4j.sail.shacl.ShaclSail - Shapes will be persisted in: /Users/thomas/Library/Application Support/GraphDB/data/repositories/GeoSPARQL-SHACL-Test/shapes-graph/
21:01:58.359 [repositories/GeoSPARQL-SHACL-Test] INFO  o.e.r.h.s.r.n.NamespacesController - GET namespace list
21:01:58.359 [repositories/GeoSPARQL-SHACL-Test] INFO  o.e.r.h.s.r.n.NamespacesController - GET namespace list
21:01:58.363 [repositories/GeoSPARQL-SHACL-Test] INFO  o.e.r.h.s.r.TupleQueryResultView - Request for query 3392903 is finished
21:01:58.364 [repositories/GeoSPARQL-SHACL-Test] INFO  o.e.r.h.s.r.TupleQueryResultView - Request for query 3392903 is finished
21:02:15.760 [import-task-GeoSPARQL-SHACL-Test-1] ERROR c.o.f.impex.StringImportRunnableTask - Could not import file
org.eclipse.rdf4j.repository.RepositoryException: org.eclipse.rdf4j.sail.SailException: Invalid shacl constraint pattern: "^\s*$|^\s*({)(.*)(})\s*$"^^<http://www.w3.org/2001/XMLSchema#string>
    at org.eclipse.rdf4j.repository.sail.SailRepositoryConnection.addWithoutCommit(SailRepositoryConnection.java:398)
    at com.ontotext.trree.monitorRepository.MonitorRepositoryConnection.addWithoutCommit(MonitorRepositoryConnection.java:367)
    at org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection.add(AbstractRepositoryConnection.java:436)
    at org.eclipse.rdf4j.repository.util.RDFInserter.addStatement(RDFInserter.java:64)
    at org.eclipse.rdf4j.repository.util.AbstractRDFInserter.handleStatement(AbstractRDFInserter.java:184)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.reportStatement(TurtleParser.java:1123)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseObject(TurtleParser.java:454)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseObjectList(TurtleParser.java:375)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parsePredicateObjectList(TurtleParser.java:370)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseTriples(TurtleParser.java:335)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseStatement(TurtleParser.java:203)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parse(TurtleParser.java:165)
    at org.eclipse.rdf4j.repository.util.RDFLoader.loadInputStreamOrReader(RDFLoader.java:304)
    at org.eclipse.rdf4j.repository.util.RDFLoader.load(RDFLoader.java:249)
    at org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection.add(AbstractRepositoryConnection.java:351)
    at com.ontotext.trree.monitorRepository.MonitorRepositoryConnection.add(MonitorRepositoryConnection.java:175)
    at com.ontotext.trree.parallel.InterruptableConnectionWrapper.add(InterruptableConnectionWrapper.java:60)
    at com.ontotext.forest.impex.ParallelAwareImporter.lambda$add$3(ParallelAwareImporter.java:96)
    at com.ontotext.forest.impex.ParallelAwareImporter.wrapInBeginCommit(ParallelAwareImporter.java:143)
    at com.ontotext.forest.impex.ParallelAwareImporter.add(ParallelAwareImporter.java:96)
    at com.ontotext.forest.impex.StringImportRunnableTask.load(StringImportRunnableTask.java:34)
    at com.ontotext.forest.impex.ImportRunnableTask.run(ImportRunnableTask.java:85)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.rdf4j.sail.SailException: Invalid shacl constraint pattern: "^\s*$|^\s*({)(.*)(})\s*$"^^<http://www.w3.org/2001/XMLSchema#string>
    at org.eclipse.rdf4j.sail.shacl.GraphDBShaclSailConnection.validateShaclPattern(GraphDBShaclSailConnection.java:119)
    at org.eclipse.rdf4j.sail.shacl.GraphDBShaclSailConnection.addStatement(GraphDBShaclSailConnection.java:74)
    at org.eclipse.rdf4j.repository.sail.SailRepositoryConnection.addWithoutCommit(SailRepositoryConnection.java:394)
    ... 26 common frames omitted
Caused by: java.util.regex.PatternSyntaxException: Illegal repetition near index 12
^\s*$|^\s*({)(.*)(})\s*$
            ^
    at java.base/java.util.regex.Pattern.error(Unknown Source)
    at java.base/java.util.regex.Pattern.closure(Unknown Source)
    at java.base/java.util.regex.Pattern.sequence(Unknown Source)
    at java.base/java.util.regex.Pattern.expr(Unknown Source)
    at java.base/java.util.regex.Pattern.group0(Unknown Source)
    at java.base/java.util.regex.Pattern.sequence(Unknown Source)
    at java.base/java.util.regex.Pattern.expr(Unknown Source)
    at java.base/java.util.regex.Pattern.compile(Unknown Source)
    at java.base/java.util.regex.Pattern.<init>(Unknown Source)
    at java.base/java.util.regex.Pattern.compile(Unknown Source)
    at org.eclipse.rdf4j.sail.shacl.GraphDBShaclSailConnection.validateShaclPattern(GraphDBShaclSailConnection.java:116)
    ... 28 common frames omitted
rdf graphdb shacl geosparql
1个回答
0
投票

正如 UninformedUser 提到的,OGC 提供的正则表达式与 Java 的正则表达式解析器不兼容。此外,GraphDB 目前不支持 OGC GeoSPARQL 1.1 SHACL 语法。

© www.soinside.com 2019 - 2024. All rights reserved.