ืจื•ืฉื ืจืืฉื•ื ื™ ืžืืžื–ื•ืŸ ื ืคื˜ื•ืŸ

ื”ืฆื“ืขื”, ืชื•ืฉื‘ื™ ื—ื‘ืจื•ื‘ืกืง. ืœืงืจืืช ืชื—ื™ืœืช ื”ืงื•ืจืก "AWS ืœืžืคืชื—ื™ื" ื”ื›ื ื• ืชืจื’ื•ื ืฉืœ ื—ื•ืžืจ ืžืขื ื™ื™ืŸ.

ืจื•ืฉื ืจืืฉื•ื ื™ ืžืืžื–ื•ืŸ ื ืคื˜ื•ืŸ

ื‘ืžืงืจื™ื ืจื‘ื™ื ืฉืœ ืฉื™ืžื•ืฉ ืฉืื ื—ื ื• ืื•ื”ื‘ื™ื bakdataื›ืคื™ ืฉืื ื• ืจื•ืื™ื ื‘ืืชืจื™ ืœืงื•ื—ื•ืชื™ื ื•, ืžื™ื“ืข ืจืœื•ื•ื ื˜ื™ ืžื•ืกืชืจ ื‘ืงืฉืจื™ื ื‘ื™ืŸ ื’ื•ืคื™ื, ืœืžืฉืœ ื‘ืขืช ื ื™ืชื•ื— ื™ื—ืกื™ื ื‘ื™ืŸ ืžืฉืชืžืฉื™ื, ืชืœื•ืช ื‘ื™ืŸ ืืœืžื ื˜ื™ื ืื• ืงืฉืจื™ื ื‘ื™ืŸ ื—ื™ื™ืฉื ื™ื. ืžืงืจื™ ืฉื™ืžื•ืฉ ื›ืืœื” ืžืขื•ืฆื‘ื™ื ื‘ื“ืจืš ื›ืœืœ ืขืœ ืคื™ ื’ืจืฃ. ืžื•ืงื“ื ื™ื•ืชืจ ื”ืฉื ื”, ืืžื–ื•ืŸ ืคืจืกืžื” ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ื”ื’ืจืคื™ื ื”ื—ื“ืฉ ืฉืœื”, ื ืคื˜ื•ืŸ. ื‘ืคื•ืกื˜ ื”ื–ื” ืื ื—ื ื• ืจื•ืฆื™ื ืœืฉืชืฃ ืืช ื”ืจืขื™ื•ื ื•ืช ื”ืจืืฉื•ื ื™ื ืฉืœื ื•, ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ื˜ื•ื‘ื•ืช ื•ืžื” ื ื™ืชืŸ ืœืฉืคืจ ืขื ื”ื–ืžืŸ.

ืœืžื” ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืืช ืืžื–ื•ืŸ ื ืคื˜ื•ืŸ

