我正在使用OpenCalais语义Web服务并接收我提交的内容的“Application / JSON”响应。当我查看报价实体时,OpenCalais正在发送人员报价,但人名不是该人的姓名,而是“关联数据”URI。 例如,对于名叫Tayyip Erdogan的人:
http://d.opencalais.com/pershash-1/a7077bd6-bcc9-3419-b75e-c44e1b2eb693
我需要这个人的名字,而不是URI。 OpenCalais也在PersonCareer实体中发送URI而不是人名。我不想读取URI的html DOM并提取人名,因为它会减慢一切。有解决方案吗?
答案 0 :(得分:0)
事实证明,除了HTML之外,还有一种方法可以访问这些人的URI;那是通过解析RDF。 OpenCalais提供的链接数据资源的任何URI链接也可以用作RDF。只需将uri从.html更改为.rdf,您将以RDF格式获取该资源的所有信息。
例如,对于名叫Tayyip Erdogan的人:
http://d.opencalais.com/pershash-1/a7077bd6-bcc9-3419-b75e-c44e1b2eb693.rdf
以下代码使用file_get_dom库,您也可以使用任何本机函数来获取文件内容。这只是我用来从Web服务中检索的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文件。
我想以编程方式解析它,所以我这样做!
希望有人觉得这很有用!
干杯!