ΠΠΎΠ·Π΄ΡΠ°Π², ΠΆΠΈΡΠ΅Π»ΠΈ Π½Π° Π₯Π°Π±ΡΠΎΠ²ΡΠΊ. Π ΠΎΡΠ°ΠΊΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΊΡΡΡΠ°
Π ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΊΠΎΠΈΡΠΎ Ρ
Π°ΡΠ΅ΡΠ²Π°ΠΌΠ΅
ΠΠ°ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅Ρ ΠΌΠ΅ ΠΎΡ Amazon Neptune
ΠΡΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΠ±Π΅ΡΠ°Π²Π°Ρ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΡΠΈΠ»Π½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΎΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½ΠΈ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠΈ. Π ΡΠ°ΠΊΠΈΠ²Π° Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π²ΡΠ² Π²ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±Π΅ΠΊΡΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΌΠ΅ Π½Π΅Π²Π΅ΡΠΎΡΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ Neptune
ΠΠ°Π±ΠΎΡΡΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π½Π° MusicBrainz ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠ°ΡΠΎ CSV Π΄ΡΠΌΠΏ Π½Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΠ±ΡΠΎ Π΄ΡΠΌΠΏΡΡ ΡΡΠ΄ΡΡΠΆΠ° ΠΎΠΊΠΎΠ»ΠΎ 93 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° Π² 157 ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠΎΠΊΠ°ΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΠΈ, ΡΡΠ±ΠΈΡΠΈΡ, Π·Π°ΠΏΠΈΡΠΈ, ΠΈΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ½ΠΈ, Π΄ΡΡΠ³ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Π·Π° Π²ΡΡΠ·ΠΊΠΈ β ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π²ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈ, Π΄ΡΡΠ³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡ ΠΈ Ρ.Π½... Π’Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Ρ Π³ΡΠ°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² RDF ΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 500 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°.
ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΎΠΏΠΈΡΠ° ΠΈ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΡΡΠ° Π½Π° ΠΏΠ°ΡΡΠ½ΡΠΎΡΠΈΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ°Π·ΠΈ Π±Π°Π·Π° ΠΎΡ Π·Π½Π°Π½ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΎΡΠ°ΠΊΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π· Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ»ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°.
ΡΠ΅Π³ΡΠ»ΠΈΡΠ°Π½Π΅
ΠΠ°ΠΊΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Amazon Neptune Π΅ Π»Π΅ΡΠ½ΠΎ. Π’Ρ Π΅ Π΄ΠΎΡΡΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°
ΠΠΊΡΠ°Π½Π½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° Π³ΡΡΠΏΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
Amazon ΠΊΠ°Π·Π²Π°, ΡΠ΅ Neptune ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π²ΡΡΡ
Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Ρ Π½ΠΈΡΠΊΠ° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ 120 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΈΠ΅ ΠΎΠ±Π°ΡΠ΅ ΡΠ΅ΡΡΠ²Π°Ρ
ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°ΠΈ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Ρ
ΠΌΠ΅ ΡΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ²Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ ΡΡΠ΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° Π³ΡΡΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° Neptune ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° neptune_query_timeout
ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ
ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΊ Π·Π°ΡΠ΅Π΄ΠΈΡ ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ MusicBrainz Π² Neptune.
ΠΡΡΠ·ΠΊΠΈ Π² ΡΡΠΎΠΉΠΊΠΈ
ΠΡΡΠ²ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ MusicBrainz Π² RDF ΡΡΠΎΠΉΠΊΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π·Π° Π²ΡΡΠΊΠ° ΡΠ°Π±Π»ΠΈΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ ΠΌΠ΅ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΊΠ°ΠΊ Π²ΡΡΠΊΠ° ΠΊΠΎΠ»ΠΎΠ½Π° Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² ΡΡΠΎΠΉΠΊΠ°ΡΠ°. Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ΅ΠΊΠΈ ΡΠ΅Π΄ ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»Ρ Π΅ ΡΡΠΏΠΎΡΡΠ°Π²Π΅Π½ Ρ Π΄Π²Π°Π½Π°Π΄Π΅ΡΠ΅Ρ RDF ΡΡΠΎΠΉΠΊΠΈ.
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/gid> "${gid}"^^<http://www.w3.org/2001/XMLSchema#string> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/name> "${name}"^^<http://www.w3.org/2001/XMLSchema#string> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/sort-name> "${sort_name}"^^<http://www.w3.org/2001/XMLSchema#string> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/begin-date> "${begin_date_year}-${begin_date_month}-${begin_date_day}"^^xsd:<http://www.w3.org/2001/XMLSchema#date> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/end-date> "${end_date_year}-${end_date_month}-${end_date_day}"^^xsd:<http://www.w3.org/2001/XMLSchema#date> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/type> <http://musicbrainz.foo/artist-type/${type}> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/area> <http://musicbrainz.foo/area/${area}> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/gender> <http://musicbrainz.foo/gender/${gender}> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/comment> "${comment}"^^<http://www.w3.org/2001/XMLSchema#string> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/edits-pending> "${edits_pending}"^^<http://www.w3.org/2001/XMLSchema#int> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/last-updated> "${last_updated}"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/ended> "${ended}"^^<http://www.w3.org/2001/XMLSchema#boolean> .
Π³ΡΡΠΏΠΎΠ²ΠΎ ΠΊΠ°ΡΠ²Π°Π½Π΅
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΠΈ Π² Neptune Π΅ ΡΡΠ΅Π· ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π³ΡΡΠΏΠΎΠ²ΠΎ ΠΊΠ°ΡΠ²Π°Π½Π΅ ΡΡΠ΅Π· S3. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΊΠ°ΡΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² S3, Π²ΠΈΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°ΡΠ΅ ΠΊΠ°ΡΠ²Π°Π½Π΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° POST Π·Π°ΡΠ²ΠΊΠ°. Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π±ΡΡ Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΠΊΠΎΠ»ΠΎ 24 ΡΠ°ΡΠ° Π·Π° 500 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΡΠΈΠΏΠ»Π΅ΡΠ°. ΠΡΠ°ΠΊΠ²Π°Ρ ΠΌΠ΅ Π΄Π° Π΅ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ.
curl -X POST -H 'Content-Type: application/json' http://your-neptune-cluster:8182/loader -d '{
"source" : "s3://your-s3-bucket",
"format" : "ntriples",
"iamRoleArn" : "arn:aws:iam::your-iam-user:role/NeptuneLoadFromS3",
"region" : "eu-west-1",
"failOnError" : "FALSE"
}'
ΠΠ° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΡΠΎΠ·ΠΈ Π΄ΡΠ»ΡΠ³ ΠΏΡΠΎΡΠ΅Ρ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Neptune, ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΎΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅Π·ΠΈ ΡΡΠΈΠΏΠ»Π΅ΡΠΈ Π²Π΅ΡΠ΅ Π±ΡΡ Π° Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈ. ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, Π½ΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΠΎΡΠ½Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ ΡΠ°Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Neptune ΡΡΠ°Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ.
ΠΡΠΈ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠΈΠ·Π½Π°ΡΠΈ Π² Neptune ΡΠ΅ Π½Π°ΡΡΠΊΠ½Π°Ρ ΠΌΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ.
{
"errorCode" : "PARSING_ERROR",
"errorMessage" : "Content after '.' is not allowed",
"fileName" : [...],
"recordNum" : 25
}
ΠΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ Π±ΡΡ Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅. ΠΡΠΌ Π΄Π½Π΅ΡΠ½Π° Π΄Π°ΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠΌΠ΅ ΡΠ°Π·Π±ΡΠ°Π»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ΅ Π΅ ΠΎΠ±ΡΡΠΊΠ°Π»ΠΎ Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π±ΠΈΡ Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Π»ΠΈ ΡΡΠΊ. Π’Π°Π·ΠΈ Π³ΡΠ΅ΡΠΊΠ° Π²ΡΠ·Π½ΠΈΠΊΠ½Π° Π·Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 1% ΠΎΡ Π²ΠΌΡΠΊΠ½Π°ΡΠΈΡΠ΅ ΡΡΠΎΠΉΠΊΠΈ. ΠΠΎ ΡΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Neptune, Π½ΠΈΠ΅ ΠΏΡΠΈΠ΅Ρ ΠΌΠ΅ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΠ°ΠΌΠΎ Ρ 99% ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΠΎΡ MusicBrainz.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠΎΠ²Π° Π΅ Π»Π΅ΡΠ½ΠΎ Π·Π° Ρ ΠΎΡΠ°ΡΠ°, Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΡΡ SPARQL, ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ RDF ΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π°Π½ΠΎΡΠΈΡΠ°Π½ΠΈ Ρ ΠΈΠ·ΡΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΡΠΈΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠΎΡΠΎΡΠ½ΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅
ΠΠ°ΠΊΡΠΎ Π±Π΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅, Π½ΠΈΠ΅ Π½Π΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Neptune ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Π° ΠΏΠΎ-ΡΠΊΠΎΡΠΎ ΠΊΠ°ΡΠΎ Π³ΡΠ²ΠΊΠ°Π²Π° ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ° ΡΠ΅ Π±Π°Π·Π° ΠΎΡ Π·Π½Π°Π½ΠΈΡ. Π’Π°ΠΊΠ° ΡΠ΅ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΠΌ Π½Π°ΡΠΈΠ½ΠΈ Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠΉΠΊΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π±Π°Π·Π°ΡΠ° ΠΎΡ Π·Π½Π°Π½ΠΈΡ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π½ΠΎΠ² Π°Π»Π±ΡΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ Π·Π½Π°Π½ΠΈΠ΅.
Neptune ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ ΡΡΠ΅Π· SPARQL Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠ°ΠΊΡΠΎ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΈΠ·Π²Π°Π΄ΠΊΠΈ. ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΈ Π΄Π²Π°ΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°.
ΠΠ΄Π½Π° ΠΎΡ ΡΠ΅Π»ΠΈΡΠ΅ Π½ΠΈ Π±Π΅ΡΠ΅ Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΠΏΠΎΡΠΎΡΠ΅Π½ Π½Π°ΡΠΈΠ½. ΠΠ±ΠΌΠΈΡΠ»Π΅ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π»Π±ΡΠΌ Π² Π½ΠΎΠ²Π° ΡΡΡΠ°Π½Π°. ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° MusicBrainz ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π·Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π°Π»Π±ΡΠΌΠΈ, ΡΠΈΠ½Π³Π»ΠΈ, EP-ΡΠ° ΠΈ Ρ.Π½., Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ Π½ΠΎΠ² Π·Π°ΠΏΠΈΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅-ΡΡΡΠ°Π½Π°. Π RDF ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄Π²Π΅ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠΉΠΊΠΈ.
INSERT DATA { <http://musicbrainz.foo/release-country/737041> <http://musicbrainz.foo/release> <http://musicbrainz.foo/release/435759> };INSERT DATA { <http://musicbrainz.foo/release-country/737041> <http://musicbrainz.foo/date-year> "2018"^^<http://www.w3.org/2001/XMLSchema#int> };
ΠΡΡΠ³Π° ΡΠ΅Π» Π±Π΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ Π½ΠΎΠ²ΠΈ Π·Π½Π°Π½ΠΈΡ ΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ°. ΠΠ° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π±ΡΠΎΡ ΠΈΠ·Π΄Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π» Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π» Π² ΠΊΠ°ΡΠΈΠ΅ΡΠ°ΡΠ° ΡΠΈ. Π’Π°ΠΊΠ°Π²Π° Π·Π°ΡΠ²ΠΊΠ° Π΅ Π΄ΠΎΡΡΠ° ΡΠ»ΠΎΠΆΠ½Π° ΠΈ ΠΎΡΠ½Π΅ΠΌΠ° Π½Π°Π΄ 20 ΠΌΠΈΠ½ΡΡΠΈ Π² Neptune, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ΅Π·ΠΈ Π½ΠΎΠ²ΠΈ Π·Π½Π°Π½ΠΈΡ Π² Π΄ΡΡΠ³Π° Π·Π°ΡΠ²ΠΊΠ°. Π’Π°ΠΊΠ° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΡΠΎΠΉΠΊΠΈ Ρ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊΡΠΌ Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ°, Π²ΡΠ²Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ°ΡΠ°.
INSERT {
?artist_credit <http://musicbrainz.foo/number-of-releases> ?number_of_releases
} WHERE {
SELECT ?artist_credit (COUNT(*) as ?number_of_releases)
WHERE {
?artist_credit <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit> .
?release_group <http://musicbrainz.foo/artist-credit> ?artist_credit .
?release_group <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/release-group> .
?release_group <http://musicbrainz.foo/name> ?release_group_name .
}
GROUP BY ?artist_credit
}
ΠΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΈ ΡΡΠΎΠΉΠΊΠΈ ΠΊΡΠΌ Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° ΠΎΡΠ½Π΅ΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π° Π²ΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ°.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π½Π΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΡΠ΅ΡΡΠΎ, Neptune ΡΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΡΠ΅ ΡΡΠΈΠ·Π½Π°ΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΎΠ±ΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΡΠΈΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
SPARQL Π·Π°ΡΠ²ΠΊΠΈ
Π‘ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΠΏΠΎΠ΄ΠΈΠ·Π²Π°Π΄ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π²ΡΡΡΠ° Π±ΡΠΎΡ Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΡΡΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π», Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ Π²ΡΠ²Π΅Π΄ΠΎΡ ΠΌΠ΅ ΠΏΡΡΠ²ΠΈΡ ΡΠΈΠΏ Π·Π°ΡΠ²ΠΊΠ°, Π½Π° ΠΊΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΠΌ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Neptune. Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π² Neptune Π΅ Π»Π΅ΡΠ½ΠΎ - ΠΈΠ·ΠΏΡΠ°ΡΠ΅ΡΠ΅ POST Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΎ ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° SPARQL, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
curl -X POST --data-binary 'query=SELECT ?artist ?p ?o where {?artist <http://musicbrainz.foo/name> "Elton John" . ?artist ?p ?o . }' http://your-neptune-cluster:8182/sparql
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π²Π½Π΅Π΄ΡΠΈΡ ΠΌΠ΅ Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π²ΡΡΡΠ° ΠΏΡΠΎΡΠΈΠ» Π½Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π», ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠΌΠ΅, Π²ΡΠ·ΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π° Π½Π° ΠΏΡΠΎΠΈΠ·Ρ ΠΎΠ΄. ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π»ΠΈΡΠ°, Π³ΡΡΠΏΠΈ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠΈ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΠ»Π²Π°ΠΌΠ΅ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π±ΡΠΎΡ Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΡΡΠ°, ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ Π°ΡΡΠΈΡΡΠΈ ΠΏΡΠ΅Π· Π³ΠΎΠ΄ΠΈΠ½Π°ΡΠ°. ΠΠ° ΡΠΎΠ»ΠΎΠ²ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π³ΡΡΠΏΠΈΡΠ΅, Π² ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΡΡ Π΅ ΡΡΠ°ΡΡΠ²Π°Π» Π²ΡΡΠΊΠ° Π³ΠΎΠ΄ΠΈΠ½Π°.
SELECT
?artist_name ?year
?releases_in_year ?releases_up_year
?artist_type_name ?releases
?artist_gender ?artist_country_name
?artist_begin_date ?bands
?bands_in_year
WHERE {
# Bands for each artist
{
SELECT
?year
?first_artist
(group_concat(DISTINCT ?second_artist_name;separator=",") as ?bands)
(COUNT(DISTINCT ?second_artist_name) AS ?bands_in_year)
WHERE {
VALUES ?year {
1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
1970 1971 1972 1973 1974 1975 1976 1977 1978 1979
1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
2010 2011 2012 2013 2014 2015 2016 2017 2018
}
?first_artist <http://musicbrainz.foo/name> "Elton John" .
?first_artist <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist> .
?first_artist <http://musicbrainz.foo/type> ?first_artist_type .
?first_artist <http://musicbrainz.foo/name> ?first_artist_name .
?second_artist <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist> .
?second_artist <http://musicbrainz.foo/type> ?second_artist_type .
?second_artist <http://musicbrainz.foo/name> ?second_artist_name .
optional { ?second_artist <http://musicbrainz.foo/begin-date-year> ?second_artist_begin_date_year . }
optional { ?second_artist <http://musicbrainz.foo/end-date-year> ?second_artist_end_date_year . }
?l_artist_artist <http://musicbrainz.foo/entity0> ?first_artist .
?l_artist_artist <http://musicbrainz.foo/entity1> ?second_artist .
?l_artist_artist <http://musicbrainz.foo/link> ?link .
optional { ?link <http://musicbrainz.foo/begin-date-year> ?link_begin_date_year . }
optional { ?link <http://musicbrainz.foo/end-date-year> ?link_end_date_year . }
FILTER (!bound(?link_begin_date_year) || ?link_begin_date_year <= ?year)
FILTER (!bound(?link_end_date_year) || ?link_end_date_year >= ?year)
FILTER (!bound(?second_artist_begin_date_year) || ?second_artist_begin_date_year <= ?year)
FILTER (!bound(?second_artist_end_date_year) || ?second_artist_end_date_year >= ?year)
FILTER (?first_artist_type NOT IN (<http://musicbrainz.foo/artist-type/2>, <http://musicbrainz.foo/artist-type/5>, <http://musicbrainz.foo/artist-type/6>))
FILTER (?second_artist_type IN (<http://musicbrainz.foo/artist-type/2>, <http://musicbrainz.foo/artist-type/5>, <http://musicbrainz.foo/artist-type/6>))
}
GROUP BY ?first_artist ?year
}
# Releases up to a year
{
SELECT
?artist
?year
(group_concat(DISTINCT ?release_name;separator=",") as ?releases)
(COUNT(*) as ?releases_up_year)
WHERE {
VALUES ?year {
1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
1970 1971 1972 1973 1974 1975 1976 1977 1978 1979
1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
2010 2011 2012 2013 2014 2015 2016 2017 2018
}
?artist <http://musicbrainz.foo/name> "Elton John" .
?artist_credit_name <http://musicbrainz.foo/artist-credit> ?artist_credit .
?artist_credit_name <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit-name> .
?artist_credit_name <http://musicbrainz.foo/artist> ?artist .
?artist_credit <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit> .
?release_group <http://musicbrainz.foo/artist-credit> ?artist_credit .
?release_group <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/release-group> .
?release_group <http://musicbrainz.foo/name> ?release_group_name .
?release <http://musicbrainz.foo/release-group> ?release_group .
?release <http://musicbrainz.foo/name> ?release_name .
?release_country <http://musicbrainz.foo/release> ?release .
?release_country <http://musicbrainz.foo/date-year> ?release_country_year .
FILTER (?release_country_year <= ?year)
}
GROUP BY ?artist ?year
}
# Releases in a year
{
SELECT ?artist ?year (COUNT(*) as ?releases_in_year)
WHERE {
VALUES ?year {
1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
1970 1971 1972 1973 1974 1975 1976 1977 1978 1979
1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
2010 2011 2012 2013 2014 2015 2016 2017 2018
}
?artist <http://musicbrainz.foo/name> "Elton John" .
?artist_credit_name <http://musicbrainz.foo/artist-credit> ?artist_credit .
?artist_credit_name <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit-name> .
?artist_credit_name <http://musicbrainz.foo/artist> ?artist .
?artist_credit <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit> .
?release_group <http://musicbrainz.foo/artist-credit> ?artist_credit .
?release_group <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/release-group> .
?release_group <http://musicbrainz.foo/name> ?release_group_name .
?release <http://musicbrainz.foo/release-group> ?release_group .
?release_country <http://musicbrainz.foo/release> ?release .
?release_country <http://musicbrainz.foo/date-year> ?release_country_year .
FILTER (?release_country_year = ?year)
}
GROUP BY ?artist ?year
}
# Master data
{
SELECT DISTINCT ?artist ?artist_name ?artist_gender ?artist_begin_date ?artist_country_name
WHERE {
?artist <http://musicbrainz.foo/name> ?artist_name .
?artist <http://musicbrainz.foo/name> "Elton John" .
?artist <http://musicbrainz.foo/gender> ?artist_gender_id .
?artist_gender_id <http://musicbrainz.foo/name> ?artist_gender .
?artist <http://musicbrainz.foo/area> ?birth_area .
?artist <http://musicbrainz.foo/begin-date-year> ?artist_begin_date.
?birth_area <http://musicbrainz.foo/name> ?artist_country_name .
FILTER(datatype(?artist_begin_date) = xsd:int)
}
ΠΠΎΡΠ°Π΄ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°ΠΊΠ°Π²Π° Π·Π°ΡΠ²ΠΊΠ°, Π±ΠΈΡ ΠΌΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΠΌ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΠΎΡΠΊΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π», ΠΊΠ°ΡΠΎ ΠΠ»ΡΡΠ½ ΠΠΆΠΎΠ½, Π½ΠΎ Π½Π΅ ΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΠΈ. Neptune ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° ΡΠ°ΠΊΠ°Π²Π° Π·Π°ΡΠ²ΠΊΠ° ΡΡΠ΅Π· ΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° ΡΠΈΠ»ΡΡΠΈ Π² ΠΏΠΎΠ΄ΠΈΠ·Π±ΠΎΡΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π²ΡΡΠΊΠ° ΡΠ΅Π»Π΅ΠΊΡΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΡΡΠ½ΠΎ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π».
Neptune ΠΈΠΌΠ° ΠΊΠ°ΠΊΡΠΎ ΠΏΠΎΡΠ°ΡΠΎΠ²ΠΈ, ΡΠ°ΠΊΠ° ΠΈ I/O ΡΠ°ΠΊΡΠΈ. ΠΠ° Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° Neptune, ΠΊΠΎΠΉΡΠΎ ΡΡΡΡΠ²Π° $0,384/ΡΠ°Ρ. Π ΡΠ»ΡΡΠ°Ρ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»Π° Π·Π° Π΅Π΄ΠΈΠ½ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊ, Amazon Π½ΠΈ ΡΠ°ΠΊΡΡΠ²Π° Π΄Π΅ΡΠ΅ΡΠΊΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ I/O ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅Π½Π° ΠΎΡ $0.02.
ΠΡΠΎΠ΄ΡΠΊΡΠΈΡ
ΠΡΡΠ²ΠΎ, Amazon Neptune ΡΠΏΠ°Π·Π²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΡΡΠ° ΡΠΈ. ΠΠ°ΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½Π° ΡΡΠ»ΡΠ³Π°, ΡΠΎΠ²Π° Π΅ Π³ΡΠ°ΡΠΈΡΠ½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΡΡΠΎ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π»Π΅ΡΠ½Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΡΠΎ Π½Π°ΡΠΈΡΠ΅ ΠΏΠ΅Ρ ΠΊΠ»ΡΡΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΠ°ΡΠ°ΡΠΈΠΈ:
- ΠΡΡΠΏΠΎΠ²ΠΎΡΠΎ ΠΊΠ°ΡΠ²Π°Π½Π΅ Π΅ Π»Π΅ΡΠ½ΠΎ, Π½ΠΎ Π±Π°Π²Π½ΠΎ. ΠΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ»ΠΎΠΆΠ½ΠΈ ΡΡΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° Π³ΡΠ΅ΡΠΊΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ.
- ΠΠΎΡΠΎΡΠ½ΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°Ρ ΠΌΠ΅, ΠΈ Π±Π΅ΡΠ΅ Π΄ΠΎΡΡΠ° Π±ΡΡΠ·ΠΎ
- ΠΠ°ΡΠ²ΠΊΠΈΡΠ΅ ΡΠ° ΠΏΡΠΎΡΡΠΈ, Π½ΠΎ Π½Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ, Π·Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ
- SPARQL Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ ΡΡΡΠ½ΠΎ
- ΠΠ»Π°ΡΠ°Π½ΠΈΡΡΠ° Π½Π° Amazon ΡΠ° ΡΡΡΠ΄Π½ΠΈ Π·Π° ΠΎΡΠ΅Π½ΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ΅Π½ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π΄Π°Π½Π½ΠΈ, ΡΠΊΠ°Π½ΠΈΡΠ°Π½ΠΈ ΠΎΡ SPARQL Π·Π°ΡΠ²ΠΊΠ°.
Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ. ΠΠ°ΠΏΠΈΡΠΈ ΡΠ΅ Π·Π°
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com