ืžืกื“ื™ ื ืชื•ื ื™ื ืฉืœ ื’ืจืคื™ื ืžื‘ื˜ื™ื—ื™ื ืœื”ืชืžื•ื“ื“ ืขื ืžืขืจื›ื™ ื ืชื•ื ื™ื ืžื—ื•ื‘ืจื™ื ื‘ืฆื•ืจื” ื˜ื•ื‘ื” ื™ื•ืชืจ ืžืืฉืจ ื”ืžืงื‘ื™ืœื•ืช ื”ื™ื—ืกื™ื•ืช ืฉืœื”ื. ื‘ืžืขืจื›ื™ื ื›ืืœื”, ืžื™ื“ืข ืจืœื•ื•ื ื˜ื™ ืžืื•ื—ืกืŸ ื‘ื“ืจืš ื›ืœืœ ื‘ืงืฉืจื™ื ื‘ื™ืŸ ืื•ื‘ื™ื™ืงื˜ื™ื. ื”ืฉืชืžืฉื ื• ื‘ืคืจื•ื™ืงื˜ ื ืชื•ื ื™ื ืคืชื•ื— ืžื“ื”ื™ื ื›ื“ื™ ืœื‘ื“ื•ืง ืืช ื ืคื˜ื•ืŸ MusicBrainz. MusicBrainz ืื•ืกืคืช ื›ืœ ืกื•ื’ ืฉืœ ืžื˜ื ื ืชื•ื ื™ื ืฉืœ ืžื•ื–ื™ืงื” ืฉืืคืฉืจ ืœื”ืขืœื•ืช ืขืœ ื”ื“ืขืช, ื›ืžื• ืžื™ื“ืข ืขืœ ืืžื ื™ื, ืฉื™ืจื™ื, ื™ืฆื™ืื•ืช ืืœื‘ื•ืžื™ื ืื• ืงื•ื ืฆืจื˜ื™ื, ื›ืžื• ื’ื ืขื ืžื™ ื”ืืžืŸ ืฉืžืื—ื•ืจื™ ื”ืฉื™ืจ ืฉื™ืชืฃ ืคืขื•ืœื” ืื• ืžืชื™ ื”ืืœื‘ื•ื ื™ืฆื ื‘ืื™ื–ื• ืžื“ื™ื ื”. ื ื™ืชืŸ ืœืจืื•ืช ื‘-MusicBrainz ืจืฉืช ืขื ืงื™ืช ืฉืœ ื’ื•ืคื™ื ืฉืงืฉื•ืจื™ื ืื™ื›ืฉื”ื• ืœืชืขืฉื™ื™ืช ื”ืžื•ื–ื™ืงื”.

ืžืขืจืš ื”ื ืชื•ื ื™ื ืฉืœ MusicBrainz ืžืกื•ืคืง ื›-CSV dump ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ื™ื—ืกื™. ื‘ืกืš ื”ื›ืœ, ื”ืžื–ื‘ืœื” ืžื›ื™ืœื” ื›-93 ืžื™ืœื™ื•ืŸ ืฉื•ืจื•ืช ื‘-157 ื˜ื‘ืœืื•ืช. ื‘ืขื•ื“ ืฉื—ืœืง ืžื”ื˜ื‘ืœืื•ืช ื”ืœืœื• ืžื›ื™ืœื•ืช ื ืชื•ื ื™ื ื‘ืกื™ืกื™ื™ื ื›ื’ื•ืŸ ืืžื ื™ื, ืื™ืจื•ืขื™ื, ื”ืงืœื˜ื•ืช, ืžื”ื“ื•ืจื•ืช ืื• ืจืฆื•ืขื•ืช, ื•ืื—ืจื•ืช ื˜ื‘ืœืื•ืช ืงื™ืฉื•ืจ - ืื—ืกื•ืŸ ื™ื—ืกื™ื ื‘ื™ืŸ ืืžื ื™ื ื•ื”ืงืœื˜ื•ืช, ืืžื ื™ื ืื—ืจื™ื ืื• ืžื”ื“ื•ืจื•ืช ื•ื›ื•'... ื”ื ืžื“ื’ื™ืžื™ื ืืช ืžื‘ื ื” ื”ื’ืจืคื™ื ืฉืœ ืžืขืจืš ื ืชื•ื ื™ื. ื›ืืฉืจ ื”ืžืจืช ืžืขืจืš ื”ื ืชื•ื ื™ื ืœืฉืœืฉื•ืช RDF, ื”ืฉื’ื ื• ื›-500 ืžื™ืœื™ื•ืŸ ืžื•ืคืขื™ื.

ื‘ื”ืชื‘ืกืก ืขืœ ื”ื ื™ืกื™ื•ืŸ ื•ื”ื”ืชืจืฉืžื•ืช ืฉืœ ืฉื•ืชืคื™ ื”ืคืจื•ื™ืงื˜ ืื™ืชื ืื ื• ืขื•ื‘ื“ื™ื, ืื ื• ืžืฆื™ื’ื™ื ืžืกื’ืจืช ืฉื‘ื” ื‘ืกื™ืก ื™ื“ืข ื–ื” ืžืฉืžืฉ ืœื”ืฉื’ืช ืžื™ื“ืข ื—ื“ืฉ. ื‘ื ื•ืกืฃ, ืื ื• ืžืฆืคื™ื ืฉื”ื•ื ื™ืชืขื“ื›ืŸ ื‘ืื•ืคืŸ ืงื‘ื•ืข, ืœืžืฉืœ ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืžื”ื“ื•ืจื•ืช ื—ื“ืฉื•ืช ืื• ืขื“ื›ื•ืŸ ื—ื‘ืจื™ ื”ืงื‘ื•ืฆื”.

