2013-10-28 21 views

risposta

10

È possibile utilizzare una query come la seguente di chiedere per le classi di cui Stephen King è un'istanza che non ha sottoclassi di cui Stephen King è anche un'istanza. Questo sembra allinearsi bene con l'idea di "classi più specifiche". Tuttavia, dal momento che (per quanto ne so) non c'è alcun motivo collegato all'endpoint di DBpedia SPARQL, potrebbero esserci relazioni sottoclasse che potrebbero essere dedotte ma che non sono esplicitamente presente nei dati.

select distinct ?type where { 
    dbpedia:Stephen_King a ?type . 
    filter not exists { 
    ?subtype ^a dbpedia:Stephen_King ; 
      rdfs:subClassOf ?type . 
    } 
} 

SPARQL results

In realtà, dal momento che ogni classe è un rdfs:subClassOf sé, si potrebbe desiderare di aggiungere un'altra linea a tale query di escludere il caso in cui ?subtype e ?type sono gli stessi:

select distinct ?type where { 
    dbpedia:Stephen_King a ?type . 
    filter not exists { 
    ?subtype ^a dbpedia:Stephen_King ; 
      rdfs:subClassOf ?type . 
    filter (?subtype != ?type) 
    } 
} 

SPARQL results

Se si desidera effettivamente una stringa di risultati l ike quella mostrata in queste diapositive, è possibile utilizzare values per associare una variabile a dbpedia:Stephen_King, e quindi utilizzare un po 'di raggruppamento e concatenazione di stringhe per ottenere qualcosa di più alla ricerca (o quasi):

select 
    (concat(?person, " =\n", group_concat(?type; separator=" AND\n")) as ?sentence) 
where { 
    values ?person { dbpedia:Stephen_King } 
    ?type ^a ?person . 
    filter not exists { 
    ?subtype ^a ?person ; 
      rdfs:subClassOf ?type . 
    filter (?subtype != ?type) 
    } 
} 
group by ?person 

SPARQL results

http://dbpedia.org/resource/Stephen_King = 
http://dbpedia.org/class/yago/AuthorsOfBooksAboutWritingFiction AND 
http://dbpedia.org/ontology/Writer AND 
http://schema.org/Person AND 
http://xmlns.com/foaf/0.1/Person AND 
http://dbpedia.org/class/yago/AmericanSchoolteachers AND 
http://dbpedia.org/class/yago/LivingPeople AND 
http://dbpedia.org/class/yago/PeopleFromBangor,Maine AND 
http://dbpedia.org/class/yago/PeopleFromPortland,Maine AND 
http://dbpedia.org/class/yago/PeopleFromSarasota,Florida AND 
http://dbpedia.org/class/yago/PeopleSelf-identifyingAsAlcoholics AND 
http://umbel.org/umbel/rc/Artist AND 
http://umbel.org/umbel/rc/Writer AND 
http://dbpedia.org/class/yago/20th-centuryNovelists AND 
http://dbpedia.org/class/yago/21st-centuryNovelists AND 
http://dbpedia.org/class/yago/AmericanHorrorWriters AND 
http://dbpedia.org/class/yago/AmericanNovelists AND 
http://dbpedia.org/class/yago/AmericanShortStoryWriters AND 
http://dbpedia.org/class/yago/CthulhuMythosWriters AND 
http://dbpedia.org/class/yago/HorrorWriters AND 
http://dbpedia.org/class/yago/WritersFromMaine AND 
http://dbpedia.org/class/yago/PeopleFromDurham,Maine AND 
http://dbpedia.org/class/yago/PeopleFromLisbon,Maine AND 
http://dbpedia.org/class/yago/PostmodernWriters