通过 REST HTTP 使用 SPARQL 查询命名图
Query Named Graph with SPARQL over REST HTTP
我能够通过 HTTP REST 成功填充 Named Graph,如下所示
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 和 Gremlin 查询时看到这些数据,如此处所述 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
但是在使用 SPARQL 查询时 https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-sparql-http-rest.html 我 在我的 Neptune 中看不到任何数据:
$ 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 查询相同的数据?考虑到我会有不同的命名图,因此需要在我的请求中设置特定图的名称。
目前,Neptune 不支持 属性 Graph 和 RDF 之间的互操作性。在将数据加载到集群之前,您需要选择要使用的框架。如果通过 CSV 加载数据,它只能在 属性 图形模型中使用(使用 Gremlin 查询它)。如果使用其中一种 RDF 文件格式(turtle、rdfxml、ntriples 或 nquads)加载数据,则只能通过 SPARQL 查询它。
Neptune 确实支持在同一个集群中存储两个模型的数据,但是您需要有效地加载数据的两个副本(一个在 属性 Graph 中,另一个在 RDF 中)。
此外,只有在批量加载其中一种 RDF 文件格式时才支持批量加载程序的 parserConfiguration
参数。它对加载 属性 图表 (CSV) 数据没有影响。
提供了一个实用程序,可将 属性 Graph CSV 文件转换为 RDF nquads 文件 [1]。
[1] https://github.com/aws/amazon-neptune-csv-to-rdf-converter
我能够通过 HTTP REST 成功填充 Named Graph,如下所示 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 和 Gremlin 查询时看到这些数据,如此处所述 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
但是在使用 SPARQL 查询时 https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-sparql-http-rest.html 我 在我的 Neptune 中看不到任何数据:
$ 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 查询相同的数据?考虑到我会有不同的命名图,因此需要在我的请求中设置特定图的名称。
目前,Neptune 不支持 属性 Graph 和 RDF 之间的互操作性。在将数据加载到集群之前,您需要选择要使用的框架。如果通过 CSV 加载数据,它只能在 属性 图形模型中使用(使用 Gremlin 查询它)。如果使用其中一种 RDF 文件格式(turtle、rdfxml、ntriples 或 nquads)加载数据,则只能通过 SPARQL 查询它。
Neptune 确实支持在同一个集群中存储两个模型的数据,但是您需要有效地加载数据的两个副本(一个在 属性 Graph 中,另一个在 RDF 中)。
此外,只有在批量加载其中一种 RDF 文件格式时才支持批量加载程序的 parserConfiguration
参数。它对加载 属性 图表 (CSV) 数据没有影响。
提供了一个实用程序,可将 属性 Graph CSV 文件转换为 RDF nquads 文件 [1]。
[1] https://github.com/aws/amazon-neptune-csv-to-rdf-converter