ื”ืชืืžื”

ื›ืฆืคื•ื™, ื”ืชืงื ืช Amazon Neptune ื”ื™ื ืคืฉื•ื˜ื”. ื”ื™ื ื“ื™ ืžืคื•ืจื˜ืช ืžึฐืชื•ึนืขึธื“. ืืชื” ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืžืกื“ ื ืชื•ื ื™ื ื’ืจืคื™ื ื‘ื›ืžื” ืงืœื™ืงื™ื ื‘ืœื‘ื“. ืขื ื–ืืช, ื›ืฉืžื“ื•ื‘ืจ ื‘ืชืฆื•ืจื” ืžืคื•ืจื˜ืช ื™ื•ืชืจ, ืžื™ื“ืข ื ื—ื•ืฅ ืงืฉื” ืœืžืฆื•ื. ืœื›ืŸ, ืื ื• ืจื•ืฆื™ื ืœื”ืฆื‘ื™ืข ืขืœ ืคืจืžื˜ืจ ืชืฆื•ืจื” ืื—ื“.

ืจื•ืฉื ืจืืฉื•ื ื™ ืžืืžื–ื•ืŸ ื ืคื˜ื•ืŸ
ืฆื™ืœื•ื ืžืกืš ืชืฆื•ืจื” ืขื‘ื•ืจ ืงื‘ื•ืฆื•ืช ืคืจืžื˜ืจื™ื

ืืžื–ื•ืŸ ืื•ืžืจืช ืฉ-Neptune ืžืชืžืงื“ืช ื‘ืขื•ืžืกื™ ืขื‘ื•ื“ื” ืฉืœ ืขืกืงืื•ืช ืขื ื–ืžืŸ ืื—ื–ื•ืจ ื ืžื•ืš, ื•ื–ื• ื”ืกื™ื‘ื” ืฉื–ืžืŸ ืงืฆื•ื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ื”ื‘ืงืฉื” ื”ื•ื 120 ืฉื ื™ื•ืช. ืขื ื–ืืช, ื‘ื“ืงื ื• ืžืงืจื™ ืฉื™ืžื•ืฉ ืื ืœื™ื˜ื™ื™ื ืจื‘ื™ื ืฉื‘ื”ื ื”ื’ืขื ื• ื‘ืื•ืคืŸ ืงื‘ื•ืข ืœื’ื‘ื•ืœ ื”ื–ื”. ื ื™ืชืŸ ืœืฉื ื•ืช ืืช ื”ื–ืžืŸ ื”ืงืฆื•ื‘ ื”ื–ื” ืขืœ ื™ื“ื™ ื™ืฆื™ืจืช ืงื‘ื•ืฆืช ืคืจืžื˜ืจื™ื ื—ื“ืฉื” ืขื‘ื•ืจ Neptune ื•ื”ื’ื“ืจื” neptune_query_timeout ื”ื’ื‘ืœื” ืžืชืื™ืžื”.

ื˜ื•ืขืŸ ื ืชื•ื ื™ื

ืœื”ืœืŸ ื ื“ื•ืŸ ื‘ืคื™ืจื•ื˜ ื›ื™ืฆื“ ื˜ืขื ื• ืืช ื ืชื•ื ื™ MusicBrainz ืœืชื•ืš Neptune.

ืžืขืจื›ื•ืช ื™ื—ืกื™ื ื‘ืฉืœืฉื•ืช

