如何创建一个owl

我尝试着基于solid做一个线上聊天app,跟随这个教程https://solid.inrupt.com/docs/writing-solid-apps-with-angular成功的看到了它的sample application。
但是这个演示程序代码中用到的owl:http://www.w3.org/2006/vcard/ns#http://xmlns.com/foaf/0.1/似乎并不太适用于描述我想象的app的数据。我能自己创建一个owl吗?怎么创建呢?或者有其它owl推荐吗?
另外rdf的subject --property--> object的triple 中property 似乎必须是单向的。我怎么能更好的描述例如 小明 <--是朋友-->韩梅梅 这样的结构呢?
另一种比较麻烦的场景:我怎么能用rdf的triple来描述如: 小明(subject) 和 韩梅梅(subject) 有一个(property) 对话(object),这样的数据?

@ivy 十多年前用过,好久没有去用它了,不知现在如何。但我觉得这个不复杂的。本体语言也就是“什么是什么,什么包含什么,什么不是什么“之类的定义,有点象面向对象里的UML。这个软件用来编辑这种关系,以及有些插件可以用来推演关系。

@EurekaChen Protege 确实是个有名的软件,也很复杂

多年前用过Staford的一套软件,用来创建owl的,叫Protege
https://protege.stanford.edu/

@ivy 对话这个场景,我希望对话是一个node,它应该还有各种property,这些property指向存储对话内容的node

建议学一下 prolog,可以解决你很多疑问

<小明,朋友,韩梅梅>

关于对话那个,其实 triple 理解为主谓宾是最好的。

如:
<小明,对话,韩梅梅>

关于自己创建 owl,要请 @linonetwo 来回答下。