我正在考虑合适的知识图表,例如" Google Knowledge Graph"," WordNet"," Yago"或" FreeBase&#34 ;用于表示事实,包括介词或形容词。
例如,"奥巴马有一个女儿"可以清楚地表示节点和链接关系。 "奥巴马"和"女儿"是节点。 "有一个"是一个链接。
然而,我无法通过谷歌搜索几个关键词来找到一种用介词或形容词来表示句子的方法。
假设你有一个事实,即奥巴马在白宫中有一只白狗,那么似乎不可能用图形结构来表示。奥巴马的狗是白色的,蝙蝠不是所有的狗都是白色的。此外,奥巴马的狗被保留在白宫,但不是所有的狗都是。
我的第一个问题是知识图是否可以代表这种事实。我的第二个问题是知识图如何做到这一点,如果第一个答案是肯定的。
答案 0 :(得分:2)
你代表这是事实的系列。例如:
public class Player
{
public string Name { get; set; }
public int Health { get; set; } = 100;
public int Damage { get; set; }
public bool IsAlive { get; set; }
public Player(string name, int health, int damage)
{
Name = name;
Health = health;
Damage = damage;
IsAlive = true;
}
public void TakeDamageFromEnemy(Enemy enemy)
{
if(IsAlive)
{
Health -= enemy.Damage;
if (Health < 0)
{
IsAlive = false;
MessageBox.Show("Player is dead!");
}
}
}
public void DoDamageToEnemy(Enemy enemy)
{
if(enemy.IsAlive)
{
enemy.Health -= Damage;
if (Health < 0)
{
IsAlive = false;
}
}
}
}
public class Enemy
{
private string Name { get; set; }
private int Health { get; set; }= 100;
private int Damage { get; set;}
public string enemyMessages { get; set; }
public bool IsAlive { get; set; }
public Enemy(string name, int health, int damage)
{
Name = name;
Health = health;
Damage = damage;
IsAlive = true;
}
//This is likely replaced by the Player's DoDamageToEnemy method.
public void enemyTakeDamage()
{
int takenDamage;
}
}
public class Program
{
static void Main(string[] args)
{
Player playerOne = new Player("Zach", 100, 20);
Enemy enemyOne = new Enemy("Trogg",15,5);
Enemy enemyTwo = new Enemy("Dragon",1000,50);
playerOne.TakeDamageFromEnemy(enemyTwo);
playerOne.TakeDamageFromEnemy(enemyOne);
playerOne.DoDamageToEnemy(enemyOne);
playerOne.TakeDamageFromEnemy(enemyTwo);
Console.ReadLine();
}
}
即。图表中有一个特定的节点代表特定的对象,然后断言关于该对象的更多事实。同样地,虽然你可以断言一个事实“barackObama有一个女儿”,你可能会断言连接两个节点“barackObama”和“maliaObama”的一些事实。
与其他所有内容一样,您的数据没有“正确”的表示形式 - 这取决于您尝试解决的问题。