Back then I tried to implement that, but if I tell it, that I have no water, it ruled out many recipes. If I told it, I had water, it suggested coffee or tea.
Here is an example using RDFox: https://imgur.com/ziZdIzA
My fridge has "noodles, tomatos and butter", But I know only one recipe which calls for "noodles, sauce, oil, optionally cheese". However you put alternatives in the database, if you have tomatos, you can make sauce, if you have butter, you don't need oil.
RDFox correctly says I can still make :spaghetti.
Query:
select DISTINCT ?recipe where { :fridge :item ?x. ?recipe a :recipe. ?recipe :requires ?y. OPTIONAL { ?y :alternative ?z }. FILTER(?x IN (?y, ?z)) }