通过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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...