OpenCalais возвращает URI лиц для связанных данных вместо фактического имени человека
Я использую сервис OpenCalais Semantic Web и получаю ответ "Приложение /JSON" на мой отправленный контент. Когда я смотрю на сущность Цитата, OpenCalais отправляет цитату человека, но имя человека - это не имя человека, а URI "Связанные данные". Например, для человека по имени Тайип Эрдоган:
http://d.opencalais.com/pershash-1/a7077bd6-bcc9-3419-b75e-c44e1b2eb693
Мне нужно имя человека, а не URI. OpenCalais также отправляет URI вместо имени человека в сущности PersonCareer. Я не хочу читать html DOM URI и извлекать имя человека, так как это замедлит все. Есть ли решение?
Описание объекта цитаты: http://www.opencalais.com/documentation/calais-web-service-api/api-metadata/entity-index-and-definitions)
1 ответ
Оказывается, существует способ доступа к этим URI-адресам людей, кроме HTML; и это путем анализа RDF. Любая ссылка URI на ресурс связанных данных, предоставленный OpenCalais, также может использоваться как RDF. Просто измените URI с.html на.rdf, и вы получите всю информацию об этом ресурсе в формате RDF.
Например, для человека по имени Тайип Эрдоган:
http://d.opencalais.com/pershash-1/a7077bd6-bcc9-3419-b75e-c44e1b2eb693.rdf
Следующий код использует библиотеку file_get_dom, вы также можете использовать любую встроенную функцию для получения содержимого файла. Это просто подход, который я использовал для извлечения имен людей из полученного содержимого RDF из веб-службы. Я уверен, что вы можете придумать лучшее решение.
public function get_persons_from_pershash($url)
{
//Gets RDF of the person URI
@$person_html = file_get_dom($url);
if(!empty($person_html))
{
//Get position of name tag and extract the name
$strpos_start = strpos($person_html, '<c:name>') + 8;
$strpos_end = strpos($person_html, '</c:name>');
$str_name_length = $strpos_end - $strpos_start;
$extracted_name = trim(substr($person_html, $strpos_start, $str_name_length));
return $extracted_name;
}
return '';
}
Когда вы измените URL-адрес на.rdf, вам будет предложено сохранить файл rdf.
Я хотел разобрать это программно, поэтому я так и сделал!
Надеюсь, кто-то найдет это полезным!
Ура!