ืจืืฉื™ืช, ื”ืžืจื ื• ืืช ื ืชื•ื ื™ MusicBrainz ืœืฉืœืฉื•ืช RDF. ืœื›ืŸ, ืขื‘ื•ืจ ื›ืœ ื˜ื‘ืœื”, ื”ื’ื“ืจื ื• ืชื‘ื ื™ืช ื”ืžื’ื“ื™ืจื” ื›ื™ืฆื“ ื›ืœ ืขืžื•ื“ื” ืžื™ื•ืฆื’ืช ื‘ื˜ืจื™ืคืœ. ื‘ื“ื•ื’ืžื” ื–ื•, ื›ืœ ืฉื•ืจื” ืžื˜ื‘ืœืช ื”ืžื‘ืฆืขื™ื ืžืžื•ืคื” ืœ-XNUMX ืฉืœืฉื•ืช 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 ื–ืžื™ืŸ ืœื‘ืงืฉื•ืช.

ื‘ืขืช ื˜ืขื™ื ืช ืฉืœื™ืฉื™ื•ืช ืœื ืคื˜ื•ืŸ, ื ืชืงืœื ื• ื‘ืฉื’ื™ืื•ืช ืฉื•ื ื•ืช.

{
 
 
 "errorCode" : "PARSING_ERROR",
 
 "errorMessage" : "Content after '.' is not allowed",
 
 "fileName" : [...],
 
 "recordNum" : 25
 
}

ื—ืœืง ืžื”ืŸ ื”ื™ื• ืฉื’ื™ืื•ืช ื ื™ืชื•ื—, ื›ืคื™ ืฉืžื•ืฆื’ ืœืขื™ืœ. ืขื“ ื”ื™ื•ื, ืขื“ื™ื™ืŸ ืœื ื”ื‘ื ื• ืžื” ื‘ื“ื™ื•ืง ื”ืฉืชื‘ืฉ ื‘ืฉืœื‘ ื–ื”. ืงืฆืช ื™ื•ืชืจ ืคื™ืจื•ื˜ ื‘ื”ื—ืœื˜ ื™ืขื–ื•ืจ ื›ืืŸ. ืฉื’ื™ืื” ื–ื• ื”ืชืจื—ืฉื” ืขื‘ื•ืจ ื›-1% ืžื”ืฉืœืฉื•ืช ืฉื”ื•ื›ื ืกื•. ืื‘ืœ ื‘ื›ืœ ื”ื ื•ื’ืข ืœื‘ื“ื™ืงืช ื ืคื˜ื•ืŸ, ืงื™ื‘ืœื ื• ืืช ื”ืขื•ื‘ื“ื” ืฉืื ื—ื ื• ืขื•ื‘ื“ื™ื ืจืง ืขื 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 ื“ืงื•ืช ื‘ื ืคื˜ื•ืŸ, ืื– ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืžืžืฉ ืืช ื”ืชื•ืฆืื” ื›ื“ื™ ืœื”ืฉืชืžืฉ ืžื—ื“ืฉ ื‘ื™ื“ืข ื”ื—ื“ืฉ ื”ื–ื” ื‘ืฉืื™ืœืชื” ืื—ืจืช. ืื– ืื ื—ื ื• ืžื•ืกื™ืคื™ื ืฉืœืฉื•ืช ืขื ื”ืžื™ื“ืข ื”ื–ื” ื‘ื—ื–ืจื” ืœื’ืจืฃ, ื•ืžื›ื ื™ืกื™ื ืืช ื”ืชื•ืฆืื” ืฉืœ ืฉืื™ืœืชืช ื”ืžืฉื ื”.

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

