ããããã¹ã¯äœæ°ããæ¬ç€Œã ã³ãŒã¹éå§ã«åããŠ
ç§ãã¡ã奜ãå€ãã®ãŠãŒã¹ã±ãŒã¹ã§ã¯
Amazon Neptune ãå¿ èŠãªçç±
ã°ã©ã ããŒã¿ããŒã¹ã¯ããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ãããé«åºŠã«æ¥ç¶ãããããŒã¿ ã»ãããããé©åã«åŠçã§ããããšãçŽæãããŠããŸãã ãã®ãããªããŒã¿ã»ããã§ã¯ãéåžžãé¢é£æ
å ±ã¯ãªããžã§ã¯ãéã®é¢ä¿ã«æ ŒçŽãããŸãã Neptune ããã¹ãããããã«çŽ æŽããããªãŒãã³ããŒã¿ ãããžã§ã¯ãã䜿çšããŸãã
MusicBrainz ããŒã¿ã»ããã¯ããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã® CSV ãã³ããšããŠæäŸãããŸãã åèšãããšããã³ãã«ã¯ 93 ã®ããŒãã«ã«çŽ 157 äžè¡ãå«ãŸããŸãã ãããã®ããŒãã«ã®äžéšã«ã¯ã¢ãŒãã£ã¹ããã€ãã³ããã¬ã³ãŒãã£ã³ã°ããªãªãŒã¹ããã©ãã¯ãªã©ã®åºæ¬ããŒã¿ãå«ãŸããŠããŸããããã®ä»ã®ããŒãã«ã«ã¯ ãªã³ã¯ããŒãã« â ã¢ãŒãã£ã¹ããšã¬ã³ãŒãã£ã³ã°ãä»ã®ã¢ãŒãã£ã¹ããšãªãªãŒã¹ãªã©ã®éã®é¢ä¿ãä¿åããŸãããããã¯ãããŒã¿ ã»ããã®ã°ã©ãæ§é ã瀺ããŸãã ããŒã¿ã»ããã RDF ããªãã«ã«å€æãããšãçŽ 500 ååã®ã€ã³ã¹ã¿ã³ã¹ãåŸãããŸããã
ç§ãã¡ãååãããããžã§ã¯ãããŒãããŒã®çµéšãšå°è±¡ã«åºã¥ããŠããã®ãã¬ããžããŒã¹ã䜿çšããŠæ°ããæ å ±ãååŸããå Žé¢ã玹ä»ããŸãã ããã«ãæ°ãããªãªãŒã¹ã®è¿œå ãã°ã«ãŒã ã¡ã³ããŒã®æŽæ°ãªã©ãå®æçã«æŽæ°ãããããšãæåŸ ãããŸãã
調æŽ
äºæ³ã©ãããAmazon Neptune ã®ã€ã³ã¹ããŒã«ã¯ç°¡åã§ãã 圌女ã¯ããªã詳ããã§ã
ãã©ã¡ãŒã¿ã°ã«ãŒãã®èšå®ã¹ã¯ãªãŒã³ã·ã§ãã
Amazon ã«ãããšã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 ããªã¯ãšã¹ãã«å¯Ÿå¿ã§ããããã«ãªããŸã§ã«ã¯äŸç¶ãšããŠçŽ XNUMX æéããããŸãã
æåã«ããªãã¬ããã Neptune ã«ããŒããããšãã«ãããŸããŸãªãšã©ãŒãçºçããŸããã
{
"errorCode" : "PARSING_ERROR",
"errorMessage" : "Content after '.' is not allowed",
"fileName" : [...],
"recordNum" : 25
}
äžã«ç€ºããããã«ããã®äžéšã¯è§£æãšã©ãŒã§ããã çŸåšã«è³ããŸã§ããã®æç¹ã§äœãåé¡ã ã£ãã®ãã¯ãŸã ããã£ãŠããŸããã ããã§ããå°ã詳ãã説æãããšãééããªã圹ç«ã¡ãŸãã ãã®ãšã©ãŒã¯ãæ¿å ¥ãããããªãã«ã®çŽ 1% ã§çºçããŸããã ããããNeptune ã®ãã¹ãã«é¢ããŠã¯ãMusicBrainz ããã®æ å ±ã® 99% ã®ã¿ã䜿çšããŠäœæ¥ãããšããäºå®ãåãå ¥ããŸããã
ãã㯠SPARQL ã«æ £ããŠãã人ã«ãšã£ãŠã¯ç°¡åã§ãããRDF ããªãã«ã«ã¯æ瀺çãªããŒã¿åã§æ³šéãä»ããå¿ èŠããããããã«ãã£ãŠããšã©ãŒãçºçããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
ã¹ããªãŒãã³ã°ããŠã³ããŒã
äžã§è¿°ã¹ãããã«ãç§ãã¡ã¯ Neptune ãéçããŒã¿ ã¹ãã¢ãšããŠäœ¿çšããã®ã§ã¯ãªããæè»ã§é²åãããã¬ããž ããŒã¹ãšããŠäœ¿çšããããšèããŠããŸãã ãã®ãããæ°ããã¢ã«ãã ãåºçããããšããã掟çããç¥èãå ·äœåããããšããªã©ãç¥èããŒã¹ãå€æŽããããšãã«æ°ããããªãã«ãå°å ¥ããæ¹æ³ãèŠã€ããå¿ èŠããããŸããã
Neptune ã¯ãçã®ã¯ãšãªãšãµã³ãã«ããŒã¹ã®äž¡æ¹ã® SPARQL ã¯ãšãªãéããŠå ¥åæŒç®åããµããŒãããŸãã 以äžã§ã¯äž¡æ¹ã®ã¢ãããŒãã«ã€ããŠèª¬æããŸãã
ç§ãã¡ã®ç®æšã® XNUMX ã€ã¯ãã¹ããªãŒãã³ã°æ¹åŒã§ããŒã¿ãå ¥åããããšã§ããã æ°ããåœã§ã¢ã«ãã ããªãªãŒã¹ããããšãæ€èšããŠãã ããã MusicBrainz ã®èŠ³ç¹ããèŠããšãããã¯ãã¢ã«ãã ãã·ã³ã°ã«ãEP ãªã©ãå«ãŸãããªãªãŒã¹ã®å Žåãæ°ãããšã³ããªãããŒãã«ã«è¿œå ãããããšãæå³ããŸãã çºå£²åœã RDF ã§ã¯ããã®æ å ±ã XNUMX ã€ã®æ°ããããªãã«ãšç §åããŸãã
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> };
ããäžã€ã®ç®çã¯ãã°ã©ãããæ°ããªç¥èãåŸãããšã§ããã åã¢ãŒãã£ã¹ãããã£ãªã¢ã®äžã§åºçãããªãªãŒã¹ã®æ°ãååŸããããšããŸãã ãã®ãããªã¯ãšãªã¯éåžžã«è€éã§ãNeptune ã§ã¯ 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
}
åäžã®ããªãã«ãã°ã©ãã«è¿œå ããã«ã¯æ°ããªç§ããããŸããããµãã¯ãšãªã®çµæãæ¿å ¥ããå®è¡æéã¯ãµãã¯ãšãªèªäœã®å®è¡æéã«äŸåããŸãã
é »ç¹ã«ã¯äœ¿çšããŸããã§ãããã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 ããšã®æéã®äž¡æ¹ããããŸãã ãã¹ãã§ã¯ã0,384 æéããã 0.02 ãã«ã®æå°éã® Neptune ã€ã³ã¹ã¿ã³ã¹ã䜿çšããŸããã åäžã®ã¯ãŒã«ãŒã®ãããã¡ã€ã«ãèšç®ããäžèšã®ã¯ãšãªã®å ŽåãAmazon ã¯æ°äžåã® I/O ãªãã¬ãŒã·ã§ã³ãè«æ±ããŸããããã¯ãXNUMX ãã«ã®ã³ã¹ããæå³ããŸãã
åºå
ãŸããAmazon Neptune ã¯ã»ãšãã©ã®çŽæãå®ããŸãã ãããŒãžã ãµãŒãã¹ãšããŠãã€ã³ã¹ããŒã«ãéåžžã«ç°¡åã§ãå€ãã®æ§æãè¡ããªããŠãèµ·åããŠå®è¡ã§ããã°ã©ã ããŒã¿ããŒã¹ã§ãã 以äžã« XNUMX ã€ã®éèŠãªèª¿æ»çµæã瀺ããŸãã
- äžæ¬ã¢ããããŒãã¯ç°¡åã§ãããæéãããããŸãã ãã ããããŸã圹ã«ç«ããªããšã©ãŒ ã¡ãã»ãŒãžã衚瀺ãããè€éã«ãªãå ŽåããããŸãã
- ã¹ããªãŒãã³ã° ããŠã³ããŒãã¯ç§ãã¡ãæåŸ ããŠãããã¹ãŠããµããŒãããŠãããéåžžã«é«éã§ãã
- ã¯ãšãªã¯ã·ã³ãã«ã§ãããåæã¯ãšãªãå®è¡ã§ããã»ã©å¯Ÿè©±çã§ã¯ãããŸãã
- SPARQL ã¯ãšãªã¯æåã§æé©åããå¿ èŠããã
- SPARQL ã¯ãšãªã«ãã£ãŠã¹ãã£ã³ãããããŒã¿ã®éãèŠç©ããã®ãé£ãããããAmazon ã®æ¯æããèŠç©ããã®ã¯å°é£ã§ãã
ããã ãã§ãã ç³ã蟌ã¿ãŸã
åºæïŒ habr.com