2015-05-14 5 views
0

Я запускаю тестовый запрос на SPARQL для тестирования выводов. Мой запрос выглядит следующим образом:SPARQL запрос не выводить свойства после указанного класса

PREFIX eem: <http://purl.org/eem#> 
    PREFIX ns: <http://purl.org/net/ns/> 
    PREFIX sc_data: <http://purl.org/net/ns/sc_data/> 
    PREFIX dbp: <http://dbpedia.org/resource/> 
    PREFIX dbpprop: <http://dbpedia.org/property/> 
    PREFIX ex: <http://www.example.org/rdf#> 
    SELECT ?roa 
    WHERE { 
    SERVICE <http://dbpedia.org/sparql>{ 
    ex:vaccine a dbp:Polio_vaccine. 
    ex:vaccine dbpprop:routesOfAdministration ?roa. 
} 
    } 

Результаты по этому запросу при поиске на странице snorql не получаются. Когда я указываю, что что-то является вакциной против полиомиелита, не следует ли автоматически наследовать свойства, указанные для вакцины? Что мне нужно изменить?

+0

Почему вы думаете, 'ДАДЫ: Polio_vaccine' должны работать? – svick

+0

У меня создалось впечатление, что мы можем использовать (rdf: type), чтобы указать класс объекта. Как еще можно указать, что ex: вакцина - это вакцина против полиомиелита? – kurious

+0

Не знаю. Я не уверен, что DBpedia содержит эту информацию или что то, что вы просите, даже имеет смысл. Не могли бы вы назвать несколько вакцин, которые вы ожидаете от ваших критериев? – svick

ответ

2

В исходном запросе, например: вакцина является узлом URI, коротка для < http://www.example.org/rdf#vaccine>. Это очень маловероятно, что DBpedia содержит любую информацию об этом. В то время как конечная точка DBpedia может (или не может) включать информацию, которая выводится из данных DBpedia, она не обрабатывает ваш запрос SPARQL как утверждение части и запрос детали.

Вы буквально говорите «находите значения« роа », такие как roa - это путь введения ex: vaccine и ex: вакцина - это экземпляр dbp: Polio_vaccine». ex: вакцина - постоянная хотя, так что это вроде как сказать «найти факторы 10, и, кстати, 10 - это сумма 3 и 4.» «10 - это сумма 3 и 4» не содержится в данных, но поэтому совпадений не будет, даже если есть зарегистрированные коэффициенты 10. Кроме того, dbp:Polio_vaccine является индивидуумом в DBpedia, а не класс, поэтому его не будет.

Вместо этого, вы хотите задать для любых значений dbpprop: routesOfAdministation собственности для индивидуального DBpedia: Polio_vaccine. Запрос вам нужно здесь (я использую префиксы, которые определены в http://dbpedia.org/sparql, общественность оконечного):

select ?routes where { 
    dbpedia:Polio_vaccine dbpprop:routesOfAdministration ?routes 
} 

SPARQL results

+0

Благодарим вас за подробное объяснение, Джошуа. Это очень полезно. Я понял, что могу получить roa, используя запрос, который вы писали выше. Однако я пытаюсь это сделать: 1. По моим данным, у меня есть кое-что, что я знаю, это вакцина против полиомиелита. Тем не менее, это roa не упоминается в данных. 2. Итак, я хочу сказать, что сущность в моих данных - это вакцина против полиомиелита, упомянутая в dbpedia. И учитывая, что вакцина против полиомиелита является «устной», я хочу, чтобы компьютер сделал вывод о том, что роава вакцины в моих данных также «оральная». Не могли бы вы помочь мне выяснить, как написать такой запрос? – kurious

+0

Запрашивать справку по этому вопросу. Может кто-нибудь ответить? – kurious

+0

Привет, Джошуа. Я еще не знаю, как решить проблему. Я понимаю, что использование предложения SERVICE в SPARQL может оказаться полезным. Не могли бы вы помочь мне разобраться в решении? – kurious