Saya mencoba untuk mengambil tanggal publikasi dan jumlah halaman untuk buku-buku di DBpedia. Saya mencoba kueri berikut dan memberikan hasil kosong. Saya melihat bahwa ini adalah properti di bawah book(http://mappings.dbpedia.org/server /ontology/classes/Book) tetapi tidak dapat mengambilnya.

Saya ingin tahu apakah ada kesalahan dalam kode atau apakah dbpedia tidak menyimpan tanggal ini terkait dengan buku.

SELECT  ?book  ?genre ?date ?numberOfPages
WHERE {
     ?book rdf:type dbpedia-owl:Book .
     ?book dbp:genre ?genre .
     ?book dbp:firstPublicationDate ?date .
     OPTIONAL {?book dbp:numberOfPages ?numberOfPages .}
     }
0
VKB 12 Maret 2017, 01:33

2 jawaban

Jawaban Terbaik

dbp:firstPublicationDate tidak berfungsi karena dua alasan:

Pertama, seperti yang ditunjukkan pada jawaban pertama, Anda menggunakan awalan yang salah.

Tetapi bahkan jika Anda memperbaikinya, Anda akan melihat bahwa Anda tetap tidak akan mendapatkan hasil. Maka hal terbaik yang harus dilakukan adalah menguji dengan jumlah pola minimum, jika Anda harus seperti untuk buku dengan tanggal publikasi pertama, dua pola rangkap saja. Jika Anda masih belum mendapatkan hasil, Anda harus menguji bagaimana <http://dbpedia.org/ontology/firstPublicationDate> sebenarnya digunakan dengan kueri seperti ini:

SELECT  ?class (COUNT (DISTINCT ?s) AS ?instances)
WHERE {

     ?s <http://dbpedia.org/ontology/firstPublicationDate> ?date ;
        a ?class

     }

GROUP BY ?class
ORDER BY DESC(?instances)

LIMIT 1000
0
Ivo Velitchkov 12 Maret 2017, 08:57

Properti berbasis pemetaan menggunakan namespace http://dbpedia.org/ontology/, jadi, awalannya harus dbo bukan dbp, yang merupakan singkatan dari http://dbpedia.org/property/.

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>

SELECT  ?book  ?genre ?date ?numberOfPages
WHERE {
     ?book a dbo:Book ;
           dbp:genre ?genre ;
           dbo:firstPublicationDate ?date .
     OPTIONAL {?book dbp:numberOfPages ?numberOfPages .}
     }

Beberapa komentar tambahan:

  • letakkan awalan ke kueri SPARQL sehingga orang lain di sini dapat menjalankannya tanpa pengecualian (juga di masa mendatang) - kueri SPARQL saat ini menggunakan dbpedia-owl tetapi yang ini tidak ditentukan sebelumnya pada DBpedia resmi lagi - ini disebut dbo sebagai gantinya
  • yang membawa saya ke poin kedua -> jika Anda menggunakan titik akhir SPARQL publik, tunjukkan URL-nya
  • Anda dapat mulai men-debug kueri SPARQL Anda sendiri hanya dengan memulai dengan hanya sebagian saja dan menambahkan lebih banyak pola tiga kali lipat, mis. dalam kasus Anda, Anda dapat memeriksa apakah ada triple dengan properti dengan

    PREFIX dbp: <http://dbpedia.org/property/>
    
    SELECT * WHERE {?book dbp:firstPublicationDate ?date } LIMIT 10
    

Memperbarui

Seperti yang diperhatikan Ivo Velitchkov dalam jawabannya di bawah, properti dbo:firstPublicationDate hanya digunakan untuk manga, dll., yaitu karya tulis yang diterbitkan secara berkala. Dengan demikian, hasilnya akan kosong.

0
UninformedUser 12 Maret 2017, 15:52