如何解决通过REST HTTP使用SPARQL查询命名图
我能够通过 HTTP REST 成功填充命名图,如下所示 https://docs.aws.amazon.com/neptune/latest/userguide/load-api-reference-load.html
curl -d "@data.json" -H "Content-Type: application/json" -X POST https://co-neptune-db-cluster-myname.cluster-xxxxxxxxxx.us-east-1.neptune.amazonaws.com:8182/loader
其中 data.json 文件为:
{
"source": "s3://my-bucket-name/dir/","format": "csv","iamRoleArn": "arn:aws:iam::xxxxxxxxxx:role/co-neptune-to-s3-access-role-dev-myname","mode": "AUTO","region": "us-east-1","failOnError": "FALSE","parallelism": "OVERSUBSCRIBE","parserConfiguration": {
"baseUri": "http://aws.amazon.com/neptune/default","namedGraphUri": "http://aws.amazon.com/account-123456789012-temp"
},"updateSingleCardinalityProperties": "FALSE"
}
所以我希望我的数据存储在名为http://aws.amazon.com/account-123456789012-temp
的图形中,内容来自源S3存储桶s3://my-bucket-name/dir/
。
我可以在使用克里姆林宫的 HTTP REST 查询时看到这些数据,如此处https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-rest.html
所述curl -X POST -d '{"gremlin":"g.V().limit(10)"}' https://co-neptune-db-cluster-myname.cluster-xxxxxxxxxx.us-east-1.neptune.amazonaws.com:8182?gremlin
但是,按照https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-sparql-http-rest.html所述使用 SPARQL 查询时,我在海王星中看不到任何数据:
$ curl -X POST --data-binary 'query=select ?s ?p ?o where {?s ?p ?o} limit 10' https://co-neptune-db-cluster-myname.cluster-xxxxxxxxxx.us-east-1.neptune.amazonaws.com:8182/sparql
如何使用 SPARQL 查询相同的数据?考虑到我将拥有不同的命名图,因此需要在我的请求中设置特定图的名称。
解决方法
如今,海王星不支持属性图和RDF之间的互操作性。在将数据加载到群集之前,您需要选择要使用的框架。如果通过CSV加载数据,则只能在“属性图”模型中使用(使用Gremlin进行查询)。如果使用RDF文件格式(turtle,rdfxml,ntriples或nquads)之一加载数据,则只能通过SPARQL查询它。
Neptune确实支持将两个模型的数据存储在同一群集中,但是您需要有效地加载数据的两个副本(一个在属性图中,另一个在RDF中)。
此外,仅当批量加载RDF文件格式之一时,才支持批量加载器的parserConfiguration
参数。它对加载属性图(CSV)数据没有影响。
提供了一个实用程序,用于将属性图CSV文件转换为RDF nquads文件[1]。
[1] https://github.com/aws/amazon-neptune-csv-to-rdf-converter
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。