【问题标题】:how to run sparql query in javascript for dbpedia in vs 2010 to get abstract?如何在 javascript 中为 dbpedia 在 2010 中运行 sparql 查询以获得抽象?
【发布时间】:2015-05-23 12:29:27
【问题描述】:

我想使用 sparql 从 dbpedia 获取摘要。我想在 Visual Studio C# 的 ASP .NET 中运行以下查询。这是我所做的。

<script>
var query= "\
PREFIX dbpedia: <http://dbpedia.org/resource/>\
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>\
SELECT ?abstract\
 WHERE {\
 ?s dbpedia:Junagadh 
 dbpedia-owl:abstract ?abstract\
 }";


var queryUrl = url + "?query=" + encodeURIComponent(query) + "&format=json";
  $.ajax({
      dataType: "jsonp",
      url: queryUrl,
      success: function (_data) {
          var results = _data.results.bindings;

          for (var i in results) {
              var src = results[i].abstract.value;
              $('body').append(src);


          }
      }
  });

我想对浏览器中输入的搜索词进行抽象。在这里,我输入了“印度”。 当我运行此代码时,我没有在浏览器中获得输出。

所以我的问题是如何从 javascript 执行此查询并在浏览器中获取结果?

请帮帮我, 谢谢。

编辑#1:

我尝试按照您建议的示例链接运行 sparql 查询。 我尝试了示例中给出的代码,但在第 17 行出现如下错误。

 Version number '1.1' is invalid. Line 1, position 16.
 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.Xml.XmlException: Version number '1.1' is invalid. Line 1, position 16.
source Error: 

Line 16:         //Make a SELECT query against the Endpoint
Line 17:         SparqlResultSet results = endpoint.QueryWithResultSet("SELECT DISTINCT ?Concept WHERE {[] a ?Concept}");
Line 18:         foreach (SparqlResult result in results)
Line 19:         {


Stack Trace: 
[XmlException: Version number '1.1' is invalid. Line 1, position 16.]
System.Xml.XmlTextReaderImpl.Throw(Exception e) +76
System.Xml.XmlTextReaderImpl.Throw(String res, String arg) +126
System.Xml.XmlTextReaderImpl.ParseXmlDeclaration(Boolean isTextDecl)      +3983351
System.Xml.XmlTextReaderImpl.Read() +239
VDS.RDF.Parsing.SparqlXmlParser.Parse(SparqlXmlParserContext context) in e:\mercurial\dotnetrdf\Libraries\core\net40\Parsing\SPARQLXMLParser.cs:376
VDS.RDF.Parsing.SparqlXmlParser.Load(ISparqlResultsHandler handler, TextReader input) in e:\mercurial\dotnetrdf\Libraries\core\net40\Parsing\SPARQLXMLParser.cs:101
VDS.RDF.Parsing.SparqlXmlParser.Load(ISparqlResultsHandler handler, StreamReader input) in e:\mercurial\dotnetrdf\Libraries\core\net40\Parsing\SPARQLXMLParser.cs:124
VDS.RDF.Query.SparqlRemoteEndpoint.QueryWithResultSet(ISparqlResultsHandler handler, String sparqlQuery) in e:\mercurial\dotnetrdf\Libraries\core\net40\Query\SPARQLRemoteEndpoint.cs:309
VDS.RDF.Query.SparqlRemoteEndpoint.QueryWithResultSet(String sparqlQuery) in e:\mercurial\dotnetrdf\Libraries\core\net40\Query\SPARQLRemoteEndpoint.cs:284
test.Page_Load(Object sender, EventArgs e) in c:\Users\MKS\Documents\Visual Studio 2010\WebSites\WebSite3\test.aspx.cs:17
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

请帮帮我, 谢谢。

【问题讨论】:

  • 您的查询完全错误。你想提取什么?印度的摘要?还是 Junagadh 的摘要?
  • 你好@Artemis,对不起,我在上面的描述中犯了一个错误。是的,我想提取 Junagadh 的摘要。你能告诉我确切的查询吗?
  • 您放置的堆栈跟踪表明您需要在版本 1 中包含 XML 文件。您能否打开您尝试查询的文件并查看代码的第一行是什么?是&lt;?xml version="1.1"?&gt;吗?
  • 我使用 xml 版本 1.0
  • 请告诉我什么是错误。我写

标签: javascript c# asp.net sparql dbpedia


【解决方案1】:

您的查询完全错误。当您编写 SPARQL 查询时,您需要询问三个 ?s ?p ?o。如果您查看您的查询,那里有 4 个项目。因此,如果您需要所有语言的摘要,您需要:

SELECT ?abstract
WHERE {
    dbpedia:Junagadh dbpedia-owl:abstract ?abstract.
}

如果您需要为摘要使用特定语言,则需要对其进行相应过滤。例如英文摘要是:

SELECT ?abstract
WHERE {
    dbpedia:Junagadh dbpedia-owl:abstract ?abstract.
    filter(lang(?abstract)='en')
}

如果您需要了解如何在 .net 环境中编写 SPARQL,请阅读这些examples

【讨论】:

  • 您好@Artenis,感谢您的回答。如何在 Visual Studio 的 ASP .NET C# 中运行此查询?以及如何在浏览器的aspx文件中显示上述查询返回的摘要?
  • 用我写的查询替换之前的查询会发生什么?
  • 我知道这个查询是对的。但我问我如何在 asp.net 中运行以上查询,即在 asp.net vs 2010 中运行此查询需要什么支持。??
  • 感谢您的回复。我尝试使用 dotnetrdf 但没有得到结果。所以你能告诉我一步一步,即什么文件需要包含在项目中,需要在 web.config 文件中添加什么等等。
  • 你需要创建一个C#文件,然后告诉你的asp页面继承它。使用我提供的链接中的远程示例。效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
相关资源
最近更新 更多