0

Let's say I have this triple:

m:song1 m:hasFeature m:harmony

that means a song with uri m:song1 has harmony, okay cool so far, but sometimes I want to say that it has harmony just 40% .

A better example may be this:

m:user1 m:fromPeriod m:adult
m:user2 m:fromPeriod m:childhood

We can't say that before 25 years old you are childhood and after you are adult, it is fuzzy, not hard cut. I want to say that you are 50% adult and 50% childhood

Is there any way to do that in RDF and how if yes (I hope) in Protege

What i think of is this:

m:user1 m:fromPeriod m:adult
m:fromPeriod :hasFuzzy 0.5

is that possible? (specially in Protege because I can't write in hand in the whole ontology)

Jeen Broekstra
  • 21,642
  • 4
  • 51
  • 73
Ania David
  • 1,168
  • 1
  • 15
  • 36

2 Answers2

1

You are looking at reification, which is a common practise on the Semantic Web and elsewhere. Using n-ary relations as recommended in the comments is one way, and probably the right way.

Another technique is to assign a URI, or bnode, to your statement (triple) so that you can make statements about it. For example,

Given triple:

:song_1 :hasFeature :harmony.

you can create:

:statement_1 a rdf:Statement.
:statement_1 rdf:subject :song_1.
:statement_1 rdf:predicate :hasFeature.
:statement_1 rdf:object :harmony.

then you can say things like:

:statement_1 :hasSomeValue "40%".
chris
  • 1,787
  • 1
  • 13
  • 13
0

I may also check some resource on fuzzy logic with Protégé like this one.

Ivo Velitchkov
  • 2,361
  • 11
  • 21
  • Can you add a summary of the information to your actual answer instead of just posting a link to it? That way the information is preserved and the answer remains useful even if the link goes dead. You can [edit] your answer to update it. – Jeen Broekstra Mar 07 '16 at 19:15