2013-11-10 4 views
1

Я очень новичок в этой теме. Я читал документы sparql, и я пытаюсь получить пол определенного человека. Скажем, например, я хочу Larry_Page gender. Мне удалось получить все свойства lary_page (на основе следующей страницы: http://dbpedia.org/resource/Larry_Page), но у нее нет никакого свойства под названием «Пол». Так как я могу получить пол определенного человека ... ??? Может ли кто-нибудь сказать мне ответ, пожалуйста.Получите пол определенного человека в SPARQL ...?

ответ

2

DBpedia не является особенно полным комплектом данных. Вполне возможно, что для человека, на которого вы смотрите, просто нет гендерного свойства какого-либо определенного типа - похожего на ситуацию, указанную в ответе в this thread.

Даже если есть, имейте в виду, что он может быть выражен различными свойствами и значениями, поэтому вам нужно будет проверить их все, чтобы хотя бы использовать данные, где они определены. Быстрая проверка показывает мне, по крайней мере, следующие свойства, которые могут хранить информацию, которую вы заинтересованы в:

Обратите внимание, что некоторые из них могут ссылаться на другие такие ресурсы, как Male или Female, тогда как другие просто будут содержать строки, такие как male или female (спецификация FOAF явно говорит

обычно, но не обязательно 'мужской' или 'женский'

).


Следующий запрос, например, возвращает пол Scheherazade:

SELECT ?gl 
WHERE { 
    dbpedia:Scheherazade dbpedia-owl:gender ?g. 
    ?g rdfs:label ?gl. 
    FILTER(lang(?gl) = "en"). 
} 

Аналогично, следующий запрос перечисляет имя и пол ряда лиц:

SELECT ?pn ?gl 
WHERE { 
    ?person dbpedia-owl:gender ?g. 
    ?person a dbpedia-owl:Person. 
    ?person dbpprop:name ?pn. 
    { 
    ?person dbpedia-owl:gender dbpedia:Male. 
    } UNION { 
    ?person dbpedia-owl:gender dbpedia:Female. 
    }. 
    ?g rdfs:label ?gl. 
    FILTER(lang(?gl) = "en"). 
} 

Однако этот запрос может отображать только тех лиц, для которых установлены соответствующие атрибуты типа и пола. Ларри Пейдж никогда не появится в этом списке с текущим набором данных, поскольку у него нет соответствующего гендерного свойства. В качестве еще одного практического примера см это очень похожий запрос, который возвращает другой (не пустой) список:

SELECT ?pn ?gl 
WHERE { 
    ?person dbpedia-owl:gender ?g. 
    ?person a dbpedia-owl:Person. 
    ?person dbpprop:name ?pn. 
    { 
    ?person dbpedia-owl:gender dbpedia:Man. 
    } UNION { 
    ?person dbpedia-owl:gender dbpedia:Woman. 
    }. 
    ?g rdfs:label ?gl. 
    FILTER(lang(?gl) = "en"). 
} 

Еще один запрос возвращает еще один список:

SELECT ?pn ?gl 
WHERE { 
    ?person ?gender ?gl. 
    ?person a dbpedia-owl:Person. 
    ?person dbpprop:name ?pn. 
    FILTER((?gl = "Female"@en) || (?gl = "Male"@en)). 
} 

EDIT: имен DBpedia по умолчанию префиксы изменились с момента написания этого ответа.Отображение выглядит следующим образом:

  • dbpedia ->http://dbpedia.org/resource/ (теперь dbr)
  • dbpedia-owl ->http://dbpedia.org/ontology/ (теперь dbo)
  • dbpprop ->http://dbpedia.org/property/ (ныне dbp)
+0

Ай Thanx Яра , Я использую онтологию DBPEDIA. Я пробовал разные подходы, но мне не удалось получить пол конкретного человека. Если возможно, вы можете предоставить простой запрос, чтобы получить пол определенного человека (используйте мой пример, я имею в виду получить пол Larry_Page). Просьба привести пример. Я застрял здесь. – Amar

+0

@ Амар: Нет общего способа получить пол данного человека - как я объяснил в своем ответе, он требует поиска различных свойств (простой запрос, таким образом, конечно, не будет достаточным), а в некоторых случаях - возможно , Ларри Пейдж является одним из них - это может быть совершенно невозможно, поскольку соответствующая информация о полом человека просто не содержится в данных DBpedia. –

+0

@Amar: Я добавил образец, хотя я не уверен, что это то, что вы хотите. –

Смежные вопросы