2

私はここ*で、オントロジー(本質的にRDF)はデータ駆動型であることを読みました。これは、小さなオントロジーで作業してアプリケーションに使用し、後で...同じオントロジーに追加の概念を統合してより堅牢にすることができるためです。

私の懸念は、特定のトリプルが将来的により堅牢になるにはどうすればよいかということです。例えば。

School : Class
Properties:
has Name : String
has Area : float
has Type : String // can be** , choices are Specialist, Faith, Free etc.

この時点で、School をインスタンス化すると...

School X : School
has Name = School X : String
has Area = 20000.00 : float
has Type = Specialist : String                    <<--------------------------

気になるトリプルは

SchoolX  hasType Specialist^^string

後で Specialist という単語の下にいくつかのプロパティがあることがわかったので、 Specialist を作成することにしました。 クラス

Specialist : Class                                <<--------------------------
has Specialization : String // can be**
followsNationalCurriculum : boolean
...and so forth

いう、

MusicSpc : Specialist
has Specialization = Music : String
followsNationalCurriculum = true
etc.

私の質問はです。

  1. hasType=Specialist^^string を使用した個人の場合、古いオントロジーの文字列リテラル「Specialist」を新しいオントロジーの Specialist(Cls) のインスタンスに接続する必要があることをどのように実装しますか? Jena または OWL/RDF でそれを行いますか?
  2. (1) に関連して、私は Java でメソッドのオーバーロードが役立つ場合があることを知っています。オーバーロードはオントロジーに適していますか? st hasType : String, hasType : Specialist(Cls)? また、URI=namespace#hasType が Datatype と Object プロパティの両方であることを OWL/RDF で宣言する必要がありますか?

誰かがこれについて私を助けてくれることを願っています。

参考文献:

4

1 に答える 1

2

最初の質問に関しては、データを更新する方法があります。たとえば、この特定のケースでは、SPARQL 1.1 更新操作を使用してデータを更新できます。

DELETE { ?x :hasType "Specialist"@en }
INSERT { ?x :hasType :Specialist } 
WHERE { ?x :hasType "Specialist"@en } 

2 番目の質問については、RDF(S) ではこの意味でプロパティを「オーバーロード」できます。どのプロパティも文字列と個々のリソースの両方を値として持つことができます。データを効果的にクエリして処理することが難しくなるため、それが賢明かどうかは別の問題です。おそらくオーバーロードしないほうがよいでしょう。また、OWL (少なくとも OWL DL) では、これを行うことができないためです。プロパティは、DatatypeProperty または ObjectProperty のいずれかにすることができますが、両方にすることはできません。

一般的に言えば、プロパティが文字列値を持つべきか、より複雑な値を持つべきか疑問がある場合は、最初から複雑な値を選択してください。そうすれば、オントロジーは将来的に拡張できるように設計され、更新のために面倒なことをする必要がなくなります。あなたの例では、値セットがtype:hasTypeの固定セット、つまり物のクラスであることはすでにわかっています。そのような構造に文字列値を使用しないでください。ただし、これらのものには実際のクラスを導入してください

于 2012-10-23T01:36:46.297 に答える