Java 从SPARQL结果中的文字中删除数据类型

Java 从SPARQL结果中的文字中删除数据类型,java,rdf,sparql,jena,semantic-web,Java,Rdf,Sparql,Jena,Semantic Web,我正在使用SPARQL查询OWL本体,但结果显示了链接和数据。我只想要数据。如何删除链接并在数据上显示?我得到的结果是: --------------------------------------------------------------------------------------------------------------------------- |电子邮件| ind | ind1| ==============================================

我正在使用SPARQL查询OWL本体,但结果显示了链接和数据。我只想要数据。如何删除链接并在数据上显示?我得到的结果是:

---------------------------------------------------------------------------------------------------------------------------
|电子邮件| ind | ind1|
===========================================================================================================================
|“5”我的:城市公园酒店“酒店”|
---------------------------------------------------------------------------------------------------------------------------
我想要的输出是(请注意,
^^
等部分不再存在)

---------------------------------
|电子邮件| ind | ind1|
=================================
|5 |城市公园酒店|
---------------------------------
以下是我的Java代码和OWL本体:

class jena_测试
{公共静态void main(字符串[]args){
字符串filename=“modified2.owl”;
模型模型=ModelFactory.createDefaultModel();
ontmodelmodel1=ModelFactory.createOntologyModel(OntModelSpec.OWL\u DL\u MEM,model);
尝试
{
文件=新文件(文件名);
FileInputStream读取器=新的FileInputStream(文件);
model.read(reader,null);
字符串query1=“前缀rdfs:”+
“前缀rdf:”+
“我的前缀:”+
“选择?电子邮件?索引?索引1”+
“其中{”+
“ind rdf:键入my:住宿。”+
“找到我的:hasStarRating?电子邮件。”+
“ind my:hasType?ind1”+
“过滤器正则表达式(str(?ind),'HotelCityPark')”+
"}";
com.hp.hpl.jena.query.query query=QueryFactory.create(query1);
QueryExecution exe=QueryExecutionFactory.create(查询,model1);
ResultSet RES=exe.execSelect();
resultFormatter.out(System.out、RES、query);
}捕获(例外e)
{
e、 printStackTrace();
}
}
}

]>
3.
酒店
3.5
酒店
3.
酒店
5.
城市公园酒店
3.
酒店
1.2
酒店
1.6
酒店
4.5
酒店
1.6
酒店
3.5
1号酒店
4.
酒店
3.5
4.8
酒店
5.
酒店

< /代码> 你应该使用

< p>使用Cr.你可能想要对RDF的一些概念更熟悉。W3C可能是一个很好的起点。我这么说是因为你提到你的结果的方式暗示了对RDF的不熟悉。让我们来看看它们。在你所展示的结果中,你是GETT。返回这些值:

“5”^^
我的:城市公园酒店
“酒店”^^
第一个是数据类型为xsd:decimal的文本5。这是一个数字。在RDF 1.0中,文本可以是纯文本(仅一个字符串)、带有语言标记的字符串(带有语言标记的字符串)或数据类型的文本(一个字符串(词法形式)和数据类型)。文本用于表示具体数据。
“5”^^xsd:decimal
非常具体地说明了它是什么。您可以提取数据类型化文字的词法部分,将其保留为普通文字
“5”
,但请注意,这不再是一个数字。如果您想要一个Java数字,最好对该文字进行处理并获取其解释值

第二个是一个URI,缩写为
my:HotelCityPark
。根据您的前缀,这就是URI
http://www.semanticweb.org/rohit/ontologies/2014/4/untitled-ontology-20#HotelCityPark
。URI在RDF中用作标识符。您可以将该URI强制转换为纯文本,以获得
"http://www.semanticweb.org/rohit/ontologies/2014/4/untitled-ontology-20#HotelCityPark“
,然后执行一些字符串操作以删除所有内容,包括
#
,剩下的是纯文本
“HotelCityPark”

第三个是数据类型的文本(使用datatype
xsd:string
)。与第一个一样,您可以提取其词法形式,将其保留为纯文本
“Hotel”
,这实际上不会丢失太多信息。(在RDF1.1中,没有纯文本;没有显式数据类型的字符串是使用
xsd:string
隐式键入的)

您请求的值

5
城市公园酒店
酒店
没有足够的信息告诉我们您想要什么类型的数据。这些数据应该是字符串吗?如果是,那么您应该使用

“5”
“城市公园酒店”
“酒店”
如果希望第一个是数字,还可以将其转换为
xsd:integer