Javascript查询DBpedia小应用

系统 1760 0

上一篇文章 中,我们了解了SPARQL、SPARQL Endpoint,并简单做了一个SPARQLWrapper.js,来从DBpedia中查询了一些数据。

本文则尝试利用SPARQLWrapper.js来读取DBpedia的数据,并显示出来。

 

目标

通过输入一个英文单词,然后返回WIKI中相关的信息。

那么主要要解决的问题就是怎样的SPARQL语句能够查询到我们需要的东西。

 

先看一段简单的SPARQL查询语句

      PREFIX : 
      
        <
      
      http:
      
        //
      
      aabs.purl.org
      
        /
      
      music#
      
        >
      
      
        SELECT
      
      
         ?instrument

      
      
        WHERE
      
      
         {
 :andrew :playsInstrument ?instrument .
}
      
    

首先定义一个域名空间http://aabs.purl.org/music#。

然后选择这样子的instrument变量,他满足:

主语是http://aabs.purl.org/music#andrew,谓语是http://aabs.purl.org/music#playsInstrument,宾语是该instrument。

 

bif:contains()

bif:contains()是contains()函数的变种函数,顾名思义是判断是否包含的函数。

利用这个我们能查询到我们需要的数据了。

      prefix foaf: 
      
        <
      
      http:
      
        //
      
      xmlns.com
      
        /
      
      foaf
      
        /
      
      
        0.1
      
      
        />
      
      
        select
      
      
        distinct
      
      
         ?url ?alma ?comment 

      
      
        where
      
      
         { 
?s foaf:name ?sname . 
?sname bif:
      
      
        contains
      
      
        '
      
      
        China
      
      
        '
      
      
        . 
?s foaf:depiction ?url . 
?s dbpedia
      
      
        -
      
      
        owl:wikiPageExternalLink ?alma . 
?s rdfs:comment ?comment . 
} 
limit 
      
      
        10
      
    

这段SPARQL语句是查询包含China的名字的词条,然后将其图片的url、homepage的url,以及简介返回回来。

下面让我们把整个程序写完。

 

完整代码

      
        <
      
      
        html
      
      
        >
      
      
        <
      
      
        head
      
      
        >
      
      
        <
      
      
        meta 
      
      
        charset
      
      
        ="utf-8"
      
      
        >
      
      
        <
      
      
        title
      
      
        >
      
      SPARQL DEMO
      
        </
      
      
        title
      
      
        >
      
      
        <
      
      
        script 
      
      
        src
      
      
        ="SPARQLWrapper.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
        <
      
      
        script
      
      
        >
      
      
        var
      
      
         $ 
      
      
        =
      
      
        function
      
      
        (id){
            
      
      
        return
      
      
         document.getElementById(id);
        },
        sparql 
      
      
        =
      
      
        new
      
      
         SPARQLWrapper(
      
      
        "
      
      
        http://dbpedia.org/sparql
      
      
        "
      
      
        ),
        results 
      
      
        =
      
      
         [];
    
    
      
      
        function
      
      
         getInfo(name){
        name 
      
      
        =
      
      
         name.replace(
      
      
        /
      
      
        \s
      
      
        /
      
      
        g, 
      
      
        "
      
      
        _
      
      
        "
      
      
        );
        
      
      
        var
      
      
         command 
      
      
        =
      
      
        "
      
      
        prefix foaf: <http://xmlns.com/foaf/0.1/> 
      
      
        "
      
      
        +
      
      
        "
      
      
        select distinct ?url ?alma ?comment 
      
      
        "
      
      
        +
      
      
        "
      
      
        where { 
      
      
        "
      
      
        +
      
      
        "
      
      
        ?s foaf:name ?sname . 
      
      
        "
      
      
        +
      
      
        "
      
      
        ?sname bif:contains '
      
      
        "
      
      
        +
      
      
         name 
      
      
        +
      
      
        "
      
      
        '. 
      
      
        "
      
      
        +
      
      
        "
      
      
        ?s foaf:depiction ?url . 
      
      
        "
      
      
        +
      
      
        "
      
      
        ?s dbpedia-owl:wikiPageExternalLink ?alma . 
      
      
        "
      
      
        +
      
      
        "
      
      
        ?s rdfs:comment ?comment . 
      
      
        "
      
      
        +
      
      
        "
      
      
        } 
      
      
        "
      
      
        +
      
      
        "
      
      
        limit 10
      
      
        "
      
      
        ;
            sparql.setQuery(command);
            sparql.query(
      
      
        function
      
      
        (json){
                showInfo((eval(
      
      
        "
      
      
        (
      
      
        "
      
      
        +
      
      
         json 
      
      
        +
      
      
        "
      
      
        )
      
      
        "
      
      
        )).results.bindings);
            });
    }
    
    
      
      
        function
      
      
         showInfo(results){
        
      
      
        var
      
      
         text 
      
      
        =
      
      
        ""
      
      
        ;
        
      
      
        if
      
      
        (results.length 
      
      
        !==
      
      
        0
      
      
        ){
            
      
      
        for
      
      
        (
      
      
        var
      
      
         i 
      
      
        =
      
      
        0
      
      
        ; i 
      
      
        <
      
      
         results.length; i
      
      
        ++
      
      
        ){
                text 
      
      
        +=
      
      
        "
      
      
        <img src = '
      
      
        "
      
      
        +
      
      
         results[i].url.value 
      
      
        +
      
      
        "
      
      
        ' /><br />
      
      
        "
      
      
        ;
                text 
      
      
        +=
      
      
        "
      
      
        homepage:
      
      
        "
      
      
        +
      
      
        "
      
      
        <a href = '
      
      
        "
      
      
        +
      
      
         results[i].alma.value 
      
      
        +
      
      
        "
      
      
        ' >
      
      
        "
      
      
        +
      
      
         results[i].alma.value 
      
      
        +
      
      
        "
      
      
        </a><br />
      
      
        "
      
      
        ;
                text 
      
      
        +=
      
      
        "
      
      
        <p>
      
      
        "
      
      
        +
      
      
         results[i].comment.value 
      
      
        +
      
      
        "
      
      
        </p><br /><br /><br />
      
      
        "
      
      
        ;
                $(
      
      
        "
      
      
        result
      
      
        "
      
      
        ).innerHTML 
      
      
        =
      
      
         text;
            }
        }
      
      
        else
      
      
        {
            $(
      
      
        "
      
      
        result
      
      
        "
      
      
        ).innerHTML 
      
      
        =
      
      
        "
      
      
        没有任何相关信息!
      
      
        "
      
      
        ;
        }
        
    }
                    
    
      
      
        </
      
      
        script
      
      
        >
      
      
        </
      
      
        head
      
      
        >
      
      
        <
      
      
        body
      
      
        >
      
      
        <
      
      
        p
      
      
        >
      
      目前只支持英文查询。
      
        </
      
      
        p
      
      
        >
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         id
      
      
        ="name"
      
      
        />
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="button"
      
      
         onclick
      
      
        ="getInfo(document.getElementById('name').value);"
      
      
         value
      
      
        ="Wiki Search"
      
      
        />
      
      
        <
      
      
        div 
      
      
        id
      
      
        ="result"
      
      
        ></
      
      
        p
      
      
        >
      
      
        </
      
      
        body
      
      
        >
      
      
        </
      
      
        html
      
      
        >
      
    

 

遗留问题

不太清楚中文怎么查询,如有知道的朋友,麻烦告知一下,谢谢。

 

例子

http://pan.baidu.com/share/link?shareid=293219&uk=855675565

 

 

Javascript查询DBpedia小应用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论