ืขืœ ื™ื“ื™ ื”ืฆื’ืช ืชืช-ื”ื“ื’ื™ืžื” ื”ืงื•ื“ืžืช, ื”ืžื—ื–ื™ืจื” ืืช ืžืกืคืจ ื”ื”ืคืฆื•ืช ืœื›ืœ ืืžืŸ, ื›ื‘ืจ ื”ืฆื’ื ื• ืืช ื”ืกื•ื’ ื”ืจืืฉื•ืŸ ืฉืœ ืฉืื™ืœืชื” ืฉืื ื• ืจื•ืฆื™ื ืœืขื ื•ืช ืขืœื™ื” ื‘ืืžืฆืขื•ืช 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. ืœืฆื•ืจืš ื”ื‘ื“ื™ืงื” ืฉืœื ื•, ื”ืฉืชืžืฉื ื• ื‘ืžื•ืคืข ื”ืžื™ื ื™ืžืœื™ ืฉืœ ื ืคื˜ื•ืŸ, ืฉืขื•ืœื” $0,384 ืœืฉืขื”. ื‘ืžืงืจื” ืฉืœ ื”ืฉืื™ืœืชื” ืœืžืขืœื”, ื”ืžื—ืฉื‘ืช ืืช ื”ืคืจื•ืคื™ืœ ืขื‘ื•ืจ ืขื•ื‘ื“ ื‘ื•ื“ื“, ืืžื–ื•ืŸ ื’ื•ื‘ื” ืžืื™ืชื ื• ืขืฉืจื•ืช ืืœืคื™ ืคืขื•ืœื•ืช I/O, ืžื” ืฉืžืจืžื– ืขืœ ืขืœื•ืช ืฉืœ 0.02$.

ืคืœื˜

ืจืืฉื™ืช, ืืžื–ื•ืŸ ื ืคื˜ื•ืŸ ืžืงื™ื™ืžืช ืืช ืจื•ื‘ ื”ื‘ื˜ื—ื•ืชื™ื”. ื›ืฉื™ืจื•ืช ืžื ื•ื”ืœ, ื–ื”ื• ืžืกื“ ื ืชื•ื ื™ื ื’ืจืคื™ื ืฉืงืœ ืžืื•ื“ ืœื”ืชืงื ื” ื•ื™ื›ื•ืœ ืœื”ื™ื•ืช ืคื•ืขืœ ืœืœื ื”ืจื‘ื” ื”ื’ื“ืจื•ืช. ืœื”ืœืŸ ื—ืžืฉืช ื”ืžืžืฆืื™ื ื”ืขื™ืงืจื™ื™ื ืฉืœื ื•:

  • ื”ืขืœืื” ื‘ื›ืžื•ืช ื’ื“ื•ืœื” ื”ื™ื ืงืœื” ืืš ืื™ื˜ื™ืช. ืื‘ืœ ื–ื” ื™ื›ื•ืœ ืœื”ืกืชื‘ืš ืขื ื”ื•ื“ืขื•ืช ืฉื’ื™ืื” ืฉืื™ื ืŸ ืžื•ืขื™ืœื•ืช ื‘ืžื™ื•ื—ื“.
  • ื”ื•ืจื“ืช ืกื˜ืจื™ืžื™ื ื’ ืชื•ืžื›ืช ื‘ื›ืœ ืžื” ืฉืฆื™ืคื™ื ื• ื•ื”ื™ื™ืชื” ื“ื™ ืžื”ื™ืจื”
  • ืฉืื™ืœืชื•ืช ื”ืŸ ืคืฉื•ื˜ื•ืช, ืืš ืื™ื ืŸ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ื•ืช ืžืกืคื™ืง ื›ื“ื™ ืœื”ืคืขื™ืœ ืฉืื™ืœืชื•ืช ืื ืœื™ื˜ื™ื•ืช
  • ื™ืฉ ืœื‘ืฆืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื™ื“ื ื™ืช ืฉืœ ืฉืื™ืœืชื•ืช SPARQL
  • ืงืฉื” ืœื”ืขืจื™ืš ืืช ืชืฉืœื•ืžื™ ืืžื–ื•ืŸ ืžื›ื™ื•ื•ืŸ ืฉืงืฉื” ืœื”ืขืจื™ืš ืืช ื›ืžื•ืช ื”ื ืชื•ื ื™ื ืฉื ืกืจืงื• ืขืœ ื™ื“ื™ ืฉืื™ืœืชืช SPARQL.

ื–ื” ื”ื›ืœ. ืœื”ื™ืจืฉื ืกืžื™ื ืจ ืžืงื•ื•ืŸ ื‘ื—ื™ื ื ื‘ื ื•ืฉื "ืื™ื–ื•ืŸ ืขื•ืžืกื™ื".


ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”