ΠΠΎΠ·Π΄ΡΠ°Π², ΠΆΠΈΡΠ΅Π»ΠΈ Π½Π° Π₯Π°Π±ΡΠΎΠ²ΡΠΊ. ΠΠΎ ΠΏΡΠ΅ΡΡΠ΅Ρ Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΠΊΡΡΡΠΎΡ
ΠΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΡΡΠΎ Π½ΠΈ ΡΠ΅ Π΄ΠΎΠΏΠ°ΡΠ°Π°Ρ
ΠΠΎΡΡΠΎ Π½ΠΈ ΡΡΠ΅Π±Π°ΡΠ΅ ΠΠΌΠ°Π·ΠΎΠ½ ΠΠ΅ΠΏΡΡΠ½
ΠΠ°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ Π²Π΅ΡΡΠ²Π°Π°Ρ Π΄Π΅ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π°Π°Ρ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΎ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΠΎΠ΄ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΡΠ΅Π»Π°ΡΠΈΡΠΊΠΈ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠΈ. ΠΠΎ ΡΠ°ΠΊΠ²ΠΈΡΠ΅ Π·Π±ΠΈΡΠΊΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅. ΠΠΎΡΠΈΡΡΠΈΠ²ΠΌΠ΅ Π½Π΅Π²Π΅ΡΠΎΡΠ°ΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΠ΅ΠΏΡΡΠ½
ΠΠ°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ MusicBrainz Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° ΠΊΠ°ΠΊΠΎ CSV Π΄Π΅ΠΏΠΎΠ½ΠΈΡΠ° Π½Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΊΡΠΏΠ½ΠΎ, Π΄Π΅ΠΏΠΎΠ½ΠΈΡΠ°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈ ΠΎΠΊΠΎΠ»Ρ 93 ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΡΠ΅Π΄ΠΎΠ²ΠΈ Π²ΠΎ 157 ΡΠ°Π±Π΅Π»ΠΈ. ΠΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΡΠ°Π±Π΅Π»ΠΈ ΡΠΎΠ΄ΡΠΆΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°ΡΠΈ, Π½Π°ΡΡΠ°Π½ΠΈ, ΡΠ½ΠΈΠΌΠΊΠΈ, ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ½ΠΈ, Π΄ΡΡΠ³ΠΈ ΡΠ°Π±Π΅Π»ΠΈ Π·Π° Π²ΡΡΠΊΠΈ β Π·Π°ΡΡΠ²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΌΠ΅ΡΠ½ΠΈΡΠΈ ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ, Π΄ΡΡΠ³ΠΈ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°ΡΠΈ ΠΈΠ»ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ°, ΠΈΡΠ½... Π’ΠΈΠ΅ ΡΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΎΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΡΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ RDF ΡΡΠΎΡΠΊΠΈ, Π΄ΠΎΠ±ΠΈΠ²ΠΌΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 500 ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ.
ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΡΠΊΡΡΡΠ²ΠΎΡΠΎ ΠΈ Π²ΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ½ΠΈΡΠ΅ ΠΏΠ°ΡΡΠ½Π΅ΡΠΈ ΡΠΎ ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅, ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ Π°ΠΌΠ±ΠΈΠ΅Π½Ρ Π²ΠΎ ΠΊΠΎΡ ΠΎΠ²Π°Π° Π±Π°Π·Π° Π½Π° Π·Π½Π°Π΅ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΎΡΠ΅ΠΊΡΠ²Π°ΠΌΠ΅ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ Π΄Π° ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΠΈΠ»ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ»Π΅Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°.
ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΡΠ²Π°ΡΠ΅
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΠΌΠ°Π·ΠΎΠ½ ΠΠ΅ΠΏΡΡΠ½ Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ. Π’Π°Π° Π΅ Π΄ΠΎΡΡΠ° Π΄Π΅ΡΠ°Π»Π½Π°
Π‘Π»ΠΈΠΊΠ° ΠΎΠ΄ Π΅ΠΊΡΠ°Π½ΠΎΡ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π·Π° Π³ΡΡΠΏΠΈ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
ΠΠΌΠ°Π·ΠΎΠ½ Π²Π΅Π»ΠΈ Π΄Π΅ΠΊΠ° ΠΠ΅ΠΏΡΡΠ½ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠΊΠΈΡΠ΅ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ° ΡΠΎ Π½ΠΈΡΠΊΠ° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ, ΠΏΠΎΡΠ°Π΄ΠΈ ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ ΠΈΡΡΠ΅ΠΊ Π½Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π΅ 120 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΡΠ΅ΡΡΠΈΡΠ°Π²ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΡΡΠ°ΠΈ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠΊΠ° ΡΠΏΠΎΡΡΠ΅Π±Π° Π²ΠΎ ΠΊΠΎΠΈ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ ΡΠ° Π΄ΠΎΡΡΠΈΠ³Π½ΡΠ²Π°Π²ΠΌΠ΅ ΠΎΠ²Π°Π° Π³ΡΠ°Π½ΠΈΡΠ°. ΠΠ²ΠΎΡ ΠΈΡΡΠ΅ΠΊ Π½Π° Π²ΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ ΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΡΠΊΠ° Π³ΡΡΠΏΠ° Π·Π° ΠΠ΅ΠΏΡΡΠ½ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ neptune_query_timeout
ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ΅.
Π‘Π΅ Π²ΡΠΈΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ
ΠΠΎΠ΄ΠΎΠ»Ρ ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π²ΠΎ Π΄Π΅ΡΠ°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Π³ΠΈ Π²ΡΠΈΡΠ°Π²ΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΎΠ΄ MusicBrainz Π²ΠΎ ΠΠ΅ΠΏΡΡΠ½.
ΠΡΡΠΊΠΈ Π²ΠΎ ΡΡΠΎΡΡΠ°
ΠΡΠ²ΠΎ, Π³ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π²ΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΎΠ΄ 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> .
ΠΌΠ°ΡΠΎΠ²Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΎΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ Π²ΡΠΈΡΠ°Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠΈΠ½ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΠΠ΅ΠΏΡΡΠ½ Π΅ ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΌΠ°ΡΠΎΠ²Π½ΠΎ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΡΠ΅ΠΊΡ 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"
}'
ΠΠ° Π΄Π° Π³ΠΎ ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌΠ΅ ΠΎΠ²ΠΎΡ Π΄ΠΎΠ»Π³ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ Π³ΠΎ Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΠΠ΅ΠΏΡΡΠ½, ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ Π²ΡΠ°ΡΠΈΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ ΠΎΠ΄ ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ° Π²ΠΎ ΠΊΠΎΡΠ° ΠΎΠ²ΠΈΠ΅ ΡΡΠΎΡΠΊΠΈ Π²Π΅ΡΠ΅ Π±Π΅Π° Π²ΡΠΈΡΠ°Π½ΠΈ. ΠΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΎΠ΄ ΡΠ½ΠΈΠΌΠΊΠ° Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ±ΡΠ·ΠΎ, Π½ΠΎ ΡΠ΅ΠΏΠ°ΠΊ ΡΡΠ°Π΅ ΠΎΠΊΠΎΠ»Ρ Π΅Π΄Π΅Π½ ΡΠ°Ρ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΠ΅ΠΏΡΡΠ½ Π½Π΅ Π±ΠΈΠ΄Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ΅Π½ Π·Π° Π±Π°ΡΠ°ΡΠ°.
ΠΠΎΠ³Π° ΠΏΡΠ²ΠΈΡΠ½ΠΎ Π²ΡΠΈΡΡΠ²Π°Π²ΠΌΠ΅ ΡΡΠΎΡΠΊΠΈ Π²ΠΎ ΠΠ΅ΠΏΡΡΠ½, Π½Π°ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ.
{
"errorCode" : "PARSING_ERROR",
"errorMessage" : "Content after '.' is not allowed",
"fileName" : [...],
"recordNum" : 25
}
ΠΠ΅ΠΊΠΎΠΈ ΠΎΠ΄ Π½ΠΈΠ² Π±Π΅Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΡΠ°ΡΠ΅, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ ΠΏΠΎΠ³ΠΎΡΠ΅. ΠΠΎ Π΄Π΅Π½Π΅Ρ, ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠΌΠ΅ ΡΡΠ°ΡΠΈΠ»Π΅ ΡΡΠΎ ΡΠΎΡΠ½ΠΎ ΡΡΠ³Π½Π°Π»ΠΎ Π½Π°ΠΎΠΏΠ°ΠΊΡ Π²ΠΎ ΠΎΠ²ΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ²Π΄Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠ²Π½ΠΎ Π±ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Π»Π΅ ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ²Π°Π° Π³ΡΠ΅ΡΠΊΠ° ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ Π·Π° ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 1% ΠΎΠ΄ Π²ΠΌΠ΅ΡΠ½Π°ΡΠΈ ΡΡΠΎΡΠΊΠΈ. ΠΠΎ, ΡΡΠΎ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π° Π΄ΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΠ΅ΠΏΡΡΠ½, Π³ΠΎ ΠΏΡΠΈΡΠ°ΡΠΈΠ²ΠΌΠ΅ ΡΠ°ΠΊΡΠΎΡ Π΄Π΅ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠ°ΠΌΠΎ ΡΠΎ 99% ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ ΠΎΠ΄ MusicBrainz.
ΠΠ°ΠΊΠΎ ΠΎΠ²Π° Π΅ Π»Π΅ΡΠ½ΠΎ Π·Π° Π»ΡΡΠ΅ΡΠΎ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ΠΈ ΡΠΎ SPARQL, ΠΈΠΌΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° RDF ΡΡΠΎΡΠΊΠΈΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈ ΡΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π³ΡΠ΅ΡΠΊΠΈ.
ΠΡΠ΅Π·Π΅ΠΌΠ°ΡΠ΅ Π½Π° ΡΡΡΠΈΠΌΠΈΠ½Π³
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²ΠΌΠ΅ ΠΏΠΎΠ³ΠΎΡΠ΅, Π½Π΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΠ΅ΠΏΡΡΠ½ ΠΊΠ°ΠΊΠΎ ΡΡΠ°ΡΠΈΡΠ½Π° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΡΠΊΡ ΠΊΠ°ΠΊΠΎ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½Π° ΠΈ Π΅Π²ΠΎΠ»ΡΡΠΈΠ²Π½Π° Π±Π°Π·Π° Π½Π° Π·Π½Π°Π΅ΡΠ΅. ΠΠ°ΡΠΎΠ°, ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° Π½Π°ΡΠ΄Π΅ΠΌΠ΅ Π½Π°ΡΠΈΠ½ΠΈ Π΄Π° Π²ΠΎΠ²Π΅Π΄Π΅ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΡΡΠΎΡΠΊΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π·Π½Π°Π΅ΡΠ΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π° Π½ΠΎΠ² Π°Π»Π±ΡΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π° ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΎΡΠΎ Π·Π½Π°Π΅ΡΠ΅.
ΠΠ΅ΠΏΡΡΠ½ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π²Π»Π΅Π·Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ ΠΏΡΠ΅ΠΊΡ 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 ΠΌΠΈΠ½ΡΡΠΈ Π²ΠΎ ΠΠ΅ΠΏΡΡΠ½, ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΡΠΎ ΡΠ΅Π» ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΈΡΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΎΠ²Π° Π½ΠΎΠ²ΠΎ Π·Π½Π°Π΅ΡΠ΅ Π²ΠΎ Π½Π΅ΠΊΠΎΠ΅ Π΄ΡΡΠ³ΠΎ Π±Π°ΡΠ°ΡΠ΅. Π’Π°ΠΊΠ°, Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ ΡΡΠΎΡΠΊΠΈ ΡΠΎ ΠΎΠ²Π°Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° Π½Π°Π·Π°Π΄ Π²ΠΎ Π³ΡΠ°ΡΠΈΠΊΠΎΡ, Π²Π½Π΅ΡΡΠ²Π°ΡΡΠΈ Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΏΠΎΠ΄ΠΏΡΠ°ΡΠ°ΡΠ΅ΡΠΎ.
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
}
ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ΡΠΎ Π΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΡΡΠΎΡΠΊΠΈ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΡ ΡΡΠ°Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π΄ΠΎΠ΄Π΅ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π·Π° Π²ΠΌΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΏΠΎΠ΄ΠΏΡΠ°ΡΠ°ΡΠ΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°ΠΌΠΎΡΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°ΡΠ°ΡΠ΅.
ΠΠ°ΠΊΠΎ Π½Π΅ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΡΠ΅ΡΡΠΎ, ΠΠ΅ΠΏΡΡΠ½ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΡΠΊΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ ΠΈΠ»ΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
SPARQL ΠΏΡΠ°ΡΠ°ΡΠ°
Π‘ΠΎ Π²ΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΠΎΡ ΠΏΠΎΡΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ, ΠΊΠΎΡ Π³ΠΎ Π²ΡΠ°ΡΠ° Π±ΡΠΎΡΠΎΡ Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°Ρ, Π²Π΅ΡΠ΅ Π³ΠΎ Π²ΠΎΠ²Π΅Π΄ΠΎΠ²ΠΌΠ΅ ΠΏΡΠ²ΠΈΠΎΡ ΡΠΈΠΏ Π½Π° Π±Π°ΡΠ°ΡΠ΅ ΡΡΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΠΌΠ΅ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΠ΅ΠΏΡΡΠ½. ΠΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ° Π½Π° Π±Π°ΡΠ°ΡΠ΅ Π²ΠΎ ΠΠ΅ΠΏΡΡΠ½ Π΅ Π»Π΅ΡΠ½ΠΎ - ΠΈΡΠΏΡΠ°ΡΠ΅ΡΠ΅ Π±Π°ΡΠ°ΡΠ΅ 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)
}
ΠΠΎΡΠ°Π΄ΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΎΡΡΠ° Π½Π° Π²Π°ΠΊΠ²ΠΎΡΠΎ Π±Π°ΡΠ°ΡΠ΅, ΠΌΠΎΠΆΠ΅Π²ΠΌΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΡΠΎΡΠΊΠΈ Π·Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°Ρ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΠ»ΡΠΎΠ½ ΠΠΎΠ½, Π½ΠΎ Π½Π΅ ΠΈ Π·Π° ΡΠΈΡΠ΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠΈ. Π‘Π΅ ΡΠΈΠ½ΠΈ Π΄Π΅ΠΊΠ° ΠΠ΅ΠΏΡΡΠ½ Π½Π΅ Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° ΡΠ°ΠΊΠ²ΠΎΡΠΎ Π±Π°ΡΠ°ΡΠ΅ ΡΠΎ ΡΡΠ»Π°ΡΠ΅ ΡΠΈΠ»ΡΡΠΈ Π²ΠΎ ΠΏΠΎΠ΄ΠΈΠ·Π±ΠΎΡΠΈ. ΠΠ°ΡΠΎΠ°, ΡΠ΅ΠΊΠΎΡ ΠΈΠ·Π±ΠΎΡ ΠΌΠΎΡΠ° ΡΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΈΠ»ΡΡΠΈΡΠ° ΡΠΏΠΎΡΠ΅Π΄ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°ΡΠΎΡ.
ΠΠ΅ΠΏΡΡΠ½ ΠΈΠΌΠ° ΠΈ ΡΠ°Ρ ΠΈ ΠΏΠΎ I/O Π½Π°ΠΏΠ»Π°ΡΠ°. ΠΠ° Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΠΠ΅ΠΏΡΡΠ½, ΠΊΠΎΡ ΡΠΈΠ½ΠΈ 0,384 Π΄ΠΎΠ»Π°ΡΠΈ/ΡΠ°Ρ. ΠΠΎ ΡΠ»ΡΡΠ°ΡΠΎΡ ΡΠΎ Π³ΠΎΡΠ΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΡΠΎ Π±Π°ΡΠ°ΡΠ΅, ΠΊΠΎΠ΅ Π³ΠΎ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΎΡ Π·Π° Π΅Π΄Π΅Π½ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊ, ΠΠΌΠ°Π·ΠΎΠ½ Π½ΠΈ Π½Π°ΠΏΠ»Π°ΡΡΠ²Π° Π΄Π΅ΡΠ΅ΡΠΈΡΠΈ ΠΈΠ»ΡΠ°Π΄ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π²Π»Π΅Π·/ΠΈΠ·Π»Π΅Π·, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅Π½Π° ΠΎΠ΄ 0.02 Π΄ΠΎΠ»Π°ΡΠΈ.
ΠΠ·Π»Π΅Π·
ΠΡΠ²ΠΎ, ΠΠΌΠ°Π·ΠΎΠ½ ΠΠ΅ΠΏΡΡΠ½ Π³ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠ΄ ΡΠ²ΠΎΠΈΡΠ΅ Π²Π΅ΡΡΠ²Π°ΡΠ°. ΠΠ°ΠΊΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°Π½Π° ΡΡΠ»ΡΠ³Π°, ΡΠ°Π° Π΅ Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ ΡΡΠΎ Π΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π»Π΅ΡΠ½Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠ²Π΅ Π³ΠΈ Π½Π°ΡΠΈΡΠ΅ ΠΏΠ΅Ρ ΠΊΠ»ΡΡΠ½ΠΈ Π½Π°ΠΎΠ΄ΠΈ:
- ΠΠ°ΡΠΎΠ²Π½ΠΎΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π΅ Π»Π΅ΡΠ½ΠΎ, Π½ΠΎ Π±Π°Π²Π½ΠΎ. ΠΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΡΠΊΠΎΠΌΠΏΠ»ΠΈΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΡΠ°ΠΊΠΈ Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈ.
- ΠΡΠ΅Π·Π΅ΠΌΠ°ΡΠ΅ΡΠΎ ΡΡΡΠΈΠΌΠΈΠ½Π³ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ΅ ΡΡΠΎ ΠΎΡΠ΅ΠΊΡΠ²Π°Π²ΠΌΠ΅ ΠΈ Π±Π΅ΡΠ΅ Π΄ΠΎΡΡΠ° Π±ΡΠ·ΠΎ
- ΠΠ°ΡΠ°ΡΠ°ΡΠ° ΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ Π°Π½Π°Π»ΠΈΡΠΈΡΠΊΠΈ ΠΏΡΠ°ΡΠ°ΡΠ°
- SPARQL Π±Π°ΡΠ°ΡΠ°ΡΠ° ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π°Ρ ΡΠ°ΡΠ½ΠΎ
- ΠΠ»Π°ΡΠ°ΡΠ°ΡΠ° Π½Π° ΠΠΌΠ°Π·ΠΎΠ½ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅Π½Π°Ρ Π±ΠΈΠ΄Π΅ΡΡΠΈ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅Π½ΠΈ ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΊΠ΅Π½ΠΈΡΠ°Π½ΠΈ ΡΠΎ Π±Π°ΡΠ°ΡΠ΅ SPARQL.
Π’ΠΎΠ° Π΅ ΡΠ΅. ΠΡΠΈΡΠ°Π²ΠΈ ΡΠ΅ Π·Π°
ΠΠ·Π²ΠΎΡ: www.habr.com