关于算法

dog 2003-05-02 07:01:49
我有一个RDF文件,内容如下
<rule:Imp>
<rule:head>
<rule:Atom>
<rule:rel>worksWith</rule:rel>
<rule:atomArg>
<rule:Var>
<rule:varName>X</rule:varName>
</rule:Var>
</rule:atomArg>
<rule:atomArg>
<rule:Var>
<rule:varName>Y</rule:varName>
</rule:Var>
</rule:atomArg>
</rule:Atom>
</rule:head>

<rule:body>
<rule:Atom>
<rule:rel>hasSupervisor</rule:rel>
<rule:atomArg>
<rule:Var>
<rule:varName>X</rule:varName>
</rule:Var>
</rule:atomArg>
<rule:atomArg>
<rule:Var>
<rule:varName>Y</rule:varName>
</rule:Var>
</rule:atomArg>
</rule:Atom>
</rule:body>
</rule:Imp>


我希望通过java程序产生新的文件,内容如下
worksWith(X,Y):-hasSupervisor(X,Y).
如何编写这段程序?谢谢

...全文
71 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dog 2003-05-03
  • 打赏
  • 举报
回复
我用XML Parser已经得到subject,predict,object.我给的例子比较简单。实际上要复杂。有没有例子参考。
helpall 2003-05-02
  • 打赏
  • 举报
回复
你可以找一个XML Parser做, 或者不复杂的话用下面的代码:

int lastIndex = 0;
String _parseValue(String key) {
int index1 = msg.indexOf("<"+key+">",lastIndex);
int index2 = msg.indexOf("</"+key+">",lastIndex);
if(index1 == -1 || index2 == -1)
return "";
lastIndex = index2;
return msg.subString(index1+("<"+key+">").length, index2);
}

String msg = ...; // 你知道怎么把文件读进来,对吗?
String s1 = _parseValue("rule:rel"); // worksWith
String s2 = _parseValue("rule:varName"); // x
String s3 = _parseValue("rule:varName"); // y
String t1 = _parseValue("rule:rel"); // hasSupervisor
String t2 = _parseValue("rule:varName"); // x
String t3 = _parseValue("rule:varName"); // y
String result=s1+"("+s2+","+s3+"):-"+t1+"("+t2+","+t3+")";

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